[
  {
    "path": ".gitbook.yaml",
    "content": "structure:\n  summary: doc/README.md"
  },
  {
    "path": ".github/workflows/main.yml",
    "content": "name: Actions\n\non: [push, pull_request]\n\njobs:\n  # Building and testing Java with Maven\n  # https://docs.github.com/en/actions/guides/building-and-testing-java-with-maven\n  Litemall-all:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        java-version:\n        - 8\n        - 8.0.192\n        - 11\n        - 11.0.3\n    steps:\n    - uses: actions/checkout@v2\n    - name: Set up JDK ${{ matrix.java-version }}\n      uses: actions/setup-java@v2\n      with:\n        java-version: ${{ matrix.java-version }}\n        distribution: zulu\n    - name: Cache Maven packages\n      uses: actions/cache@v2\n      with:\n        path: ~/.m2\n        key: ${{ runner.os }}-m2-${{ hashFiles('**/pom.xml') }}\n        restore-keys: ${{ runner.os }}-m2\n    - name: Build with Maven\n      run: mvn --batch-mode --update-snapshots verify\n\n  # Building and testing Node.js\n  # https://docs.github.com/en/actions/guides/building-and-testing-nodejs\n  Litemall-admin:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version:\n        - 10.x\n        - 12.x\n        - 14.x\n        # - 15.x\n    steps:\n    - uses: actions/checkout@v2\n    - name: Use Node.js ${{ matrix.node-version }}\n      uses: actions/setup-node@v1\n      with:\n        node-version: ${{ matrix.node-version }}\n    - run: npm --prefix litemall-admin install\n    - run: npm --prefix litemall-admin run test\n\n  Litemall-vue:\n    runs-on: ubuntu-latest\n    strategy:\n      matrix:\n        node-version:\n        - 10.x\n        - 12.x\n        - 14.x\n        # - 15.x\n    steps:\n    - uses: actions/checkout@v2\n    - name: Use Node.js ${{ matrix.node-version }}\n      uses: actions/setup-node@v1\n      with:\n        node-version: ${{ matrix.node-version }}\n    - run: npm --prefix litemall-vue install\n    - run: npm --prefix litemall-vue run test\n"
  },
  {
    "path": ".gitignore",
    "content": "### gradle ###\n.gradle\n/build/\n!gradle/wrapper/gradle-wrapper.jar\n\n### STS ###\n.settings/\n.apt_generated\n.classpath\n.factorypath\n.project\n.settings\n.springBeans\n\n\n### IntelliJ IDEA ###\n/.idea/\n/private/\n/storage/\n/litemall.iml\n.checkstyle\n.idea\n*.iws\n*.iml\n*.ipr\nrebel.xml\n### maven ###\ntarget/\n*.war\n*.ear\n*.zip\n*.tar\n*.tar.gz\n\n### logs ####\n/logs/\n*.log\n\n### temp ignore ###\n*.cache\n*.diff\n*.patch\n*.tmp\n*.java~\n*.properties~\n*.xml~\n\n### system ignore ###\n.DS_Store\nThumbs.db\nServers\n.metadata\nupload\ngen_code\n"
  },
  {
    "path": ".workflow/BranchPipeline.yml",
    "content": "version: '1.0'\nname: branch-pipeline\ndisplayName: BranchPipeline\nstages:\n  - stage: \n    name: compile\n    displayName: 编译\n    steps:\n      - step: build@maven\n        name: build_maven\n        displayName: Maven 构建\n        # 支持6、7、8、9、10、11六个版本\n        jdkVersion: 8\n        # 支持2.2.1、3.2.5、3.3.9、3.5.2、3.5.3、3.5.4、3.6.1、3.6.3八个版本\n        mavenVersion: 3.3.9\n        # 构建命令\n        commands:\n          - mvn -B clean package -Dmaven.test.skip=true\n        # 非必填字段，开启后表示将构建产物暂存，但不会上传到制品库中，7天后自动清除\n        artifacts:\n            # 构建产物名字，作为产物的唯一标识可向下传递，支持自定义，默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址\n          - name: BUILD_ARTIFACT\n            # 构建产物获取路径，是指代码编译完毕之后构建物的所在路径，如通常jar包在target目录下。当前目录为代码库根目录\n            path:\n              - ./target\n      - step: publish@general_artifacts\n        name: publish_general_artifacts\n        displayName: 上传制品\n        # 上游构建任务定义的产物名，默认BUILD_ARTIFACT\n        dependArtifact: BUILD_ARTIFACT\n        # 上传到制品库时的制品命名，默认output\n        artifactName: output\n        dependsOn: build_maven\n  - stage: \n    name: release\n    displayName: 发布\n    steps:\n      - step: publish@release_artifacts\n        name: publish_release_artifacts\n        displayName: '发布'\n        # 上游上传制品任务的产出\n        dependArtifact: output\n        # 发布制品版本号\n        version: '1.0.0.0'\n        # 是否开启版本号自增，默认开启\n        autoIncrement: true\ntriggers:\n  push:\n    branches:\n      exclude:\n        - master\n      include:\n        - .*\n"
  },
  {
    "path": ".workflow/MasterPipeline.yml",
    "content": "version: '1.0'\nname: master-pipeline\ndisplayName: MasterPipeline\nstages:\n  - stage: \n    name: compile\n    displayName: 编译\n    steps:\n      - step: build@maven\n        name: build_maven\n        displayName: Maven 构建\n        # 支持6、7、8、9、10、11六个版本\n        jdkVersion: 8\n        # 支持2.2.1、3.2.5、3.3.9、3.5.2、3.5.3、3.5.4、3.6.1、3.6.3八个版本\n        mavenVersion: 3.3.9\n        # 构建命令\n        commands:\n          - mvn -B clean package -Dmaven.test.skip=true\n        # 非必填字段，开启后表示将构建产物暂存，但不会上传到制品库中，7天后自动清除\n        artifacts:\n            # 构建产物名字，作为产物的唯一标识可向下传递，支持自定义，默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址\n          - name: BUILD_ARTIFACT\n            # 构建产物获取路径，是指代码编译完毕之后构建物的所在路径，如通常jar包在target目录下。当前目录为代码库根目录\n            path:\n              - ./target\n      - step: publish@general_artifacts\n        name: publish_general_artifacts\n        displayName: 上传制品\n        # 上游构建任务定义的产物名，默认BUILD_ARTIFACT\n        dependArtifact: BUILD_ARTIFACT\n        # 上传到制品库时的制品命名，默认output\n        artifactName: output\n        dependsOn: build_maven\n  - stage: \n    name: release\n    displayName: 发布\n    steps:\n      - step: publish@release_artifacts\n        name: publish_release_artifacts\n        displayName: '发布'\n        # 上游上传制品任务的产出\n        dependArtifact: output\n        # 发布制品版本号\n        version: '1.0.0.0'\n        # 是否开启版本号自增，默认开启\n        autoIncrement: true\ntriggers:\n  push:\n    branches:\n      include:\n        - master\n"
  },
  {
    "path": ".workflow/PRPipeline.yml",
    "content": "version: '1.0'\nname: pr-pipeline\ndisplayName: PRPipeline\nstages:\n  - stage: \n    name: compile\n    displayName: 编译\n    steps:\n      - step: build@maven\n        name: build_maven\n        displayName: Maven 构建\n        # 支持6、7、8、9、10、11六个版本\n        jdkVersion: 8\n        # 支持2.2.1、3.2.5、3.3.9、3.5.2、3.5.3、3.5.4、3.6.1、3.6.3八个版本\n        mavenVersion: 3.3.9\n        # 构建命令\n        commands:\n          - mvn -B clean package -Dmaven.test.skip=true\n        # 非必填字段，开启后表示将构建产物暂存，但不会上传到制品库中，7天后自动清除\n        artifacts:\n            # 构建产物名字，作为产物的唯一标识可向下传递，支持自定义，默认为BUILD_ARTIFACT。在下游可以通过${BUILD_ARTIFACT}方式引用来获取构建物地址\n          - name: BUILD_ARTIFACT\n            # 构建产物获取路径，是指代码编译完毕之后构建物的所在路径，如通常jar包在target目录下。当前目录为代码库根目录\n            path:\n              - ./target\n      - step: publish@general_artifacts\n        name: publish_general_artifacts\n        displayName: 上传制品\n        # 上游构建任务定义的产物名，默认BUILD_ARTIFACT\n        dependArtifact: BUILD_ARTIFACT\n        # 构建产物制品库，默认default，系统默认创建\n        artifactRepository: default\n        # 上传到制品库时的制品命名，默认output\n        artifactName: output\n        dependsOn: build_maven\ntriggers:\n  pr:\n    branches:\n      include:\n        - master\n"
  },
  {
    "path": "CHANGELOG.md",
    "content": "# 更新日志\n\n## V 1.8.0\n\n*2021-01-10* 一些完善。。。\n\n## V 1.7.0\n \n*2020-02-15* 支持docker部署、售后管理、通知管理、数据库七天备份。\n\n#### Bug 修复\n\n  * `小商城`后端接口部分存在水平越权漏洞\n  * `小商城`验证码未超时仍会发送验证码\n  * `小商城`显示管理员评论回复（#340 by sunyinggang）\n  * `管理后台`管理员评论回复（#340 by sunyinggang）\n  * `轻商城`添加收货地址返回不正确（#320 by kevinleeex）\n\n#### 优化\n \n  * `管理后台`专题支持排序、批量删除\n  * `基础系统`数据库四个表索引（#328 #330 #332 #334 by wtune）\n  \n#### 新特性\n  \n  * `基础系统`支持docker部署（参考实现 #321 by yuana1）\n  * `基础系统`自动备份7天数据到backup文件夹\n  * `管理后台`通知中心和通知管理\n  * `管理后台`登录页面增加版权内容\n  * `管理后台`售后管理\n  * `小商城`订单售后列表、售后详情、申请售后\n  * `轻商城`实现账号注册功能（#324 by yelongbao）\n\n## V 1.6.1\n \n*2020-01-01*\n\n#### Bug 修复\n\n  * `基础系统`删除不必要的Bean注解，导致不必要的实例化。\n  \n## V 1.6.0\n \n*2019-12-31*，优化团购实现，删除微信模板实现。\n\n#### Bug 修复\n\n  * `管理后台`修复查看商品详情时, 图片溢出（#305 by zaoangod）\n\n#### 优化\n \n  * `小商城`重构团购实现\n  * `小商城`删除微信模板实现\n  * `管理后台`优化查询区域速度（# by）\n  * `管理后台`更新vue-element-admin框架版本4.2.1\n\n#### 新特性\n  \n  * `小商城`尽可能替换vant图标\n  * `小商城`首页banner添加产品跳转（#299 by staneychan)\n  * `小商城`发送邮件通知使用ssl方式（#307 by jessonxiang）\n   \n## V 1.5.0\n \n*2019-11-15*， 持续优化轻商城模块，以及推荐项目Flutter_Mall\n\n#### Bug 修复\n\n  * `小商城`优惠券绑定绑定优惠券ID(#157 by @beaver383)\n  * `小商城`评论列表不能正确显示\n  * `轻商城`修正取消订单接口 (#256 by @1037621594)\n  \n#### 优化\n \n  * `小商城`采用延迟队列实现支付超时取消订单功能（参考#275 by @alexzhu0592）\n  * `小商城`分享按钮可选配置 (#239 by @galenzhao)\n\n#### 新特性\n  \n  * `基础系统`支持阿里云短信\n  * `轻商城`接入微信支付H5支付 (#291 by @beaver383) \n  * `小商城`团购拼团超期取消 (#284 by @beaver383)\n  * `管理后台`订单详情新增打印 (#274 by @fanchenggang )\n  * README文档推荐项目Flutter_Mall\n  \n## V 1.4.0\n \n*2019-05-16*，支持移动端轻商城\n\n#### Bug 修复\n\n  * `小商场`购物车和订单的商品数量必须正整数\n  * `小商城`微信支付回调校验失败通知信息\n  * `小商城`收货地址采用userId和id联合查询\n  * `管理后台`管理员不能删除自己账号\n\n#### 优化\n \n  * `文档`支持API文档\n  * `基础系统`更新第三方插件mybatis-generator-plugin到1.3.2\n  * `管理后台`不允许管理员通过编辑接口修改管理员密码\n\n#### 新特性\n  \n  * `小商城`帮助中心页面  \n  * `小商城`后端登录验证方式采用JWT (#167 by @Bigger-Ma)  \n  * `轻商场`基本结构完成 (#157 by @pkwenda)\n  * `管理后台`支持操作日志管理\n  \n## V 1.3.0\n \n*2019-03-11*，支持配置管理\n\n  * `管理后台`商品类目页面和行政区域页面采用树形结构显示；\n  * `管理后台`取消国际化和主题；\n  * `管理后台`支持配置管理；\n  \n  注意：虽然配置管理中可以设置订单超时时间，但是由于目前采用定时查询方式会产生延时，\n  因此最终订单超时时间需要额外加上这些延迟才能更新状态。以后会解决这个问题（例如使用redis）。\n\n## V 1.2.0\n \n*2019-03-03*，支持权限管理\n\n  * `管理后台`支持权限管理；\n  * `小商城`取消编程式事务管理，采用注解式事务管理；\n  * `小商城`采用多线程进行数据库查询操作；\n\n## V 1.1.0\n \n*2018-12-23*，支持优惠券\n\n  * `管理后台`支持优惠券管理；\n  * `管理后台`调整定时任务到job子包，方便以后进一步迁移至独立模块；\n  * `小商城`支持优惠券列表展示和个人优惠券功能；\n  * `基础系统`快递鸟即时API调整\n\n## V 1.0.0\n \n*2018-12-03*，文档完善\n\n## V 1.0.0.rc1\n \n*2018-11-30*，接入微信退款API\n\n  * `管理后台`接入微信退款API；\n  * `管理后台`错误码取消magic number；\n  * `管理后台`禁止超级管理员修改密码；\n  \n## V 1.0.0.rc0\n \n*2018-11-23*，清理代码，更新管理后台前端框架\n\n  * `管理后台`基于vue-element-admin更新至3.9.3；\n  * `管理后台`商品货品库存增加减少采用自定义Mapper；\n  * `管理后台`支持商品回复；\n  * `小商城`支持商品回复；\n  \n## V 0.10.2\n \n*2018-11-08*，修复一些小错误\n\n  * `管理后台`富文本编辑调整，修复小程序端文本对齐不正确问题；\n  * `小商城`支持团购专区列表页面\n  * `小商城`关闭默认内置缓存功能\n \n## V 0.10.1\n \n*2018-11-07*，修复一些小错误\n  \n## V 0.10.0\n \n*2018-10-26*，修复很多小错误\n\n  * `管理后台`校验POST参数\n  * `管理后台`乐观锁取消，仅用于订单表\n  \n## V 0.9.0\n \n*2018-09-14*，支持团购，第二套小商城renard-wx\n\n  * `小商场`支持团购\n  * `小商场`开源第二套小商城renard-wx\n  * `小商场`支持意见反馈组件\n  * `管理后台`采用乐观锁更新\n  * `管理后台`升级Spring Boot到2.x\n\n## V 0.8.0\n \n*2018-07-30*，删除os模块，小程序完善\n \n  * `小商场`支持商品分享\n  * `小商场`物流显示\n  * `小商场`优化商品购买样式，感谢[usgeek](https://github.com/linlinjava/litemall/pull/31) \n  * `小商场`支持客服、关于页面、手机绑定，感谢[usgeek](https://github.com/linlinjava/litemall/pull/31) \n  * `小商场`支持账号注册和密码找回时短信验证码\n  * `管理后台`页面查询时默认基于创建时间排序\n  * `基础系统`支持物流追踪  \n  * `基础系统`支持阿里云存储，感谢[usgeek](https://github.com/linlinjava/litemall/pull/31)  \n  * `项目`删除os模块，相关功能迁移至wx-api模块和admin-api模块\n  * `项目`从默认单机多服务方案调整至默认单机单服务方案\n  * `项目`暂时取消docker支持和.gitlab-ci.yml支持\n  * `项目`数据库添加litemall_system表，存储系统配置信息\n  * `项目`取消swagger支持\n\n## V 0.7.0\n \n*2018-07-16*，数据库再次简化，同时支持短信提醒、邮件提醒、腾讯对象存储服务\n \n  * `管理后台`页面查询时默认基于创建时间排序\n  * `管理后台`多个页面完善页面效果\n  * `管理后台`支持商品上架和商品编辑\n  * `基础系统`支持腾讯云短信提醒和邮件提醒，感谢[Menethil](https://github.com/linlinjava/litemall/pull/23)\n  * `基础系统`支持腾讯对象存储，感谢[Menethil](https://github.com/linlinjava/litemall/pull/24)\n  * `项目`数据库再次简化，同时小商城和管理后台代码进行相应调整\n\n## V 0.6.0\n \n*2018-06-30*，项目支持商品上架和统计功能\n \n  * `小商场`因wx.getUserInfo接口调整，微信登录调整\n  * `小商场`支持手机号码验证\n  * `管理后台`支持简单的统计\n  * `管理后台`支持商品上架\n  * `管理后台`基于官方tinymce-vue实现富文本编辑\n  * `项目`支持docker部署\n    \n## V 0.5.0\n \n*2018-05-11*，项目支持微信支付和修复小程序的一些BUG\n \n  * `小商场`因wx.getUserInfo接口调整，微信登录调整\n  * `小商场`修复立即购买会下单购物车所有商品\n  * `小商场`修复下单商品时添加收货地址成功但是没有显示\n  * `小商场`修复下单商品时添加收货地址的地址信息不能滚动\n  * `小商场`修复购物车商品不能删除\n  * `小商场`支持微信支付\n  * `管理后台`支持微信支付\n  * `基础系统`数据库litemall_collect的id设置自增\n  * `基础系统`数据库删除region相关的四个临时表\n  * `基础系统`litemall-core模块swagger2配置，支持swagger文档\n  * `项目`多模块maven结构重新设计\n  * `项目`文档整理部署方案和上线方案\n  * `项目`文档支持更新日志、贡献指南和常见问题\n\n## V 0.4.0\n \n*2018-04-21*，项目结构调整，增加了两个模块\n \n  * `小商场`的后端服务代码添加注释，校验输入参数\n  * `小商场`商品无货时显示“商品已售空”\n  * `管理后台`支持管理员同一账户多终端登录，方便演示\n  * `管理后台`专题内容支持富文本编辑\n  * `基础系统`litemall-os-api的链接从`storage/index/index`调整至`os/index/index`\n  * `基础系统`litemall-os-api支持浏览器显示。\n  * `基础系统`新增litemall-core模块，综合了litemall-os-api、litemall-wx-api\n     和litemall-admin-api的共性代码\n  * `基础系统`新增litemall-all模块作为包裹模块，支持三个后端服务和静态文件\n     打包成一个war项目包\n     \n## V 0.3.0 \n\n*2018-04-07*，业务模块从物理删除调整成逻辑删除\n\n* `小商场`的后端服务加密用户账号密码\n* `小商场`如果用户选择货品，则显示货品对应的价格；否则显示商品价格\n* `小商场`只有规格都选择，则商品页面才显示所对应货品的规格文本\n* `管理后台`商品详细信息支持tinymce富文本编辑\n* `管理后台`的后端服务加密管理员密码\n* `管理后台`完善登录退出逻辑\n* `基础系统`数据库中除regions几个表，其他所有表都添加`add_time`和`deleted`字段\n* `基础系统`litemall-db模块不支持数据物理删除，删除则设置`deleted`，而查询则过滤`deleted`\n\n## V 0.2.0\n\n*2018-04-02*，修复一些小商场出现的问题。\n\n* `小商场`微信登录\n* `小商场`账号登录、注册、找回密码\n  （注意手机验证码不支持，因此目前只是完成基本功能，但是存在安全风险）\n* `小商场`订单编号采用日期+6位随机数\n* `小商场`简单运费计算\n* `小商场`专题评价\n* `管理后台`禁止管理员修改超级管理员信息\n* `基础系统`自动脚本util/lazy.sh和util/upload.sh\n  \n## V 0.1.0\n\n*2018-03-24*， 项目架构基本完成。"
  },
  {
    "path": "CONTRIBUTE.md",
    "content": "# 贡献指南\n\n任何形式的贡献都欢迎，包括：\n\n* Issue里面报告的BUG\n* Issue里面对业务或技术的讨论\n* Pull Request\n* 对文档的意见或补充\n* 其他任何有意义本项目的行为\n\n个人能力有限，欢迎一起开发。\n\n目前项目基本框架已经建立，但是还不完整，因此非常欢迎人一起讨论技术和业务。\n但是交流合作之前，请查看以下碎碎念。\n\n## 项目理念\n\nlitemall的设计受众是小微型企业，而不是互联网企业，因此litemall的开发理念是一个小而美：\n\n* 小，指的是技术简单、架构简单、性能指标低、业务仅覆盖基本功能\n* 美，指的是技术新、架构清晰易扩展、安全系数不低、业务可直接部署使用\n\n正是因为以上考虑，目前litemall的架构是简单的，三种技术栈都是最基本的。\n\n虽然这么说，但是实际上开发的入门门槛不低：\n* 项目采用了三种技术栈，相互之间是相对独立的；\n* 采用的spring boot框架和vue-element-admin框架已经依赖相当多的库；\n* 除了开发技术，开发过程中也会涉及其他技术，包括环境配置、版本控制、\n  测试技术、日志、部署等等。\n\n因此贡献新的代码或讨论业务前，建议考虑以下问题：\n\n* 是否引入过多的复杂性，而没有带来相应的收益？\n\n  因为本项目希望能够为更多的人所学习使用，项目的复杂性是需要考虑的问题。\n  如果是复杂性和收益是相同的，那么接收贡献的可能性其实值得讨论。\n\n* 是否依赖过多的库？是否必须依赖该库？如果仅仅是该库的微小部分，是否可以自己实现一个简单的util类？\n\n  例如，一些技术框架采用了fastjson，而实际上spring boot已经默认采用jackson，因此如果没有特殊原因，\n  贡献者应该尽可能采用jackson。\n  \n* 是否盲目地采用过多过先进的技术？是否可以暂缓采用？\n\n  这里是谨慎的。例如，如果要引入缓存技术，则需要去学习缓存相关的类库，以及可能会遇到一些使用中存在的问题。\n  而v2.0.0之前其实没有必要提前考虑性能问题。同样地，单点登录技术是分布式架构中必须存在的基本功能，但是\n  目前两个后端服务分别采用各自登录方案即可。\n\n  注意：\n  > 这里并不是拒绝新技术，而是希望采取一个渐进式的谨慎的态度。\n  > 此外，对于新技术运用，其实规划是基于本项目稳定版本再开发一个独立的分布式版本。\n  \n* 已经有了一个技术，是否有必要贡献相同目的的另外一种技术？\n\n  这里是欢迎的。例如，已经有了vue框架的管理后台，但是采用其他前端框架的管理后台也是欢迎的。\n  这样可以给不同技术背景的用户所选择。当然，应该尽量保持不同版本之间的同步。又或者，小程序\n  已经有了一些开发框架，而目前小商场的小程序端仍然是原始的小程序技术，因此基于这些新的开发框架\n  来重构小程序端是欢迎的。\n  \n  也就是说本项目希望避免技术深度，而倾向于技术宽度，帮助自己以及更多的人学习了解不同的技术。\n  \n* 贡献代码量不大，或者改善文档。\n\n  这里是欢迎的。很多开源项目都建议贡献代码时应该少量并且逻辑分明。这样审阅代码时才能明确。\n  当然，如果是单词拼写不对之类，那么应该尽可能在一次commit中修复同样的问题。\n  \n虽然这里可能表现出对新技术的谨慎态度，但是如果用户发现有更好的技术或者有必要，欢迎讨论。\n当然，如果开发者不认同这里的一些理念，也可以基于自己的技术选型来开发自己的版本。\n如果认为自己开发的好，可以在本项目提交链接地址，让其他开发者了解。\n\n## 项目业务\n\n本项目所设想的基本业务功能已经在文档中列举完成。\n\n如果希望引入高级功能，例如分销功能等，建议用户在本项目基础上自行开发。\n\n如果认为有基本业务没有实现，可以Issue或者QQ群讨论，加入后续开发计划。\n\n当然更希望开发者直接提供代码，丰富完善目前的基础业务功能。\n\n## 代码贡献\n\n* 代码规范目前没有严格要求，后续会补充。\n\n## Issue规范\n\n* 在提交issue之前，请搜索是否存在相关问题。\n* 提交的Issue请尽可能给出详细信息\n* 建议Issue基于最新的代码"
  },
  {
    "path": "LICENSE",
    "content": "MIT License\n\nCopyright (c) 2018 linlinjava(linlinjava@163.com)\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n"
  },
  {
    "path": "README.md",
    "content": "# litemall\n\n又一个小商场系统。\n\nlitemall = Spring Boot后端 + Vue管理员前端 + 微信小程序用户前端 + Vue用户移动端\n\n* [文档](https://linlinjava.gitbook.io/litemall)\n* [贡献](https://linlinjava.gitbook.io/litemall/contribute)\n* [FAQ](https://linlinjava.gitbook.io/litemall/faq)\n* [API](https://linlinjava.gitbook.io/litemall/api)\n\n## 项目代码\n\n* [码云](https://gitee.com/linlinjava/litemall)\n* [GitHub](https://github.com/linlinjava/litemall)\n\n## 项目架构\n![](./doc/pics/readme/project-structure.png)\n\n## 技术栈\n\n> 1. Spring Boot\n> 2. Vue\n> 3. 微信小程序\n\n![](doc/pics/readme/technology-stack.png)\n\n## 功能\n\n### 小商城功能\n\n* 首页\n* 专题列表、专题详情\n* 分类列表、分类详情\n* 品牌列表、品牌详情\n* 新品首发、人气推荐\n* 优惠券列表、优惠券选择\n* 团购\n* 搜索\n* 商品详情、商品评价、商品分享\n* 购物车\n* 下单\n* 订单列表、订单详情、订单售后\n* 地址、收藏、足迹、意见反馈\n* 客服\n\n### 管理平台功能\n\n* 会员管理\n* 商城管理\n* 商品管理\n* 推广管理\n* 系统管理\n* 配置管理\n* 统计报表\n\n## 快速启动\n\n1. 配置最小开发环境：\n    * [MySQL](https://dev.mysql.com/downloads/mysql/)\n    * [JDK1.8或以上](http://www.oracle.com/technetwork/java/javase/overview/index.html)\n    * [Maven](https://maven.apache.org/download.cgi)\n    * [Nodejs](https://nodejs.org/en/download/)\n    * [微信开发者工具](https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html)\n    \n2. 数据库依次导入litemall-db/sql下的数据库文件\n    * litemall_schema.sql\n    * litemall_table.sql\n    * litemall_data.sql\n\n3. 启动小商场和管理后台的后端服务\n\n    打开命令行，输入以下命令\n    ```bash\n    cd litemall\n    mvn install\n    mvn clean package\n    java -Dfile.encoding=UTF-8 -jar litemall-all/target/litemall-all-0.1.0-exec.jar\n    ```\n    \n4. 启动管理后台前端\n\n    打开命令行，输入以下命令\n    ```bash\n    cd litemall/litemall-admin\n    npm install --registry=https://registry.npm.taobao.org\n    npm run dev\n    ```\n    此时，浏览器打开，输入网址`http://localhost:9527`, 此时进入管理后台登录页面。\n    \n5. 启动小商城前端\n   \n   这里存在两套小商场前端litemall-wx和renard-wx，开发者可以分别导入和测试：\n   \n   1. 微信开发工具导入litemall-wx项目;\n   2. 项目配置，启用“不校验合法域名、web-view（业务域名）、TLS 版本以及 HTTPS 证书”\n   3. 点击“编译”，即可在微信开发工具预览效果；\n   4. 也可以点击“预览”，然后手机扫描登录（但是手机需开启调试功能）。\n      \n   注意：\n   > 这里只是最简启动方式，而小商场的微信登录、微信支付等功能需开发者设置才能运行，\n   > 更详细方案请参考[文档](https://linlinjava.gitbook.io/litemall/project)。\n\n6. 启动轻商城前端\n\n    打开命令行，输入以下命令\n    ```bash\n    cd litemall/litemall-vue\n    npm install --registry=https://registry.npm.taobao.org\n    npm run dev\n    ```\n    此时，浏览器（建议采用chrome 手机模式）打开，输入网址`http://localhost:6255`, 此时进入轻商场。\n\n    注意：\n    > 现在功能很不稳定，处在开发阶段。\n\n## 警告\n\n> 1. 本项目仅用于学习练习\n> 2. 本项目还不完善，仍处在开发中，不承担任何使用后果\n> 3. 本项目代码开源[MIT](./LICENSE)，项目文档采用 [署名-禁止演绎 4.0 国际协议许可](https://creativecommons.org/licenses/by-nd/4.0/deed.zh)\n\n## 致谢\n\n本项目基于或参考以下项目：\n\n1. [nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)\n\n   项目介绍：基于Node.js+MySQL开发的开源微信小程序商城（微信小程序）\n\n   项目参考：\n   \n   1. litemall项目数据库基于nideshop-mini-program项目数据库；\n   2. litemall项目的litemall-wx模块基于nideshop-mini-program开发。\n\n2. [vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)\n  \n   项目介绍： 一个基于Vue和Element的后台集成方案\n  \n   项目参考：litemall项目的litemall-admin模块的前端框架基于vue-element-admin项目修改扩展。\n\n3. [mall-admin-web](https://github.com/macrozheng/mall-admin-web)\n\n   项目介绍：mall-admin-web是一个电商后台管理系统的前端项目，基于Vue+Element实现。\n\n   项目参考：litemall项目的litemall-admin模块的一些页面布局样式参考了mall-admin-web项目。\n\n4. [biu](https://github.com/CaiBaoHong/biu)\n\n   项目介绍：管理后台项目开发脚手架，基于vue-element-admin和springboot搭建，前后端分离方式开发和部署。\n\n   项目参考：litemall项目的权限管理功能参考了biu项目。\n\n5. [vant--mobile-mall](https://github.com/qianzhaoy/vant--mobile-mall)\n\n   项目介绍：基于有赞 vant 组件库的移动商城。\n\n   项目参考：litemall项目的litemall-vue模块基于vant--mobile-mall项目开发。\n\n## 推荐\n\n1. [Flutter_Mall](https://github.com/youxinLu/mall)\n   \n   项目介绍：Flutter_Mall是一款Flutter开源在线商城应用程序。\n   \n2. [Taro_Mall](https://github.com/jiechud/taro-mall)\n\n    项目介绍：Taro_Mall是一款多端开源在线商城应用程序，后台是基于litemall基础上进行开发，前端采用Taro框架编写。\n\n\n## License\n\n[MIT](https://github.com/linlinjava/litemall/blob/master/LICENSE)\nCopyright (c) 2018-present linlinjava"
  },
  {
    "path": "SECURITY.md",
    "content": "# Security Policy\n\n## Supported Versions\n\nUse this section to tell people about which versions of your project are\ncurrently being supported with security updates.\n\n| Version | Supported          |\n| ------- | ------------------ |\n| 1.8.x   | :white_check_mark: |\n| < 1.8   | :x:                |\n\n## Reporting a Vulnerability\n\nPlease report security issues to linlinjavaer@gmail.com\n"
  },
  {
    "path": "deploy/.gitignore",
    "content": "\n/db/litemall.sql\n/litemall/litemall.jar\n"
  },
  {
    "path": "deploy/README.md",
    "content": "## deploy\n\n### 项目打包\n\n1. 在服务器或者开发机打包项目到deploy；\n    ```\n    cd litemall\n    cat ./litemall-db/sql/litemall_schema.sql > ./deploy/db/litemall.sql\n    cat ./litemall-db/sql/litemall_table.sql >> ./deploy/db/litemall.sql\n    cat ./litemall-db/sql/litemall_data.sql >> ./deploy/db/litemall.sql\n    \n    cd ./litemall-admin\n    npm install --registry=https://registry.npm.taobao.org\n    npm run build:dep\n    \n    cd ..\n    mvn clean package\n    cp -f ./litemall-all/target/litemall-all-*-exec.jar ./deploy/litemall/litemall.jar\n    ```\n    这里的工作是：\n    1. 把数据库文件拷贝到deploy/db文件夹\n    2. 编译litemall-admin项目\n    3. 编译litemall-all模块，同时把litemall-admin编译得到的静态文件拷贝到\n       litemall-all模块的static目录\n       \n2. 修改litemall文件夹下面的*.yml外部配置文件，当litemall-all模块启动时会\n    加载外部配置文件，而覆盖默认jar包内部的配置文件。\n    例如，配置文件中一些地方需要设置成远程服务器的IP地址\n    \n此时deploy部署包结构如下：\n\n* bin\n\n存放远程服务器运行的脚本，包括deploy.sh脚本和reset.sh脚本\n\n* db\n\n存放litemall数据库文件\n\n* litemall\n\n存放远程服务器运行的代码，包括litemall-all二进制可执行包和litemall外部配置文件\n\n* util\n存放开发服务器运行的脚本，包括package.sh脚本和lazy.sh脚本。\n由于是本地开发服务器运行，因此开发者可以不用上传到远程服务器。\n\n### 项目部署\n\n1. 远程服务器环境（MySQL和JDK1.8）已经安装好，请确保云服务器的安全组已经允许相应的端口。\n2. 导入db/litemall.sql\n    ```bash\n    cd /home/ubuntu/deploy/db\n    mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql\n    ```\n3. 启动服务\n    ```bash\n    sudo service litemall stop\n    sudo ln -f -s /home/ubuntu/deploy/litemall/litemall.jar /etc/init.d/litemall\n    sudo service litemall start\n    ```\n4. 测试是否部署成功(xxx.xxx.xxx.xxx是云服务器IP）：\n    ```\n    http://xxx.xxx.xxx.xxx:8080/wx/index/index\n    http://xxx.xxx.xxx.xxx:8080/admin/index/index\n    http://xxx.xxx.xxx.xxx:8080/#/login\n    ```\n\n### 项目辅助脚本\n\n在前面的项目打包和项目部署中都是采用手动命令来部署。\n这里可以写一些脚本简化：\n\n* util/packet.sh\n\n在开发服务器运行可以自动项目打包\n\n* util/lazy.sh\n\n在开发服务器运行可以自动项目打包、项目上传远程服务器、自动登录系统执行项目部署脚本。\n    \n注意：\n> 1. 开发者需要在util/lazy.sh中设置相应的远程服务器登录账号和密钥文件路径。\n> 2. 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n    \n* bin/deploy.sh\n\n在远程服务器运行可以自动部署服务\n\n* bin/reset.sh\n\n在远程服务器运行可以自动项目导入数据、删除本地上传图片、再执行bin/deploy.sh部署服务。\n\n注意：\n> 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n\n总结，当开发者设置好配置信息以后，可以在本地运行lazy.sh脚本自动一键部署:\n```bash\ncd litemall\n./deploy/util/lazy.sh\n```\n\n不过由于需要设置的信息会包含敏感安全信息，强烈建议开发者参考这里的deploy文件夹，\n然后实现自己的deploy文件夹，妥善处置外部配置文件和脚本中的敏感安全信息!!!"
  },
  {
    "path": "deploy/bin/deploy.sh",
    "content": "#!/bin/bash\n\n# 本脚本的作用是停止当前Spring Boot应用，然后再次部署\nPID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }')\n\nif [ ! -z \"$PID\" ]\nthen\n    kill $PID\nfi\n\ncd /home/ubuntu/deploy/litemall || exit 2\nnohup java -jar litemall.jar > log.log 2>&1 &"
  },
  {
    "path": "deploy/bin/reset.sh",
    "content": "#!/bin/bash\n\n# 本脚本的作用是重置部署环境\n# 1.重置数据库\n# 2.删除storage文件夹内文件\n# 3.调用deploy.sh启动服务\n# 注意：由于1和2的原因，请仅在开发测试阶段使用本脚本！\n\n# 重置数据库\n# i. 请在`XXXXXX`处设置相应的root密码\n# ii. 同时请注意root密码放在脚本是非常危险的，因此这里仅仅是用于开发测试阶段。\nROOT=root\nPASSWORD=\n\nif test -z \"$PASSWORD\"\nthen\n  echo \"请设置云服务器MySQL的root账号密码\"\n  exit 1\nfi\n\n# 导入数据\ncd /home/ubuntu/deploy/db || exit 2\nmysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql\n\n# 删除storage文件夹内文件\ncd /home/ubuntu/deploy/litemall/storage || exit 2\nrm -f ./**\n\n# 重新部署服务\ncd /home/ubuntu/deploy/bin || exit 2\nsudo ./stop.sh\nsudo ./deploy.sh"
  },
  {
    "path": "deploy/bin/stop.sh",
    "content": "#!/bin/bash\n\nPID=$(ps -ef | grep litemall.jar | grep -v grep | awk '{ print $2 }')\n\nif [ ! -z \"$PID\" ]\nthen\n    kill $PID\nfi"
  },
  {
    "path": "deploy/db/.gitkeep",
    "content": ""
  },
  {
    "path": "deploy/litemall/application.yml",
    "content": "spring:\n  profiles:\n    active: none\n  message:\n    encoding: UTF-8\n  datasource:\n    druid:\n      url:  jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false\n      driver-class-name:  com.mysql.cj.jdbc.Driver\n      username:  litemall\n      password:  litemall123456\n      initial-size:  10\n      max-active:  50\n      min-idle:  10\n      max-wait:  60000\n      pool-prepared-statements:  true\n      max-pool-prepared-statement-per-connection-size:  20\n      validation-query:  SELECT 1 FROM DUAL\n      test-on-borrow:  false\n      test-on-return:  false\n      test-while-idle:  true\n      time-between-eviction-runs-millis:  60000\n      filters:  stat,wall\n\nserver:\n  port: 8080\n\nlogging:\n  config: classpath:logback-spring.xml\n\npagehelper:\n  helperDialect:  mysql\n  reasonable: true\n  supportMethodsArguments:  true\n  params: count=countSql\n\nlitemall:\n  # 开发者应该设置成自己的wx相关信息\n  wx:\n    app-id: wxa5b486c6b918ecfb\n    app-secret: e04004829d4c383b4db7769d88dfbca1\n    mch-id: 111111\n    mch-key: xxxxxx\n    notify-url: http://122.51.199.160:8080/wx/order/pay-notify\n    # 商户证书文件路径\n    # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3\n    key-path: xxxxx\n\n  #通知相关配置\n  notify:\n    mail:\n      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单，sendto 定义邮件接收者，通常为商城运营人员\n      enable: false\n      host: smtp.exmail.qq.com\n      username: ex@ex.com.cn\n      password: XXXXXXXXXXXXX\n      sendfrom: ex@ex.com.cn\n      sendto: ex@qq.com\n      port: 465\n\n    # 短消息模版通知配置\n    # 短信息用于通知客户，例如发货短信通知，注意配置格式；template-name，template-templateId 请参考 NotifyType 枚举值\n    sms:\n      enable: false\n      # 如果是腾讯云短信，则设置active的值tencent\n      # 如果是阿里云短信，则设置active的值aliyun\n      active: tencent\n      sign: litemall\n      template:\n        - name: paySucceed\n          templateId: 156349\n        - name: captcha\n          templateId: 156433\n        - name: ship\n          templateId: 158002\n        - name: refund\n          templateId: 159447\n      tencent:\n        appid: 111111111\n        appkey: xxxxxxxxxxxxxx\n      aliyun:\n        regionId: xxx\n        accessKeyId: xxx\n        accessKeySecret: xxx\n\n  # 快鸟物流查询配置\n  express:\n    enable: false\n    appId: \"XXXXXXXXX\"\n    appKey: \"XXXXXXXXXXXXXXXXXXXXXXXXX\"\n    vendors:\n      - code: \"ZTO\"\n        name: \"中通快递\"\n      - code: \"YTO\"\n        name: \"圆通速递\"\n      - code: \"YD\"\n        name: \"韵达速递\"\n      - code: \"YZPY\"\n        name: \"邮政快递包裹\"\n      - code: \"EMS\"\n        name: \"EMS\"\n      - code: \"DBL\"\n        name: \"德邦快递\"\n      - code: \"FAST\"\n        name: \"快捷快递\"\n      - code: \"ZJS\"\n        name: \"宅急送\"\n      - code: \"TNT\"\n        name: \"TNT快递\"\n      - code: \"UPS\"\n        name: \"UPS\"\n      - code: \"DHL\"\n        name: \"DHL\"\n      - code: \"FEDEX\"\n        name: \"FEDEX联邦(国内件)\"\n      - code: \"FEDEX_GJ\"\n        name: \"FEDEX联邦(国际件)\"\n\n  # 对象存储配置\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent\n    active: local\n    # 本地对象存储配置信息\n    local:\n      storagePath: storage\n      address: http://122.51.199.160:8080/wx/storage/fetch/\n    # 阿里云对象存储配置信息\n    aliyun:\n      endpoint: oss-cn-shenzhen.aliyuncs.com\n      accessKeyId: 111111\n      accessKeySecret: xxxxxx\n      bucketName: xxxxxx\n    # 腾讯对象存储配置信息\n    # 请参考 https://cloud.tencent.com/document/product/436/6249\n    tencent:\n      secretId: 111111\n      secretKey: xxxxxx\n      region: xxxxxx\n      bucketName: xxxxxx\n    # 七牛云对象存储配置信息\n    qiniu:\n      endpoint: http://pd5cb6ulu.bkt.clouddn.com\n      accessKey: 111111\n      secretKey: xxxxxx\n      bucketName: litemall\n\nswagger:\n  production: true"
  },
  {
    "path": "deploy/util/lazy.sh",
    "content": "#!/bin/bash\n\n# 本脚本的作用是\n# 1. 项目打包\n# 2. 上传云服务器\n# 3. 远程登录云服务器并执行reset脚本\n\n# 请设置云服务器的IP地址和账户\n# 例如 ubuntu@122.51.199.160\nREMOTE=\n# 请设置本地SSH私钥文件id_rsa路径\n# 例如 /home/litemall/id_rsa\nID_RSA=\n\nif test -z \"$REMOTE\"\nthen\n  echo \"请设置云服务器登录IP地址和账户\"\n  exit 1\nfi\n\nif test -z \"$ID_RSA\"\nthen\n  echo \"请设置云服务器登录IP地址和账户\"\n  exit 1\nfi\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null && pwd )\"\ncd $DIR/../.. || exit 2\nLITEMALL_HOME=$PWD\necho \"LITEMALL_HOME $LITEMALL_HOME\"\n\n# 项目打包\ncd $LITEMALL_HOME || exit 2\n./deploy/util/package.sh\n\n# 上传云服务器\ncd $LITEMALL_HOME || exit 2\nscp -i $ID_RSA -r  ./deploy $REMOTE:/home/ubuntu/\n\n# 远程登录云服务器并执行reset脚本\n# 这里使用tr命令，因为有可能deploy.sh和reset.sh的换行格式是CRLF，而LINUX环境应该是LF\nssh $REMOTE -i $ID_RSA << eeooff\ncd /home/ubuntu/deploy/bin\ncat deploy.sh | tr -d '\\r' > deploy2.sh\nmv deploy2.sh deploy.sh\nchmod +x deploy.sh\ncat reset.sh | tr -d '\\r' > reset2.sh\nmv reset2.sh reset.sh\nchmod +x reset.sh\nsudo ./reset.sh\nexit\neeooff"
  },
  {
    "path": "deploy/util/package.sh",
    "content": "#!/bin/bash\n\n# 请注意\n# 本脚本的作用是把本项目编译的结果保存到deploy文件夹中\n# 1. 把项目数据库文件拷贝到deploy/db\n# 2. 编译litemall-admin\n# 3. 编译litemall-all模块，然后拷贝到deploy/litemall\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null && pwd )\"\ncd $DIR/../..\nLITEMALL_HOME=$PWD\necho \"LITEMALL_HOME $LITEMALL_HOME\"\n\n# 复制数据库\ncat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/deploy/db/litemall.sql\ncat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/deploy/db/litemall.sql\ncat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/deploy/db/litemall.sql\n\n# 打包litemall-admin\ncd $LITEMALL_HOME/litemall-admin\nnpm install --registry=https://registry.npm.taobao.org\nnpm run build:dep\n\n# 打包litemall-vue\ncd $LITEMALL_HOME/litemall-vue\nnpm install --registry=https://registry.npm.taobao.org\nnpm run build:dep\n\ncd $LITEMALL_HOME\nmvn clean package\ncp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/deploy/litemall/litemall.jar"
  },
  {
    "path": "doc/FAQ.md",
    "content": "# 常见问题\n\n## 1 小商城\n\n这里主要是指litemall-wx-api、litemall-wx和renard-wx三个模块的相关问题。\n\n### 1.1 小程序微信登录失败\n\n现象：\n\n小程序微信登录失败\n\n原因：\n\n小程序未上线之前，开发者必须设置自己申请的appid，否则微信登录肯定会失败。\n\n解决：\n\n1. 如果只是体验商品购买流程，开发者可以采用账号注册登录方式。\n2. 开发者在litemall-wx、renard-wx和litemall-core模块的appid信息设置成自己申请的信息。\n\n### 1.2 appid已经修改，微信登陆仍然失败\n\n现象：\n\n微信开发者工具修改了开发者自己申请的appid，后端也更新了相应信息，但是微信登录仍然报错。\n\n原因：\n\n这里可能是缓存问题，虽然修改了appid，但是微信开发者工具未及时更新。\n\n解决：\n\n微信开发者工具中修改appid以后，请关闭litemall-wx项目或者微信开发者工具，重新启动导入litemall-wx。\n\n### 1.3 手机真机测试不正常\n\n现象：\n\n微信开发者工具打开正常，但是手机真机扫描加载小商场以后，只有页面结构，没有数据和图片。\n\n原因：\n\n数据或者图片不可访问。\n\n解决：\n\n1. 确保小商场后端服务可以访问，可以通过手机浏览器访问后端服务地址测试\n   * 小商场的后端服务地址是localhost，则手机不可访问；\n   * 小商场的后端服务地址是局域网地址，而手机不在局域网中（例如不是相同wifi，或者手机是移动网络）\n   * 小商场的后端服务未启动\n2. 手机小商场的**调试功能**开启\n\n### 1.4 第三方手机测试不正常\n\n现象：\n\n开发者自己手机测试正常，而第三者手机测试不正常。\n\n解决：\n\n1. 确保小商场后端服务可以访问，可以通过第三者手机浏览器访问后端服务地址测试\n2. 第三者手机小商场的**调试功能**开启\n3. 在微信小程序平台设置第三者的微信账号是**体验者**\n\n### 1.5 微信支付失败\n\n现象：\n\n小商场不能支付，或者点击支付总是报错\n\n原因：\n\n开发者必须拥有商户支付权限，然后设置好以下信息：\n```\nlitemall.wx.app-id=\nlitemall.wx.app-secret=\nlitemall.wx.mch-id=\nlitemall.wx.mch-key=\nlitemall.wx.notify-url=\n```\n\n解决：\n\n参考`3.0 小商场环境`，设置相应支付配置信息\n\n### 1.6 支付成功，但商品仍未付款\n\n现象：\n\n在微信开发者工具中已经成功支付，但是返回订单页面时商品订单仍然显示`未付款`状态。\n\n原因是：\n\n微信平台支付成功以后，会把支付结果推送到`wx.notify-url`所指定的地址。\n因此，开发者必须确定`wx.notify-url`所指向的访问链接是可以成功访问，同时\n能够返回正常的响应结果。\n\n解决：\n\n1. 如果开发者是在微信开发者工具中测试支付，那么需要采用一些内网穿透工具，\n把`WxOrderController.payNotify`所代表的本地地址，例如`http://localhots/wx/order/pay-notify`,\n转换成外网可以访问的地址，例如`http://xxx.com/wx/order/pay-notify`，最后\n设置`wx.notify-url`指向该地址。\n\n2. 如果开发者已经上线服务，请确认`wx.notify-url`所指向的访问链接可以正常工作。\n\n## 2. 管理后台\n\n这里主要是指litemall-admin-api和litemall-admin两个模块的相关问题。\n\n### 2.1 登录连接超时，联系管理员\n\n现象：\n\n管理后台登录时，出现报错信息：登录连接超时\n\n原因：\n\n1. 首先，需要明白这是前后端分离项目，前端会向后端发送请求；\n2. 其次，需要明白报错的地方，是litemall-admin/src/utils/request.js文件中;\n3. 最后，连接超时是说发送给后端的请求长时间未反应。这里存在两个可能性：\n    * 真连接超时，目前request.js文件中设置请求超时时间是5s，因此真的可能5s后端\n    未及时返回数据；\n    * 假连接超时，例如向一个不存在的地址请求数据，那自然是返回连接失败。\n\n解决：\n\n通常是开发者设置不正确引起的假连接超时。\n\n1. 首先，用chrome的开发者工具查看登录页面向后端请求的具体地址；\n2. 然后，测试后端的服务是否已启动，请求地址是否可以访问。\n3. 最后，如果设置正确，用chrome的开发者工具查看登录页面向后端请求返回数据信息；\n如果设置不正确，请启动相应的后端服务。\n\n### 2.2 安装失败/启动不成功\n\n现象：\n\n执行`npm install`失败\n\n原因：\n\n可能下载依赖失败。\n\n解决：\n\n清空node_modules，重新执行`npm install`命令，或者自行百度、Google。\n\n### 2.3 分页数据返回不正常\n\n现象：\n\n如果管理后台点击很大的分页页数（实际已超过当时数据最大页数），后端仍然能够返回数据。\n\n原因：\n\n这个不是BUG，而是开发者对于查询页面超过实际页面后应该产生何种效果的不同理解。\n* 返回最后一页数据可能是合理的；\n* 返回空数据可能也是合理的。\n\n解决：\n\nlitemall-db模块的application-db.yaml资源文件中reasonable是true\n\n    pagehelper:\n      helperDialect:  mysql\n      reasonable: true\n      supportMethodsArguments:  true\n      params: count=countSql\n\n开发者可以尝试设置reasonable为false，然后检查是否能够解决问题。\n\n## 3. 基础系统\n\n这里主要是指litemall-db、litemall-core和litemall-all模块三个模块的相关问题。\n\n\n### 3.1 Invalid bound statement\n\n现象：\n\n有时（特别是采用mybatis generator重新生成代码）后端服务报错\n\n```\norg.apache.ibatis.binding.BindingException: Invalid bound statement (not found): org.linlinjava.litemall.db.dao.XXXX\n```\n\n原因：\n\n应该是自动生成的新的XML文件没有及时更新到编译文件夹target中，造成了target中mybatis的Java代码和XML文件不对应。\n\n解决：\n\n采用maven命令或者插件先清理项目再重新编译打包，例如\n```bash\nmvn clean\nmvn package\n```\n\n### 3.2 Unknown Column\n\n现象：\n\n```\nError querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'add_time' in 'field list'\nThe error may exist in org/linlinjava/litemall/db/dao/LitemallSystemMapper.xml\nThe error may involve org.linlinjava.litemall.db.dao.LitemallSystemMapper.selectByExample-Inline\nThe error occurred while setting parameters\nSQL: select id, key_name, key_value, add_time, update_time, deleted from litemall_system\nCause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: Unknown column 'add_time' in 'field list'\n```\n\n原因：\n\n系统处在开发中，所以数据库表根据业务会不断调整，因此如果开发者更新代码以后直接运行，有可能导致当前代码\n操作数据库失败，因为开发者当前的数据库表已经过时。\n\n解决：\n\n如果出现数据库方面的报错，建议开发者重新导入数据库。\n\n### 3.3 数据库导入失败\n\n现象：\n\n开发者直接（或使用Navicat）运行litemall_schema.sql时运行失败。\n\n原因：\n\n可能是`drop user if exists`在MySQL低版本不支持，也可能是Navicat不支持。\n\n解决:\n\n首先，请开发者请直接打开litemall_schema.sql文件，可以看到\n```\ndrop database if exists litemall;\ndrop user if exists 'litemall'@'localhost';\ncreate database litemall default character set utf8mb4 collate utf8mb4_unicode_ci;\nuse litemall;\ncreate user 'litemall'@'localhost' identified by 'litemall123456';\ngrant all privileges on litemall.* to 'litemall'@'localhost';\nflush privileges;\n```\n\n可以看到，这里主要是完成三个工作\n* 创建数据库\n* 创建数据库用户\n* 分配该用户所有操作权限\n\n因此，如果开发者运行litemall_schema.sql失败，开发者可以自行使用\n相关SQL命令或者使用SQL工具创建数据库、用户和分配权限工作。\n\n此外实际上，**开发者也不应该在部署或者上线阶段运行litemall_schema.sql**\n\n## 4. 项目\n\n这里主要是指其他项目开发相关问题。\n\n### 4.1 项目导入IDEA时卡顿\n\n现象：\n\nIDEA导入项目时，非常耗时间，或者卡断，或者一直疯狂运行。\n\n原因：\n\n应该是litemall-admin模块和litemall-vue模块的node_modules文件夹导致的。\nnode_modules是litemall-admin和litemall-vue模块所依赖的项目库，可能有近200M的文件。\n而IDEA如果没有设置，则可能尝试对该文件夹进行解析索引，从而导致卡断。\n\n解决方案：\n\n1. 先关闭IDEA，然后删除litemall-admin和litemall-vue模块内的node_modules文件夹；\n2. 然后分别创建空的node_modules文件夹；\n3. 重新打开IDEA，分别设置litemall-admin模块和litemall-vue模块的node_modules文件夹Excluded状态。\n\n![](./pics/faq/excluded.png)"
  },
  {
    "path": "doc/README.md",
    "content": "# Table of Contents\n\n* [介绍](../README.md)\n* [更新日志](../CHANGELOG.md)\n* [贡献指南](../CONTRIBUTE.md)\n* [FAQ](./FAQ.md)\n* [API](./api.md)\n* [数据库](./database.md)\n* [1. 系统架构](./project.md)\n* [2. 基础系统](./platform.md)\n* [3. 小商场](./wxmall.md)\n* [4. 管理后台](./admin.md)\n* [5. 轻商城](./mobmall.md)"
  },
  {
    "path": "doc/admin.md",
    "content": "# 4 litemall管理后台\n\n项目技术架构：\n\n* 管理后台前端，即litemall-admin模块\n  * vue\n  * vuex\n  * vue-router\n  * axios\n  * element\n  * vue-element-admin 4.3.0\n  * 其他，见package.json\n* 管理后台后端, 即litemall-admin-api模块\n  * Spring Boot 2.x\n  * Spring MVC\n\n目前存在的问题：\n\n* `缺失`首页中实现一些小组件，同时点击能够跳转相应页面\n* `缺失`支持导出表所有数据\n\n## 4.1 litemall-admin-api\n\n本节介绍管理后台的后台服务模块。\n\n### 4.1.1 授权服务\n\n见AdminAuthController类\n\n### 4.1.2 用户管理服务\n\n用户管理服务进一步分成：\n* 会员管理服务，见AdminUserController类\n* 收货地址服务，见AdminAddressController类\n* 会员收藏服务，见AdminCollectController类\n* 会员足迹服务，见AdminFootprintController类\n* 搜索历史服务，见AdminHistoryController类\n* 意见反馈服务，见AdminFeedbackController类\n\n### 4.1.3 商场管理服务\n\n商城管理服务进一步分成：\n* 行政区域服务，见AdminRegionController类\n* 品牌制造商服务，见AdminBrandController类\n* 商品类目服务，见AdminCategoryController类\n* 订单管理服务，见AdminOrderController类\n* 通用问题服务，见AdminIssueController类\n* 关键词服务，见AdminKeywordController类\n\n### 4.1.4 商品管理服务\n\n商品服务，见AdminAdminController类\n\n### 4.1.5 推广管理服务\n\n推广管理服务进一步分成：\n\n* 广告服务，见AdminAdController类\n* 专题服务，见AdminTopicController类\n* 团购服务，见AdminGrouponController类\n\n### 4.1.6 系统管理服务\n\n系统管理服务进一步分成：\n* 管理员服务，见AdminAdminController类\n* 对象存储服务，见见AdminStorageController类\n\n### 4.1.7 其他服务\n\n* 统计服务，见AdminStatController类\n* 个人服务，见AdminProfileController类\n\n### 4.1.8 安全\n\n这里的安全基于Shiro。\n\n#### 4.1.8.1 认证\n\n#### 4.1.8.2 账号密码加盐\n\n如果是微信登录，那么无需账号和密码。\n\n而如果用户采用了账号和密码的形式登录，那么后端需要把用户密码加盐。\n\n#### 4.1.8.3 权限控制\n\n后端实现权限管理功能来支持一定的安全控制。\n具体细节见4.1.9。\n\n### 4.1.9 权限管理\n\n权限管理只完成了操作权限的功能，而数据权限的功能未完成。\n\n#### 4.1.9.1 权限设计\n\n权限控制在数据库层面涉及到三个表`litemall_admin`, `litemall_role`和`litemall_permission`：\n* litemall_admin表中存在roleId字段，保存角色ID数组；\n* litemall_role表记录角色名称和角色介绍；\n* litemall_permission表记录角色所用于的权限值。\n\n权限控制在后端层面通过这三个表可以构建出管理员所属的角色以及所拥有的操作权限。\n当管理员登录以后，访问一些受权限保护的后端地址时，后端会验证当前管理员的操作权限和后端地址需要的操作权限；\n如果不匹配则会抛出异常，然后前端就会收到无操作权限的提示信息。\n\n权限控制在前端层面可以简单地把无操作权限显示给用户即可。\n但是前端可以进一步优化完成菜单权限特性和按钮权限特性：\n* 菜单权限，即管理员登录以后，前端的菜单是自动生成的；\n* 按钮权限，即管理员点击菜单跳转到页面，而页面中只出现当前管理员可操作的按钮。\n\n以上内容参考了网上资料和开源项目，但是实现细节方面会存在一些出入。\n\n##### 4.1.9.1.1 三个表，而不是五个表\n\n通常是五个表，user, role, user_role, permission, role_permission。\n\n但是本项目只需要三个表：\n* user_role表的关联关系，可以通过user表的roles字段完成，因此可以省略；\n* permission表省略，这里可能是非常奇怪的做法，但是实际上是可行的。\n\n很多开源项目的permission表是记录当前系统的所有权限，最终呈现给管理后台的使用者；\n但是数据来源则是开发者或者系统用户来进行数据输入的，但是这样真的合理吗？\n* 开发者开发完系统以后，需要额外在数据库中写入权限相关内容，这样存在独立两个步骤\n  可能不是很好；此外，如果系统升级，完成新的权限，那么如何添加这些权限到数据库也\n  不是很好。\n* 如果开发者设计权限页面，支持系统管理员手动添加新的权限，那样其实也不合适，\n  因为系统管理员可能对系统的权限并不了解，例如url地址所需要的权限。\n  这里很多开源项目都是采取这种方法，但是实际上管理员可能根本不会理解或者使用。\n\n这里本项目参考了[biu](https://github.com/CaiBaoHong/biu)项目中注解的方式，\n系统的所有的权限不是通过数据库中权限表数据获取，而是通过注解自动解析生产当前系统\n所有的权限。而且因为是注解，所以开发者在开发新的权限时，只需要在代码内直接书写，\n不需要再次在数据库中写入。\n\n当然，这里并意味说三个表就好或者五个表就不好，开发者可以按照自己的理解来做。\n\n本项目具体如何实现见下文细节。\n\n##### 4.1.9.1.2 权限只有一种类型，而不是三种类型\n\n在[biu](https://github.com/CaiBaoHong/biu)项目中明确了存在三种权限类型，分别是\n菜单权限元数据、按钮权限元数据、接口权限元数据。\n很明显地，前两种权限对应了前端权限，而接口权限元数据就是后端权限。\n\n本项目没有采用这种理念，其原因是因为对于最终管理员而言，或者说有可能是不懂IT的\n普通管理员，前端权限页面存在三个权限给用户勾选，可能反而会造成困惑。实际上，\n前端页面建议还是应该出现一种权限效果。\n\n本项目对管理员而言只有一种权限，但是这个权限本身对应了菜单权限元数据、按钮权限元数据、接口权限元数据。\n因此，管理员勾选一个权限以后，后台权限即授权成功，同时前端的菜单权限和按钮权限也自动调整。\n具体实现细节见下文。\n\n后端权限基于shiro来实现，相关代码见litemall-admin-api模块。\n\n##### 4.1.9.2 基本配置\n\n1. config子包的`ShiroConfig`引入了Shiro并配置了shirFilter、realm和sessionManager；\n2. shiroFilter配置只允许少量url可以匿名访问，其他url都需要登录才能访问；\n3. realm设置的是shiro子包的`AdminAuthorizingRealm`类，该类作用是认证和授权的功能；\n4. sessionManager设置的是shiro子包的`AdminWebSessionManager`类，该类作用是重置会话管理器。\n   默认会话管理器是基于cookie实现会话保持，而这里是基于自定义头部实现会话保持。\n\n经过以上步骤，shiro就配置正常。\n* 当管理员登录时，先认证；\n* 认证成功，则授权，在后端内保存roles和permissions；同时，在响应头部写入自定义头部和sessionId；\n* 认证失败，则抛出认证异常；\n* 管理员再次访问页面时，shiro通过自定义头自动认证成功。\n\n##### 4.1.9.3 权限校验\n\n但是以上只完成授权功能，而没有完成权限校验功能。\n这里开发者应该在Controller类的方法中使用`RequiresPermissions`注解。\n例如:\n```\n@RestController\n@RequestMapping(\"/admin/ad\")\npublic class AdminAdController {\n\n    @RequiresPermissions(\"admin:ad:list\")\n    @RequiresPermissionsDesc(menu={\"推广管理\" , \"广告管理\"}, button=\"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name, String content,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallAd> adList = adService.querySelective(name, content, page, limit, sort, order);\n        int total = adService.countSelective(name, content, page, limit, sort, order);\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"total\", total);\n        data.put(\"items\", adList);\n\n        return ResponseUtil.ok(data);\n    }\n}\n```\n\n而具体的权限校验逻辑则由shiro自动完成：\n1. 登录成功或者会话登录，shiro已经有当前用户的权限列表；\n2. 访问权限保护的方法时，shiro通过`RequiresPermissions`注解得到所需操作权限列表；\n3. 测试已分配的权限和操作所需权限是否一致，如果一致则可以调用方法，否则抛出无权限的异常。\n\n##### 4.1.9.4 权限描述\n\n在annotation子包中存在一个自定义的`RequiresPermissionsDesc`注解\n```\n@Target({ElementType.TYPE, ElementType.METHOD})\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface RequiresPermissionsDesc {\n    String[] menu();\n    String button();\n}\n```\n\n这里讨论一下为什么要自定义权限描述注解？\n> 当后端设计好权限以后，需要向前端发送系统的权限情况，管理员可以查看系统当前所有权限以及允许为一个角色配置权限。\n> 这里就带来了实现方面的问题:\n> 一些开源项目在数据库设计一个permission表，记录系统所有权限，但是4.1.9.1.1节讨论了这种方式的局限性。\n> 因此本项目采用权限注解方式，要求开发者在使用权限注解（RequiresPermissions）的地方应该同时使用权限文档注解（RequiresPermissionsDesc），\n> 这样系统能够通过权限注解自动生成权限列表，向前端返回可读的信息。\n\n例如:\n```\n@RestController\n@RequestMapping(\"/admin/ad\")\npublic class AdminAdController {\n\n    @RequiresPermissions(\"admin:ad:list\")\n    @RequiresPermissionsDesc(menu={\"推广管理\" , \"广告管理\"}, button=\"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name, String content,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallAd> adList = adService.querySelective(name, content, page, limit, sort, order);\n        int total = adService.countSelective(name, content, page, limit, sort, order);\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"total\", total);\n        data.put(\"items\", adList);\n\n        return ResponseUtil.ok(data);\n    }\n}\n```\n\n\n本项目通过搜索`RequiresPermissions`注解和`RequiresPermissionsDesc`注解（见util子包的PermissionUtil类），\n在内部生产了`Permission`类的集合:\n```\npublic class Permission {\n    private RequiresPermissions requiresPermissions;\n    private RequiresPermissionsDesc requiresPermissionsDesc;\n    private String api;\n}\n```\n\n也就是说，对于一个权限，既有权限值（requiresPermissions的value），也有权限对应的操作API，\n也有权限的描述内容（requiresPermissionsDesc的menu和button）。\n\n前端权限所需要的一些权限内容可以从这里来间接产生，具体方式见4.2.1节。\n\n当然，需要指出的是，这里利用注解方式可以不需要在数据库中保存权限信息，\n但是在灵活性方面可能也会有问题。\n\n### 4.1.10 定时任务\n\njob子包存在以下定时任务：\n* OrderJob类\n  * checkOrderUnpaid\n  * checkOrderUnconfirm\n  * checkOrderComment\n* CouponJob类\n  * checkCouponExpired\n\n注意：\n> 虽然定时任务放在AdminOrderController类中，但是可能这里不是很合适，\n> 以后需要调整或者完善。\n\n## 4.2 litemall-admin\n\n本章介绍管理后台的前端模块。\n\nlitemall-admin模块的代码基于[vue-element-admin](https://github.com/PanJiaChen/vue-element-admin)\n\n\n#### 4.2.1 前端权限\n\n需要再次明确的是，前端权限的作用仅仅是隐藏菜单或者页面按钮，优化用户使用体验，\n而实际上没有真正的权限保护功能。\n\n这里前端校验的思路可以参考vue-element-admin的文档:\n* [路由和侧边栏](https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/router-and-nav.html)\n* [权限验证](https://panjiachen.github.io/vue-element-admin-site/zh/guide/essentials/permission.html)\n\n##### 4.2.1.2 角色页面\n\n管理员的角色页面用于创建角色和分配权限。\n\n其中点击授权按钮，则会出现系统所有的权限和当前已经分配的权限,具体代码可以见AdminRoleController的getPermissions。\n* 系统所有的权限，可以通过后端自动解析权限描述注解来获取；\n* 当前已分配权限，可以通过数据库访问来获取。\n\n#### 4.2.1.3  权限API\n\nvue-element-admin中权限校验是基于role完成的权限校验；\n而其他一些开源项目中权限校验是基于permission权限值完成的权限校验；\n而本项目进行了调整，基于permission URL完成权限校验。\n\n首先讨论为什么基于role的权限校验不是很好：\n\nvue-element-admin的权限校验要求在菜单或者页面按钮中写上role信息，\n这里原理是可以的。但是存在一个问题，就是角色是管理员动态创建的，\n因此菜单或者页面按钮直接写死访问所需要的role，不利于后期维护升级。\n\n接着讨论为什么基于permission权限值的权限校验不是很好：\n\n在前后端分离项目中，前端和后端应该是不同的开发者开发。如果采用权限值的方式，\n可能导致前后端耦合紧密的问题。\n例如，后端开发者开发了一个API是`/admin/ad/list`，后端访问所需的权限值是`admin:ad:list`，\n此时前端也需要写菜单或者页面按钮的地方写上`admin:ad:list\"`。\n当然，这里原理上和操作上都是可行的。但是，这里要求前端开发者必须知道自己访问后端\nAPI所对应的操作权限值。因此如何以一种好的前后端分离的方式来做可能是一个问题。\n\n本项目则基于permission URL的权限校验方式：\n\n后端权限校验逻辑仍然是权限值，而前端权限校验逻辑则是URL。\n例如，后端开发者开发了一个API是`/admin/ad/list`，后端访问所需的权限值是`admin:ad:list`，\n此时前端则不需要考虑权限值，而是仅仅需要知道自己访问API的方式，也就是在\n菜单或者页面按钮的地方写上`GET /admin/ad/list`，而不是`admin:ad:list\"`。\n之所以是可行的，是因为后端权限是一个（权限值，权限描述，权限访问API）构成的Permission类。\n\n当然，这里也存在一定的局限性。\n\n#### 4.2.1.4 菜单权限\n\n见`src/route/index.js`代码\n\n例如\n```\n  {\n    path: '/promotion',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'promotionManage',\n    meta: {\n      title: '推广管理',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'ad',\n        component: () => import('@/views/promotion/ad'),\n        name: 'ad',\n        meta: {\n          perms: ['GET /admin/ad/list', 'POST /admin/ad/create', 'GET /admin/ad/read', 'POST /admin/ad/update', 'POST /admin/ad/delete'],\n          title: '广告管理',\n          noCache: true\n        }\n      }\n      }\n    ]\n  },\n```\n\n在菜单的meta中的perms属性声明了当前菜单所需要的操作权限。\n如果管理员登录以后，所分配的操作权限存在至少一个，那么该菜单就会显示；\n否则该菜单就会隐藏。\n\n\n##### 4.2.1.4 按钮权限\n\n在每个页面中一些组件可以采用指令`v-permission`或者函数`checkPermission`来实现按钮权限。\n\n例如，`src/views/promation/ad`页面中\n```\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" placeholder=\"请输入广告标题\"/>\n      <el-input v-model=\"listQuery.content\" clearable class=\"filter-item\" style=\"width: 200px;\" placeholder=\"请输入广告内容\"/>\n      <el-button v-permission=\"['GET /admin/ad/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">查找</el-button>\n      <el-button v-permission=\"['POST /admin/ad/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">添加</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">导出</el-button>\n    </div>\n```\n\nelement的`el-button`组件声明了操作权限是`GET /admin/ad/list'`。\n如果管理员登录以后，所分配的操作权限匹配，那么该按钮就会显示；\n否则该按钮就会隐藏。\n\n##### 4.1.1.5 权限局限性\n\n前端权限这里的代码调整旨在解决一些认为不合理的地方，但是实际上也同时带来了\n一定的局限性或者限制。\n\n这里列出一些可能的问题，开发者可以自己审阅或者重新设计代码。\n\n## 4.3 开发新组件\n\n本章节介绍如何开发新的管理后台功能。\n\n### 4.3.1 管理后台前端页面\n\n### 4.3.2 前后端交互服务API\n\n### 4.3.3 管理后台后端服务\n\n### 4.3.4 数据库"
  },
  {
    "path": "doc/api.md",
    "content": "# 前后端接口文档\n\n本项目前后端接口规范和接口文档。\n\n注意：\n> 1. 以下API部分基于nideshop开源项目的API设计；\n> 2. 以下API是参考API，可能不是很合理，欢迎开发者交流。\n> 3. 接口文档处于开发中，如果发现接口描述和接口实际不对应，欢迎PR或者报告。\n\n## 1 前后端接口规范\n\n### 1.1 请求格式\n\n这里没有采用RESTful风格的接口，而是定义具体语义的接口。\n目前只使用`GET`和`POST`来表示请求内容和更新内容两种语义。\n\n#### 1.1.1 GET请求\n\n    GET API_URL?params\n\n例如\n    \n    GET /home/index\n\n或者\n    \n    GET /goods/list?page=1&limit=10\n\n#### 1.1.2 POST更新\n    \n    POST API_URL\n    {\n        body\n    }\n\n例如\n    \n    POST /cart/clear\n\n或者    \n    \n    POST /goods/star\n    {\n        id: 1\n    }\n\n#### 1.1.3 分页请求参数\n\n当GET请求后端获取数组数据时，需要传递分页参数。\n\n例如\n\n    GET /goods/list?page=1&limit=10&sort=add_time&order=desc\n    \n本项目的通用分页请求参数统一传递四个：\n\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n\n* page, 和通常计算机概念中数组下标从0开始不同，这里的page参数应该从1开始，1即代表第一页数据;\n* limit, 分页大小；\n* sort, 例如\"add_time\"或者\"id\";\n* order, 只能是\"desc\"或者\"asc\"。\n\n此外，这里四个参数是可选的，后端应该设置默认参数，因此即使前端不设置，\n后端也会自动返回合适的对象数组响应数据。\n\n注意:\n> 这里的参数是需要后端支持的，在一些场景下，例如数组对象是组装而成，\n> 有可能sort和order不支持。\n\n讨论：\n> 有些请求后端是所有数据，这里page和limit可能设置是无意义的。但是\n> 仍然建议加上两个参数，例如page=1, limit=1000。\n\n也就是说，请求后端数组数据时，同一传递四个分页参数，可能是比较良好的做法。\n\n### 1.2 响应格式\n\n    Content-Type: application/json;charset=UTF-8\n    \n    {\n        body\n    }\n    \n\n而body是存在一定格式的json内容：\n    \n    {\n        errno: xxx,\n        errmsg: xxx,\n        data: {}\n    }\n\n#### 1.2.1 失败异常\n\n    {\n        errno: xxx,\n        errmsg: xxx\n    }\n\n* errno是错误码，具体语义见1.3节。\n* errmsg是错误信息。\n    \n#### 1.2.2 操作成功\n\n    {\n        errno: 0,\n        errmsg: \"成功\",\n    }\n\n#### 1.2.3 普通对象\n\n    {\n        errno: 0,\n        errmsg: \"成功\",\n        data: {}\n    }\n    \n#### 1.2.4 数组对象\n\n    {\n        errno: 0,\n        errmsg: \"成功\",\n        data: {\n            list: [],\n            total: XX，\n            page: XX,\n            limit: XX,\n            pages: XX\n        }\n    }\n\nlist是对象数组，total是总的数量。\n\n### 1.3 错误码\n\n#### 1.3.1 系统通用错误码\n\n系统通用错误码包括4XX和5XX\n\n* 4xx，前端错误，说明前端开发者需要重新了解后端接口使用规范：\n  * 401，参数错误，即前端没有传递后端需要的参数；\n  * 402，参数值错误，即前端传递的参数值不符合后端接收范围。\n  \n* 5xx，后端系统错误，除501外，说明后端开发者应该继续优化代码，尽量避免返回后端系统错误码：\n  * 501，验证失败，即后端要求用户登录；\n  * 502，系统内部错误，即没有合适命名的后端内部错误；\n  * 503，业务不支持，即后端虽然定义了接口，但是还没有实现功能；\n  * 504，更新数据失效，即后端采用了乐观锁更新，而并发更新时存在数据更新失效；\n  * 505，更新数据失败，即后端数据库更新失败（正常情况应该更新成功）。\n\n#### 1.3.2 商场业务错误码\n\n* AUTH_INVALID_ACCOUNT = 700\n* AUTH_CAPTCHA_UNSUPPORT = 701\n* AUTH_CAPTCHA_FREQUENCY = 702\n* AUTH_CAPTCHA_UNMATCH = 703\n* AUTH_NAME_REGISTERED = 704\n* AUTH_MOBILE_REGISTERED = 705\n* AUTH_MOBILE_UNREGISTERED = 706\n* AUTH_INVALID_MOBILE = 707\n* AUTH_OPENID_UNACCESS = 708\n* AUTH_OPENID_BINDED = 709\n* GOODS_UNSHELVE = 710\n* GOODS_NO_STOCK = 711\n* GOODS_UNKNOWN = 712\n* GOODS_INVALID = 713\n* ORDER_UNKNOWN = 720\n* ORDER_INVALID = 721\n* ORDER_CHECKOUT_FAIL = 722\n* ORDER_CANCEL_FAIL = 723\n* ORDER_PAY_FAIL = 724\n* ORDER_INVALID_OPERATION = 725\n* ORDER_COMMENTED = 726\n* ORDER_COMMENT_EXPIRED = 727\n* GROUPON_EXPIRED = 730\n* COUPON_EXCEED_LIMIT = 740\n* COUPON_RECEIVE_FAIL= 741\n* COUPON_CODE_INVALID= 742\n    \n#### 1.3.3 管理后台业务错误码\n\n* ADMIN_INVALID_NAME = 601\n* ADMIN_INVALID_PASSWORD = 602\n* ADMIN_NAME_EXIST = 602\n* ADMIN_ALTER_NOT_ALLOWED = 603\n* ADMIN_DELETE_NOT_ALLOWED = 604\n* ADMIN_INVALID_ACCOUNT = 605\n* GOODS_UPDATE_NOT_ALLOWED = 610\n* GOODS_NAME_EXIST = 611\n* ORDER_CONFIRM_NOT_ALLOWED = 620\n* ORDER_REFUND_FAILED = 621\n* ORDER_REPLY_EXIST = 622\n* USER_INVALID_NAME = 630\n* USER_INVALID_PASSWORD = 631\n* USER_INVALID_MOBILE = 632\n* USER_NAME_EXIST = 633\n* USER_MOBILE_EXIST = 634\n* ROLE_NAME_EXIST = 640\n* ROLE_SUPER_SUPERMISSION = 641\n* ROLE_USER_EXIST = 642\n\n### 1.4 Token\n\n前后端采用token来验证访问权限。\n\n#### 1.4.1 Header&Token\n\n前后端Token交换流程如下：\n\n1. 前端访问商场登录API或者管理后台登录API;\n\n2. 成功以后，前端会接收后端响应的一个token，保存在本地；\n    \n3. 请求受保护API则，则采用自定义头部携带此token\n\n4. 后端检验Token，成功则返回受保护的数据。\n\n#### 1.4.2 商场自定义Header\n\n访问受保护商场API采用自定义`X-Litemall-Token`头部\n\n1. 小商城（或轻商场）前端访问小商城后端登录API`/wx/auth/login`\n\n        POST /wx/auth/login\n    \n        {\n            \"username\": \"user123\",\n            \"password\": \"user123\"\n        }\n\n2. 成功以后，前端会接收后端响应的一个token，\n\n        {\n          \"errno\": 0,\n          \"data\": {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0aGlzIGlzIGxpdGVtYWxsIHRva2VuIiwiYXVkIjoiTUlOSUFQUCIsImlzcyI6IkxJVEVNQUxMIiwiZXhwIjoxNTU3MzI2ODUwLCJ1c2VySWQiOjEsImlhdCI6MTU1NzMxOTY1MH0.XP0TuhupV_ttQsCr1KTaPZVlTbVzVOcnq_K0kXdbri0\"\n          },\n          \"errmsg\": \"成功\"\n        }    \n    \n3. 请求受保护API则，则采用自定义头部携带此token\n\n        GET http://localhost:8080/wx/address/list\n        X-Litemall-Token: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0aGlzIGlzIGxpdGVtYWxsIHRva2VuIiwiYXVkIjoiTUlOSUFQUCIsImlzcyI6IkxJVEVNQUxMIiwiZXhwIjoxNTU3MzM2ODU0LCJ1c2VySWQiOjIsImlhdCI6MTU1NzMyOTY1NH0.JY1-cqOnmi-CVjFohZMqK2iAdAH4O6CKj0Cqd5tMF3M\n\n#### 1.4.3 管理后台自定义Header\n\n访问受保护管理后台API则是自定义`X-Litemall-Admin-Token`头部。\n\n1. 管理后台前端访问管理后台后端登录API`/admin/auth/login`\n\n        POST /admin/auth/login\n    \n        {\n            \"username\": \"admin123\",\n            \"password\": \"admin123\"\n        }\n\n2. 成功以后，管理后台前端会接收后端响应的一个token，\n\n        {\n            \"errno\": 0,\n            \"data\": {\n                \"adminInfo\": {\n                    \"nickName\": \"admin123\",\n                    \"avatar\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n                },\n                \"token\": \"f2dbcae8-6e25-4f8e-bc58-aa81d512c952\"\n            },\n            \"errmsg\": \"成功\"\n        }\n    \n3. 请求受保护API时，则采用自定义头部携带此token\n\n        GET http://localhost:8080/wx/address/list\n        X-Litemall-Admin-Token: f2dbcae8-6e25-4f8e-bc58-aa81d512c952\n\n### 1.5 版本控制\n\nAPI应该存在版本控制，以保证兼容性。\n\n由于仍处于开发中，因此目前未引入版本控制。\n\n### 1.6 API格式\n\n这里定义一个API的格式：\n\n应用场景\n\n    xxx\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n\n### 1.7 API预览\n\n接下来会分别从用户层面和管理员层面构建商场API服务和管理后台API服务。\n\n商场API服务涉及\n\n* 安全服务\n* 首页服务\n* 类目服务\n* 商品服务\n* 购物车服务\n* 订单服务\n* 会员服务\n* 收货地址服务\n* 品牌商服务\n* 收藏服务\n* 评论服务\n* 优惠券服务\n* 反馈服务\n* 足迹服务\n* 团购服务\n* 帮助服务\n* 搜索服务\n* 专题服务\n* 对象存储服务\n\n\n管理后台API服务涉及:\n* 略\n\n### 1.8 API测试\n\n本节以GET、POST两种方式以及是否需要登录举例说明如何测试和使用本项目API。\n\n开发者可以使用各种API测试命令或者工具，这里以Postman作为工具。\n\n#### 1.8.1 GET 示例\n\n如果一个API是GET方法，那么请求参数需要在访问链接后面：\n\n例如测试2.4.2节商品详情API\n\n![](./pics/admin/get.png)\n\n#### 1.8.2 GET & Token 示例\n\n如果需要登录才能访问数据，则需要先向后端请求登录，得到token，然后请求时携带token。\n\n例如测试2.8.1节收货地址列表API\n\n如果没有登录，则返回未登录信息\n\n![](./pics/admin/get_no_token.png)\n\n因此测试这些API，需要先登录\n\n![](./pics/admin/login.png)\n\n然后，采用自定义`X-Litemall-Token`来携带token访问商场API\n\n![](./pics/admin/get_with_token.png)\n\n注意：\n> 访问受保护商场API是采用自定义`X-Litemall-Token`头部；\n> 而访问受保护管理后台API则是自定义`X-Litemall-Admin-Token`头部。\n\n#### 1.8.3 POST 示例\n\n通常POST请求后端时，都需要先登录才能有权限上传数据，因此这里不举例说明。\n\n#### 1.8.4 POST & Token 示例\n\n如果需要登录才能提交数据，则需要先向后端请求登录，得到token，然后请求时携带token。\n\n![](./pics/admin/post_no_token.png)\n\n因此测试这些API，需要先登录\n\n![](./pics/admin/login.png)\n\n然后，采用自定义`X-Litemall-Token`来携带token访问商场API\n\n![](./pics/admin/get_with_token.png)\n\n注意：\n> 访问受保护商场API是采用自定义`X-Litemall-Token`头部；\n> 而访问受保护管理后台API则是自定义`X-Litemall-Admin-Token`头部。\n\n### 1.9 API保护\n\n为了保护API不被滥用，通常API需要引入保护机制，例如OAuth2。\n\n本项目暂时无保护机制，因此实际上一旦开发者知道服务器，就很容易访问API。\n\n### 1.10 API局限性\n\n当前API还存在一些问题，后面需要继续优化和完善。\n\n* 无意义的通用字段\n\n* 团购API完善\n\n### 1.11 Not Like Swagger\n\n本项目不是很接受Swagger，基于以下考虑：\n\n* 前后端中立\n\n在前后端分离项目中，依赖后端的Swagger来生成项目API似乎不是很理想，\n这实际上把项目API设计工作过多地压在后端，同时前端也被迫依赖后端，\n因为后端如果没有写好文档注解，前端不可能了解API的输入输出。\n\n可能一种合理的做法应该这样：\n项目初期前后端一起完成一个完整基本的API文档，定义好交互规范和具体API的行为，然后双方同时开始开发工作；\n某个开发阶段，前端需要更多的数据或者新的API支持，此时也不需要立即联系后端（除非API产生破坏性变更），\n而是暂时基于mock和自定义mock数据独立开发；之后，在合适阶段（可以按照项目规定，例如三天或者周五），\n前后端再次沟通API的变更，后端了解需求后则可以接受、拒绝或者调整，当然变更必须要在API文档中体现和更新；\n下一个开发阶段，前端和后端能够再次基于最新的API文档来调整自己代码。\n最后项目测试时，只要前端对照API文档，后端也是对照API文档。\n\n* 后端代码简洁\n\n如果使用Swagger，为了得到完整的文档，需要在每一个方法前面加上多个文档注解，文档越是详尽，则注解越多，\n造成代码不是很简洁。特别是具备代码属性的注解和Swagger文档注解混杂在一起，可能不是很好。\n\n当然，本项目也简单地配置了Swagger(见`WxSwagger2Configuration`和`AdminSwagger2Configuration`)，\n* 在线Swagger文档链接：http://122.51.199.160:8080/swagger-ui.html\n* 本地Swagger文档链接：http://localhost:8080/swagger-ui.html\n\n此外，也使用了swagger-bootstrap-ui对Swagger进一步增强了使用效果。\n* 在线swagger-bootstrap-ui文档链接：http://122.51.199.160:8080/doc.html\n* 本地swagger-bootstrap-ui文档链接：http://localhost:8080/doc.html\n\n当然正如上文讨论，本项目不是很接受Swagger的理念，所以后端没有使用Swagger的相关文档注解，\n这也导致了Swagger接口文档的不具可读性。如果开发者需要，可以自行在后端补充Swagger注解。\n\n需要注意的是：\n> 这里接口默认是公开的，因此项目一旦需要上线，请及时删除swagger和swagger-bootstrap-ui依赖和配置，\n> 或者采取其他手段，防止接口对外暴露造成**安全隐患**。\n\n例如\n```\nswagger:\n  production: false\n```\n\n## 2 商城API服务\n\n### 2.1 安全服务\n\n#### 2.1.1 小程序微信登录\n\n应用场景\n\n    小程序环境下微信登录。\n      \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.2 账号登录\n\n应用场景\n\n    基于用户名和密码的账号登录\n    \n接口链接\n\n    POST /wx/auth/login\n    \n请求参数\n\n    {\n        \"username\": \"user123\",\n        \"password\": \"user123\"\n    }    \n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"userInfo\": {\n          \"nickName\": \"user123\",\n          \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n        },\n        \"token\": \"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ0aGlzIGlzIGxpdGVtYWxsIHRva2VuIiwiYXVkIjoiTUlOSUFQUCIsImlzcyI6IkxJVEVNQUxMIiwiZXhwIjoxNTU3MzI2ODUwLCJ1c2VySWQiOjEsImlhdCI6MTU1NzMxOTY1MH0.XP0TuhupV_ttQsCr1KTaPZVlTbVzVOcnq_K0kXdbri0\"\n      },\n      \"errmsg\": \"成功\"\n    }   \n    \n错误码\n\n    略\n    \n#### 2.1.3 注册\n\n应用场景\n\n    xxx\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.4 退出\n\n应用场景\n\n    账号退出\n    \n接口链接\n\n    POST /wx/auth/logout\n    \n请求参数\n\n    {\n        \"username\": \"user123\",\n        \"password\": \"user123\"\n    }    \n    \n响应内容\n\n    {\n        \"errno\": 0,\n        \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.1.5 注册验证码\n\n应用场景\n\n    用户未登录情况下，请求后端发送注册验证码用于注册。\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.6 操作验证码\n\n应用场景\n\n    用户已登录情况下，请求后端发送操作验证码用于相关操作。\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.7 账号密码修改\n\n应用场景\n\n    账号密码修改\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.8 微信手机号码绑定\n\n应用场景\n\n    微信手机号码绑定，仅用于小程序环境。\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.9 手机号码修改\n\n应用场景\n\n    手机号码修改\n    \n接口链接\n\n    xxx\n    \n请求参数\n\n    xxx\n    \n响应内容\n\n    xxx\n    \n错误码\n\n    xxx\n    \n#### 2.1.10 账号信息\n\n应用场景\n\n    账号信息\n    \n接口链接\n\n    GET /wx/auth/info\n    \n请求参数\n\n    无\n    \n响应内容\n\n    {\n        \"errno\": 0,\n        \"data\": {\n            \"gender\": 1,\n            \"nickName\": \"user123\",\n            \"mobile\": \"\",\n            \"avatar\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n        },\n        \"errmsg\": \"成功\"\n    }   \n    \n错误码\n\n    略\n    \n#### 2.1.11 账号信息更新\n\n应用场景\n\n    账号信息更新。\n    \n接口链接\n\n    POST /wx/auth/profile\n    \n请求参数\n\n    {\n        \"gender\": 1,\n        \"nickName\": \"user123\",\n        \"avatar\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n    }\n    \n响应内容\n\n    {\n        \"errno\": 0,\n        \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n### 2.2 首页服务\n\n#### 2.2.1 首页数据\n\n应用场景\n\n    首页数据\n    \n接口链接\n\n    GET /wx/home/index\n    \n请求参数\n\n    无\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"newGoodsList\": [\n          {\n            \"id\": 1181000,\n            \"name\": \"母亲节礼物-舒适安睡组合\",\n            \"brief\": \"安心舒适是最好的礼物\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/1f67b1970ee20fd572b7202da0ff705d.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 2618.00,\n            \"retailPrice\": 2598.00\n          },\n          {\n            \"id\": 1116011,\n            \"name\": \"蔓越莓曲奇 200克\",\n            \"brief\": \"酥脆奶香，甜酸回味\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n            \"isNew\": true,\n            \"isHot\": true,\n            \"counterPrice\": 56.00,\n            \"retailPrice\": 36.00\n          },\n          {\n            \"id\": 1127047,\n            \"name\": \"趣味粉彩系列笔记本\",\n            \"brief\": \"粉彩色泽，记录生活\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/6c03ca93d8fe404faa266ea86f3f1e43.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 49.00,\n            \"retailPrice\": 29.00\n          },\n          {\n            \"id\": 1135002,\n            \"name\": \"宫廷奢华真丝四件套\",\n            \"brief\": \"100%桑蚕丝，丝滑润肤\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/45548f26cfd0c7c41e0afc3709d48286.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 2619.00,\n            \"retailPrice\": 2599.00\n          },\n          {\n            \"id\": 1152161,\n            \"name\": \"竹语丝麻印花四件套\",\n            \"brief\": \"3重透气，清爽柔滑\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 479.00,\n            \"retailPrice\": 459.00\n          },\n          {\n            \"id\": 1166008,\n            \"name\": \"Carat钻石 不粘厨具组合\",\n            \"brief\": \"钻石涂层，不粘锅锅具组\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/615a16e899e01efb780c488df4233f48.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 479.00,\n            \"retailPrice\": 459.00\n          }\n        ],\n        \"couponList\": [\n          {\n            \"id\": 2,\n            \"name\": \"限时满减券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"discount\": 10.00,\n            \"min\": 99.00,\n            \"days\": 10\n          }\n        ],\n        \"channel\": [\n          {\n            \"id\": 1005000,\n            \"name\": \"居家\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/a45c2c262a476fea0b9fc684fed91ef5.png\"\n          },\n          {\n            \"id\": 1005001,\n            \"name\": \"餐厨\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/ad8b00d084cb7d0958998edb5fee9c0a.png\"\n          },\n          {\n            \"id\": 1005002,\n            \"name\": \"饮食\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/c9280327a3fd2374c000f6bf52dff6eb.png\"\n          },\n          {\n            \"id\": 1008000,\n            \"name\": \"配件\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/11abb11c4cfdee59abfb6d16caca4c6a.png\"\n          },\n          {\n            \"id\": 1010000,\n            \"name\": \"服装\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/28a685c96f91584e7e4876f1397767db.png\"\n          },\n          {\n            \"id\": 1011000,\n            \"name\": \"婴童\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/1ba9967b8de1ac50fad21774a4494f5d.png\"\n          },\n          {\n            \"id\": 1012000,\n            \"name\": \"杂货\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/c2a3d6349e72c35931fe3b5bcd0966be.png\"\n          },\n          {\n            \"id\": 1013001,\n            \"name\": \"洗护\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/9fe068776b6b1fca13053d68e9c0a83f.png\"\n          },\n          {\n            \"id\": 1019000,\n            \"name\": \"志趣\",\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/7093cfecb9dde1dd3eaf459623df4071.png\"\n          }\n        ],\n        \"grouponList\": [\n          {\n            \"id\": 1109008,\n            \"name\": \"云端沙发组合\",\n            \"brief\": \"MUJI供应商携手打造\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n            \"counterPrice\": 4019.00,\n            \"retailPrice\": 3999.00,\n            \"grouponPrice\": 3949.00,\n            \"grouponDiscount\": 50,\n            \"grouponMember\": 5\n          },\n          {\n            \"id\": 1039051,\n            \"name\": \"多功能午睡枕\",\n            \"brief\": \"放松自在的午后时光\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c8ca0600fa7ba11ca8be6a3173dd38c9.png\",\n            \"counterPrice\": 99.00,\n            \"retailPrice\": 79.00,\n            \"grouponPrice\": 59.00,\n            \"grouponDiscount\": 20,\n            \"grouponMember\": 20\n          }\n        ],\n        \"banner\": [\n          {\n            \"id\": 1,\n            \"name\": \"合作 谁是你的菜\",\n            \"link\": \"\",\n            \"url\": \"http://yanxuan.nosdn.127.net/65091eebc48899298171c2eb6696fe27.jpg\",\n            \"position\": 1,\n            \"content\": \"合作 谁是你的菜\",\n            \"enabled\": true,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 2,\n            \"name\": \"活动 美食节\",\n            \"link\": \"\",\n            \"url\": \"http://yanxuan.nosdn.127.net/bff2e49136fcef1fd829f5036e07f116.jpg\",\n            \"position\": 1,\n            \"content\": \"活动 美食节\",\n            \"enabled\": true,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 3,\n            \"name\": \"活动 母亲节\",\n            \"link\": \"\",\n            \"url\": \"http://yanxuan.nosdn.127.net/8e50c65fda145e6dd1bf4fb7ee0fcecc.jpg\",\n            \"position\": 1,\n            \"content\": \"活动 母亲节5\",\n            \"enabled\": true,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          }\n        ],\n        \"brandList\": [\n          {\n            \"id\": 1001000,\n            \"name\": \"MUJI制造商\",\n            \"desc\": \"严选精选了MUJI制造商和生产原料，\\n用几乎零利润的价格，剔除品牌溢价，\\n让用户享受原品牌的品质生活。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/1541445967645114dd75f6b0edc4762d.png\",\n            \"floorPrice\": 12.90\n          },\n          {\n            \"id\": 1001002,\n            \"name\": \"内野制造商\",\n            \"desc\": \"严选从世界各地挑选毛巾，最终选择了为日本内野代工的工厂，追求毛巾的柔软度与功能性。品质比肩商场几百元的毛巾。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/8ca3ce091504f8aa1fba3fdbb7a6e351.png\",\n            \"floorPrice\": 29.00\n          },\n          {\n            \"id\": 1001003,\n            \"name\": \"Adidas制造商\",\n            \"desc\": \"严选找到为Adidas等品牌制造商，\\n选取优质原材料，与厂方一起设计，\\n为你提供好的理想的运动装备。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/335334d0deaff6dc3376334822ab3a2f.png\",\n            \"floorPrice\": 49.00\n          },\n          {\n            \"id\": 1001007,\n            \"name\": \"优衣库制造商\",\n            \"desc\": \"严选找到日本知名服装UNIQLO的制造商，\\n选取优质长绒棉和精梳工艺，\\n与厂方一起设计，为你提供理想的棉袜。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/0d72832e37e7e3ea391b519abbbc95a3.png\",\n            \"floorPrice\": 29.00\n          }\n        ],\n        \"hotGoodsList\": [\n          {\n            \"id\": 1152008,\n            \"name\": \"魔兽世界 部落 护腕 一只\",\n            \"brief\": \"吸汗、舒适、弹性、防护、耐用\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 49.00,\n            \"retailPrice\": 29.00\n          },\n          {\n            \"id\": 1152009,\n            \"name\": \"魔兽世界 联盟 护腕 一只\",\n            \"brief\": \"吸汗、舒适、弹性、防护、耐用\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/ae6d41117717387b82dcaf1dfce0cd97.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 49.00,\n            \"retailPrice\": 29.00\n          },\n          {\n            \"id\": 1152031,\n            \"name\": \"魔兽世界-伊利丹颈枕眼罩套装\",\n            \"brief\": \"差旅好伴侣\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/fd6e78a397bd9e9804116a36f0270b0a.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 119.00,\n            \"retailPrice\": 99.00\n          },\n          {\n            \"id\": 1022000,\n            \"name\": \"意式毛线绣球四件套\",\n            \"brief\": \"浪漫毛线绣球，简约而不简单\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/5350e35e6f22165f38928f3c2c52ac57.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 319.00,\n            \"retailPrice\": 299.00\n          },\n          {\n            \"id\": 1011004,\n            \"name\": \"色织精梳AB纱格纹空调被\",\n            \"brief\": \"加大加厚，双色精彩\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/0984c9388a2c3fd2335779da904be393.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 219.00,\n            \"retailPrice\": 199.00\n          },\n          {\n            \"id\": 1084003,\n            \"name\": \"纯棉美式绞花针织盖毯\",\n            \"brief\": \"美式提花，温暖舒适\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 219.00,\n            \"retailPrice\": 199.00\n          }\n        ],\n        \"topicList\": [\n          {\n            \"id\": 264,\n            \"title\": \"设计师们推荐的应季好物\",\n            \"subtitle\": \"原创设计春款系列上新\",\n            \"price\": 29.90,\n            \"readCount\": \"77.7k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14918201901050274.jpg\"\n          },\n          {\n            \"id\": 266,\n            \"title\": \"一条丝巾就能提升时髦度\",\n            \"subtitle\": \"不知道大家对去年G20时，严选与国礼制造商一起推出的《凤凰于飞》等几款丝巾是否还...\",\n            \"price\": 0.00,\n            \"readCount\": \"35.0k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14919007135160213.jpg\"\n          },\n          {\n            \"id\": 268,\n            \"title\": \"米饭好吃的秘诀：会呼吸的锅\",\n            \"subtitle\": \"今年1月份，我们联系到了日本伊贺地区的长谷园，那里有着180年伊贺烧历史的窑厂。...\",\n            \"price\": 0.00,\n            \"readCount\": \"33.3k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14920623353130483.jpg\"\n          },\n          {\n            \"id\": 271,\n            \"title\": \"选式新懒人\",\n            \"subtitle\": \"懒出格调，懒出好生活。\",\n            \"price\": 15.00,\n            \"readCount\": \"57.7k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14924199099661697.jpg\"\n          }\n        ],\n        \"floorGoodsList\": [\n          {\n            \"name\": \"居家\",\n            \"goodsList\": [\n              {\n                \"id\": 1110016,\n                \"name\": \"天然硅胶宠物除毛按摩刷\",\n                \"brief\": \"顺滑平面，猫狗通用，去除死毛\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/3bd73b7279a83d1cbb50c0e45778e6d6.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 59.00,\n                \"retailPrice\": 39.00\n              },\n              {\n                \"id\": 1110017,\n                \"name\": \"耐用材料猫咪护理清洁套装\",\n                \"brief\": \"精致钢材，美容清洁\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/534231583f82572398ec84bad425cdaf.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 99.00,\n                \"retailPrice\": 79.00\n              },\n              {\n                \"id\": 1110018,\n                \"name\": \"耐用狗狗清洁美容护理套装\",\n                \"brief\": \"精致钢材，耐咬美容\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/d93aa5d6e7a296101cf4cb72613aeda6.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 99.00,\n                \"retailPrice\": 79.00\n              },\n              {\n                \"id\": 1110019,\n                \"name\": \"宠物合金钢安全除菌指甲护理组合\",\n                \"brief\": \"猫狗皆可用，保护家具\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/1e7e392b6fc9da99dc112197b7444eec.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 89.00,\n                \"retailPrice\": 69.00\n              }\n            ],\n            \"id\": 1005000\n          },\n          {\n            \"name\": \"餐厨\",\n            \"goodsList\": [\n              {\n                \"id\": 1023003,\n                \"name\": \"100年传世珐琅锅 全家系列\",\n                \"brief\": \"特质铸铁，大容量全家共享\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/c39d54c06a71b4b61b6092a0d31f2335.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 418.00,\n                \"retailPrice\": 398.00\n              },\n              {\n                \"id\": 1073008,\n                \"name\": \"铸铁珐琅牛排煎锅\",\n                \"brief\": \"沥油隔水，煎出外焦里嫩\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/619e46411ccd62e5c0f16692ee1a85a0.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 169.00,\n                \"retailPrice\": 149.00\n              },\n              {\n                \"id\": 1051000,\n                \"name\": \"Carat钻石炒锅30cm\",\n                \"brief\": \"安全涂层，轻便无烟\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/e564410546a11ddceb5a82bfce8da43d.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 200.00,\n                \"retailPrice\": 180.00\n              },\n              {\n                \"id\": 1051001,\n                \"name\": \"Carat钻石煎锅28cm\",\n                \"brief\": \"耐磨涂层，导热迅速\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/f53ed57d9e23fda7e24dfd0e0a50c5d1.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 179.00,\n                \"retailPrice\": 159.00\n              }\n            ],\n            \"id\": 1005001\n          },\n          {\n            \"name\": \"饮食\",\n            \"goodsList\": [\n              {\n                \"id\": 1045000,\n                \"name\": \"绿茶蛋黄酥 200克/4枚入\",\n                \"brief\": \"香甜茶食，果腹优选\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/b2adc3fd9b84a289a1be03e8ee400e61.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 48.00,\n                \"retailPrice\": 28.00\n              },\n              {\n                \"id\": 1116011,\n                \"name\": \"蔓越莓曲奇 200克\",\n                \"brief\": \"酥脆奶香，甜酸回味\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n                \"isNew\": true,\n                \"isHot\": true,\n                \"counterPrice\": 56.00,\n                \"retailPrice\": 36.00\n              },\n              {\n                \"id\": 1070000,\n                \"name\": \"星云酥 180克/3颗\",\n                \"brief\": \"酥饼界的小仙女\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/8392725765cdd57fdae3f173877f4bda.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 46.00,\n                \"retailPrice\": 26.00\n              },\n              {\n                \"id\": 1155015,\n                \"name\": \"绿豆糕 80克（4枚入）\",\n                \"brief\": \"细腻松软，入口绵柔\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/66b9f1638c0517d179262f14ed1345f9.png\",\n                \"isNew\": true,\n                \"isHot\": false,\n                \"counterPrice\": 32.90,\n                \"retailPrice\": 12.90\n              }\n            ],\n            \"id\": 1005002\n          },\n          {\n            \"name\": \"配件\",\n            \"goodsList\": [\n              {\n                \"id\": 1085019,\n                \"name\": \"20寸 纯PC“铝框”（非全铝）登机箱\",\n                \"brief\": \"铝质包角，牢固抗摔\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/65c955a7a98e84d44ca30bb88a591eac.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 369.00,\n                \"retailPrice\": 349.00\n              },\n              {\n                \"id\": 1086052,\n                \"name\": \"20寸 铝镁合金登机箱\",\n                \"brief\": \"时尚金属箱，奢品质感\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/93171a281c4ed272c007a050816e6f6c.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 879.00,\n                \"retailPrice\": 859.00\n              },\n              {\n                \"id\": 1152101,\n                \"name\": \"魔兽世界 部落 奥格瑞玛 拉杆箱 可登机\",\n                \"brief\": \"18寸，可携带登机\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/c1c62211a17b71a634fa0c705d11fb42.png\",\n                \"isNew\": false,\n                \"isHot\": true,\n                \"counterPrice\": 908.00,\n                \"retailPrice\": 888.00\n              },\n              {\n                \"id\": 1114011,\n                \"name\": \"104升 纯PC拉链斜纹拉杆箱\",\n                \"brief\": \"104升的体积，90升的价格\",\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/196b5ce11930b4eadaec563cb0406634.png\",\n                \"isNew\": false,\n                \"isHot\": false,\n                \"counterPrice\": 319.00,\n                \"retailPrice\": 299.00\n              }\n            ],\n            \"id\": 1008000\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n\n    无\n        \n### 2.3 类目服务\n\n### 2.4 商品服务\n\n#### 2.4.1 商品列表\n\n应用场景\n\n    商品列表\n    \n接口链接\n\n    GET /wx/goods/list\n\n请求参数\n    \n    isNew: 是否新品，true或者false\n    isHot: 是否热卖商品，true或者false\n    keyword: 关键字，如果设置则查询是否匹配关键字\n    brandId: 品牌商ID，如果设置则查询品牌商所属商品\n    categoryId: 商品分类ID，如果设置则查询分类所属商品\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n        \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 11,\n        \"pages\": 6,\n        \"limit\": 2,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1181000,\n            \"name\": \"母亲节礼物-舒适安睡组合\",\n            \"brief\": \"安心舒适是最好的礼物\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/1f67b1970ee20fd572b7202da0ff705d.png\",\n            \"isNew\": true,\n            \"isHot\": false,\n            \"counterPrice\": 2618.00,\n            \"retailPrice\": 2598.00\n          },\n          {\n            \"id\": 1116011,\n            \"name\": \"蔓越莓曲奇 200克\",\n            \"brief\": \"酥脆奶香，甜酸回味\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n            \"isNew\": true,\n            \"isHot\": true,\n            \"counterPrice\": 56.00,\n            \"retailPrice\": 36.00\n          }\n        ],\n        \"filterCategoryList\": [\n          {\n            \"id\": 1005007,\n            \"name\": \"锅具\",\n            \"keywords\": \"\",\n            \"desc\": \"一口好锅，炖煮生活一日三餐\",\n            \"pid\": 1005001,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/4aab4598017b5749e3b63309d25e9f6b.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/d2db0d1d0622c621a8aa5a7c06b0fc6d.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 1,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1008002,\n            \"name\": \"布艺软装\",\n            \"keywords\": \"\",\n            \"desc\": \"各种风格软装装点你的家\",\n            \"pid\": 1005000,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/8bbcd7de60a678846664af998f57e71c.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/2e2fb4f2856a021bbcd1b4c8400f2b06.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 6,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1008008,\n            \"name\": \"被枕\",\n            \"keywords\": \"\",\n            \"desc\": \"守护你的睡眠时光\",\n            \"pid\": 1005000,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/927bc33f7ae2895dd6c11cf91f5e3228.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/b43ef7cececebe6292d2f7f590522e05.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 2,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1008009,\n            \"name\": \"床品件套\",\n            \"keywords\": \"\",\n            \"desc\": \"MUJI等品牌制造商出品\",\n            \"pid\": 1005000,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/243e5bf327a87217ad1f54592f0176ec.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/81f671bd36bce05d5f57827e5c88dd1b.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 4,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1008015,\n            \"name\": \"糕点\",\n            \"keywords\": \"\",\n            \"desc\": \"四季糕点，用心烘焙\",\n            \"pid\": 1005002,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/93168242df456b5f7bf3c89653b3db76.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/66ea1d6ad602a8e441af7cada93bdc7a.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 1,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1012003,\n            \"name\": \"文具\",\n            \"keywords\": \"\",\n            \"desc\": \"找回书写的力量\",\n            \"pid\": 1012000,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/e1743239e41ca9af76875aedc73be7f0.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/e074795f61a83292d0f20eb7d124e2ac.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 1,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 1020003,\n            \"name\": \"服饰\",\n            \"keywords\": \"\",\n            \"desc\": \"萌宝穿搭，柔软舒适触感\",\n            \"pid\": 1011000,\n            \"iconUrl\": \"http://yanxuan.nosdn.127.net/4e50f3c4e4d0a64cd0ad14cfc0b6bd17.png\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/004f5f96df4aeb0645abbd70c0637239.png\",\n            \"level\": \"L2\",\n            \"sortOrder\": 1,\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略   \n    \n\n#### 2.4.2 商品详情\n\n应用场景\n\n    商品详情\n    \n接口链接\n\n    GET /wx/goods/detail\n\n请求参数\n    \n    id: 商品ID，例如id=1152008\n\n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"specificationList\": [\n          {\n            \"name\": \"规格\",\n            \"valueList\": [\n              {\n                \"id\": 231,\n                \"goodsId\": 1152008,\n                \"specification\": \"规格\",\n                \"value\": \"标准\",\n                \"picUrl\": \"\",\n                \"addTime\": \"2018-02-01 00:00:00\",\n                \"updateTime\": \"2018-02-01 00:00:00\",\n                \"deleted\": false\n              }\n            ]\n          }\n        ],\n        \"groupon\": [],\n        \"issue\": [\n          {\n            \"id\": 1,\n            \"question\": \"购买运费如何收取？\",\n            \"answer\": \"单笔订单金额（不含运费）满88元免邮费；不满88元，每单收取10元运费。\\n(港澳台地区需满\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 2,\n            \"question\": \"使用什么快递发货？\",\n            \"answer\": \"严选默认使用顺丰快递发货（个别商品使用其他快递），配送范围覆盖全国大部分地区（港澳台地区除\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 3,\n            \"question\": \"如何申请退货？\",\n            \"answer\": \"1.自收到商品之日起30日内，顾客可申请无忧退货，退款将原路返还，不同的银行处理时间不同，\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 4,\n            \"question\": \"如何开具发票？\",\n            \"answer\": \"1.如需开具普通发票，请在下单时选择“我要开发票”并填写相关信息（APP仅限2.4.0及以\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          }\n        ],\n        \"userHasCollect\": 0,\n        \"shareImage\": \"\",\n        \"comment\": {\n          \"data\": [],\n          \"count\": 0\n        },\n        \"attribute\": [],\n        \"brand\": {},\n        \"productList\": [\n          {\n            \"id\": 232,\n            \"goodsId\": 1152008,\n            \"specifications\": [\n              \"标准\"\n            ],\n            \"price\": 29.00,\n            \"number\": 100,\n            \"url\": \"http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          }\n        ],\n        \"info\": {\n          \"id\": 1152008,\n          \"goodsSn\": \"1152008\",\n          \"name\": \"魔兽世界 部落 护腕 一只\",\n          \"categoryId\": 1032000,\n          \"brandId\": 0,\n          \"gallery\": [\n            \"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\",\n            \"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\",\n            \"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\",\n            \"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\",\n            \"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\"\n          ],\n          \"keywords\": \"\",\n          \"brief\": \"吸汗、舒适、弹性、防护、耐用\",\n          \"isOnSale\": true,\n          \"sortOrder\": 7,\n          \"picUrl\": \"http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png\",\n          \"shareUrl\": \"\",\n          \"isNew\": false,\n          \"isHot\": true,\n          \"unit\": \"件\",\n          \"counterPrice\": 49.00,\n          \"retailPrice\": 29.00,\n          \"addTime\": \"2018-02-01 00:00:00\",\n          \"updateTime\": \"2018-02-01 00:00:00\",\n          \"deleted\": false,\n          \"detail\": \"\"\n        }\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略   \n\n\n#### 2.4.3 商品推荐\n\n应用场景\n\n    针对某个商品推荐其他商品\n    \n接口链接\n\n    GET /wx/goods/related\n\n请求参数\n    \n    id: 商品ID，例如id=1152008\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n        \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 8,\n        \"pages\": 2,\n        \"limit\": 6,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1152004,\n            \"name\": \"魔兽世界 蛋盾包 双肩包\",\n            \"brief\": \"伊利丹掉落，挤地铁神器\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/8c93cef435d888bd79833777df1cd0c2.png\",\n            \"isNew\": false,\n            \"isHot\": false,\n            \"counterPrice\": 419.00,\n            \"retailPrice\": 399.00\n          },\n          {\n            \"id\": 1152008,\n            \"name\": \"魔兽世界 部落 护腕 一只\",\n            \"brief\": \"吸汗、舒适、弹性、防护、耐用\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 49.00,\n            \"retailPrice\": 29.00\n          },\n          {\n            \"id\": 1152009,\n            \"name\": \"魔兽世界 联盟 护腕 一只\",\n            \"brief\": \"吸汗、舒适、弹性、防护、耐用\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/ae6d41117717387b82dcaf1dfce0cd97.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 49.00,\n            \"retailPrice\": 29.00\n          },\n          {\n            \"id\": 1152031,\n            \"name\": \"魔兽世界-伊利丹颈枕眼罩套装\",\n            \"brief\": \"差旅好伴侣\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/fd6e78a397bd9e9804116a36f0270b0a.png\",\n            \"isNew\": false,\n            \"isHot\": true,\n            \"counterPrice\": 119.00,\n            \"retailPrice\": 99.00\n          },\n          {\n            \"id\": 1152095,\n            \"name\": \"魔兽世界 联盟·暴风城 堡垒收纳盒\",\n            \"brief\": \"桌面整理神器\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c86b49f635fa141decebabbd0966a6ef.png\",\n            \"isNew\": false,\n            \"isHot\": false,\n            \"counterPrice\": 519.00,\n            \"retailPrice\": 499.00\n          },\n          {\n            \"id\": 1152097,\n            \"name\": \"魔兽世界 雷霆之怒逐风者的祝福之剑 雨伞\",\n            \"brief\": \"炫酷装备，可以背的雨伞\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/532836444ae5eaec40b5810ca4f9b1e6.png\",\n            \"isNew\": false,\n            \"isHot\": false,\n            \"counterPrice\": 419.00,\n            \"retailPrice\": 399.00\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略   \n            \n#### 2.4.4 商品分类\n\n应用场景\n\n    针对某个商品推荐其他商品\n    \n接口链接\n\n    GET /wx/goods/related\n\n请求参数\n    \n        \n响应内容\n\n错误码\n\n#### 2.4.5 在售商品总数\n\n应用场景\n\n    在售商品总数\n    \n接口链接\n\n    GET /wx/goods/count\n\n请求参数\n    \n    无\n        \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": 238,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n       \n    无\n         \n### 2.5 购物车服务\n\n#### 2.5.1 用户购物车\n\n应用场景\n\n    用户购物车\n    \n接口链接\n\n\n请求参数\n    \n    无\n        \n响应内容\n\n    \n错误码\n       \n    略\n    \n### 2.6 订单服务\n    \n#### 2.6.1 订单列表\n\n应用场景\n\n    订单列表\n\n接口链接\n\n    GET /wx/order/list\n    \n请求参数\n\n    showType: 订单类型，0则全部，1则待付款，2则待发货，3则待收货，4则代评价\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 1,\n        \"pages\": 1,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"orderStatusText\": \"未付款\",\n            \"isGroupin\": false,\n            \"orderSn\": \"20190509607545\",\n            \"actualPrice\": 3989.00,\n            \"goodsList\": [\n              {\n                \"number\": 1,\n                \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n                \"id\": 3,\n                \"goodsName\": \"云端沙发组合\",\n                \"specifications\": [\n                  \"标准\"\n                ]\n              }\n            ],\n            \"id\": 3,\n            \"handleOption\": {\n              \"cancel\": true,\n              \"delete\": false,\n              \"pay\": true,\n              \"comment\": false,\n              \"confirm\": false,\n              \"refund\": false,\n              \"rebuy\": false\n            }\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.6.2 订单详情\n\n应用场景\n\n    订单详情\n\n接口链接\n\n    GET /wx/order/detail\n    \n请求参数\n    \n    orderId： 订单ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"orderInfo\": {\n          \"consignee\": \"d\",\n          \"address\": \"北京市市辖区东城区 ddd\",\n          \"addTime\": \"2019-05-09 15:30:29\",\n          \"orderSn\": \"20190509607545\",\n          \"actualPrice\": 3989.00,\n          \"mobile\": \"13811111111\",\n          \"orderStatusText\": \"未付款\",\n          \"goodsPrice\": 3999.00,\n          \"couponPrice\": 10.00,\n          \"id\": 3,\n          \"freightPrice\": 0.00,\n          \"handleOption\": {\n            \"cancel\": true,\n            \"delete\": false,\n            \"pay\": true,\n            \"comment\": false,\n            \"confirm\": false,\n            \"refund\": false,\n            \"rebuy\": false\n          }\n        },\n        \"orderGoods\": [\n          {\n            \"id\": 3,\n            \"orderId\": 3,\n            \"goodsId\": 1109008,\n            \"goodsName\": \"云端沙发组合\",\n            \"goodsSn\": \"1109008\",\n            \"productId\": 140,\n            \"number\": 1,\n            \"price\": 3999.00,\n            \"specifications\": [\n              \"标准\"\n            ],\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n            \"comment\": 0,\n            \"addTime\": \"2019-05-09 15:30:29\",\n            \"updateTime\": \"2019-05-09 15:30:29\",\n            \"deleted\": false\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.6.3 创建订单\n\n应用场景\n\n    创建新订单\n\n接口链接\n\n    POST /wx/order/submit\n\n请求参数\n\n    {\n      \"cartId\": 0,\n      \"addressId\": 3,\n      \"couponId\": -1,\n      \"message\": \"\",\n      \"grouponRulesId\": 0,\n      \"grouponLinkId\": 0\n    }\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"orderId\": 4\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.6.4 取消订单\n\n应用场景\n\n    取消订单\n\n接口链接\n\n    POST /wx/order/cancel\n    \n请求参数\n\n    orderId: 订单ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n\n#### 2.6.5 微信预支付交易单\n\n应用场景\n\n    订单的微信预支付交易单\n\n接口链接\n\n    POST /wx/order/prepay\n\n说明\n\n    具体微信支付交互流程和预支付使用方式，见官方文档: https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1\n\n请求参数\n\n    orderId: 订单ID\n\n响应结果\n\n    {\n        errno: 0,\n        errmsg: \"成功\",\n        data: {\n            appId: 'xxx',\n            timeStamp: 'xxx',\n            nonceStr: 'xxx',\n            packageValue: 'xxx',\n            signType: 'xxx',\n            paySign: 'xxx'\n        }\n    }\n\n错误码\n\n    略\n     \n#### 2.6.6 确认收货\n\n应用场景\n\n    订单确认收货\n\n接口链接\n\n    POST /wx/order/confirm\n    \n请求参数\n\n    orderId: 订单ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.6.7 订单删除\n\n应用场景\n\n    删除订单记录\n\n接口链接\n\n    POST /wx/order/delete\n    \n请求参数\n\n    orderId: 订单ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n    \n#### 2.6.8 订单退款\n\n应用场景\n\n    订单已经支付但是商家未发货，用户可以点击退款按钮申请退款取消订单。\n\n说明\n\n    退款请求发送以后，不会自动退款，仅仅是后端设置退款请求记录。\n    管理员在管理后台看到退款请求以后会手动退款或者拒绝退款。\n    \n接口链接\n\n    POST /wx/order/refund\n    \n请求参数\n\n    orderId: 订单ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n           \n  \n#### 2.6.9 待评价商品\n\n应用场景\n\n    用户确认收货以后，可以待评价的订单商品。    \n\n接口链接\n\n    GET /wx/order/goods\n    \n请求参数\n\n    orderId: 订单ID\n    goodsId: 商品ID\n    \n响应结果\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"id\": 4,\n        \"orderId\": 4,\n        \"goodsId\": 1109008,\n        \"goodsName\": \"云端沙发组合\",\n        \"goodsSn\": \"1109008\",\n        \"productId\": 140,\n        \"number\": 1,\n        \"price\": 3999.00,\n        \"specifications\": [\n          \"标准\"\n        ],\n        \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n        \"comment\": 0,\n        \"addTime\": \"2019-05-09 17:06:54\",\n        \"updateTime\": \"2019-05-09 17:06:54\",\n        \"deleted\": false\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n         \n  \n#### 2.6.10 订单评价\n\n应用场景\n\n    订单评价\n\n接口链接\n\n    POST /wx/order/comment\n    \n请求参数\n\n    orderGoodsId: 订单商品ID\n    content: 评价内容\n    star: 评分，1分至5分\n    hasPicture: 是否有评价图片\n    picUrls: 评价图片列表\n    \n例如\n\n    {\n      \"orderGoodsId\": 4,\n      \"content\": \"不错\",\n      \"star\": 5,\n      \"hasPicture\": true,\n      \"picUrls\": []\n    }\n        \n响应结果\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n\n    略\n                                                  \n### 2.7 会员服务\n\n### 2.8 收货地址服务\n\n#### 2.8.1 收货地址列表\n\n应用场景\n\n    用户收货地址列表\n\n接口链接\n\n    GET /wx/address/list\n\n请求参数\n\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n        \n响应结果\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 1,\n        \"pages\": 1,\n        \"limit\": 1,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 3,\n            \"name\": \"d\",\n            \"userId\": 2,\n            \"province\": \"北京市\",\n            \"city\": \"市辖区\",\n            \"county\": \"东城区\",\n            \"addressDetail\": \"ddd\",\n            \"areaCode\": \"110101\",\n            \"tel\": \"13811111111\",\n            \"isDefault\": true,\n            \"addTime\": \"2019-05-06 14:17:32\",\n            \"updateTime\": \"2019-05-06 14:17:32\",\n            \"deleted\": false\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n\n    略\n    \n#### 2.8.2 收货地址详情\n\n应用场景\n\n    请求用户的收货地址详情\n\n接口链接\n\n    GET /wx/address/detail\n\n请求参数\n\n    id: 收货地址ID\n    \n响应结果\n\n    {\n        errno: 0,\n        errmsg: \"成功\",，\n        data: {\n            id: 收货地址ID，\n            name: 收货人，\n            tel: 手机号\n            province: 省级行政区域,\n            city: 市级行政区域,\n            county: 区级行政区域,\n            addressDetail: 具体地址,\n            areaCode: 地址编码，\n            postalCode: 邮政编码\n            isDefault: 是否默认\n        }\n    }\n\n错误码\n\n    略\n\n    \n#### 2.8.3 保存收货地址\n\n应用场景\n\n    添加或者更新用户收货地址\n\n接口链接\n\n    POST /wx/address/save\n\n请求参数\n\n    id: 收货地址ID，如果是0则是添加，否则是更新\n    name: 收货人，\n    tel: 手机号\n    province: 省级行政区域,\n    city: 市级行政区域,\n    county: 区级行政区域,\n    addressDetail: 具体地址,\n    areaCode: 地址编码，\n    postalCode: 邮政编码\n    isDefault: 是否默认    \n\n例如\n    \n    {\n      \"id\": 0,\n      \"name\": \"xxx\",\n      \"tel\": \"13811111111\",\n      \"province\": \"北京市\",\n      \"city\": \"市辖区\",\n      \"county\": \"东城区\",\n      \"areaCode\": \"110101\",\n      \"addressDetail\": \"dddd\",\n      \"isDefault\": true\n    }\n    \n响应结果\n\n    {\n        errno: 0,\n        errmsg: \"成功\",，\n        data: 3\n    }\n\n错误码\n\n    略\n    \n    \n#### 2.8.4 删除收货地址\n\n应用场景\n\n    删除用户的某个收货地址\n\n接口链接\n\n    POST /wx/address/delete\n\n请求参数\n\n    id: 收货地址ID\n    \n响应结果\n\n    {\n        errno: 0,\n        errmsg: \"成功\"\n    }\n\n错误码\n\n    略\n            \t\n### 2.9 品牌商服务\n\n#### 2.9.1 品牌商列表\n\n应用场景\n\n    访问品牌商列表信息\n    \n接口链接\n\n    GET /wx/brand/list\n\n请求参数\n    \n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 49,\n        \"pages\": 5,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1024000,\n            \"name\": \"WMF制造商\",\n            \"desc\": \"严选找寻德国百年高端厨具WMF的制造商，\\n选择拥有14年经验的不锈钢生产工厂，\\n为你甄选事半功倍的优质厨具。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/2018e9ac91ec37d9aaf437a1fd5d7070.png\",\n            \"floorPrice\": 9.90\n          },\n          {\n            \"id\": 1024001,\n            \"name\": \"OBH制造商\",\n            \"desc\": \"严选寻找OBH品牌的制造商，打造精致厨具，\\n韩国独资工厂制造，严格质检，品质雕琢\\n力求为消费者带来全新的烹饪体验。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/bf3499ac17a11ffb9bb7caa47ebef2dd.png\",\n            \"floorPrice\": 39.00\n          },\n          {\n            \"id\": 1024003,\n            \"name\": \"Stoneline制造商\",\n            \"desc\": \"严选找寻德国经典品牌Stoneline的制造商，\\n追踪工艺，考量细节，亲自试用，\\n为你甄选出最合心意的锅具和陶瓷刀，下厨如神。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/3a44ae7db86f3f9b6e542720c54cc349.png\",\n            \"floorPrice\": 9.90\n          },\n          {\n            \"id\": 1024006,\n            \"name\": \"KitchenAid制造商\",\n            \"desc\": \"严选寻访KitchenAid品牌的制造商，\\n采用德国LFGB认证食品级专用不锈钢，\\n欧式简约设计，可靠安心，尽享下厨乐趣。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/e11385bf29d1b3949435b80fcd000948.png\",\n            \"floorPrice\": 98.00\n          },\n          {\n            \"id\": 1034001,\n            \"name\": \"Alexander McQueen制造商\",\n            \"desc\": \"为制造精致实用的高品质包包，\\n严选团队选择Alexander McQueen制造商，\\n严格筛选，带来轻奢优雅体验。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/db7ee9667d84cbce573688297586699c.jpg\",\n            \"floorPrice\": 69.00\n          },\n          {\n            \"id\": 1023000,\n            \"name\": \"PetitBateau小帆船制造商\",\n            \"desc\": \"为打造适合宝宝的婴童服装，\\n严选团队寻找PetitBateau小帆船的品牌制造商，\\n无荧光剂，国家A类标准，让宝宝穿的放心。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/1a11438598f1bb52b1741e123b523cb5.jpg\",\n            \"floorPrice\": 36.00\n          },\n          {\n            \"id\": 1001000,\n            \"name\": \"MUJI制造商\",\n            \"desc\": \"严选精选了MUJI制造商和生产原料，\\n用几乎零利润的价格，剔除品牌溢价，\\n让用户享受原品牌的品质生活。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/1541445967645114dd75f6b0edc4762d.png\",\n            \"floorPrice\": 12.90\n          },\n          {\n            \"id\": 1001002,\n            \"name\": \"内野制造商\",\n            \"desc\": \"严选从世界各地挑选毛巾，最终选择了为日本内野代工的工厂，追求毛巾的柔软度与功能性。品质比肩商场几百元的毛巾。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/8ca3ce091504f8aa1fba3fdbb7a6e351.png\",\n            \"floorPrice\": 29.00\n          },\n          {\n            \"id\": 1001003,\n            \"name\": \"Adidas制造商\",\n            \"desc\": \"严选找到为Adidas等品牌制造商，\\n选取优质原材料，与厂方一起设计，\\n为你提供好的理想的运动装备。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/335334d0deaff6dc3376334822ab3a2f.png\",\n            \"floorPrice\": 49.00\n          },\n          {\n            \"id\": 1033003,\n            \"name\": \"Armani制造商\",\n            \"desc\": \"严选团队携手国际标准化专业生产厂家，\\n厂家长期为Armani、Alexander wang等知名品牌代工，\\n专业进口设备，精密质量把控，精于品质居家体验。\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/981e06f0f46f5f1f041d7de3dd3202e6.jpg\",\n            \"floorPrice\": 199.00\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略\n    \n#### 2.9.2 品牌商详情\n\n应用场景\n\n    访问单个品牌商详情信息\n    \n接口链接\n\n    GET /wx/brand/detail\n\n请求参数\n    \n    id: 品牌商ID，例如1001020\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"id\": 1001020,\n        \"name\": \"Ralph Lauren制造商\",\n        \"desc\": \"我们与Ralph Lauren Home的制造商成功接洽，掌握先进的生产设备，传承品牌工艺和工序。追求生活品质的你，值得拥有。\",\n        \"picUrl\": \"http://yanxuan.nosdn.127.net/9df78eb751eae2546bd3ee7e61c9b854.png\",\n        \"sortOrder\": 20,\n        \"floorPrice\": 29.00,\n        \"addTime\": \"2018-02-01 00:00:00\",\n        \"updateTime\": \"2018-02-01 00:00:00\",\n        \"deleted\": false\n      },\n      \"errmsg\": \"成功\"\n    }    \n\n错误码\n    \n    略\n    \n### 2.10 收藏服务\n\n#### 2.10.1 收藏列表\n\n应用场景\n\n    收藏列表\n    \n接口链接\n\n    GET /wx/collect/list\n    \n请求参数\n    \n    type： 收藏类型，如果是0则是商品收藏，如果是1则是专题收藏\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序   \n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 2,\n        \"pages\": 1,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"brief\": \"酥脆奶香，甜酸回味\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n            \"valueId\": 1116011,\n            \"name\": \"蔓越莓曲奇 200克\",\n            \"id\": 3,\n            \"type\": 0,\n            \"retailPrice\": 36.00\n          },\n          {\n            \"brief\": \"MUJI供应商携手打造\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n            \"valueId\": 1109008,\n            \"name\": \"云端沙发组合\",\n            \"id\": 2,\n            \"type\": 0,\n            \"retailPrice\": 3999.00\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n    \n    略\n    \n\n#### 2.10.2 收藏添加或删除\n\n应用场景\n\n    用户收藏添加或删除\n\n说明\n\n    如果用户已经收藏，则请求API会删除已收藏商品或专题；\n    如果用户未收藏，则请求API会添加新的商品或专题收藏记录。\n        \n接口链接\n\n    POST /wx/collect/addordelete\n    \n请求参数\n    \n    type: 收藏类型，如果是0则是商品收藏，如果是1则是专题收藏\n    valueId: 收藏对象ID，如果type=0则设置商品ID，如果type=1则设置专题ID\n    \n例如\n    \n    {\n      \"type\": 0,\n      \"valueId\": 1116011\n    }\n\n    \n响应内容\n\n    \n错误码\n    \n    略\n        \n### 2.11 评论服务\n\n#### 2.11.1 评论数量\n\n应用场景\n\n    某个商品或者专题的评论数量，包括总的评论数量和包含图片的评论数量\n    \n接口链接\n\n    GET /wx/comment/count\n\n请求参数\n    \n    type: 评论类型，如果是0则是商品评论，如果是1则是专题评论\n    valueId: 评论对象ID，如果type=0,则设置商品ID，如果type=0,则设置专题ID\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"hasPicCount\": 34,\n        \"allCount\": 96\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    无\n    \n\n#### 2.11.2 评论列表\n\n应用场景\n\n    某个商品或者专题的评论列表\n    \n接口链接\n\n    GET /wx/comment/list\n    \n请求参数\n    \n    valueId=1181000&type=0&limit=20&page=1&showType=0\n    type: 评论类型，如果是0则是商品评论，如果是1则是专题评论\n    valueId: 评论对象ID，如果type=0,则设置商品ID，如果type=0,则设置专题ID\n    showType: 评论显示类型，如果是0则是所有评论，如果是1则是包含图片的评论\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n        \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 96,\n        \"pages\": 20,\n        \"limit\": 5,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"picList\": [\n              \"https://yanxuan.nosdn.127.net/218783173f303ec6d8766810951d0790.jpg\"\n            ],\n            \"content\": \"布料很厚实，触感不错，洗过之后不缩水不掉色\"\n          },\n          {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"picList\": [\n              \"https://yanxuan.nosdn.127.net/33978a0d6f56d94c45e4fc594b4b8606.jpg\"\n            ],\n            \"content\": \"料子很舒服，凉凉的，配合蚕丝被，夏天很凉快~\"\n          },\n          {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"picList\": [\n              \"https://yanxuan.nosdn.127.net/d3975d1b6d88e9f9d762cd9a879d1a14.jpg\"\n            ],\n            \"content\": \"一直喜欢粗布的床上用品。冬暖夏凉。这套看起来非常漂亮。实际感觉有点粗布的感觉。很好！\"\n          },\n          {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"picList\": [\n              \"https://yanxuan.nosdn.127.net/5fe1121396458cfe0dc1b25ec86f7ff9.jpg\",\n              \"https://yanxuan.nosdn.127.net/d5a55abd6ced5c811d775b04929aaabc.jpg\",\n              \"https://yanxuan.nosdn.127.net/f1764d820ba6ddaf51d297e3cf3826cd.jpg\"\n            ],\n            \"content\": \"太好了，舒服的不得了，腰，腿，脊柱，头，颈椎！\\n无一处不舒服，真没想到这么优惠！\\n搬了新家还要买！\"\n          },\n          {\n            \"userInfo\": {\n              \"nickName\": \"user123\",\n              \"avatarUrl\": \"https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif\"\n            },\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"picList\": [\n              \"https://yanxuan.nosdn.127.net/f753f91430dfb56f574c737d4b2fde46.jpg\"\n            ],\n            \"content\": \"抱着试试的态度 先买了小的 果然感觉很舒服 深陷其中 把自己全身心都给了它 第二个床垫已经在路上\"\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n    \n    无\n        \n\n#### 2.11.3 发表评论\n\n应用场景\n\n    针对某个商品或者专题的发表评论\n    \n接口链接\n\n\n请求参数\n    \n\n响应内容\n\n\n错误码\n    \n    略\n            \n### 2.12 优惠券服务\n\n\n#### 2.12.1 优惠券列表\n\n应用场景\n\n    优惠券列表\n    \n接口链接\n\n    GET  /wx/coupon/list\n    \n请求参数\n    \n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序       \n\n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 2,\n        \"pages\": 1,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1,\n            \"name\": \"限时满减券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"discount\": 5.00,\n            \"min\": 99.00,\n            \"days\": 10\n          },\n          {\n            \"id\": 2,\n            \"name\": \"限时满减券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"discount\": 10.00,\n            \"min\": 99.00,\n            \"days\": 10\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略\n    \n\n#### 2.12.2 用户优惠券列表\n\n应用场景\n\n    用户优惠券列表\n    \n接口链接\n\n    GET /wx/coupon/mylist\n    \n请求参数\n    \n    status: 优惠券状态，如果0则未使用，如果1则已使用，如果2则已过期\n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序    \n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 2,\n        \"pages\": 1,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1,\n            \"name\": \"限时满减券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"min\": \"99.00\",\n            \"discount\": \"5.00\",\n            \"startTime\": \"2019-05-06 16:21:38\",\n            \"endTime\": \"2019-05-16 16:21:38\"\n          },\n          {\n            \"id\": 3,\n            \"name\": \"新用户优惠券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"min\": \"99.00\",\n            \"discount\": \"10.00\",\n            \"startTime\": \"2019-05-06 12:30:06\",\n            \"endTime\": \"2019-05-16 12:30:06\"\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n    \n    略\n    \n\n#### 2.12.3 下单可用优惠券\n\n应用场景\n\n    当前购物车下单商品订单可用优惠券\n    \n接口链接\n\n    GET /wx/coupon/selectlist\n\n请求参数\n    \n    cartId: 购物车ID，如果0则是购物车商品，如果非0则是立即单一商品\n    grouponRulesId: 团购规则ID，如果是团购商品则需要设置具体团购规则ID\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 1,\n        \"pages\": 1,\n        \"limit\": 1,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 2,\n            \"name\": \"限时满减券\",\n            \"desc\": \"全场通用\",\n            \"tag\": \"无限制\",\n            \"min\": \"99.00\",\n            \"discount\": \"10.00\",\n            \"startTime\": \"2019-05-09 15:27:29\",\n            \"endTime\": \"2019-05-19 15:27:29\"\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n    \n    略\n            \n#### 2.12.4 优惠券领取\n\n应用场景\n\n    领取优惠券\n\n接口链接\n    \n    POST /wx/coupon/receive\n\n请求参数\n    \n    couponId： 可领取优惠券ID\n    \n例如\n\n    {\n        \"couponId\": 2\n    }\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略\n\n#### 2.12.5 优惠券兑换\n\n应用场景\n\n    通过兑换码兑换优惠券\n    \n接口链接\n\n    POST /wx/coupon/exchange\n\n请求参数\n    \n    code: 优惠券兑换码\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略\n                                    \n### 2.13 反馈服务\n\n### 2.14 足迹服务\n\n#### 2.14.1 用户足迹列表\n\n应用场景\n\n    用户足迹列表\n    \n接口链接\n\n    GET /wx/footprint/list\n    \n请求参数\n    \n    page: 请求页码\n    limit: 每一页数量 \n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 22,\n        \"pages\": 6,\n        \"limit\": 4,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"brief\": \"酥脆奶香，甜酸回味\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n            \"addTime\": \"2019-05-09 10:10:01\",\n            \"goodsId\": 1116011,\n            \"name\": \"蔓越莓曲奇 200克\",\n            \"id\": 22,\n            \"retailPrice\": 36.00\n          },\n          {\n            \"brief\": \"MUJI供应商携手打造\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n            \"addTime\": \"2019-05-09 10:09:49\",\n            \"goodsId\": 1109008,\n            \"name\": \"云端沙发组合\",\n            \"id\": 21,\n            \"retailPrice\": 3999.00\n          },\n          {\n            \"brief\": \"酥脆奶香，甜酸回味\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png\",\n            \"addTime\": \"2019-05-08 22:40:55\",\n            \"goodsId\": 1116011,\n            \"name\": \"蔓越莓曲奇 200克\",\n            \"id\": 20,\n            \"retailPrice\": 36.00\n          },\n          {\n            \"brief\": \"MUJI供应商携手打造\",\n            \"picUrl\": \"http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png\",\n            \"addTime\": \"2019-05-07 14:35:41\",\n            \"goodsId\": 1109008,\n            \"name\": \"云端沙发组合\",\n            \"id\": 19,\n            \"retailPrice\": 3999.00\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n        \n错误码\n    \n    略\n    \n#### 2.14.2 用户足迹删除\n\n应用场景\n\n    用户足迹删除\n    \n接口链接\n\n    POST /wx/footprint/delete\n    \n请求参数\n    \n    id: 用户足迹ID\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"errmsg\": \"成功\"\n    }\n        \n错误码\n    \n    略\n        \n### 2.15 团购服务\n\n注意\n> 团购业务还不完善\n\n\n#### 2.15.1 团购商品列表\n\n应用场景\n\n    参加团购的商品列表信息\n    \n接口链接\n\n\n请求参数\n    \n\n响应内容\n\n\n错误码\n    \n    略\n\n\n#### 2.15.2 团购活动详情\n\n应用场景\n\n    团购活动详情\n    \n接口链接\n\n\n请求参数\n    \n\n响应内容\n\n\n错误码\n    \n    略               \n\n#### 2.15.3 参加团购\n\n应用场景\n\n    参加团购的商品列表信息\n    \n接口链接\n\n\n请求参数\n    \n\n响应内容\n\n\n错误码\n    \n    略\n\n\n#### 2.15.4 用户参团列表\n\n应用场景\n\n    用户参团列表\n    \n接口链接\n\n\n请求参数\n    \n\n响应内容\n\n\n错误码\n    \n    略\n                                                                  \n### 2.16 帮助服务\n\n#### 2.16.1 帮助列表\n\n应用场景\n\n    帮助列表\n    \n接口链接\n\n    GET /wx/issue/list\n    \n请求参数\n    \n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序    \n\n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 4,\n        \"pages\": 1,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 1,\n            \"question\": \"购买运费如何收取？\",\n            \"answer\": \"单笔订单金额（不含运费）满88元免邮费；不满88元，每单收取10元运费。\\n(港澳台地区需满\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 2,\n            \"question\": \"使用什么快递发货？\",\n            \"answer\": \"严选默认使用顺丰快递发货（个别商品使用其他快递），配送范围覆盖全国大部分地区（港澳台地区除\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 3,\n            \"question\": \"如何申请退货？\",\n            \"answer\": \"1.自收到商品之日起30日内，顾客可申请无忧退货，退款将原路返还，不同的银行处理时间不同，\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          },\n          {\n            \"id\": 4,\n            \"question\": \"如何开具发票？\",\n            \"answer\": \"1.如需开具普通发票，请在下单时选择“我要开发票”并填写相关信息（APP仅限2.4.0及以\",\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n错误码\n    \n    无\n              \n### 2.17 搜索服务\n\n### 2.18 专题服务\n\n#### 2.18.1 专题列表\n\n应用场景\n\n    访问专题列表信息\n    \n接口链接\n\n    GET /wx/topic/list\n\n请求参数\n    \n    page: 请求页码\n    limit: 每一页数量\n    sort: 排序字段\n    order: 升序降序\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 20,\n        \"pages\": 2,\n        \"limit\": 10,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 264,\n            \"title\": \"设计师们推荐的应季好物\",\n            \"subtitle\": \"原创设计春款系列上新\",\n            \"price\": 29.90,\n            \"readCount\": \"77.7k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14918201901050274.jpg\"\n          },\n          {\n            \"id\": 266,\n            \"title\": \"一条丝巾就能提升时髦度\",\n            \"subtitle\": \"不知道大家对去年G20时，严选与国礼制造商一起推出的《凤凰于飞》等几款丝巾是否还...\",\n            \"price\": 0.00,\n            \"readCount\": \"35.0k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14919007135160213.jpg\"\n          },\n          {\n            \"id\": 268,\n            \"title\": \"米饭好吃的秘诀：会呼吸的锅\",\n            \"subtitle\": \"今年1月份，我们联系到了日本伊贺地区的长谷园，那里有着180年伊贺烧历史的窑厂。...\",\n            \"price\": 0.00,\n            \"readCount\": \"33.3k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14920623353130483.jpg\"\n          },\n          {\n            \"id\": 271,\n            \"title\": \"选式新懒人\",\n            \"subtitle\": \"懒出格调，懒出好生活。\",\n            \"price\": 15.00,\n            \"readCount\": \"57.7k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14924199099661697.jpg\"\n          },\n          {\n            \"id\": 272,\n            \"title\": \"料理也要精细简单\",\n            \"subtitle\": \"享受天然的味道，日子每天都好新鲜\",\n            \"price\": 69.00,\n            \"readCount\": \"125.6k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14925200530030186.jpg\"\n          },\n          {\n            \"id\": 274,\n            \"title\": \"没有软木拖，怎么过夏天\",\n            \"subtitle\": \"刚入四月，杭州的气温就已升高至30度。店庆时买了软木拖的用户，陆续发回评价说，很...\",\n            \"price\": 0.00,\n            \"readCount\": \"46.4k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14925822213780237.jpg\"\n          },\n          {\n            \"id\": 277,\n            \"title\": \"治愈生活的满怀柔软\",\n            \"subtitle\": \"太鼓抱枕的上架历程，是从失踪开始的。由于表面的绒感，最初它被安排在秋冬季上架。某...\",\n            \"price\": 0.00,\n            \"readCount\": \"19.6k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14926737925770587.jpg\"\n          },\n          {\n            \"id\": 281,\n            \"title\": \"条纹新风尚\",\n            \"subtitle\": \"经典百搭，时尚线条\",\n            \"price\": 29.00,\n            \"readCount\": \"76.5k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14926859849200826.jpg\"\n          },\n          {\n            \"id\": 282,\n            \"title\": \"成就一室笋香\",\n            \"subtitle\": \"三石哥办公室常备小食推荐\",\n            \"price\": 12.00,\n            \"readCount\": \"40.9k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14927695046601069.jpg\"\n          },\n          {\n            \"id\": 283,\n            \"title\": \"孩子成长中少不了的一双鞋\",\n            \"subtitle\": \"说起毛毛虫鞋，好处实在太多了，作为一个2岁孩子的宝妈选品员，按捺不住想告诉大家，...\",\n            \"price\": 0.00,\n            \"readCount\": \"42.5k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14927748974441080.jpg\"\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n\n错误码\n    \n    略\n    \n#### 2.18.2 专题详情\n\n应用场景\n\n    单个专题详情信息\n    \n接口链接\n\n    GET /wx/topic/detail\n\n请求参数\n    \n    id: 专题ID，例如 id=264\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"topic\": {\n          \"id\": 264,\n          \"title\": \"设计师们推荐的应季好物\",\n          \"subtitle\": \"原创设计春款系列上新\",\n          \"price\": 29.90,\n          \"readCount\": \"77.7k\",\n          \"picUrl\": \"https://yanxuan.nosdn.127.net/14918201901050274.jpg\",\n          \"sortOrder\": 0,\n          \"goods\": [],\n          \"addTime\": \"2018-02-01 00:00:00\",\n          \"updateTime\": \"2018-02-01 00:00:00\",\n          \"deleted\": false,\n          \"content\": \"\"\n        },\n        \"goods\": []\n      },\n      \"errmsg\": \"成功\"\n    }  \n\n错误码\n    \n    略\n\n#### 2.18.3 专题推荐\n\n应用场景\n\n    基于某个专题推荐其他专题\n    \n接口链接\n\n    GET /wx/topic/related\n\n请求参数\n    \n    id: 专题ID，例如 id=264\n    \n响应内容\n\n    {\n      \"errno\": 0,\n      \"data\": {\n        \"total\": 19,\n        \"pages\": 5,\n        \"limit\": 4,\n        \"page\": 1,\n        \"list\": [\n          {\n            \"id\": 266,\n            \"title\": \"一条丝巾就能提升时髦度\",\n            \"subtitle\": \"不知道大家对去年G20时，严选与国礼制造商一起推出的《凤凰于飞》等几款丝巾是否还...\",\n            \"price\": 0.00,\n            \"readCount\": \"35.0k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14919007135160213.jpg\",\n            \"sortOrder\": 0,\n            \"goods\": [],\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false,\n            \"content\": \"\\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\"\\u003e\"\n          },\n          {\n            \"id\": 268,\n            \"title\": \"米饭好吃的秘诀：会呼吸的锅\",\n            \"subtitle\": \"今年1月份，我们联系到了日本伊贺地区的长谷园，那里有着180年伊贺烧历史的窑厂。...\",\n            \"price\": 0.00,\n            \"readCount\": \"33.3k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14920623353130483.jpg\",\n            \"sortOrder\": 0,\n            \"goods\": [],\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false,\n            \"content\": \"\\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\"\\u003e\"\n          },\n          {\n            \"id\": 271,\n            \"title\": \"选式新懒人\",\n            \"subtitle\": \"懒出格调，懒出好生活。\",\n            \"price\": 15.00,\n            \"readCount\": \"57.7k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14924199099661697.jpg\",\n            \"sortOrder\": 0,\n            \"goods\": [],\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false,\n            \"content\": \"\\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\"\\u003e\"\n          },\n          {\n            \"id\": 272,\n            \"title\": \"料理也要精细简单\",\n            \"subtitle\": \"享受天然的味道，日子每天都好新鲜\",\n            \"price\": 69.00,\n            \"readCount\": \"125.6k\",\n            \"picUrl\": \"https://yanxuan.nosdn.127.net/14925200530030186.jpg\",\n            \"sortOrder\": 0,\n            \"goods\": [],\n            \"addTime\": \"2018-02-01 00:00:00\",\n            \"updateTime\": \"2018-02-01 00:00:00\",\n            \"deleted\": false,\n            \"content\": \"\\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\"\\u003e\\n    \\u003cimg src\\u003d\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\"\\u003e\"\n          }\n        ]\n      },\n      \"errmsg\": \"成功\"\n    }\n    \n### 2.19 对象存储服务\n\n### 2.20 其他服务\n\n\n## 3 管理后台API服务\n\n略\n\n## 4 更新日志\n\n略\n"
  },
  {
    "path": "doc/conf/nginx.conf",
    "content": "user www-data;\nworker_processes auto;\npid /run/nginx.pid;\n\nevents {\n\tworker_connections 768;\n\t# multi_accept on;\n}\n\nhttp {\n\n\t##\n\t# Basic Settings\n\t##\n\n\tsendfile on;\n\ttcp_nopush on;\n\ttcp_nodelay on;\n\tkeepalive_timeout 65;\n\ttypes_hash_max_size 2048;\n\t# server_tokens off;\n\n\t# server_names_hash_bucket_size 64;\n\t# server_name_in_redirect off;\n\n\tinclude /etc/nginx/mime.types;\n\tdefault_type application/octet-stream;\n\n\t##\n\t# SSL Settings\n\t##\n\n\tssl_protocols TLSv1 TLSv1.1 TLSv1.2; # Dropping SSLv3, ref: POODLE\n\tssl_prefer_server_ciphers on;\n\n\t##\n\t# Logging Settings\n\t##\n\n\taccess_log /var/log/nginx/access.log;\n\terror_log /var/log/nginx/error.log;\n\n\t##\n\t# Gzip Settings\n\t##\n\n\tgzip on;\n\tgzip_disable \"msie6\";\n\n\t# gzip_vary on;\n\t# gzip_proxied any;\n\t# gzip_comp_level 6;\n\t# gzip_buffers 16 8k;\n\t# gzip_http_version 1.1;\n\t# gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;\n\n\t##\n\t# Virtual Host Configs\n\t##\n\n\tserver {\n\t\tlisten 443;\n\t\tserver_name www.example.com;\n\t\tssl on;\n\t\tssl_certificate /etc/nginx/1_www.example.com_bundle.crt;\n\t\tssl_certificate_key /etc/nginx/2_www.example.com.key;\n\t\tssl_session_timeout 5m;\n\t\tssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n\t\tssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;\n\t\tssl_prefer_server_ciphers on;\n\n\t\tlocation / {\n            proxy_pass  http://localhost:8080;\n            proxy_set_header    Host    $host;\n            proxy_set_header    X-Real-IP   $remote_addr;\n            proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;\n        }\n\t}\n\n    server {\n        listen 80;\n        server_name www.example.com;\n        rewrite https://$server_name$request_uri? permanent;\n    }\n\n    #include /etc/nginx/conf.d/*.conf;\n\t#include /etc/nginx/sites-enabled/*;\n}\n\n\n#mail {\n#\t# See sample authentication script at:\n#\t# http://wiki.nginx.org/ImapAuthenticateWithApachePhpScript\n# \n#\t# auth_http localhost/auth.php;\n#\t# pop3_capabilities \"TOP\" \"USER\";\n#\t# imap_capabilities \"IMAP4rev1\" \"UIDPLUS\";\n# \n#\tserver {\n#\t\tlisten     localhost:110;\n#\t\tprotocol   pop3;\n#\t\tproxy      on;\n#\t}\n# \n#\tserver {\n#\t\tlisten     localhost:143;\n#\t\tprotocol   imap;\n#\t\tproxy      on;\n#\t}\n#}\n"
  },
  {
    "path": "doc/database.md",
    "content": "# 数据库\n\nlitemall数据库基于nideshop中的[nideshop.sql](https://github.com/tumobi/nideshop/blob/master/nideshop.sql)数据库，\n然后在实际开发过程中进行了调整和修改:\n\n* 删除了一些目前不必要的表；\n* 删除了表中一些目前不必要的字段；\n* 行政区域数据litemall_region没有采用原nideshop中的数据，而是采用了[Administrative-divisions-of-China](https://github.com/modood/Administrative-divisions-of-China)；\n* 表中的某些字段采用JSON存储；\n* 表中的日期或时间字段采用DATE、DATETIME；\n* 字段的数据类型粗粒度化，例如避免MEDIUMINT，而是INT；\n* 表的数据做了清理、调整和补充（假数据）。\n\nlitemall数据库由三个sql文件组成，在litemall-db文件夹下面的sql文件夹中：\n\n1. litemall_schema.sql\n  \n   作用是创建空数据库、创建用户、设置访问权限。\n   \n   开发者开发测试阶段可以使用，但是部署生产阶段一定要注意修改这里的默认用户名和密码。\n\n   注意，这里的sql文件不一定需要运行，开发者可以自己手动或命令行或IDE进行对应的操作即可。\n   \n2. litemall_table.sql\n\n   作用是创建数据库表，但是没有创建任何数据。\n   \n   因此，开发者可以在部署生产阶段直接使用。\n \n3. litemall_data.sql\n\n   作用是创建测试数据。\n      \n   开发者开发测试阶段可以使用，但是部署开发阶段应该使用自己的数据。\n\n综上，这里litemall真正必须运行的sql文件是litemall_table.sql，其他两个sql文件开发者自行决定如何是否使用。\n\n## 1 数据表结构\n\n### 1.1 用户相关\n\n![](./pics/database/user.png)\n\n### 1.2 商品相关\n\n![](./pics/database/goods.png)\n\n### 1.3 订单相关\n\n![](./pics/database/order.png)\n\n### 1.4 其他\n\n![](./pics/database/others.png)\n\n## 2 数据表设计\n\n接下来讨论一些数据表的关键细节。\n\n### 2.1 商品和货品设计\n\n这里商品存在商品表（litemall_goods)，商品属性表（litemall_goods_attribute），商品规格表（litemall_goods_specification），商品货品表（litemall_goods_product）四种表\n\n商品表是一种商品的基本信息，主要包括商品介绍，商品图片，商品所属类目，商品品牌商等；\n\n商品参数表其实也是商品的基本信息，但是由于是一对多关系，因此不能直接保存在商品表中（虽然采用JSON也可以但是不合理），\n因此采用独立的商品参数表，通常是商品的一些公共基本商品参数；\n\n商品规格表是商品进一步区分货品的标识，例如同样一款衣服，基本信息一致，基本属性一致，但是在尺寸这个属性上可以\n把衣服区分成多个货品，而且造成对应的数量和价格不一致。商品规格可以看着是商品属性，但具有特殊特征。\n\n商品规格和规格值存在以下几种关系：\n\n* 单一规格和单一规格值，最常见的，即当前商品存在一种货品；\n* 单一规格和多个规格值，较常见，即当前商品基于某个规格存在多种货品，通常价格都是相同的，当然也可能不相同；\n* 多个规格和单一规格值，可以简化成第一种情况，或者采用第四种情况，通常实际情况下不常见；\n* 多个规格和多个规格值，通常是两种规格或者三种规格较为常见，而且对应的价格不完全相同。\n\n商品货品表则是最终实现商品库存管理、购买业务的实体对象，存在多个规格值、数量和价格。\n例如，同样的衣服品牌，可能因为不能尺寸和颜色而存在最终的货品，这里每个货品的价格可以一样，也可以不一样。\n\n总结一下，一个普通商品，实际上在数据库中，存在一个商品表项，存在（至少0个）多个商品属性表项目，存在（至少一个）多个商品规格表项，\n存在（至少一个）多个货品表项。\n\n举例如下：\n\n* 一个商品“2018春季衣服商品编号1111111”，\n* 存在两个商品参数，\n  * 属性名称“面向人群”，属性值“男士”\n  * 属性名称“面料”，属性值“100%棉”\n* 存在两种规格（分别五个规格值和三个规格值）共八个商品规格项，\n  * 规格名称“尺寸”，规则值“S”\n  * 规格名称“尺寸”，规则值“M”\n  * 规格名称“尺寸”，规则值“L”\n  * 规格名称“尺寸”，规则值“XL”\n  * 规格名称“尺寸”，规则值“XXL”\n  * 规格名称“颜色”，规格值“蓝色”\n  * 规格名称“颜色”，规格值“灰色”\n  * 规格名称“颜色”，规格值“黑色”\n* 存在15个货品（尺寸*颜色=15个货品)\n  * 货品“S蓝”，数量 100， 价格 100\n  * 货品“M蓝”，数量 100， 价格 100\n  * 货品“L蓝”，数量 100， 价格 100\n  * 货品“XL蓝”，数量 100， 价格 100\n  * 货品“XXL蓝”，数量 100， 价格 100\n  * 货品“S灰”，数量 100， 价格 100\n  * 货品“M灰”，数量 100， 价格 100\n  * 货品“L灰”，数量 100， 价格 100\n  * 货品“XL灰”，数量 100， 价格 100\n  * 货品“XXL灰”，数量 100， 价格 100\n  * 货品“S黑”，数量 100， 价格 100\n  * 货品“M黑”，数量 100， 价格 100\n  * 货品“L黑”，数量 100， 价格 100\n  * 货品“XL黑”，数量 0， 价格 100\n  * 货品“XXL黑”，数量 0， 价格 100\n  \n以下是一些细节的讨论：\n\n* 商品表中可能存在数量和价格属性，而货品中也存在数量和价格属性，目前设计这样：\n  * 商品表的价格应该和某个货品的价格一样，通常应该是所有货品价格的最小值，或者基本款式的价格；\n  * 商品表中的数量和价格应该仅用于展示，而不能用于最终的订单价格计算；\n  * 商品表的数量应该设置成所有货品数量的总和；\n  * 在管理后台添加商品时，如果管理员不填写商品表的数量和价格属性，则自动填写合适的值；如果填写，则使用显示。\n  * 当小商城中，用户查看商品详情时，初始显示商品表的价格，而如果用户选择具体规格后，则商品\n    详情里面的价格需要自动切换到该规格的价格。\n* 商品规格可以存在规格图片，效果是规格名称前放置规格图片\n* 货品也可以存在货品图片，效果是所有规格选定以后对应的货品有货，则在货品价格前放置货品图片\n* 如果商品是两种规格，分别是M个和N个规格值，那么通常应该是`M*N`个货品，但是有些货品可能天然不存在。\n  目前这里要求所有货品信息都应该存在，如果实际中货品不存在，也要设置商品数量为0.\n\n注意：\n\n> 这里的设计可能与实际项目设计不一致，但是目前是可行的。\n> 商品的中文用语“商品”和英语用语“goods”，货品的中文用语“货品”和英语用语“product”可能是不正确的。\n\n### 2.2 用户和微信用户设计\n\n目前准备支持用户普通账号登录和微信登录两种方式，两种登录方式仅仅采用一个litemall-user表可能不是很合适。\n\n外，如果进一步支持其他多种第三方登录，那么这里需要重新设计。\n\n### 2.3 行政区域设计\n \nlitemall_region表保存了行政区域信息，包括省级、市级、县级三个等级，\n\n原nideship.sql中存在region数据，但是litemall.sql的region数据则来自\n[Administrative-divisions-of-China](https://github.com/modood/Administrative-divisions-of-China)项目。\n\n### 2.4 订单设计\n\n订单信息主要由基本信息、商品信息、地址信息、费用信息、快递信息、支付信息和其他信息组成，\n由litemall_order表和litemall_order_goods表保存。\n\n* 基本信息\n\n订单创建时的一些基本信息，例如用户、订单状态和订单留言等。\n其中订单状态是最重要的信息。\n\n* 商品信息\n\n由于订单可以存在多个商品，因此订单的商品信息是由独立的订单商品表记录（可能更应该称为货品）。\n\n* 费用信息\n\n订单一些费用情况，例如商品总价、优惠减免和实际付费等。\n\n* 收货信息\n\n用户下单时选择的收货地址以及联系人信息。\n\n* 快递信息\n\n目前快递信息仅仅记录快递公司、快递单号、快递发出时间。\n而如果快递过程中如果存在一些异常，例如物品丢失，则目前系统难以处理。\n\n* 支付信息\n\n支付时间和支付订单ID。\n\n* 评论信息\n\n订单商品的评论情况。\n\n* 其他信息\n\n#### 2.4.1 订单状态\n\n![](pics/database/order-status.png)\n\n订单分成几种基本的状态：\n\n* 101\n\n  状态码101，此时订单生成，记录订单编号、收货地址信息、订单商品信息和订单相关费用信息；\n\n* 201\n\n  状态码201，此时用户微信支付付款，系统记录微信支付订单号、支付时间、支付状态；\n\n* 301\n\n  状态码301，此时商场已经发货，系统记录快递公司、快递单号、快递发送时间。\n  当快递公司反馈用户签收后，系统记录快递到达时间。\n\n* 401\n\n  状态码401，当用户收到货以后点击确认收货，系统记录确认时间。\n\n以上是一个订单成功完成的基本流程，但实际中还存在其他情况。\n\n* 102\n\n  状态码102，用户下单后未付款之前，点击取消按钮，系统记录结束时间\n\n* 103\n\n  状态码103，用户下单后半小时未付款则系统自动取消，系统记录结束时间\n\n* 202\n\n  状态码202，用户付款以后未发货前，点击退款按钮，系统进行设置退款状态，等待管理员退款操作\n\n* 203\n\n  状态码203，管理员在管理后台看到用户的退款申请，点击退款按钮进行退款操作。\n  \n* 402\n\n  状态码402，用户已签收却不点击确认收货，超期7天以后，则系统自动确认收货。\n  用户不能再点击确认收货按钮，但是可以评价订单商品。\n\n此外，当订单状态码是102、103、203、401和402时，订单可以执行删除操作。\n目前的设计是不执行物理删除，而是逻辑删除，因此用户查看自己订单时将看不到这些“已删除”的订单。\n\n注意：\n> 在上图中可以看到`101`到`101`的状态变化，这里只是小商场用户的操作，不会影响订单状态码。\n> 如果用户点击付款时，后端服务会生成预支付会话id，但是不会影响订单状态。\n> 如果而用户支付过程中，放弃支付，则也不会影响订单状态。\n\n#### 2.4.2 状态变化\n\n* 初始 -> 101\n\n小商场用户在小商场点击`下单`按钮，此时小商城后端服务会生产商户订单。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.submit`方法。\n \n* 101 -> 101\n\n这里开发者可能会奇怪，这里存在101->101的变化，这里表明后台没有响应\n小程序端的请求，但是这里的响应没有导致订单状态实际的变化。这里所指的\n响应小程序端请求是指下单成功以后小程序端自动请求付款或者用户在订单页面中\n点击`付款`所导致的对后台服务的预支付请求。\n\n关于微信支付流程，可以参看官方文档的[小程序支付业务流程](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_4&index=3)\n也就是说这里小商城后台服务会返回付支付信息。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.prepay`\n\n小商城接收返回的预支付信息后，会在小程序端出现支付页面。\n如果用户放弃支付，则不会出现任何效果，不会向小商场后台服务发送任何信息。\n如果用户支付，则会导致微信商户平台向小商场后台服务推送支付结果。\n\n* 101 -> 102\n\n如果用户没有支付，那么此时用户可以点击`取消订单`按钮来放弃当前订单。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.cancel`\n\n* 101 -> 103\n\n如果用户没有支付，也没有点击`取消订单`按钮，那么系统会定时查询数据库的订单信息。\n如果发现存在订单未支付状态超时半小时，此时系统会自动取消订单，来释放商品资源。\n\n对应的应该是litemall-admin-api模块的系统定时任务的`OrderJob.checkOrderUnpaid`\n\n* 101 -> 201\n\n如果用户支付，微信商户平台会向小商场后台服务推送支付结果。\n而响应结果表示支付成功，则订单状态信息设置201，表示支付成功。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.payNotify`\n\n* 201 -> 202\n\n当用户支付以后，管理员未发货前，用户可以点击`退款`申请退款取消订单。\n通常用户点击退款以后系统可以基于微信商户平台的退款接口实现自动退款，\n但是这里考虑到安全原因，不支持系统自动退款操作。\n相应地，这里小商场后台服务只是设置订单状态，表示退款申请中。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.refund`\n\n* 202 -> 203\n\n这里退款操作是由管理员在微信商户平台手动退款，然后在本项目的\n管理平台里面点击`退款确认`按钮，此时订单状态会设置成203，表明\n退款已经成功，同时系统会自动恢复订单商品数量。\n\n所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.refundConfirm`\n\n* 201 -> 301\n\n当订单支付以后，管理员进行订单发货，然后在管理平台点击`发货`，填写快递信息，\n设置订单状态是301，表示管理员已发货状态。\n\n所对应的后台服务方法是litemall-admin-api模块的`AdminOrderController.ship`\n\n* 301 -> 401\n\n当用户收到商品以后，用户点击`收货确认`按钮，设置订单状态401，表示用户成功收货。\n\n所对应的后台服务方法是litemall-wx-api模块的`WxOrderController.confirm`\n\n* 301 -> 402\n\n当管理员发货以后，用户一直没有确认收货，系统定时检测订单状态，如果发现发货以后\n七天用户都没有收货，此时系统自动确认用户收货，设置订单状态402。\n\n应该改为 litemall-admin-api模块的系统定时任务`OrderJob.checkOrderUnconfirm`\n\n注意：\n> 上述订单状态变化中具体的逻辑处理可以参考相应模块文档和模块代码。\n\n#### 2.4.2 用户操作\n\n订单状态码标识了订单的状态，但是对于用户而言，真正关心的只是他们能够进行的操作，\n也就是在小商场的小程序端用户可以进行点击的按钮操作，目前支持：\n\n* `支付`，如果下单后未立即支付，则订单详情页面会出现`支付`按钮；\n* `取消`，如果用户未支付，则订单详情页面会出现`取消`按钮；\n* `退款`，如果用户支付后但是管理员未发货，则订单详情页面会出现`退款`按钮；\n* `确认收货`，如果管理员已发货，则订单详情页面会出现`确认收货`按钮；\n* `申请退货`，如果用户已经确认收货同时未超过一段时间，则订单详情页面会出现`申请退货`按钮；\n   注意，这里如果是系统超时自动确认收货，则不会出现；\n* `去评价`，如果用户确认收货以后，则订单详情页面会出现`去评价`按钮；\n* `再次购买`，如果用户确认收货以后，则订单详情页面会出现`再次购买`按钮；\n* `删除`，如果当前订单状态码是102、103、203、401和402时，则订单详情页面会出现`删除订单`按钮；\n   注意，这里的删除操作是逻辑删除，即设置订单的删除状态`deleted`。\n  \n因此订单状态码和小商场用户操作之间存在映射关系：\n\n* 101\n\n  用户可以`支付`、`取消`\n\n* 102\n\n  用户可以`删除`\n\n* 103\n\n  用户可以`删除`\n\n* 201\n\n  用户可以`退款`\n\n* 203\n\n  用户可以`删除`\n\n* 301\n\n  用户可以`确认收货`\n\n* 401\n\n  用户可以`删除`、`去评价`、`申请售后`、`再次购买`\n\n* 402\n\n  用户可以`删除`、`去评价`、`申请售后`、`再次购买`\n\n#### 2.4.3 申请售后\n\n当用户确认收货或者系统自动确认收货以后，订单可以申请售后。\n目前仅支持订单整体售后，而不支持订单商品独立售后。\n这是因为：订单存在商品售价、优惠券减免、团购减免以及物流运费属性，\n如果要支持单个商品退款，那么存在一个需要解决的问题就是单个商品的\n退款金额如何计算。如果开发者这里考虑清楚，也可以参考当前代码实现\n订单商品独立售后\n\nlitemall_order表中存在`aftersale_status`字段，记录订单售后状态。\n而具体的售后记录则是litemall_aftersale表记录。\n\n这里`type`字段表示当前售后类型，目前存在三种类型：\n\n* 如果type=0，即“未收货退款”，通常是系统超时自动确认收货，而实际上用户没有收货，因此可以选择这个；\n* 如果type=1，即“无需退货退款”，通常是用户确认收货后申请售后，而管理员同意可以不需要退货，直接退款给用户；\n* 如果type=2，即“退货退款”，通常是用户确认收货后申请售后，管理员同意用户退货，当管理员收到货以后再退款给用户。\n\n需要注意的是：当前实现中，如果是“退货退款”类型，那么管理员在进行退款以后，系统会自动恢复货品数量。\n这是因为管理员完成“退货退款”售后，说明管理员已经收到用户的退货。\n开发者可以改变这里的实现逻辑，例如采用独立的退货入库流程。\n\n`status`字段表示当前售后状态，分别是：\n\n* 如果status=0，未申请售后；\n* 如果status=1，用户申请售后，等待管理员审核；\n* 如果status=2，管理员审核通过，等待管理员退款；\n* 如果status=3，管理员已退款，售后完成；\n* 如果status=4，管理员审核不通过，售后完成；\n* 如果status=5，用户已取消售后，当用户在申请售后以后可以在管理员审核前申请取消。\n\n这里需要补充的是：订单litemall_order表的`aftersale_status`字段，和订单售后litemall_aftersale\n表的`status`字段是完全一致的，方便前端分别查询订单状态和订单售后状态。\n\n`amount`字段表示当前售后退款金额，正如前面所述当前仅支持订单整体售后，因此目前设计的退款金额是\n订单实际付款-订单运费。\n\n#### 2.4.4 商品评价\n\n在litemall_order表中存在`comments`字段，表示有几个订单商品没有评价；\n而在litemall_order_goods表中存在`comment`字段，表示当前订单商品的评论ID。\n\n* 当用户确认收货以后，`comments`设置当前订单中未评价的商品数量。而`comment`设置0；\n* 当用户评价一个订单商品，`comments`会减一，而`comment`指向新创建的评论；\n* 如果用户不评论超期，`comments`会设置0，而`comment`设置-1;\n\n### 2.5 评论设计\n\n评论表litemall_comment保存评论相关的信息，其中最关键的是`type`字段和`value_id`字段。\n\n这里`type`字段表示当前评论类型，目前存在两种类型：\n\n* 如果type=0，则当前评论是订单商品评论，value_id是订单商品ID；\n* 如果type=1，则当前评论是专题评论，value_id是专题ID；\n\n`admin_content`字段则拥有记录管理后台管理员对用户评论的回复。\n\n### 2.6 团购设计\n\n团购是由团购规则表litemall_groupon_rules和团购活动表litemall_groupon组成。\n\n管理员在管理后台对一些商品配置团购规则，保存在litemall_groupon_rules表中。\n\n用户在小商场中则看到团购规则给出的优惠信息。\n接下来用户存在两种操作：\n第一种是，用户开团，保存在litemall_groupon中，用户主动分享商品团购页面给朋友；\n第二张是，用户参团，也保存在litemall_groupon中。\n\n只有开团人数符合团购规则条件，创建的订单才会有效，否则管理员需要退款取消当前团购。\n\n### 2.7 优惠券设计\n\n优惠券由litemall_coupon表和litemall_coupon_user表组成：\n* litemall_coupon表，是优惠券基本信息及使用规则。\n* litemall_coupon_user表，是用户优惠券领取和使用的记录。\n\n#### 2.7.1 type\n\ntype字段，标识优惠券发送的方式，目前支持：\n* 通用券，即在首页或者优惠券列表页，用户可以看到优惠券信息并且点击领取；\n* 注册券，即用户注册成功以后即系统自动发送给用户，无需领取；\n* 兑换券，即用户在个人优惠券页面输入兑换码来兑换一张优惠券。\n\n#### 2.7.2 goods_type\n\ngoods_type字段，标识优惠券所能使用的商品范围：\n* 全场通用，即所有商品都能使用；\n* 类目限制，**目前不支持**，即某个类目的商品才能使用；\n* 商品限制，**目前不支持**，即部分商品才能使用优惠券。\n\n#### 2.7.3 time_type\n\ntime_type字段，标识优惠券有效期；\n* 用户领券日期的相对天数，即用户领券以后开始几天内有效；\n* 管理员设置的绝对时间，即优惠券的开始使用时间和截至使用时间。\n\n#### 2.7.4 status\n\nstatus字段，标识优惠券的当前状态。\n\n这里需要指出的是，litemall_coupon表和litemall_coupon_user表都有status字段。\n\nlitemall_coupon表的status字段，包含以后三种状态：\n* 正常可用，\n* 已过期，\n* 已下架，\n\nlitemall_coupon_user表的status字段，包含以后三种状态：\n* 未使用，\n* 已使用，\n* 已过期，\n* 已下架，\n\n### 2.8 系统配置设计\n\n系统配置表litemall_system保存系统的配置信息。\n\n这里需要注意的是，在Java代码层系统配置表只能执行更新操作，\n不能执行创建和删除操作。也就是说，系统配置数据都应该是开发者\n基于系统的配置需求在数据库中手动创建。\n\n### 2.9 存储对象设计\n\n存储对象表litemall_storage保存上传文件信息。\n\n当用户或者管理员上传图像时，图像文件会保存到本地或者第三方云存储服务器中，\n同时在存储对象表中记录一下。\n\n### 2.10 操作日志设计\n\n业务日志表litemall_log记录管理员的关键性操作。\n\n需要讨论的是，很多项目的业务日志模块采用注解方式，即加上方法注解，因此可以自动捕获\n用户的操作行为。虽然这样做很方便且不会影响业务代码，但是实际上最终是粗颗粒地记录，反而记录意义不大。\n\n因此本项目采用在方法内手写业务日志代码方式记录业务操作行为及结果。\n虽然比较繁琐，但是可以保证记录是细颗粒的。而且，如果管理员最终关心的操作较少，那么\n实际上需要写的代码不是很多。\n\n考虑到语义，操作业务应该是“谁做了什么操作，结果成功还是失败，失败原因是什么，补充信息是什么”，\n因此这里设计的业务日志表关键字段如下：\n* 管理员\n* IP地址\n* 操作分类\n* 操作动作\n* 操作状态\n* 操作结果\n* 补充信息\n\n#### 2.10.1 操作类别\n\n这里的日志类型设计成四种（当然开发者需要可以扩展）\n* 一般日志：用户觉得需要查看的一般操作日志，建议是默认的日志级别\n* 安全日志：用户安全相关的操作日志，例如登录、删除管理员\n* 订单日志：用户交易相关的操作日志，例如订单发货、退款\n* 其他日志：如果以上三种不合适，可以选择其他日志，建议是优先级最低的日志级别\n\n当然建议开发者应该和最终用户讨论交流，记录真正关键性的业务操作，例如登录相关或订单相关等。\n\n#### 2.10.2 操作结果\n\n如果操作成功，可以使用操作结果字段记录被操作的对象。\n当然，有些操作没有具体对象，那么可以省略。\n\n如果操作失败，也可以使用操作结果字段记录失败的原因。\n\n#### 2.10.3 操作失败\n\n虽然这里有操作状态字段和操作结果字段，可以记录操作失败的状态。\n但是通常失败操作不会对系统或者数据库带来影响，因此实际上开发者其实不需要\n记录太多操作失败的日志，而是记录操作成功的日志，告诉系统管理员当前状态的变化。\n\n当然，是否记录操作失败取决于开发者或者最终用户是否需要。\n例如，登录这里应该记录用户登录失败的日志，因为保存的IP地址可以帮助管理员了解\n系统被访问的情况。\n\n### 2.11 通用设计\n\n除了以上表，数据库还存在其他一些业务表，例如专题表litemall_topic，\n但是都很直观，不需要多讨论。\n\n以下是一些表设计中无具体业务意义可通用的字段。\n\n#### 2.11.1 deleted\n\n除极少数表，其他所有表都存在`deleted`字段，支持逻辑删除。\n因此目前删除数据时，不会直接删除数据，而是修改`deleted`字段。\n当然，数据库管理员可以连接到数据库直接删除数据，或者开发者\n可以修改这里的逻辑采用物理删除。\n\n#### 2.11.2 add_time\n\n除极少数表，其他所有表都存在`add_time`字段，记录数据创建时间。\n\n#### 2.11.3 update_time\n\n除极少数表，其他所有表都存在`update_time`字段，记录数据修改时间。\n\n此外，此外开发者可以利用update_time来实现乐观锁更新机制。"
  },
  {
    "path": "doc/how to implement best admin.md",
    "content": "# 最佳管理后台开发实践\n\n很多开源项目和商业项目本质上就是一个业务管理后台，因此开源项目或者商业项目都会开发一个剥离业务的通用管理后台。\n但是从本人开发和使用经验出发，希望解决以下问题：\n\n1. 什么是最佳管理后台\n\n   目前有很多优秀的开源管理后台项目，文档都写了如何使用、如何开发，但是没有文档详细讨论为什么需要这个功能、\n   这个功能到底完成什么功能。当然，很多功能其实的确是不言自明的，但是本节希望从管理后台的使用者和管理员角度\n   来系统性地阐述讨论通用的管理后台的一些需求分析。\n\n2. 如何开发最佳管理后台\n\n   对于一个功能，不能的开源项目给出了不同的解决方案，有的解决方案基本是一样的，有的还是有些出入，不同的实现方案\n   中是否能够有最佳方案，以及不同的方案如何来评判优劣。本节希望从管理后台的入门开发者角度来讨论如何开发一个\n   最佳管理后台。\n\n注意：\n\n1. 当然，在没有限定条件下来讨论最佳管理后台，最后可能是被人各种喷。本人也的确没有参与过大型项目或者互联网项目的管理后台开发，\n给不出业界企业级的管理后台开发经验。因此本节仅仅给出一个中、小、微规模的最佳基础通用管理后台的纸上谈兵文档。\n\n2. 本节不讨论任何技术细节，不限定具体的技术框架，而是讨论管理后台的业务需求。\n\n## 1. 最佳管理后台是什么？\n\n* 用户管理（管理员管理）\n* 部门管理\n* 角色管理\n* 权限管理\n* 配置管理\n* 定时任务\n* 消息管理\n* 操作日志\n* 系统日志\n* 菜单管理\n* 国际化\n* 代码生成\n* 字典管理\n* 上传下载\n\n### 1.1 用户管理\n\n\n1. 不要以性能指标来评判管理后台\n\n2. \n\n## 权限管理\n\n权限管理是一个管理后台的核心功能，不同的人员存在不同的权限。\n\n但是具体应该呈现什么效果？\n\n有没有遇到过这种场景：\n> 某天业务人员找你授权，说别人存在某个页面“AA”或者某个按钮“BB”，他现在也需要；\n> 作为系统管理员，你点击打开授权页面，然后看到了各种权限。\n> 然后问题来了，各种权限没有任何名字是和“AA”、“BB”相关的，请问系统管理员如何授权？\n> 最后系统管理员只能从管理后台的开发或者维护工程师才能问到。\n\n从功能上来说，这个管理后台的确实现了权限功能，但是从实际场景出发，这里的权限管理\n实现的非常糟糕。开发工程师或者产品经理根本没有从使用者角度出发来考虑权限管理。\n\n原则1：\n> 假定权限列表的每一项是（AA，BB），则AA是权限所对应的页面，BB是权限所对应页面的操作按钮。\n\n管理员授权时看到（AA，BB），就非常直观地了解当前权限会产生的效果，即授权BB则AA页面的\nBB按钮出现，回收BB则AA页面的BB按钮会消失。\n\n\n\n## 代码生产\n\n## 参数管理\n\n## 字典管理\n\n字典是什么\n\n## 菜单管理\n\n很多管理后台都实现了菜单管理，从个人管理后台的使用角度出发，其实不是很理解菜单管理的意义。\n也许来一个调查，多少管理后台的管理员会使用或者使用过菜单管理功能。\n\n当然，菜单管理可能想实现的功能是分配不同的角色不能的前端操作页面。\n\n## 定时任务\n\n定时任务需要吗？\n\n当然需要，很多功能都依赖定时任务定时完成。\n\n但是管理后台的前端页面真的需要定时任务吗？\n\n很奇怪，很多项目都存在定时任务菜单，而具体的页面则提供定时任务的创建、修改、删除等功能。\n\n仔细看一下定时任务的创建效果，需要管理员设置CLASS方法、cron表达式。\n\n让我们思考一下，\n\n一个普通的业务管理员能看懂这个页面是做什么的吗，CLASS方法？，cron表达式？\n\n好吧，换成懂点技术的系统管理员，也许看的懂这个页面，只是他需要这个页面做什么？他怎么设置CLASS方法？\n\n个人觉得，如果从使用者角度来考虑，定时任务的设计有点伪需求，这个功能根本没有使用场景，或者说\n定时任务的创建、删除等功能没有使用场景。\n\n进一步考虑，如果设计定时任务，那么管理后台应该如何设计，以下是个人的一些想法：\n\n1. 和需求方交流是否需要定时操作的一些使用场景，是否需要控制定时任务。\n2. \n\n## 国际化\n\n国际化看起来似乎是必要的，毕竟说不定开发的管理后台有可能要被全世界的人使用。\n不过个人觉得这个概率是较小的，因此开发初期似乎是没有必要支持国际化。\n\n此外，为了支持国际化，通常做法是代码中使用key，然后创建对应value的多个资源文件，最后根据配置\n动态解析国际化文字。这种两步骤的开发方式可以很好地支持国际化。但是，如果项目使用场景真的不需要\n国际化，那么默认内置国际化支持的管理后台其实反而降低了开发体验和速度。\n\n* 开发时需要考虑key怎么合理化命名（有可能有上百个），\n* 开发需要写一点包装key的代码，例如前端页面可能是`$t(key)`\n* 调试也不直观，代码和页面中都是key\n\n因此，个人觉得一个最佳管理后台默认不支持国际化可能是最佳的。\n\n## 代码生成\n\n\n\n因此，经过以上讨论，\n\n* 用户管理：需开发\n* 部门管理：需开发\n* 角色管理：需开发\n* 权限管理：需开发\n* 配置管理：需开发\n* 定时任务：不开发\n* 消息管理：可开发\n* 操作日志：需开发\n* 系统日志：需开发\n* 菜单管理：不开发\n* 字典管理：不开发\n* 上传下载：需开发\n\n## 2. 管理后台后端开发\n\n* 文件上传下载\n* 事务管理\n* 分页管理\n* 异常处理\n* 操作权限\n* 数据权限\n\n## 2.1 性能\n\n首先提出的第一条规则就是：\n\n不要过早优化性能，也不要追求性能极限，或者说理解管理员的需求极限。\n\n从一个管理平台的使用者角度出发，点击页面以后如果在秒级响应，本人是可以接收的，极限容忍时间可以是十秒（当然这样的页面不能太多）。\n\n也就是和京东、天猫这些面向大众用户的系统不同，一个普通的业务管理系统使用者在使用时对系统的可容忍度较高。\n\n当然，这里不是说性能不重要，而是觉得对性能的开发时间和精力可以分配较小。\n\n##\n\n## 3. 管理后台前端开发\n\n* 文件预览\n* 图片预览\n\n\n## 4. 业务管理模块\n\n* 列表展示\n* 增删改查\n* 分页\n* Excel导入导出\n* 业务统计"
  },
  {
    "path": "doc/mobmall.md",
    "content": "# 5 litemall轻商城\n\nlitemall轻商城，是商城移动版本。\n\n技术：\n\n* 轻商城前端，即litemall-vue模块\n  * vue-cli3 \n  * Vue + Vue-router + Vant + Sass\n  * axios\n  * fastclick\n  * babel-polyfill\n  * @xkeshi/vue-countdown\n  * Vant\n* 轻商城后端，即litemall-wx-api模块，也就是和小商城后端是一样的。\n  * Spring Boot 2.x\n  * Spring MVC\n  * [weixin-java-tools](https://gitee.com/binary/weixin-java-tools)\n\n\n## 5.1 litemall-wx-api\n\n可以阅读3.1\n\n## 5.2 litemall-vue\n\n这里的代码基于[vant--mobile-mall](https://github.com/qianzhaoy/vant--mobile-mall)\n\n文档未完成。\n"
  },
  {
    "path": "doc/note.md",
    "content": "# 项目笔记\n\n记录本项目开发中一些关键技术点。\n\n注意：\n> 这些技术并不是绝对正确或者唯一，而是目前项目所采用。\n\n## 1. 前后端交互技术\n\n## 2. 错误码"
  },
  {
    "path": "doc/performance.md",
    "content": "# 性能\n\n## 1 小程序性能\n\n## 2 VUE性能\n\n## 3 Spring Boot性能\n\n### 3.1 gzip压缩\n\n在litemall-all模块中配置gzip压缩\n```\nserver:\n  compression:\n    enabled: true\n    min-response-size: 2048\n    mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain\n```\n\n## 4 数据库性能\n\n## 5 其他"
  },
  {
    "path": "doc/platform.md",
    "content": "# 2 litemall基础系统\n\n目前litemall基础系统由以下部分组成：\n\n* litemall-core模块\n* litemall-db模块\n* litemall-all模块\n* litemall-all-war模块\n\nlitemall-db模块提供数据库访问服务。\n\nlitemall-core模块提供通用服务。\n\nlitemall-all模块则只是一个包裹模块，几乎没有任何代码。该模块的作用是融合两个spring boot模块\n和litemall-admin模块静态文件到一个单独Spring Boot可执行jar包中。\n\nlitemall-all-war模块和litemall-all模块是一样的作用，只是采用war打包方式。\n\n## 2.2 litemall-db\n\nlitemall-db模块是一个普通的Spring Boot应用，基于mybatis框架实现数据库访问操作，对外提供业务数据访问服务。\n\n此外，litemall-db最终是作为一个类库被其他模块所依赖使用，因此并不对外\n直接服务，没有使用Spring MVC技术。\n\n技术：\n* Spring Boot 2.x\n* MySQL\n* Druid\n* Mybatis\n* PageHelper\n* Mybatis Generator\n* Mybatis Generator非官方插件mybatis-generator-plugin\n\n![](./pics/platform/db-main.png)\n\n这里litemall-db模块可以分成以下几种代码：\n\n* mybatis数据库访问代码\n  * generator生成代码\n  * 非generator手动代码\n* 业务代码\n* mybatis generator支持代码\n\n### 2.2.1 mybatis数据库访问代码\n\nmybatis数据库访问代码是指dao接口代码、dao数据库XML文件和domain代码:\n* dao接口代码，声明了数据库访问接口\n* dao数据库XML文件，实现了数据库访问操作\n* domain代码，则是保存数据库返回数据。\n\n此外，这里的数据库访问代码又进一步分成\n* mybatis generator自动生成代码，即基于mybatis generator相关插件自动生成上述三种代码或文件；\n* 非mybatis generator手动代码，则是需要开发者自己编写上述三种代码。\n\n#### 2.2.1.1 自动生成代码\n\n![](./pics/platform/mybatis-generator.png)\n\n如上图所示，双击`mybatis-generator:generate`，则mybatis generator插件会：\n\n1. 读取`mybatis-generator`文件夹下的`generatorConfig.xml`文件\n2. 根据`jdbcConnection`访问数据库\n3. 根据`table`, 自动生成三种代码:\n   * src文件夹`org.linlinjava.litemall.db.dao` 包内的Java代码\n   * src文件夹`org.linlinjava.litemall.db.domain` 包内的Java代码\n   * resources文件夹`org.linlinjava.litemall.db.domain.dao` 内的XML文件\n\n以上三种代码即可封装对数据库的操作，开发者无需直接操作sql代码，\n而是直接操作Java代码来完成对数据库的访问处理。\n\n关于如何基于mybatis的Example代码来访问数据库，请查阅相关资料，\n或者参考本模块`org.linlinjava.litemall.db.service` 包内的Java代码。\n\n当然，为了达到数据库访问效率，开发者也可以手动自定义mapper文件和对应的Java代码。\n例如，当需要访问两个表的数据时，这里是在业务层通过Java代码遍历的形式来访问两个表，\n也可以通过自定义的mapper文件来实现。\n\n接下来，以`litemall_brand`表举例说明如何自动生成代码：\n\n1. mybatis generator插件会读取`table`标签\n\n    ```\n    <generatorConfiguration>\n         <table tableName=\"litemall_brand\">\n             <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\" />\n         </table>\n    </generatorConfiguration>\n    ```\n    \n2. 自动生产src文件夹下domain包内的LitemallBrand.java类、LitemallBrandExample.java类、\n    dao包内的LitemallBrandMapper.java接口和resources文件夹下dao包内的LitemallBrandMapper.xml文件。\n\n3. 手动在service包内创建LitemallBrandService.java来对外提供具体的服务。\n   例如，为了得到Brand列表，那么创建list方法，基于前面创建的三个Java来来实现。\n   \n   ```java\n    @Service\n    public class LitemallBrandService {\n       @Resource\n       private LitemallBrandMapper brandMapper;\n\n        public List<LitemallBrand> query(int offset, int limit) {\n           LitemallBrandExample example = new LitemallBrandExample();\n           example.or().andDeletedEqualTo(false);\n           PageHelper.startPage(offset, limit);\n           return brandMapper.selectByExample(example);    \n        }\n    }\n   ```\n\n关于mybatis generator的用法，可以自行查阅官网或文档。\n\n#### 2.2.1.2 手动代码\n\n虽然mybatis generator可以自动生产代码，帮助开发者简化开发工作，但是在涉及到多表操作或特殊数据库操作时，\n仍然需要开发者自己手动编写基于mybatis框架的相关代码。\n\n具体如何基于mybatis框架编写代码，请开发者自己查找资料。\n\n这里，以统计功能举例说明：\n\n1. dao代码\n\n   在src文件夹`org.linlinjava.litemall.db.domain` 包内的StatMapper.java代码定义了数据库访问的接口\n\n2. domain代码\n \n   如果希望数据库操作返回数据模型，可以在src文件夹`org.linlinjava.litemall.db.domain` 包内创建相应代码。\n   而这里统计功能是采用简化的`List<Map>`保存数据，没有定义domain代码。\n\n3. XML文件\n\n   在resources文件夹`org.linlinjava.litemall.db.domain.dao` 内的StatMapper.xml文件则是实现真正的数据库访问操作。\n\n4. service代码\n\n   这里可以在`org.linlinjava.litemall.db.service` 内定义一个StatServie.java代码，调用底层mapper代码，对外服务。\n    ```\n    @Service\n    public class StatService {\n        @Resource\n        private StatMapper statMapper;\n\n        public List<Map> statUser() {\n            return statMapper.statUser();\n        }\n\n        public List<Map> statOrder(){\n            return statMapper.statOrder();\n        }\n\n        public List<Map> statGoods(){\n            return statMapper.statGoods();\n        }\n    }\n    ```\n   \n### 2.2.2 业务代码\n\n虽然2.2.1节所述代码已经能够提供数据库访问操作，但是这里需要进一步地抽象出业务访问层代码，\n即基于2.2.1所述代码和实际业务需求实现一些具体业务相关的操作，对其他模块提供便捷业务数据服务。\n\n需要指出的是，这里的业务代码往往是单表相关的业务代码，而涉及到多表操作的java代码通常是在其他高层模块中实现。\n这里的业务分层并不是绝对的。例如，开发者可以取消这里的业务代码，而在其他模块中直接调用2.2.1所述代码。\n\n通常业务层代码在src文件夹`org.linlinjava.litemall.db.service` 包中。\n\n### 2.2.3 mybatis generator支持代码\n\nmybatis generator自动生成代码时，通过内置类型转换器自动把数据库类型转换成Java类。\n例如数据库类型`varchar`自动转化成`java.lang.String`。\n\n但是某些情况下，可以通过自定义TypeHandler的方式来采用自定义的类型转换器。\n开发者可以自行阅读相关资料了解。\n\n本项目中，为了简化数据表的设计，某些字段采用`varchar`来存储Json格式的数据。\n例如商品的图片列表可以直接采用`[url0, url1, ...]`来存储，而不需要设计一个专门商品图片表。\n\n这里通过自定义TypeHandler，可以实现Java的`String[]`和数据库类型`varchar`的自动转换。\n\n1. 实现JsonStringArrayTypeHandler类；\n2. 在mybatis generator配置文件中，配置需要的字段；\n    ```\n        <table tableName=\"litemall_goods\">\n            <columnOverride column=\"gallery\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n    ```\n3. 使用mybatis generator自动生成代码，可以看到LitemallGoods的gallery是`String[]`类型。\n\n目前只实现了两个自定义TypeHandler：\n* JsonStringArrayTypeHandler类，实现`String[]`和`varchar`的转换，保存的JSON数据格式是`[string0, string1, ...]`\n* JsonIntegerArrayTypeHandler类，实现`Integer[]`和`varchar`的转换，保存的JSON数据格式是`[integer0, integer1, ...]`\n\n如果开发者需要保存其他格式的JSON数据或者自定义格式的数据，请自行开发。\n\n### 2.2.4 新服务组件\n\n本节介绍如果基于一个表创建新的服务组件。\n\n1. 在数据库里面创建一个表，例如`litemall_demo`:\n\n    ```sql\n    CREATE TABLE `litemall`.`litemall_demo` (\n      `id` INT NOT NULL AUTO_INCREMENT,\n      `name` VARCHAR(45) NULL,\n      `address` VARCHAR(45) NULL,\n      PRIMARY KEY (`id`));\n      \n    INSERT INTO `litemall`.`litemall_demo` (`id`, `name`, `address`) \n    VALUES ('1', 'hello', 'world');\n    ```\n\n2. 在generatorConfig.xml中增加一个新的table标签\n\n    ```\n    <generatorConfiguration>\n         <table tableName=\"litemall_demo\">\n             <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\" />\n         </table>\n    </generatorConfiguration>\n    ```\n3. 双击mybatis generator插件，检查LitemallDemo.java类、LitemallDemoExample.java类、\n   LitemallDemoMapper.java接口和LitemallDemoMapper.xml是否生产。\n   \n4. 在service里面新建LitemallDemoService.java类，\n\n   ```java\n    @Service\n    public class LitemallDemoService {\n       @Resource\n       private LitemallDemoMapper demoMapper;\n\n        public List<LitemallDemo> list() {\n           LitemallDemoExample example = new LitemallDemoExample();\n           return demoMapper.selectByExample(example);    \n        }\n    }\n   ```\n\n5. 可以在`src/test/java/org.linlinjava.litemall.db`包里面创建LitemallDemoTest.java类,\n    使用Junit进行测试。\n\n    ```java\n    @WebAppConfiguration\n    @RunWith(SpringJUnit4ClassRunner.class)\n    @SpringBootTest\n    public class LitemallDemoTest {    \n       @Autowired\n       private LitemallDemoService demoService;\n    \n       @Test\n       public void test() {    \n        List<LitemallDemo> litemallDemoList = demoService.list();\n        Assert.assertTrue(litemallDemoList.size() != 0);\n       }\n    \n    }\n    ```\n\n6. 同样地，可以在Controller中使用LitemallDemoService来对外提供服务。\n    \n    ```java\n    @RestController\n    @RequestMapping(\"/demo\")\n    public class DemoController {\n       @Autowired\n       private LitemallDemoService demoService;\n    \n       @RequestMapping(\"/list\")\n       public Object list(){    \n           List<LitemallDemo> demoList = demoService.list();   \n           return demoList;\n       }\n    }\n    ```\n\n### 2.2.5 逻辑删除\n\n数据删除可以直接进行物理删除，也可以采用设置删除字段进行逻辑删除。\n根据具体业务，也有可能部分数据可以物理删除，部分数据只能逻辑删除。\n\n目前本项目所有删除操作都是逻辑删除。\n开发者可以自行修改代码进行真正的物理删除，来避免数据库保存无用数据。\n\n### 2.2.6 并发访问\n\n由于服务是多线程并发的，因此这带来了多线程同时操作数据库中同一数据的问题。\n由于数据极少删除或者是逻辑删除，因此操作数据，可以简化成更新数据。\n也就是说，需要解决多线程更新数据库同一数据的并发问题。\n\n* https://blog.csdn.net/qq315737546/article/details/76850173\n* http://baijiahao.baidu.com/s?id=1571172971189129\n* https://blog.csdn.net/speedme/article/details/48525119\n\n例如，下单操作中，用户A购买商品G的数量是1个，而用户B同一时间也购买商品G的\n数量也是1个，那么如果没有很好地并发控制，有可能商品G的数量仅仅是减1，而不是\n设想的2。\n\n通常采用悲观锁或者乐观锁来处理并发更新问题，\n\n本项目目前采用基于`update_time`字段的乐观锁机制。\n原理是：\n\n1. 每个表都存在update_time字段\n2. 更新前，先查询数据，得到表的业务数据和update_time字段\n3. 更新时，通过where条件查询当前update_time字段和数据库中当前update_time字段是否相同。\n   * 如果相同，说明数据没有改变则可以更新，数据更新同时update_time设置当前更新时间；\n   * 如果不相同，则说明数据改变了则更新失败，不能修改数据。   \n   \n当然，由于采用乐观锁，这里也会带来另外一个问题：\n数据库有可能更新失败，那么如何处理更新失败的情况？\n目前只是简单地报错更新失败。\n\n### 2.2.7 事务管理\n\nlitemall-db模块中不涉及到事务管理，而是在其他后台服务模块中涉及。\n但是其他后台服务模块因为依赖litemall-db模块，因此这里列出。\n\n事务管理的问题出现在多个表的修改操作中。\n\n例如用户A修改表1，再修改表2，而如果修改表2的时候出现错误推出，\n此时如果没有引入事务管理，那么这里会存在表1数据已更新，表2数据\n未更新的问题。\n\n解决的方案是采用spring自带的事务管理机制。\n当事务管理中的任何SQL操作出现错误而抛出异常时，则回滚之前的操作。\n\n注意：\n> 并发访问是多个用户同时操作单个表时可能出现的问题；\n> 而事务管理是单个用户操作多个表时可能出现的问题。\n\n### 2.2.8 mybatis增强框架\n\n通过mybatis-generator已经自动生成了很多代码，而且具有一定的功能，\n但是开发者仍然需要基于生成的代码写一些固定的CRUD代码。\n\n目前发现已经有两个mybatis增强的框架可以进一步简化代码和功能增强：\n* [mybatis-plus](https://github.com/baomidou/mybatis-plus)\n* [Mapper](https://github.com/abel533/Mapper)\n\n目前没有采用，以后可能会基于其中之一重构数据库访问代码。\n开发者感兴趣的可以自行研究使用。\n\n## 2.3 litemall-core\n\nlitemall-core模块是本项目通用的代码：\n\n* config\n\n  通用配置，例如开启Spring Boot异步功能。\n\n* util\n\n  工具代码。\n\n* qcode\n\n  本项目定制的分享二维码图片。\n  \n* storage\n\n  存储功能，支持本地存储、腾讯云存储、阿里云存储和七牛云存储。\n      \n* notify\n\n  通知提醒功能，支持邮件通知、短信通知和微信通知。\n\n* express\n\n  物流服务，查询订单物流信息。\n  \n* system\n\n  通过litemall-db模块的数据库访问，读取本项目系统配置信息。\n\n* validator\n\n  提供两个校验注解，帮助后端验证请求参数。\n  \n### 2.3.1 config\n\n#### 2.3.1.1 CorsConfig\n\n目前开发过程中，CORS配置是允许所有请求。\n\n真正部署时，开发者需要做一些调整，来保证当前的服务只接受来自所设置域名的请求。\n\n#### 2.3.1.2 GlobalExceptionHandler\n\n如果系统内部产生了异常而开发者没有catch，那么异常的内容会发送到前端。\n这里通过提供全局异常处理器，来处理所有开发者没有处理的异常，返回\n“系统内部错误”之类的信息给前端从而达到保护系统的效果。\n\n#### 2.3.1.3 JacksonConfig\n\nJackson做一些设置。\n\n### 2.3.2 util\n\n注意\n> 这里的util代码不会涉及具体业务，例如litemall-db模块中存在一个\n> OrderUtil类处理数据库中litemall_order表的一些转换工作。\n\n#### 2.3.2.1 ResponseUtil\n\n这里是用于设置response中body的内容格式。\n\n如果是成功则是 ：\n\n```json\n{\n  errno: 0,\n  errmsg: '成功',\n  data: XXX\n}\n```\n\n如果失败则是：\n\n```json\n{\n  errno: 非0的XXX,\n  errmsg: XXX\n}\n```\n\n#### 2.3.2.2 JacksonUtil\n\n当请求时POST时，请求的json内容在body。\n通常存在存在两种方式取出数据：\n* 如果json内容正好对应一个POJO，那么在方法中使用POJO时，spring会自动解析填充数据；\n* 或者开发者自己采用jackson或者其他json处理库手动解析数据。\n\n这里JacksonUtil简化解析工作。这里代码有局限性，开发者请谨慎使用，或者熟悉Jackson\n使用的开发者欢迎优化代码。\n\n#### 2.3.2.3 CharUtil\n\n生成固定长度的随机字母字符串或者随机数字字符串。\n\n#### 2.3.2.4 bcypt\n\n这里是用于对用户密码或者管理员密码加密存储。\n\nbcypt代码本质上是spring里面的代码。\n\n### 2.3.3 二维码\n\n见QCodeService类。\n\n### 2.3.4 对象存储\n\n对象存储服务目前的目标是支持图片的上传下载。\n\n对象存储服务会自动读取配置配置，然后实例化服务。\n\n对象存储接口：\n```\npublic interface Storage {\n    void store(InputStream inputStream, long contentLength, String contentType, String keyName);\n    Stream<Path> loadAll();\n    Path load(String keyName);\n    Resource loadAsResource(String keyName);\n    void delete(String keyName);\n    String generateUrl(String keyName);\n}\n```\n\n#### 2.3.4.1 本地存储服务\n\n见LocalStorage类。\n\n#### 2.3.4.2 腾讯云存储服务\n\n见TencentStorage类。\n\n#### 2.3.4.3 阿里云存储服务\n\n见AliyunStorage类。\n\n#### 2.3.4.4 七牛云存储服务\n\n见QiniuStorage类。\n\n### 2.3.5 消息通知\n\n消息通知用于通知用户或者管理员。\n\n注意：\n> 目前这里实现比较粗糙，以后会完善细节。\n\n#### 2.3.5.1 邮件通知\n\n见NotifyService类的`notifyMail`方法。\n\n#### 2.3.5.2 短信通知\n\n见NotifyService类的`notifySms`和`notifySmsTemplate`方法。\n\n而短信通知实现类见`TencentSmsSender`类。\n也就是目前仅支持腾讯云短信服务，其他短信服务不支持。\n此外，开发者必须先在腾讯云短信平台申请模板才能使用。\n\n#### 2.3.5.3 微信通知\n\n见NotifyService类的`notifySms`和`notifyWxTemplate`方法。\n而微信通知实现类见`WxTemplateSender`类。\n开发者必须在微信平台申请模板才能使用。\n\n### 2.3.6 物流跟踪\n\n物流跟踪是基于第三方服务快鸟物流查询服务。\n开发者需要申请才能使用。\n\n见`ExpressService`类。\n\n### 2.3.7 系统设置\n\n### 2.3.8 校验注解\n\n自定了两个校验注解，帮助开发者校验HTTP参数。\n\n#### 2.3.8.1 Order\n\n校验用户请求参数值只能是`desc`或者`asc`。\n\n注意，这里的Order不是订单的意思，而是排序的意思。\n\n1. 定义注解Order\n    ```\n    @Target({METHOD, FIELD, PARAMETER})\n    @Retention(RUNTIME)\n    @Documented\n    @Constraint(validatedBy = OrderValidator.class)\n    public @interface Order {\n        String message() default \"排序类型不支持\";\n        String[] accepts() default {\"desc\", \"asc\"};\n        Class<?>[] groups() default {};\n        Class<? extends Payload>[] payload() default {};\n    }\n    ```\n2. 实现OrderValidator\n    ```\n    public class OrderValidator implements ConstraintValidator<Order, String> {\n        private List<String> valueList;\n        @Override\n        public void initialize(Order order) {\n            valueList = new ArrayList<String>();\n            for (String val : order.accepts()) {\n                valueList.add(val.toUpperCase());\n            }\n        }\n        @Override\n        public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {\n            if (!valueList.contains(s.toUpperCase())) {\n                return false;\n            }\n            return true;\n        }\n    }\n    ```\n3. 使用注解\n    ```\n    @RestController\n    @RequestMapping(\"/wx/topic\")\n    @Validated\n    public class WxTopicController {\n        @GetMapping(\"list\")\n        public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n         ...\n         }\n    ```\n    \n#### 2.3.8.2 Sort\n\n校验用户请求参数值只能是`add_time`或者`id`。\n\n1. 定义注解Sort\n    ```\n    @Target({METHOD, FIELD, PARAMETER})\n    @Retention(RUNTIME)\n    @Documented\n    @Constraint(validatedBy = SortValidator.class)\n    public @interface Sort {\n        String message() default \"排序字段不支持\";\n        String[] accepts() default {\"add_time\", \"id\"};\n        Class<?>[] groups() default {};\n        Class<? extends Payload>[] payload() default {};\n    }\n    ```\n2. 实现SortValidator\n    ```\n    public class SortValidator implements ConstraintValidator<Sort, String> {\n        private List<String> valueList;\n    \n        @Override\n        public void initialize(Sort sort) {\n            valueList = new ArrayList<String>();\n            for (String val : sort.accepts()) {\n                valueList.add(val.toUpperCase());\n            }\n        }\n    \n        @Override\n        public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {\n            if (!valueList.contains(s.toUpperCase())) {\n                return false;\n            }\n            return true;\n        }\n    }\n    ```\n3. 使用注解\n    ```\n    @RestController\n    @RequestMapping(\"/wx/topic\")\n    @Validated\n    public class WxTopicController {\n        @GetMapping(\"list\")\n        public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n         ...\n         }\n    ```\n\n## 2.4 litemall-all\n\n在章节1.5中讨论的部署方案中设计了一种单服务器单服务方案，\n也就是说两个后台服务和静态文件都部署在一个Spring Boot可执行jar包中。\n\n查看litemall-all模块，代码仅仅只有一个Application类。\n\n实际的原理是litemall-all模块内的pom.xml文件：\n\n1. 打包方式是`jar`，因此最后会打包可执行jar格式；\n2. 对litemall-wx-api模块和litemall-admin-api模块依赖，\n   因此打包时会作为依赖库而打包到litemall-all模块的输出中；\n3. 使用copy-resources插件，在打包时把litemall-admin模块的dist\n   文件夹拷贝到litemall-all模块的static文件夹中；而这个文件夹\n   正是Spring Boot应用的默认静态文件路径。\n   \n   注意：\n   > 这个插件只是简单的拷贝操作；因此开发者应该在打包litemall-all\n   > 之前确保先编译litemall-admin模块得到最终静态文件。\n\n\n## 2.5 litemall-all-war\n\nlitemall-all-war模块就是对litemall-all模块进行少量调整，\n最后打包时会在target目录下面生成litemall.war，用于tomcat部署。"
  },
  {
    "path": "doc/project.md",
    "content": "# 1 litemall系统\n\n## 1.1 简介\n\nlitemall是一个简单的商场系统，基于现有的开源项目，重新实现一个完整的前后端项目，包含小程序客户端、移动客户端和网页管理端。\n\n![](./pics/project/project-structure.png)\n\n\n项目的架构是四个系统和九个模块：\n\n* 基础系统子系统(platform)\n\n  由数据库、litemall-core模块、litemall-db模块和litemall-all模块组成;\n\n* 小商场子系统(wxmall，即weixin mall)\n\n  由litemall-wx-api模块、litemall-wx模块和renard-wx模块组成；\n\n* 轻商城子系统(mobmall，即mobile mall)\n\n  由litemall-wx-api模块和litemall-vue模块组成。\n  注意，目前这里移动商城子系统的后端和小商场子系统是一样的。\n    \n* 管理后台子系统(admin)\n\n  由litemall-admin-api模块和litemall-admin模块组成。\n\n而九个模块的开发设计到三种技术栈：\n\n* Spring Boot技术栈\n\n  采用IDEA开发工具，开发litemall-core、litemall-db、litemall-admin-api、\n  litemall-wx-api和litemall-all共五个模块；\n  \n* miniprogram（微信小程序）技术栈\n\n  采用微信小程序开发工具，开发litemall-wx模块和renard-wx模块；\n  \n* Vue技术栈\n\n  采用VSC开发工具，开发litemall-admin模块和litemall-vue模块。\n\n### 1.1.1 项目特点\n\n项目存在以下特点：\n\n* 数据库方面，只是简单的表，表和表之间的依赖关系没有采用外键设计，而是依赖Java代码在service层面或者业务层面保证。这样做的好处是数据库频繁改动很方便，不会因为外键而导致数据库难以修改;\n* 涉及三种技术栈，但是每种技术栈仅涉及最基础的技术；\n  * 后端技术栈，仅涉及 Spring，Spring Boot, Spring MVC和Mybatis技术，其他后端技术暂时不采用;\n  * 小程序技术栈，仅涉及miniprogram官方文档；\n  * 前端技术栈，仅涉及vue, vuex, vue-route和element技术；\n* 安全方面，仅采用最基本的代码，提供简单基本的安全服务;\n* 性能方面，没有涉及内存数据库缓存功能，而是完全依赖MySQL;\n* 对象存储服务方面，支持本地存储和第三方云存储方案。\n* 消息通知方面，支持邮件通知、第三方云短信通知和微信模板通知；\n* 部署方便，支持多服务部署和一键部署脚本；\n* 文档全面，虽然还在开发中，但是规划中文档和代码注释一定会完成，帮助开发者理解项目。\n\n总之，目前的系统只是为了学习技术和业务而开发的一个简单商场原型系统。虽然缺失很多企业级功能，但是是完整和合理的原型系统。\n\n注意：\n> 以上特点并不一定是优点。\n\n## 1.2 系统功能\n\n从业务功能上，目前由六个业务模块组成：\n\n* 会员业务模块\n* 商场业务模块\n* 商品业务模块\n* 推广业务模块\n* 系统业务模块\n* 配置业务模块\n\n### 1.2.1 小商城功能\n\n* 首页\n* 专题列表、专题详情\n* 分类列表、分类详情\n* 品牌列表、品牌详情\n* 新品首发、人气推荐\n* 团购\n* 搜索\n* 商品详情\n* 商品评价列表、商品评价\n* 购物车\n* 下单\n* 个人\n* 订单列表、订单详情、订单售后\n* 地址列表、地址添加、地址删除\n* 收藏、足迹、关于\n\n### 1.2.2 轻商城功能\n\n**目前还在开发中，不稳定**\n\n以下是准备完成的功能：\n\n* 首页\n* 专题列表、专题详情\n* 分类列表、分类详情\n* 品牌列表、品牌详情\n* 新品首发、人气推荐\n* 团购\n* 搜索\n* 商品详情\n* 商品评价列表、商品评价\n* 购物车\n* 下单\n* 个人\n* 订单列表、订单详情\n* 地址列表、地址添加、地址删除\n* 收藏、足迹、关于\n\n### 1.2.3 管理平台功能\n\n* 会员管理\n  * 会员管理\n  * 收货地址\n  * 会员收藏\n  * 会员足迹\n  * 搜索历史\n  * 意见反馈\n* 商城管理\n  * 行政区域\n  * 品牌制造商\n  * 订单管理\n  * 商品类目\n  * 通用问题\n  * 关键词\n  * 渠道管理（待定）\n* 商品管理\n  * 商品列表\n  * 商品上架\n  * 商品编辑\n  * 用户评论\n* 推广管理\n  * 广告管理\n  * 专题管理\n  * 团购规则\n  * 团购活动\n* 系统管理\n  * 管理员\n  * 通知管理\n  * 对象存储\n  * 权限管理\n  * 定时任务（待定）\n  * 操作日志\n* 配置管理\n  * 商场配置\n  * 小程序配置\n  * 运费配置\n  * 订单配置\n* 统计报表\n  * 用户统计\n  * 订单统计\n  * 商品统计\n* 个人\n  * 通知中心\n  * 密码修改\n\n## 1.3 项目技术\n\n### 1.3.1 技术参考\n\n#### 1.3.1.1 Spring Boot技术\n\nSpring Boot技术栈参考以下文档或者项目：\n\n1. MySQL\n\n   了解创建数据库和表、添加、查询、更新和删除即可。\n    \n2. Spring Boot 2.x\n\n    * https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#getting-started-introducing-spring-boot\n    * https://docs.spring.io/spring-boot/docs/2.1.5.RELEASE/reference/htmlsingle/#using-boot-maven\n\n    这里需要了解RestController, Service等注解，以及如何使用自动化配置。 \n    Spring Boot支持很多功能，开发者使用时查阅。\n    \n3. Mybatis\n\n    * http://www.mybatis.org/mybatis-3/\n    * http://www.mybatis.org/mybatis-3/java-api.html\n    * http://www.mybatis.org/mybatis-3/sqlmap-xml.html\n \n    这里可以简单了解，而使用Mybatis Generator来生成Java代码使用即可。\n    \n4. Mybatis Generator\n\n    * http://www.mybatis.org/generator/running/runningWithMaven.html\n    * http://www.mybatis.org/generator/generatedobjects/results.html\n    * http://www.mybatis.org/generator/generatedobjects/exampleClassUsage.html\n    \n5. Mybatis PageHelper\n\n    * https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/en/HowToUse.md\n    \n#### 1.3.1.2 小程序技术\n\n1. 小程序\n\n    * https://developers.weixin.qq.com/miniprogram/dev/index.html\n    * https://developers.weixin.qq.com/miniprogram/dev/component/\n    * https://developers.weixin.qq.com/miniprogram/dev/api/\n    * https://developers.weixin.qq.com/community/develop\n    \n    建议小程序方面遇到问题，可以到官方社区查找。\n\n2. 微信支付\n\n    * https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_3&index=1\n    \n#### 1.3.1.3 Vue技术\n\n1. Vue\n\n    * https://cn.vuejs.org/index.html\n\n2. Vant\n\n    * https://youzan.github.io/vant/#/zh-CN/intro\n\n3. Element\n\n    * https://element.eleme.cn/#/zh-CN/component/installation\n\n4. vue-element-admin\n\n    * https://github.com/PanJiaChen/vue-element-admin\n    * https://panjiachen.github.io/vue-element-admin-site/zh/\n    \n### 1.3.2 项目阶段\n\n接下来，从项目的开发、部署（测试）和上线三个阶段介绍litemall。\n\n![](./pics/project/stage.png)\n\n首先需要明确的是三个不同阶段：\n\n* dev\n\n即develop或者development, 这里指开发阶段，通常代码是直接在本地编译、运行和测试。\n此外，这里服务访问地址通常是localhost。这里的“用户”主要是指开发者本身。\n\n* dep\n\n即deploy或者deployment，这里指部署（测试阶段），通常代码已经编译打包运行在远程服务器中，\n可以对外服务。此外，这里服务访问地址通常是IP地址。如果IP是公网IP，那么\n部署以后就可以对外服务；如果是内网地址，那么只能内网访问。这里的“用户”主要是\n指开发者本身、测试者；当然，如果是局域网或者不介意IP访问的，那么这里的“用户”\n也可能是最终使用者用户。\n\n* prod\n\n即product或者production，这里指上线阶段，通常也是代码编译打包运行在远处服务器中可以对外服务。\n此外，这里服务访问地址通常是域名地址，同时端口是80web端口。上线以后直接面向的是最终用户。\n虽然服务的代码本身和dep是完全一样的，但是考虑到场景的不同，上线阶段可能在运行环境方面需要做\n调整，例如采用反向代理屏蔽内部实际项目结构。此外，最大的不同应该是上线环境下要使用域名和80端口，\n而部署阶段则更为自由。\n\n其次，需要明确的是，这里划分三种阶段不是简单的文档说明，还直接影响项目本身的行为\n和代码编译结果，因此开发者需要清晰的了解；\n\n最后，其实dep和prod不存在先后关系。例如，如果开发者已经存在域名和生产环境，可以直接\n跳过dep阶段，而直接部署在线上环境中。因此有些时候，这里部署和上线是一个阶段。\n\n当然，这里仍然建议先dep后prod，是因为对于第一次开发而言，先dep阶段可以避免对域名、https证书等非业务相关工作的干扰。\n\n此外，有些业务功能（例如微信支付）必须是域名访问，那么开发和部署阶段可以先采用模拟或跳过的形式，\n先不开发和测试这样业务功能，等其他功能开发完毕和部署测试成功以后，再来开发这些线上环境才能\n运行的功能，此时会有一个好的基础。\n\n接下来，分别从开发阶段、部署阶段和上线阶段三种阶段，分别介绍不同的方案实践要点。\n\n## 1.4 开发方案\n\n![](./pics/project/develop-stage.png)\n\n如图所示，当前开发阶段的方案：\n\n* MySQL数据访问地址`jdbc:mysql://localhost:3306/litemall`\n* litemall-wx-api后端服务地址`http://localhost:8080/wx`，数据则来自MySQL\n* litemall-admin-api后端服务地址`http://localhost:8080/admin`,数据则来自MySQL\n* litemall-admin前端访问地址`http://localhost:9527`, 数据来自litemall-admin-api\n* litemall-wx没有前端访问地址，而是直接在微信小程序工具上编译测试开发，最终会部署到微信官方平台（即不需要自己部署web服务器），而数据则来自litemall-wx-api\n\n\n### 1.4.1 数据库\n\n数据库环境设置过程如下：\n\n1. 安装MySQL;\n\n2. 创建数据库、用户权限、数据库表和测试数据;\n   数据库文件存放在litemall-db/sql文件夹中，请开发者在MySQL中\n   按照顺序运行以下脚本:\n   * litemall_schema.sql，用于创建数据库、用户和权限;\n   * litemall_table.sql，用于创建表;\n   * litemall_data.sql，用于导入测试数据。\n\n注意：\n> 建议采用命令行或者MySQL Workbench。如果采用Navicat可能导入失败。\n\n如果开发者运行litemall_schema.sql失败，可以打开该文件：\n```\ndrop database if exists litemall;\ndrop user if exists 'litemall'@'%';\ncreate database litemall default character set utf8mb4 collate utf8mb4_unicode_ci;\nuse litemall;\ncreate user 'litemall'@'%' identified by 'litemall123456';\ngrant all privileges on litemall.* to 'litemall'@'%';\nflush privilege\n```\n可以看到几个命令，用于创建数据库、用户和访问权限，因此开发者可以利用\n命令或者工具完成这里的功能即可。\n\n### 1.4.2 Spring Boot开发环境\n\n1. 安装JDK8（可以是Oracle JDK或者OpenJDK）\n2. 安装Maven\n3. 安装Git（可选）\n4. 安装IDEA Community，建议安装Maven插件和Git插件。\n   这里IDEA社区版即可，不要求IDEA商业版。\n   Eclipse没有试过，但应该也是可行的。\n5. IDEA导入本项目\n6. 采用Maven命令安装依赖库\n\n   例如：\n   ```\n   cd litemall\n   mvn install\n   ```\n   \n   或者采用IDEA的Maven插件安装本项目依赖库，点击`install`\n\n    ![](./pics/project/idea-maven-insatll.png)\n\n7. 采用Maven命令编译本项目\n\n   例如：\n   ```\n   cd litemall\n   mvn compile\n   ```\n\n   此时可以看到，litemall-wx-api等模块多了target文件夹，里面是编译出的文件。\n   \n   或者采用IDEA的Maven插件编译本项目，点击`compile`\n   \n   如果采用IDEA也可以跳过当前步骤，直接步骤8（因为运行时会自动编译再运行）。\n   \n8. 采用Maven命令运行本项目的litemall-all\n\n   例如：\n   ```\n   cd litemall/litemall-all\n   mvn spring-boot:run\n   ```\n   \n   如果采用IDEA，则litemall-all模块的Application类\n   右键` Run Application.main()`方式运行该模块,\n   \n   ![](./pics/project/idea-run-all.png)\n   \n   打开浏览器，输入\n    ```\n    http://localhost:8080/wx/index/index\n    http://localhost:8080/admin/index/index\n    ```\n    如果出现JSON数据，则litemall-all模块运行正常。\n    \n注意：\n> 1. 上述步骤中，既介绍了Maven命令方式，也介绍了IDEA方式，\n>    但是建议开发者开发阶段采用IDEA。\n> 2. 上述步骤只是一种实践方式，开发者可不拘泥于这些步骤，多实践。\n>    当然，如果开发者不采用这里步骤而出现问题，请自行解决。\n> 3. 开发者使用IDEA导入项目或者运行项目时可能会出现**软件卡顿**的现象，这通常是litemall-admin或者litemall-vue的\n>    node_modules文件夹内自动下载了大量的依赖库，当IDEA尝试索引该文件夹内的大量文件时\n>    则出现IDEA卡顿的现象，具体解决方式可以参见[FAQ](./FAQ.md)\n\n### 1.4.3 微信小程序开发环境\n\n1. 安装微信小程序开发工具；\n2. 导入本项目的litemall-wx模块(或者renard-wx模块)文件夹；\n3. 编译前，请确定litemall-all模块已经运行，而litemall-wx模块的config文件夹中的api.js已经设置正确的后端数据服务地址；\n4. 点击`编译`，如果出现数据和图片，则运行正常\n\n注意：\n> 开发者编译以后，可以看到图片和数据，但是采用微信登录或者微信支付是肯定会失败的。\n> 原因是这里的配置信息没有正确设置，例如appid，具体详细配置见1.4.5节。\n\n### 1.4.4 Vue开发环境\n\n1. 安装[nodejs](https://nodejs.org/en/)\n   2. 安装依赖库\n    \n       ```\n       cd litemall/litemall-admin\n       npm install --registry=https://registry.npm.taobao.org\n       ```\n    \n3. 编译并运行\n    \n    ```\n    npm run dev\n    ```\n    然后，打开浏览器，输入`http://localhost:9527`。\n    如果出现管理后台登录页面，则表明管理后台的前端运行正常；\n    \n4. 请确定litemall-all模块已经运行，然后点击`登录`，如果能够成功登录，则表明管理后台的前端和后端对接成功，运行正常。\n\n本项目采用VSC（Visual Studio Code）开发litemall-admin模块，开发者也可以采用其他熟悉的IDE。\n\n### 1.4.5 项目配置\n\n当安装好Spring Boot开发环境、Vue开发环境和小程序开发环境以后，启动相应的模块，已经可以看到一些数据或者效果。\n但是还有一些特性或者功能没有启动，这是因为需要开发者进行配置才能正确启用。\n\n**项目配置结构**\n\n1. 管理后台前端，即litemall-admin模块，配置文件在litemall-admin中，存在三个配置文件`env.development`,`env.deployment`\n和`.env.production`。这里面配置信息都是一样，最主要的配置是`VUE_APP_BASE_API`，即管理后台的服务根地址。\n\n   * 开发阶段，开发者运行命令`npm run dev`，这里就会采用`env.development`配置文件；\n   * 部署阶段，当开发者运行命令`npm run build:dep`，这里就会采用`env.deployment`配置文件；\n   * 上线阶段，当开发者运行命令`npm run build:prod`，这里就会采用`.env.production`配置文件。\n\n2. 小商场前端，即litemall-wx模块，配置文件是`litemall-wx/project.config.json`和`litemall-wx/api.js`。\n这里面最主要的配置信息是`project.config.json`中的`appid`，开发者需要设置自己申请的appid；\n以及`apis.js`中的`WxApiRoot`，即小商场服务根地址。\n\n    ```\n    // 本机开发时使用\n     var WxApiRoot = 'http://localhost:8080/wx/';\n    // 局域网测试使用\n    // var WxApiRoot = 'http://192.168.0.101:8080/wx/';\n    // 云平台部署时使用\n    // var WxApiRoot = 'http://122.51.199.160:8080/wx/';\n    // 云平台上线时使用\n    // var WxApiRoot = 'https://www.menethil.com.cn/wx/';\n\n    ```\n\n3. 管理后台后端和小商城后端，即多个Spring Boot模块，配置文件是每个模块的`litemall-xx/src/main/java/resources`的\n`application.yml`和`application-xx.yml`配置文件。这里会发现每个模块都会有两个配置文件，但是实际上当前模块的配置信息\n都是在`application-xx.yml`文件中，而`application.yml`文件仅仅用于引入其他模块的配置文件。\n\n   例如litemall-all模块的`application.yml`的内容是\n   ```\n    spring:\n        profiles:\n            active: db, core, admin, wx\n        message:\n            encoding: UTF-8\n    ```\n    因此启动litemall-all模块时，程序首先加载litemall-all的`application.yml`，然后通过`spring.profiles.active`信息\n    再次依次加载`application-db.yml`,`application-core.yml`,`application-admin.yml`和`application.yml-wx`四个配置文件。\n    \n这里后端服务模块的配置如下所示。\n\n#### 1.4.5.1 日志配置\n\n如果开发者启动litemall-all模块，则需要配置该模块的`logback-spring.xml`文件\n```\n    <logger name=\"org.mybatis\" level=\"ERROR\" />\n    <logger name=\"org.springframework\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.core\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall.db\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall.admin\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall.wx\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall\" level=\"DEBUG\" />\n```\n\n具体如何配置，请自行学习Spring Boot的日志配置和logback日志配置。\n\n`org.linlinjava.litemall.core`定义litemall-core模块的日志级别\n`org.linlinjava.litemall.db`定义litemall-db模块的日志级别\n`org.linlinjava.litemall.wx`定义litemall-wx-api模块的日志级别\n`org.linlinjava.litemall.admin`定义litemall-admin-api模块的日志级别\n`org.linlinjava.litemall`而定义litemall所有后端模块的日志级别\n\n当然，如果开发者这里启动litemall后端模块级别是DEBUG时，可能会发现并没有很多日志，\n这是因为代码内部没有写很多日志，开发者可以根据需要添加。\n\n注意：\n> 如果开发者独立启动litemall-wx-api模块，那么则需要配置litemall-wx-api模块的\n> 日志配置方式。\n\n#### 1.4.5.2 数据库连接配置\n\n在litemall-db模块的`application-db.yml`文件中配置数据库连接和druid：\n\n```\n\nspring:\n  datasource:\n    druid:\n      url:  jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false\n      driver-class-name:  com.mysql.cj.jdbc.Driver\n      username:  litemall\n      password:  litemall123456\n      initial-size:  10\n      max-active:  50\n      min-idle:  10\n      max-wait:  60000\n      pool-prepared-statements:  true\n      max-pool-prepared-statement-per-connection-size:  20\n      validation-query:  SELECT 1 FROM DUAL\n      test-on-borrow:  false\n      test-on-return:  false\n      test-while-idle:  true\n      time-between-eviction-runs-millis:  60000\n      filters:  stat,wall\n```\n\n#### 1.4.5.3 微信登录配置\n\n微信登录需要配置两个地方，\n首先是小商场前端litemall-wx模块（或renard-wx模块）中`project.config.json`文件的appid\n其次是小商场后端litemall-core模块的`application-core.yml`文件：\n```bash\nlitemall:\n  wx:\n    app-id: wxa5b486c6b918ecfb\n    app-secret: e04004829d4c383b4db7769d88dfbca1\n```\n\n这里的`app-id`和`app-secret`需要开发者在[微信公众平台](https://mp.weixin.qq.com/)注册获取。\n\n注意\n> 这里开发者可能会疑惑：小商场后端应该配置在litemall-wx-api模块的`application-wx.yml`文件更合适。\n> 这里放置在`application-core.yml`文件中是因为litemall-core模块也依赖小程序appid配置信息。\n\n#### 1.4.5.4 微信支付配置\n\n在litemall-core模块的`application-core.yml`文件中配置微信支付：\n```\nlitemall:\n  wx:\n    mch-id: 111111\n    mch-key: xxxxxx\n    notify-url: https://www.example.com/wx/order/pay-notify\n```\n\n这里的`mch-id`和`mch-key`需要开发者在[微信商户平台](https://pay.weixin.qq.com/)注册获取。\n\n而这里的`notify-url`则应该是项目上线以后微信支付回调地址，当微信支付成功或者失败，\n微信商户平台将向回调地址发生成功或者失败的数据，因此需要确保该地址是\nlitemall-wx-api模块的WxOrderController类的payNotify方法所服务的API地址。\n\n开发阶段可以采用一些技术实现临时外网地址映射本地，开发者可以百度关键字“微信 内网穿透”自行学习。\n\n#### 1.4.5.5 邮件通知配置\n\n在litemall-core模块的`application-core.yml`文件中配置邮件通知服务：\n```\nlitemall:\n  notify:\n    mail:\n      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单，sendto 定义邮件接收者，通常为商城运营人员\n      enable: false\n      host: smtp.exmail.qq.com\n      username: ex@ex.com.cn\n      password: XXXXXXXXXXXXX\n      sendfrom: ex@ex.com.cn\n      sendto: ex@qq.com\n```\n\n配置方式：\n1. 邮件服务器开启smtp服务\n2. 开发者在配置文件中设置`enable`的值`true`，然后其他信息设置相应的值。\n这里只测试过QQ邮箱，开发者需要自行测试其他邮箱。\n\n应用场景：\n目前邮件通知场景也很简单，就是用户下单以后系统会自动向`sendto`用户发送一封邮件，告知用户下单的订单信息。\n以后可能需要继续优化扩展。当然，如果不需要邮件通知订单信息，可以默认关闭即可。\n\n验证配置成功：\n当配置好信息以后，开发者可以运行litemall-core模块的`MailTest`测试类，\n独立发送邮件，然后登录邮箱查看邮件是否成功接收。\n\n#### 1.4.5.6 短信通知配置\n\n在litemall-core模块的`application-core.yml`文件中配置短信通知服务：\n```\nlitemall:\n  notify:\n    # 短消息模版通知配置\n    # 短信息用于通知客户，例如发货短信通知，注意配置格式；template-name，template-templateId 请参考 NotifyType 枚举值\n    sms:\n      enable: false\n      # 如果是腾讯云短信，则设置active的值tencent\n      # 如果是阿里云短信，则设置active的值aliyun\n      active: tencent\n      sign: litemall\n      template:\n        - name: paySucceed\n          templateId: 156349\n        - name: captcha\n          templateId: 156433\n        - name: ship\n          templateId: 158002\n        - name: refund\n          templateId: 159447\n      tencent:\n        appid: 111111111\n        appkey: xxxxxxxxxxxxxx\n      aliyun:\n        regionId: xxx\n        accessKeyId: xxx\n        accessKeySecret: xxx\n```        \n\n配置方式：\n1. 腾讯云短信平台或者阿里云短信平台申请，然后设置四个场景的短信模板；\n2. 开发者在配置文件设置`enable`的值`true`，设置`active`的值`tencent`或`aliyun`\n3. 然后配置其他信息，例如腾讯云短信平台申请的appid等值。\n这里只测试过腾讯云短信平台和阿里云短信平台，开发者需要自行测试其他短信云平台。\n\n应用场景：\n目前短信通知场景只支持支付成功、验证码、订单发送、退款成功四种情况。\n以后可能需要继续优化扩展。\n\n验证配置成功：\n当配置好信息以后，开发者可以litemall-core模块的`SmsTest`测试类中设置手机号和\n模板所需要的参数值，独立启动`SmsTest`测试类发送短信，然后查看手机是否成功接收短信。\n\n短信模板参数命名：\n这里存在一个问题，即腾讯云短信的官方平台中申请短信模板格式的模板参数是数组，\n例如“你好，验证码是{0}，时间是{1}\"; \n而阿里云短信的官方平台中申请短信模板的模板参数是JSON,\n例如“你好，验证码是{param1}，时间是{param2}\"。\n为了保持当前代码的通用性，本项目采用数组传递参数，而对阿里云申请模板的参数做了一定的假设：\n1. 腾讯云模块参数，申请模板时按照官方设置即可，例如“你好，验证码是{0}，时间是{1}\"; \n2. 阿里云模板参数，本项目假定开发者在官方申请的参数格式应该采用\"{ code: xxx, code1: xxx, code2: xxx }\"，\n例如“你好，验证码是{code}，时间是{code1}\"。开发者可以查看`AliyunSmsSender`类的`sendWithTemplate`方法的\n源代码即可理解。如果觉得不合理，可以自行调整相关代码。\n\n#### 1.4.5.8 物流配置\n\n物流配置是查询商品物流信息，这里主要是基于[第三方快递鸟服务](http://www.kdniao.com/api-track)。\n\n在litemall-core模块的`application-core.yml`文件中配置快递鸟物流服务：\n```\nlitemall:\n  notify:\n  # 快鸟物流查询配置\n  express:\n    enable: false\n    appId: \"XXXXXXXXX\"\n    appKey: \"XXXXXXXXXXXXXXXXXXXXXXXXX\"\n    vendors:\n    - code: \"ZTO\"\n      name: \"中通快递\"\n    - code: \"YTO\"\n      name: \"圆通速递\"\n    - code: \"YD\"\n      name: \"韵达速递\"\n    - code: \"YZPY\"\n      name: \"邮政快递包裹\"\n    - code: \"EMS\"\n      name: \"EMS\"\n    - code: \"DBL\"\n      name: \"德邦快递\"\n    - code: \"FAST\"\n      name: \"快捷快递\"\n    - code: \"ZJS\"\n      name: \"宅急送\"\n    - code: \"TNT\"\n      name: \"TNT快递\"\n    - code: \"UPS\"\n      name: \"UPS\"\n    - code: \"DHL\"\n      name: \"DHL\"\n    - code: \"FEDEX\"\n      name: \"FEDEX联邦(国内件)\"\n    - code: \"FEDEX_GJ\"\n      name: \"FEDEX联邦(国际件)\"\n```        \n\n配置方式：\n1. [快递鸟平台](http://www.kdniao.com/)申请；\n2. 开发者在配置文件设置`enable`的值`true`，然后其他信息设置\n快递鸟平台中的appId和appKey。\n\n应用场景：\n小商场查询订单详情时，如果商品已发货，小商城后端会返回详细物流信息。\n\n验证配置成功：\n当配置好信息以后，开发者可以litemall-core模块的`ExpressTest`测试类中设置快递公司编码和\n真实测试快递单号，独立启动`ExpressTest`测试类查询物流信息。\n\n注意：\n> 一部分快递公司（例如顺丰速运、申通快递等）的轨迹查询在开发环境下不支持，\n> 具体支持情况或者使用限制请阅读[官方资料](http://www.kdniao.com/UserCenter/v2/UserHome.aspx)\n\n#### 1.4.5.9 对象存储配置\n\n对象存储，即存储和下载文件。\n\n在litemall-core模块的`application-core.yml`文件中配置对象存储服务：\n\n* 本地对象存储配置\n如果开发者采用当前服务器保存上传的文件，则需要配置：\n```\nlitemall:\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent、qiniu\n    active: local\n    # 本地对象存储配置信息\n    local:\n      storagePath: storage\n      # 这个地方应该是wx模块的WxStorageController的fetch方法对应的地址\n      address: http://localhost:8080/wx/storage/fetch/\n```\n\n配置方式：\n配置文件设置`active`的值`local`，表示当前对象存储模式是本地对象存储；\n而`storagePath`是上传文件保存的路径；`address`则是访问文件的对外路径。\n\n* 阿里云对象存储配置\n\n```\nlitemall:\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent、qiniu\n    active: aliyun\n    aliyun:\n      endpoint: oss-cn-shenzhen.aliyuncs.com\n      accessKeyId: 111111\n      accessKeySecret: xxxxxx\n      bucketName: litemall\n```\n\n配置方式：\n1. 阿里云官网注册\n2. 配置文件设置`active`的值`aliyun`，表示当前对象存储模式是阿里云对象存储；\n\n* 腾讯云对象存储配置\n\n```\nlitemall:\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent、qiniu\n    active: tencent\n    # 腾讯对象存储配置信息\n    # 请参考 https://cloud.tencent.com/document/product/436/6249\n    tencent:\n      secretId: 111111\n      secretKey: xxxxxx\n      region: xxxxxx\n      bucketName: litemall\n```\n\n配置方式：\n1. 腾讯云官网注册\n2. 配置文件设置`active`的值`tencent`，表示当前对象存储模式是腾讯云对象存储；\n\n* 七牛云对象存储配置\n\n```\nlitemall:\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent、qiniu\n    active: qiniu\n    # 七牛云对象存储配置信息\n    qiniu:\n      endpoint: http://pd5cb6ulu.bkt.clouddn.com\n      accessKey: 111111\n      secretKey: xxxxxx\n      bucketName: litemall\n```\n\n配置方式：\n1. 七牛云官网注册\n2. 配置文件设置`active`的值`qiniu`，表示当前对象存储模式是七牛云对象存储；\n\n#### 1.4.5.10 其他配置\n\n除上述配置信息，本项目还存在其他配置。\n目前仅采用默认值即可，开发者可以自己实践或者扩展新的配置信息。\n\n## 1.5 部署方案\n \n在1.4节中介绍的是开发阶段时一些关键性开发流程。本节将介绍代码开发成功以后开始部署项目时一些关键性流程。\n\n首先，需要明确的是开发时项目使用的服务地址是本地地址，即localhost；而部署时则应该根据具体情况设置合理的服务器地址和端口。\n\n其次，需要明确的是各模块之间的关系：\n  \n  * litemall-wx-api模块会包含litemall-core模块和litemall-db模块，部署在服务器中\n  * litemall-admin-api模块会包含litemall-core模块和litemall-db模块，部署在服务器中\n  * litemall-all模块则会包装litemall-wx-api模块和litemall-admin-api模块；\n  * litemall-wx模块部署在微信开发者工具中，此外数据API地址指向litemall-wx-api所在服务qi地址\n  * litemall-admin编译出的静态文件放在web服务器或者tomcat服务器，此外服务器地址设置指向3中litemall-admin-api所在地址\n  \n最后，**如果项目部署云服务器，则根据开发者的部署环境在以下文件中或代码中修改相应的配置。**\n\n1. MySQL数据库设置合适的用户名和密码信息；\n2. 后端服务模块设置合适的配置信息；\n3. 小商场前端litemall-wx模块`config/api.js`的`WxApiRoot`设置小商场后端服务的服务地址；\n4. 管理后台前端litemall-admin模块`.env.deployment`中的`VUE_APP_BASE_API`设置管理后台后端服务的服务地址。\n\n实际上，最终的部署方案是灵活的：\n\n* 可以是同一云服务器中安装一个Spring Boot服务，同时提供litemall-admin、litemall-admin-api和litemall-wx-api三种服务\n* 可以单一云服务器中仅安装一个tomcat/nginx服务器部署litemall-admin静态页面分发服务，\n  然后部署两个Spring Boot的后端服务；\n* 也可以把litemall-admin静态页面托管第三方cdn，然后开发者部署两个后端服务\n* 当然，甚至多个服务器，采用集群式并发提供服务。\n\n注意\n> 1. `本机`指的是是当前的开发机\n> 2. `云服务器`指的是开发者购买并部署的远程服务器\n\n以下简单列举几种方案。\n\n### 1.5.1 单机单服务部署方案\n\n本节介绍基于腾讯云的单机单服务部署方案，面向的是服务器数据和应用部署在云服务器单机中用于演示的场景。\n其他云应该也是可行的。\n\n主要流程是：创建云服务器，安装ubuntu操作系统，按照JDK和MySQL应用运行环境，部署单一Spring Boot服务。\n\n![](./pics/project/deploy-single.png)\n\n#### 1.5.1.1 云服务器\n\n1. 创建云服务器\n\n   请参考腾讯云、阿里云或者其他云平台的官方文档进行相关操作。\n   建议最低配置是**1核2G**。\n   \n2. 安装操作系统\n\n   本项目采用ubuntu 16.04.1，但是并不限制其他操作系统。\n\n3. 创建安全组\n\n    ![](./pics/project/security-group.png)\n\n    目前允许的端口：8080，80，443，22，3306\n    \n    注意：\n    这里其实只需要8080端口，允许其他端口只是方便开发阶段的测试和调试。\n    特别是3306端口，作为MySQL的远程访问端口，请在上线阶段关闭。\n    \n4. 设置SSH密钥（可选）\n\n    建议开发者设置SSH密钥，可以免密码登录云服务器，以及用于脚本自动上传应用。\n\n5. 使用PuTTY远程登录云服务器\n\n    如果开发者设置SSH密钥，可以采用免密码登录；否则采用账号和密码登录。\n    \n#### 1.5.1.2 OpenJDK8\n\n这里可以安装openjdk-8-jre\n\n```bash\nsudo apt-get update\nsudo apt-get install openjdk-8-jre\n```\n\n如果希望采用jdk，而不是jre，则可以运行\n\n```bash\nsudo apt-get update\nsudo apt-get install openjdk-8-jdk\n```\n\n注意\n> 如果用户想采用Oracle JDK8或者其他JDK环境，请查阅相关资料安装。\n\n#### 1.5.1.3 MySQL\n\n```\nsudo apt-get update\nsudo apt-get install mysql-server\nsudo apt-get install mysql-client\n```\n\n如果配置MySQL，可以运行命令\n```\nsudo mysql_secure_installation\n```\n\n#### 1.5.1.4 项目打包\n\n1. 在服务器或者开发机打包项目到deploy；\n    ```\n    cd litemall\n    cat ./litemall-db/sql/litemall_schema.sql > ./deploy/db/litemall.sql\n    cat ./litemall-db/sql/litemall_table.sql >> ./deploy/db/litemall.sql\n    cat ./litemall-db/sql/litemall_data.sql >> ./deploy/db/litemall.sql\n    \n    cd ./litemall-admin\n    npm install --registry=https://registry.npm.taobao.org\n    npm run build:dep\n    \n    cd ..\n    mvn clean package\n    cp -f ./litemall-all/target/litemall-all-*-exec.jar ./deploy/litemall/litemall.jar\n    ```\n    \n    这里脚本的作用是：\n    \n    1. 把数据库文件拷贝到deploy/db文件夹；\n    2. 编译litemall-admin项目；\n    3. 编译litemall-all模块，同时把litemall-admin编译得到的静态文件拷贝到\n       litemall-all模块的static目录。\n       \n2. 修改litemall文件夹下面的*.yml外部配置文件，当litemall-all模块启动时会\n    加载外部配置文件，而覆盖默认jar包内部的配置文件。\n    例如，配置文件中一些地方需要设置成远程服务器的IP地址\n    \n此时deploy部署包结构如下：\n\n* bin\n存放远程服务器运行的脚本，包括deploy.sh脚本和reset.sh脚本\n\n* db\n存放litemall数据库文件\n\n* litemall\n存放远程服务器运行的代码，包括litemall-all二进制可执行包和litemall外部配置文件\n\n* util\n存放开发服务器运行的脚本，包括package.sh脚本和lazy.sh脚本。\n由于是本地开发服务器运行，因此开发者可以不用上传到远程服务器。\n\n#### 1.5.1.5 项目部署\n\n1. 远程服务器环境（MySQL和JDK1.8）已经安装好，请确保云服务器的安全组已经允许相应的端口。\n2. 导入db/litemall.sql\n    ```bash\n    cd /home/ubuntu/deploy/db\n    mysql -h localhost -u $ROOT -p$PASSWORD < litemall.sql\n    ```\n3. 启动服务\n    ```bash\n    sudo service litemall stop\n    sudo ln -f -s /home/ubuntu/deploy/litemall/litemall.jar /etc/init.d/litemall\n    sudo service litemall start\n    ```\n4. 测试是否部署成功(xxx.xxx.xxx.xxx是云服务器IP）：\n    ```\n    http://xxx.xxx.xxx.xxx:8080/wx/index/index\n    http://xxx.xxx.xxx.xxx:8080/admin/index/index\n    http://xxx.xxx.xxx.xxx:8080/#/login\n    ```\n\n注意：\n> 开发者访问以上三个地址都能成功，但是管理后台点击登录时会报错网络连接不成功。\n> 这里很可能是开发者litemall-admin模块的`config/dep.env.js`或者`condig/prod.env.js`\n> 没有设置正确的管理后台后端地址，例如这里的`http://xxx.xxx.xxx.xxx:8080/admin`\n\n#### 1.5.1.6 deploy部署脚本\n\n在前面的项目打包和项目部署中都是采用手动命令来部署。\n这里可以写一些脚本简化：\n\n* util/packet.sh\n\n在开发服务器运行可以自动项目打包\n\n* util/lazy.sh\n\n在开发服务器运行可以自动项目打包、项目上传远程服务器、自动登录系统执行项目部署脚本。\n    \n注意：\n> 1. 开发者需要在util/lazy.sh中设置相应的远程服务器登录账号和密钥文件路径。\n> 2. 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n    \n* bin/deploy.sh\n\n在远程服务器运行可以自动部署服务\n\n* bin/reset.sh\n\n在远程服务器运行可以自动项目导入数据、删除本地上传图片、再执行bin/deploy.sh部署服务。\n\n注意：\n> 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n\n总结，当开发者设置好配置信息以后，可以在本地运行lazy.sh脚本自动一键部署:\n```bash\ncd litemall\n./deploy/util/lazy.sh\n```\n\n不过由于需要设置的信息会包含敏感安全信息，强烈建议开发者参考这里的deploy文件夹，\n然后实现自己的deploy文件夹，妥善处置外部配置文件和脚本中的敏感安全信息!!!\n\n#### 1.5.1.7 docker部署脚本\n\n本项目也简单实现了docker部署方案，具体可以看docker文件夹。\n\n### 1.5.2 单机多服务部署方案\n\n\n### 1.5.3 集群式云部署方案\n\n由于本项目是面向微小型企业的小商城系统，因此预期的分布式部署方案是\n\n1. 专门的云数据库部署数据\n2. 专门的云存储方案\n3. 专门的CDN分发管理后台的静态文件\n4. 一台云服务器部署管理后台的后端服务\n5. 一台或多台云服务器部署小商场的后端服务\n\n虽然由于环境原因没有正式测试过，但是这种简单的集群式场景应该是可行的。\n在1.5.2节中所演示的三个服务是独立的，因此延伸到这里分布式是非常容易的。\n\n但是，如果需要实现互联网式分布式云部署，目前的项目架构和方案不支持。\n至少每个功能模块应该是独立服务系统。此外，需要引入单点登录系统、集群、缓存\n和消息队列等多种技术。因此如果开发者需要这种形式的分布式方案，请参考其他项目。\n\n## 1.6 上线方案\n\n在1.5节部署方案中，我们介绍了多种部署的方案，但是实际上这些方案都不能立即用于正式环境：\n\n1. 正式环境需要域名和HTTPS证书\n2. 小商场的小程序端对服务器域名存在接入要求。\n\n本节采用`www.example.com`域名作为示例。\n\n注意\n> `www.example.com`仅作为实例，不是真实环境下的域名。\n\n这里列举一种基于1.5.1的单机单服务上线方案，即一个all后端服务，同时提供三种数据：\n* 提供管理后台的前端文件；\n* 提供管理后台前端所需要的数据；\n* 提供小商城前端所需要的数据。\n\n![](./pics/project/online-deploy.png)\n\n\n开发者可以基于自身业务采用其他上线方案。\n\n### 1.6.1 域名\n\n1. 注册域名，通常商业性的网站采用`.com`\n2. 解析域名到服务器公网IP，采用`ping`命令查看是否解析成功\n3. 备案\n\n### 1.6.2 nginx\n\nhttps://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04\n\n#### 1.6.2.1 nginx安装\n\n采用命令\n```bash\nsudo apt-get update\nsudo apt-get install nginx\n```\n\n有的文档会指出需要防火墙设置，但是腾讯云服务器防火墙默认没有开启。\n开发者这里自己可以开启设置，或者直接不开启。\n\n打开浏览器，输入以下地址：\n```\nhttp://www.example.com\n```\n\n此时，如果看到nginx的欢迎页面，则安装成功。\n\n安装以后：\n* `/var/www/html`：默认静态web文件目录\n* `/etc/nginx`:\n* `/etc/nginx/nginx.conf`:\n* `/etc/nginx/sites-avaiable`:\n* `/etc/nginx/sites-enabled`:\n* `/etc/nginx/snippets`:\n* `/var/log/nginx/access.log`:\n* `/var/log/nginx/error.log`:\n\n#### 1.6.2.2 https\n\n1. 申请证书\n   \n   可以参考[腾讯云 域名型证书申请流程](https://cloud.tencent.com/document/product/400/6814)\n\n2. 下载证书\n\n   这里使用nginx文件夹下面的密钥文件，例如`1_www.example.com_bundle.crt`和`2_www.example.com.key`\n\n3. 部署证书到nginx\n\n   可以参考[腾讯云 证书安装指引](https://cloud.tencent.com/document/product/400/4143)\n   把两个密钥文件保存的`/etc/nginx`文件夹，然后修改`/etc/nginx/nginx.conf`文件：\n   ```\n\t  server {\n\t\tlisten 443;\n\t\tserver_name www.example.com;\n\t\tssl on;\n\t\tssl_certificate /etc/nginx/1_www.example.com_bundle.crt;\n\t\tssl_certificate_key /etc/nginx/2_www.example.com.key;\n\t\tssl_session_timeout 5m;\n\t\tssl_protocols TLSv1 TLSv1.1 TLSv1.2;\n\t\tssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:HIGH:!aNULL:!MD5:!RC4:!DHE;\n\t\tssl_prefer_server_ciphers on;\n      }\n   ```\n   \n4. 重启nginx\n\n打开浏览器，输入以下地址：\n```\nhttps://www.example.com\n```\n\n此时，可以看到https协议的nginx欢迎页面。\n\n#### 1.6.2.3 反向代理Spring Boot后端\n\n修改`/etc/nginx/nginx.conf`文件，配置nginx静态web文件目录\n```\nserver {\n    location / {\n        proxy_pass  http://localhost:8080;\n        proxy_set_header    Host    $host;\n        proxy_set_header    X-Real-IP   $remote_addr;\n        proxy_set_header    X-Forwarded-For $proxy_add_x_forwarded_for;\n    }\n}\n```\n\n打开浏览器，输入以下地址：\n```\nhttps://www.example.com/wx/index/index\nhttps://www.example.com/admin/index/index\nhttps://www.example.com/admin/index/index\n```\n\n此时，看到后端数据说明反向代理配置成功。\n\n#### 1.6.2.4 全站加密\n\n服务器自动把http的请求重定向到https\n\n```\nserver {\n    listen 80;\n    server_name www.example.com;\n    rewrite https://$server_name$request_uri? permanent;\n}\n```\n\n打开浏览器，输入以下地址：\n```\nhttp://www.example.com\n```\n\n总结，经过以上不同方面的配置，nginx这里最终的配置是如下：\n1. 证书`1_www.example.com_bundle.crt`和`2_www.example.com.key`放置在\n    `/etc/nginx/`文件夹内。\n2. 把`/etc/nginx/nginx.conf`文件进行修改，具体可以参考[本项目的nginx.conf](./conf/nginx.conf)\n3. 重启nginx\n\n注意：\n> 更多配置方法和功能，请开发者自行学习。\n\n### 1.6.3 小商场上线\n\n在1.6.2.3节\"反向代理Spring Boot后端\"成功以后，其实小商场的后端已经上线成功。\n这里介绍小商场的前端上线过程：\n\n上线之前需要修改代码或者配置文件：\n1. litemall-wx-api模块的WxOrderController类的payNotify方法的链接换成合适的地址。\n\n   注意：\n   > 换成什么地址都可以，但是这里不应该暴露出来。也就是说这个地址是微信商户平台\n   > 和这里的小商场后端服务之间的交互API，对外公开会存在安全隐患。\n   \n2. litemall-core模块需要配置application-core.yml\n\n    ```\n    litemall:\n        wx:\n            app-id: wxa5b486c6b918ecfb\n            app-secret: e04004829d4c383b4db7769d88dfbca1\n            mch-id: 111111\n            mch-key: xxxxxx\n            notify-url: http://www.example.com/wx/order/pay-notify\n    ```\n    \n    这里的`litemall.wx.notify-url`就是前面开发者自定义的地址。\n    \n3. litemall-wx模块的`project.config.json`文件调整相应的值，\n   特别是`appid`要设置成开发者申请的appid。\n\n### 1.6.4 管理后台上线\n\n在1.6.2.3节\"反向代理Spring Boot后端\"成功以后，其实管理后台已经上线成功，\n包括管理后台的前端和后端，会同时对外提供管理后台的前端文件和后端数据。\n当然，这里开发者需要自己的线上环境在以下文件中或代码中修改相应的配置。\n\n1. MySQL数据库设置合适的用户名和密码信息；\n2. 管理后台后端服务模块设置合适的配置信息，建议开发者参考deploy/litemall的外部配置文件，\n   这样可以避免开发者对模块内部的开发配置文件造成修改；\n3. 管理后台前端litemall-admin模块`.env.production`中的`VUE_APP_BASE_API`设置管理后台后端服务的服务地址。\n\n### 1.6.5 项目评估\n\n本项目只是参考项目，项目代码质量和功能不可能符合开发者的最终需求，\n因此开发者**请务必仔细评估项目代码**。\n\n特别提醒，上线前管理员用户名和密码请更改，不能采用这里的默认值。\n\n### 1.6.6 项目优化\n\n以下是部署方案中出现而在上线方案中可以优化的一些步骤。\n\n#### 1.6.6.1 管理后台前端文件启动优化\n\nlitemall-admin编译得到的前端文件在第一次加载时相当耗时，这里需要一些措施来优化启动速度\n\n* 静态文件托管CDN\n\n  在上节中，采用Spring Boot来分发管理后台的静态文件。\n  这里可以进一步地，把静态文件托管到CDN，当然这里是需要收费。\n\n* gzip压缩\n\n* 动态加载\n\n#### 1.6.6.2 后端服务内部访问\n\n原来后端服务（包括小商城的后端服务和管理后台的后端服务）可以通过域名或者IP直接对外服务，而这里采用nginx反向代理后可以\n通过80端口访问后端服务。因此，会存在这样一种结果：\n* 用户可以https协议的80端口访问后端服务（nginx反向代理）\n* 用户也可以通过http协议的8080访问后端服务（spring boot）\n由于http不是安全的，这里可能存在安全隐患\n\n而如果取消后端服务的对外访问，这样可以保证用户只能采用安全的https协议访问后端服务。\n同时，对外也能屏蔽内部具体技术架构细节。\n\n#### 1.6.6.4 nginx优化\n\n建议开发者根据自己业务或架构情况优化。\n\n### 1.6.7 项目安全\n\n项目一旦正式上线，即对外正式服务。但是服务同时，可能会存在安全隐患甚至黑客攻击。\n\n本节仅列举一些注意事项，欢迎开发者补充和完善。\n\n#### 1.6.7.1 账户安全\n\n这里的账号安全，既包括商城端用户账户，也包括管理后台端管理员账户。\n\n目前账号安全还缺乏一点的保护措施，例如\n\n* 用户密码失败超过阈值，则显示验证码；\n* 用户密码失败超过阈值，则取消登录；\n* 用户密码失败超过阈值，则需要手机验证码；\n\n#### 1.6.7.2 关键业务记录\n\n有关订单或者金钱相关的操作，建议开发者尽可能记录在数据库中，以便以后回溯。\n\n#### 1.6.7.3 API统一调整\n\n本项目公布了参考API接口，如果出现BUG可能会被黑客作为入口。\n建议开发者上线之前可以统一调整接口，以减少安全隐患。\n\n#### 1.6.7.4 对账\n\n本项目管理后台没有对账功能，建议开发者可以开发对账比对商场的状态是否正常。\n\n#### 1.6.7.5 取消或者限制退款\n\n本项目不支持自动退款功能，而是在管理后台通过管理员点击退款按钮来人工退款。\n但是仍然可能存在隐患，例如黑客通过漏洞进入管理后台从而进行不合理的退款操作。\n\n因此建议开发者可以取消管理后台的退款按钮，而仅仅保持退款信息，管理员可以登录\n微信官方支付平台进行退款操作。\n\n或者建议开发者基于一定的业务逻辑或场景限制管理后台的退款功能。例如，设置当天\n退款限额从而保证不会产生无限退款操作。\n\n#### 1.6.7.6 资源限制访问\n\n一些API操作涉及到后端服务器资源，因此需要做一定的限制，防止有限资源被恶意消耗。\n\n有限资源可能包括：\n\n* 验证码\n* 图片上传\n\n一些限制措施可能包括：\n\n* 限制单个IP的访问频率\n* 限制用户上传图片数量\n\n#### 1.6.7.n 跟踪本项目进展\n\n一旦有开发者反馈BUG，本项目会优先解决并及时上传补丁。\n因此建议开发者跟踪本项目进展，留意每次BUG修复的commit。\n\n同时也希望开发者发现任何BUG都及时反馈。\n\n目前还不存在LTS版本，未来业务稳定后可能会发布。\n\n## 1.7 项目管理\n\n这里简述一些当前项目开发的要点。\n\n### 1.7.1 项目.gitignore\n\n当前项目的.gitignore不是单一文件，而是多个模块都存在：\n* deploy/.gitignore\n* litemall-admin/.gitignore\n* litemall-admin-api/.gitignore\n* litemall-core/.gitignore\n* litemall-db/.gitignore\n* litemall-wx-api/.gitignore\n* litemall-all/.gitignore\n* .gitignore\n\n开发者可以采用单一.gitignore文件。\n\n### 1.7.2 项目自动部署\n\n#### 1.7.2.1 deploy部署\n\n当前项目存在deploy部署文件夹，这个是上述1.5.1节部署腾讯云服务器所采取的一些脚本。\n\n流程如下：\n1. util脚本是当前开发服务器运行，用来打包项目和上传腾讯云服务器；\n2. 打包项目时，会编译打包项目相关模块到litemall和db文件夹中；\n3. bin脚本是云服务器运行，用来安装数据库、导入数据、启动项目服务。\n\n这里deploy部署方式比较简单不灵活，开发者可以参考开发自己的项目脚本。\n\n#### 1.7.2.2 docker部署\n\n当前项目存在docker部署文件夹，这个是上述1.5.1节部署腾讯云服务器所采取的一些脚本。\n\n#### 1.7.2.3 .gitlab-ci.yml部署\n\n目前不支持\n\n### 1.7.3 项目代码风格\n\n由于本项目涉及三种技术栈，因此针对这三种技术栈也存在三种代码风格。\n\n如果开发者想要贡献代码，建议尽可能保证代码符合这里的规范。\n\n#### 1.7.3.1 Spring Boot技术栈代码风格\n\n这里的代码风格采用IDEA默认代码风格。\n\n修改代码后，利用`Code`菜单的`Reformat Code`即可格式化代码。\n\n#### 1.7.3.2 小程序技术栈代码风格\n\n这里的代码风格采用微信开发者工具默认代码风格。\n\n修改代码以后，利用`编辑`菜单的`格式化代码`即可格式化代码。\n\n#### 1.7.3.3 Vue技术栈代码风格\n\n这里的代码风格采用ESLint配置代码风格，具体参考vue-element-admin下项目的\n[ESLint文档](https://panjiachen.github.io/vue-element-admin-site/zh/guide/advanced/eslint.html),\n特别是`vscode 配置 ESLint`内容。\n\n注意：\n> Visual Studio Code编辑器中右键存在`格式化代码`的选项，但是请不要使用这种方式，\n> 因为VSC自带的格式化代码风格和ESLint代码风格可能不完全一致。\n\n### 1.7.4 Spring Boot多模块多阶段配置\n\n目前后端服务采用Spring Boot多模块方案，结构清晰、易于测试。\n\n但是存在一个问题，即多模块配置依赖。\n例如，litemall-db模块存在数据库配置信息，那么其他模块如何引入\nlitemall-db模块的配置信息呢？\n\n最简单的方式，就是其他模块把litemall-db模块的配置信息拷贝到自己的\napplication配置文件中，但是问题就是数据库信息一旦改变则其他模块又要\n再次手动修改，非常不方便。\n\n目前本项目采用一种基于`spring.profiles.active`的方式，细节如下：\n1. litemall-db模块存在application.yml和application-db.yml两个配置文件，\n    在application-db.yml配置文件中存放数据库配置信息；\n2. litemall-core模块也存在application.yml和application-core.yml两个配置文件,\n    在application-core.yml配置文件中存放core模块的一些配置信息，而在application.yml\n    中存在这样一个配置：\n    ```\n    spring:\n        profiles:\n            active: core, db\n    ```\n    因此，如果单独启动litemall-core模块，则会先读取application.yml配置文件，然后基于\n    系统会根据`spring.profiles.active`读取application-db.yml和application-core.yml配置文件，\n    因此就会自动读取litemall-db模块的配置文件。\n3. 以此类推，在litemall-all模块中存在application.yml配置文件，其中内容是\n    ```\n    spring:\n        profiles:\n            active:  db, core, admin, wx\n    ```\n    因此，系统启动litemall-all模块以后，则会先读取application.yml配置文件，然后基于\n    `spring.profiles.active`进一步读取application-db.yml、application-core.yml、\n    application-admin.yml和application-wx.yml四个模块的配置文件。\n    \n但是，虽然以上方案解决了多模块配置依赖问题，但是又会导致另外一个问题，如何支持不同profile，\n也就是开发阶段、测试阶段和上线阶段配置不同。\n\n这里介绍本项目的思路，就是基于Spring Boot的配置加载顺序，采用外部配置文件覆盖jar包内部配置文件。\n1. 开发阶段，系统的配置信息在模块的resources目录配置文件中；\n2. 测试或者部署阶段，系统打包成一个litemall.jar二进制jar包，jar包内部配置文件是之前\n    开发阶段的配置文件，此时在litemall.jar的同级目录创建相同的配置文件，在这些配置文件则\n    保存了测试或者部署阶段的配置信息。启动litemall.jar时，系统会读取当前目录的配置文件，而\n    不再读取jar包内部的配置文件。\n3. 上线阶段，同样地，在litemall.jar包同级目录创建上线配置文件。\n\n此外，这里还可以采用另外一种思路，如下图：\n![](./pics/project/maven-profile.png)\n![](./pics/project/spring-profile.png)\n![](./pics/project/yml-resource.png)\n\n其实原理也很简单，就是配置文件采用application-{module}-{profile}.yml来支持不同模块不同阶段的配置需求。\n\n### 1.7.5 前后端校验\n\n本项目是前后端分离项目，当用户或者管理员在系统中输入数据时，\n数据需要进行两层校验。\n\n* 第一层是前端校验，是对参数格式校验。\n* 第二层是后端校验，不仅对参数校验，还会根据业务场景进行校验。\n\n注意\n> 目前项目校验思路是这样，但是实际代码的校验还不完善，\n> 例如前端校验代码不完善，导致用户体验较差。\n\n### 1.7.6 后端响应错误码\n\n后端服务的响应结果是：\n```\n{\n    errno： 错误码，\n    errmsg：错误消息，\n    data：  响应数据\n}\n```\n\n当errno是0时，则data保存业务数据；\n当error是非0时，则业务失败，errmsg保存具体错误信息。\n\n目前，errno存在四种形式：\n* 4xx，前端错误，说明前端开发者需要重新了解后端接口使用规范：\n  * 401，参数错误，即前端没有传递后端需要的参数；\n  * 402，参数值错误，即前端传递的参数值不符合后端接收范围。\n* 5xx，后端系统错误，除501外，说明后端开发者应该继续优化代码，尽量避免返回后端系统错误码：\n  * 501，验证失败，即后端要求用户登录；\n  * 502，系统内部错误，即没有合适命名的后端内部错误；\n  * 503，业务不支持，即后端虽然定义了接口，但是还没有实现功能；\n  * 504，更新数据失效，即后端采用了乐观锁更新，而并发更新时存在数据更新失效；\n  * 505，更新数据失败，即后端数据库更新失败（正常情况应该更新成功）。\n* 6xx，管理后台后端业务错误码，具体见litemall-admin-api模块的`AdminResponseCode`类。\n* 7xx，小商城后端业务错误码，具体见litemall-wx-api模块的`WxResponseCode`类。\n\n需要指出的是，小商场后端可能返回4xx、5xx和6xx错误码；管理后台后端则可能返回4xx、5xx和7xx错误码。\n这样设计原因是方便小商场前端和管理后台前端区别对待。\n\n小商城前端处理后端响应错误码，存在三种处理方式：\n* 如果是4xx，说明前端开发者请求后端API时使用方式存在问题。\n例如，后端需要参数“name”，但是前端却没有传值，这个时候后端返回”用户名不对“\n没有任何意义，因为这里前端使用错误。相反，简单地返回“参数不对”反而会及早提醒\n前端开发者使用出现了问题。\n* 如果是5xx，（除501外）说明后端系统出现错误，后端开发者应该修复或者优化，此外\n前端可以在请求响应处统一处理5xx错误，而不是把错误信息返回到具体页面。\n例如，后端返回“更新数据失败”，说明数据库更新时出现异常，因此前端请求响应处\n统一简单报错“系统出错，联系管理员”，这样管理员可以及时联系后端开发者。而后端开发者\n则需要评估具体错误码和错误信息，例如这里的“更新数据失败”很可能是数据表调整字段\n导致Java代码的模型对象和数据库表不一致，此时后端开发者就可以及时修复。\n此外，对于501验证失败，则前端请求响应处可以统一处理跳转登录页面。\n* 如果是6xx，则说明是具体业务错误，此时前端需要在业务具体页面显示错误信息即可，同时\n这里也要求后端开发者书写良好友好的业务错误信息，因为会向最终用户显示。\n\n和小商场前端类似，管理后台前端处理后端响应错误码也存在三种类似的处理方式。\n\n注意：\n> 这里的4xx和5xx错误码，和HTTP中的4xx和5xx状态码不是一个概念。\n\n### 1.7.7 TODO\n\n本项目存在一些TODO，**强烈建议**开发者上线前仔细审阅是否存在问题和做相应调整。\n开发者可以使用IDE找到这些TODO。\n\n下面列出一些重要的TODO：\n\n#### 1.7.7.1 微信退款TODO\n\n管理后台管理员点击退款按钮时，管理后台会通过微信退款API请求微信商户平台退款。\n但是从安全角度考虑，**强烈建议**开发者删除微信退款代码，而登录微信商户平台手动退款。\n或者开发者添加安全相关代码，例如实现短信验证码。\n\n见`AdminOrderController`类\n\n再次提醒，本项目不承担任何使用后果。\n\n#### 1.7.7.2 未完善TODO\n\n有些业务只是实现基本功能，因此这里TODO提醒开发者自行思考。\n\n#### 1.7.7.3 重构TODO\n\n有些业务需求不是很清晰，导致实现时可能存在不合理地方，这里TODO提醒\n开发者审阅代码逻辑。"
  },
  {
    "path": "doc/wxmall.md",
    "content": "# 3 litemall小商城\n\n技术：\n\n* 小商城前端，即litemall-wx模块和renard-wx模块\n  * 微信小程序\n* 小商城后端，即litemall-wx-api模块\n  * Spring Boot 2.x\n  * Spring MVC\n  * [weixin-java-tools](https://gitee.com/binary/weixin-java-tools)\n\n\n目前发现存在的一些问题：\n  \n* `缺失`后台服务返回的token存在有效期，小商场应该自动刷新\n* `缺失`账号多次登录失败，应该小商城出现图片验证码限制，或者后台账号锁定\n* `改善`商品搜索中采用更好的搜索机制\n* `改善`商品搜索中，支持热门搜索\"换一批\"\n* `改善`地址优化，目前每一次点击都会请求后台，应该缓存已有的数据\n* `改善`商品数量和规格中，如果货品数量不足，则显示效果，通常是是两种效果\n  * 某个规格选择以后，另外规格的某些规格是实线，而某些是虚线，\n  * 商品的都规格选择以后，“立即购买”和“加入购物车显示”灰色\n* `改善`商品好评计算与显示，例如90%好评\n* `改善`商品的评论列表中显示评价的评论分数、商品规格\n* `改善`商品的评论列表中的图片点击可放大，同时用户评价的多个图片可以选择左右滑动查看。\n* `改善`商品的订单中支持订单号搜索功能\n* `改善`在一些内容比较多的页面中支持“顶部”功能\n\n## 3.0 小商场环境\n\n按照项目README文档中的“快速启动”一节，开发者可以快速启动小商场项目。\n但是小程序端只可以显示数据和图片，而微信登录会失败、微信支付也会失败，\n因为appid不是开发者自己的，\n\n这里进一步介绍开发者需要设置的小商场环境。\n\n### 3.0.1 微信登录配置\n\n开发者在微信小程序官网申请以后，可以有app-id和app-secret信息。\n\n1. 在litemall-core模块的src/main/resources的application-core.yml资源文件中设置\n    ```\n    litemall\n        wx\n            app-id: 开发者申请的app-id\n            app-secret: 开发者申请的app-secret\n    ```\n\n2. 在litemall-wx模块的project.config.json文件中设置\n\n    ```\n    \"appid\": \"开发者申请的app-id\",\n    ```\n\n3. 启动后台服务\n\n4. 建议开发者关闭当前项目或者直接关闭微信开发者工具，重新打开（因为此时litemall-wx模块的appid可能未更新）。\n   编译运行，尝试微信登录\n\n### 3.0.2 微信支付配置\n\n开发者在微信商户平台申请以后，可以有app-id和app-secret信息。\n\n1. 在litemall-core-api模块的src/main/resources的application-core.yml资源文件中设置\n\n    ```\n    litemall\n        wx\n            mch-id: 开发者申请的mch-id\n            mch-key: 开发者申请的mch-key\n            notify-url: 开发者部署服务的微信支付成功回调地址\n    ```\n\n    注意\n    > * notify-url是微信商户平台向小商场后台服务发送支付结果的地址。\n    >    因此这就要求该地址是可访问的。\n    > * 目前小商场后台服务的默认request mapping是`/wx/order/pay-notify`（见WxOrderController类的payNotify）,\n    >    因此notify-url应该设置的地址类似于`http://www.example.com/wx/order/pay-notify`\n    > * 当开发者真正上线后台服务时，强烈建议默认request mapping要重新命名，不能对外公开。\n\n2. 启动后台服务\n\n3. 部署后台服务到云服务器\n\n4. litemall-wx的api.js设置云服务器的域名。\n   编译运行，尝试微信支付。\n   \n### 3.0.3 微信退款配置\n\n目前管理平台的退款功能需要进行微信商户退款配置\n\n1. 从微信商户平台下载商户证书（或者叫做API证书），保存到合适位置，\n   请阅读[文档](https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3)\n2. 在litemall-core-api模块的src/main/resources的application-core.yml资源文件中设置\n\n    ```\n    litemall\n        wx\n            key-path: 证书文件访问路径\n    ```\n3. 启动小程序前端和后端，进行下单、支付、申请退款操作\n\n4. 启动管理后台前端和后端，进行订单退款操作，然后验证手机是否收到退款。\n\n注意：\n> 虽然这里管理后台退款接入了微信退款API，但是从安全角度考虑，**强烈建议**\n> 开发者删除管理后台微信退款代码，然后分成两个步骤实现管理员退款操作：\n> * 首先，管理员登录微信平台进行退款操作；\n> * 然后，管理员登陆管理后台点击退款按钮，进行订单退款状态变更和商品库存回库。\n\n## 3.1 litemall-wx-api\n\n本节介绍小商场的后台服务模块。\n\n### 3.1.1 授权服务\n\n见WxAuthController类。\n\n### 3.1.2 首页服务\n\n见WxHomeController类。\n\n### 3.1.3 类目服务\n\n见WxCatelogController类。\n\n### 3.1.4 商品服务\n\n见WxGoodsController类。\n\n### 3.1.5 品牌服务\n\n见WxBrandController类。\n\n### 3.1.6 专题服务\n\n见WxTopicController类。\n\n### 3.1.7 搜索服务\n\n见WxSearchController类。\n\n### 3.1.8 购物车服务\n\n见WxCartController类。\n\n### 3.1.9 订单服务\n\n见WxOrderController类。\n\n### 3.1.10 评价服务\n\n见WxCommentController类。\n\n注意：\n> 订单商品评价功能见WxOrderController类的comment方法。\n\n### 3.1.11 团购服务\n\n见WxGrouponController类。\n\n### 3.1.12 收藏服务\n\n见WxCollectController类。\n\n### 3.1.13 足迹服务\n\n见WxFootprintController类。\n\n### 3.1.14 收货地址服务\n\n见WxAddressController类。\n\n### 3.1.15 区域服务\n\n见WxRegionController类。\n\n### 3.1.16 安全\n\n#### 3.1.16.1 Token\n\n用户登录成功以后，后端会返回`token`，之后用户请求都会携带token。\n\n见WxWebMvcConfiguration类、LoginUser和LoginUserHandlerMethodArgumentResolver类。\n\n小商城后端服务每一次请求都会检测是否存在HTTP头部域`X-Litemall-Token`。\n如果存在，则内部查询转换成LoginUser，然后作为请求参数。\n如果不存在，则作为null请求参数。\n\n而具体的后端服务controller中，则可以利用LoginUser来检查。\n\n例如用户地址服务中：\n```\n@RestController\n@RequestMapping(\"/wx/address\")\n@Validated\npublic class WxAddressController {\n    @GetMapping(\"list\")\n    public Object list(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        \n        ...\n    }\n```\n如果检测`userId`是null，则返回错误信息“用户未登录”。\n\n## 3.2 litemall-wx\n\n这里的代码基于[nideshop-mini-program](https://gitee.com/tumobi/nideshop-mini-program)，但是做了一定的修改：\n\n* 数据属性名称调整，原项目中数据属性名称是下划线法命名（例如goods_id），而这里采用骆驼式命名法（例如goodsId），因此代码中需要进行相应调整；\n* 代码清理重构，删除了一些目前不必要的文件，梳理一些逻辑功能；\n* BUG修补，修改了一些错误；\n* 功能完善拓展，例如商品立即购买功能、商品评价功能；\n\n具体变化可以采用工具进行对比。\n\n注意\n> litemall-wx模块代码基于nideshop-mini-program的commit版本[acbf6276eb27abc6a48887cddd223d7261f0088e](https://github.com/tumobi/nideshop-mini-program/commit/acbf6276eb27abc6a48887cddd223d7261f0088e)。\n> 由于改动变化较大，因此之后litemall-wx将独立开发，不会合并nideshop-mini-program的更新。\n\n### 3.2.1 业务API设置\n\n业务API存放在`config/api.js`。\n\n但是可以发现这样的代码：\n\n```\n// 本机开发时使用\nvar WxApiRoot = 'http://localhost:8082/wx/';\n// 局域网测试使用\n// var WxApiRoot = 'http://192.168.0.101:8082/wx/';\n// 云平台部署时使用\n//  var WxApiRoot = 'http://122.51.199.160:8082/wx/';\n```\n\n也就是说这里存在三种类型的API服务地址，这里是考虑到开发存在三种情况：\n\n1. 本机开发时，localhost是当前开发机的地址；\n2. 手机预览时，192.168.0.101是开发机的IP地址；\n3. 当后台部署在云服务器中时，122.51.199.160是云服务器的IP地址；\n4. 此外，更最重要的是，如果小程序正式部署时，这里的地址必须是域名，\n而不能是IP地址。\n\n因此，开发阶段开发者可以按照具体情况切换1，2或3的选项。\n\n### 3.2.2 页面\n\n* 首页\n* 专题页\n* 专题详情页\n* 专题评论页\n* 专题评论添加页\n* 品牌页\n* 品牌详情页\n* 人气推荐页\n* 新品首发页\n* 分类页\n* 分类详情页\n* 查找页\n* 商品详情页\n* 商品评论页\n* 购物车页\n* 下单页\n* 下单地址页\n* 下单地址添加页\n* 支付结果页\n* 个人页\n* 订单列表页\n* 订单详情页\n* 优惠券页\n* 收藏页\n* 足迹页\n* 收货地址页\n* 收货地址添加页\n* 登录页\n* 注册页\n* 找回密码页\n\n### 3.2.3 登录设计\n\n按照官方文档，开发者采用`wx.login`方法即可实现登录操作；\n然而，由于`wx.login`只能返回临时登录凭证`code`，从服务器也只能返回对应的sessionId,\n因此虽然已经可以视作登录，但是在小程序中不能显示有意义的登录状态，\n因此实际很多小程序是继续采用`wx.getUserInfo`来进一步请求用户信息。\n\n因此本模块中，用户的登录状态也是由`wx.login`和`wx.getUserInfo`组成。\n\n#### 3.2.3.1 登录检测\n\n开发者可以采用`user.checkLogin`来检查是否`已登录`，而其检测逻辑是：\n\n1. 可以从storage获取`userInfo`和`token`\n2. 同时`wx.checkSession`也成功。\n\n但是如果每次都使用`checkLogin`可能也不太好，因此目前机制是：\n\n1. 应用启动时检测一次，如果登录则设置app.globalData.hasLogin为已登录状态;\n之后，其他页面只要查看这个状态即可知道目前是否已登录；\n2. 如果后端token过期返回501错误码时，则前端清理`userInfo`和`token`；\n3. 用户执行退出操作，则清理`userInfo`和`token`，同时设置hasLogin未登录状态。\n\n注意：\n> 这里的逻辑可能有点乱。。。，但是目前实际效果看没有问题。\n\n#### 3.2.3.2 登录时机\n\n登录请求用户信息的时机存在两种设计：\n\n1. 一种是小程序加载时，即申请用户信息，这种实现较简单，但是用户体验可能不是很好；\n2. 另外一种是小程序加载时不需要，但是小程序用户需要真正用户信息时才请求用户登录，\n而这种实现较复杂。\n\n目前采用第二种方式实现，这里又可以进一步分成两种情况：\n\n* 用户主动登录\n\n  用户主动登录，指的是`个人`页面中用户没有登录显示`点击登录`的效果。\n\n* 用户被动登录\n\n  用户被动登录，指的是用户想购买商品或者需要用户登录才能操作的行为，\n  此时因为向服务器请求时token没有设置，因此服务器拒绝用户的请求，同时返回`501`业务代码。\n \n 以上无论哪种情况，都会导致用户被重定向到`登录`页面来进行登录操作。\n \n#### 3.2.3.3 登录操作\n\n如前面讨论，这里的登录操作实际包含两个操作`wx.login`和`wx.getUserInfo`。\n开发者可以采用`user.loginByWeixin`来进行登录操作。\n\n按照小程序官网文档，用户登录前应该检测以下，来避免频繁无意义的登录操作，\n因此较合适的做法如下所示:\n\n```\n    user.checkLogin().catch(() => {\n\n      user.loginByWeixin().then(res => {\n        this.setData({\n          userInfo: res.data.userInfo,\n        });\n      }).catch((err) => {\n        util.showErrorToast('登录失败');\n      });\n\n    });\n```\n\n#### 3.2.3.4 登出操作\n\n在`个人`页面，如果用户已经登录，则会出现`退出登录`按钮，支持用户退出当前登录状态。\n\n退出逻辑如下所示：\n```\n        util.request(api.AuthLogout, {}, 'POST');\n        app.globalData.hasLogin = false;\n        wx.removeStorageSync('token');\n        wx.removeStorageSync('userInfo');\n        wx.reLaunch({\n          url: '/pages/index/index'\n        });\n```\n\n### 3.2.4 storage\n\nlitemall-wx模块采用storage来存储一些数据，以及支持组件间数据通信。\n\n#### 3.2.4.1 userInfo和token\n\n#### 3.2.4.2 cartId\n\n#### 3.2.4.3 addressId\n\n### 3.2.5 加入购物车和立即购买\n\n### 3.2.6 团购\n\n## 3.3 renard-wx\n\nrenard-wx是另外一个小程序前端，其后端API也是litemall-wx-api。\n\n和litemall-wx的区别是：\n1. 界面样式有所调整；\n2. 功能进一步简化。\n\n## 3.4 开发新组件\n\n本章节介绍如何开发新的微信小程序功能。\n\n### 3.4.1 小商场前端页面\n\n### 3.4.2 前后端交互服务API\n\n### 3.4.3 小商场后端服务\n\n### 3.4.4 数据库"
  },
  {
    "path": "docker/.gitignore",
    "content": "\n/litemall/litemall.jar\n/db/init-sql/litemall.sql\n"
  },
  {
    "path": "docker/README.md",
    "content": "## docker\n\n### 项目打包\n\n1. 在服务器或者开发机打包项目到docker；\n    ```\n    cd litemall\n    cat ./litemall-db/sql/litemall_schema.sql > ./docker/db/init-sql/litemall.sql\n    cat ./litemall-db/sql/litemall_table.sql >> ./docker/db/init-sql/litemall.sql\n    cat ./litemall-db/sql/litemall_data.sql >> ./docker/db/init-sql/litemall.sql\n    \n    cd ./litemall-admin\n    npm install --registry=https://registry.npm.taobao.org\n    npm run build:dep\n    \n    cd ..\n    mvn clean package\n    cp -f ./litemall-all/target/litemall-all-*-exec.jar ./docker/litemall/litemall.jar\n    ```\n    这里的工作是：\n    1. 把数据库文件拷贝到docker/db文件夹\n    2. 编译litemall-admin项目\n    3. 编译litemall-all模块，同时把litemall-admin编译得到的静态文件拷贝到\n       litemall-all模块的static目录\n       \n2. 修改litemall文件夹下面的*.yml外部配置文件，当litemall-all模块启动时会\n    加载外部配置文件，而覆盖默认jar包内部的配置文件。\n    例如，配置文件中一些地方需要设置成远程服务器的IP地址\n    \n此时docker部署包结构如下：\n\n* bin\n\n存放远程服务器运行的脚本，包括deploy.sh脚本和reset.sh脚本\n\n* db\n\n存放litemall数据库文件\n\n* litemall\n\n存放远程服务器运行的代码，包括litemall-all二进制可执行包和litemall外部配置文件\n\n* util\n\n存放开发服务器运行的脚本，包括package.sh脚本和lazy.sh脚本。\n由于是本地开发服务器运行，因此开发者可以不用上传到远程服务器。\n\n* docker-compose.yml\n\ndocker-compose配置脚本，运行docker-compose命令会\n\n### 项目部署\n\n1. 云服务器环境安装docker和docker-compose（MySQL和JDK1.8无需安装，因为使用docker自动安装）。\n   此外请确保云服务器的安全组已经允许相应的端口。\n\n2. 运行docker-compose\n    ```bash\n    cd /home/ubuntu/docker\n   sudo docker-compose\n    ```\n\n3. 测试是否部署成功(xxx.xxx.xxx.xxx是云服务器IP）：\n    ```\n    http://xxx.xxx.xxx.xxx:8080/wx/index/index\n    http://xxx.xxx.xxx.xxx:8080/admin/index/index\n    http://xxx.xxx.xxx.xxx:8080/#/login\n    ```\n\n### 项目辅助脚本\n\n在前面的项目打包和项目部署中都是采用手动命令来部署。\n这里可以写一些脚本简化：\n\n* util/packet.sh\n\n在开发服务器运行可以自动项目打包\n\n* util/lazy.sh\n\n在开发服务器运行可以自动项目打包、项目上传远程服务器、自动登录系统执行项目部署脚本。\n    \n注意：\n> 1. 开发者需要在util/lazy.sh中设置相应的远程服务器登录账号和密钥文件路径。\n> 2. 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n    \n* bin/deploy.sh\n\n在远程服务器运行可以自动部署服务\n\n* bin/reset.sh\n\n在远程服务器运行可以自动项目导入数据、删除本地上传图片、再执行bin/deploy.sh部署服务。\n\n注意：\n> 开发者需要在bin/reset.sh设置远程服务器的MySQL的root登录账户。\n\n总结，当开发者设置好配置信息以后，可以在本地运行lazy.sh脚本自动一键部署:\n```bash\ncd litemall\n./docker/util/lazy.sh\n```\n\n不过由于需要设置的信息会包含敏感安全信息，强烈建议开发者参考这里的docker文件夹，\n然后实现自己的docker文件夹，妥善处置外部配置文件和脚本中的敏感安全信息!!!"
  },
  {
    "path": "docker/bin/deploy.sh",
    "content": "#!/bin/bash\n\ncd /home/ubuntu/docker\nsudo docker-compose down\nsudo docker-compose build\nsudo docker image prune -f\nsudo docker-compose up -d\n"
  },
  {
    "path": "docker/bin/reset.sh",
    "content": "#!/bin/bash\n\n# 本脚本的作用是重置部署环境\n# 1.重置数据库\n# 2.删除storage文件夹内文件\n# 3.调用deploy.sh启动服务\n# 注意：由于1和2的原因，请仅在开发测试阶段使用本脚本！\n\n# 重置数据库\n# i. 请在`XXXXXX`处设置相应的root密码\n# ii. 同时请注意root密码放在脚本是非常危险的，因此这里仅仅是用于开发测试阶段。\nROOT=root\nPASSWORD=litemall123456\n\nif test -z \"$PASSWORD\"\nthen\n  echo \"请设置云服务器MySQL的root账号密码\"\n  exit 1\nfi\n\n# 删除storage文件夹内文件\ncd /home/ubuntu/docker/litemall/storage || exit 2\nsudo rm -f ./**\n\ncd /home/ubuntu/docker || exit 3\nsudo docker-compose down\nsudo docker-compose build\nsudo docker image prune -f\n\n# 删除db/data文件夹内文件重置数据\n# 这样docker启动时会自动运行db/init-sql脚本，导入新的数据\ncd /home/ubuntu/docker/db/data || exit 1\nsudo rm -rf ./**\n\ncd /home/ubuntu/docker || exit 3\nsudo docker-compose up -d\n"
  },
  {
    "path": "docker/db/conf.d/my.cnf",
    "content": "[mysqld]\nwait_timeout=1814400\nmax_allowed_packet = 100M\ndefault-time_zone = '+8:00'\ncharacter-set-server=utf8mb4\ncollation-server=utf8mb4_unicode_ci"
  },
  {
    "path": "docker/db/data/.gitkeep",
    "content": ""
  },
  {
    "path": "docker/db/init-sql/.gitkeep",
    "content": ""
  },
  {
    "path": "docker/docker-compose.yml",
    "content": "version: '3'\nservices:\n  mysql57:\n    image: mysql:5.7\n    container_name: mysql\n    ports:\n      - \"3306:3306\"\n    command:\n      --character-set-server=utf8\n      --collation-server=utf8_general_ci\n      --default-authentication-plugin=mysql_native_password\n    volumes:\n      - ./db/conf.d:/etc/mysql/conf.d\n      - ./db/data:/var/lib/mysql\n      - ./db/init-sql:/docker-entrypoint-initdb.d\n    environment:\n      MYSQL_ROOT_PASSWORD: litemall123456\n    restart: always\n  litemall:\n    build:\n      context: litemall\n      dockerfile: Dockerfile\n    container_name: litemall\n    ports:\n      - \"8080:8080\"\n    volumes:\n      - ./litemall/storage:/storage\n      - ./litemall/logs:/logs\n      - ./litemall/backup:/backup\n      - /etc/localtime:/etc/localtime\n    environment:\n      - TZ=Asia/Shanghai\n    depends_on:\n      - mysql57\n    restart: always"
  },
  {
    "path": "docker/litemall/.gitkeep",
    "content": ""
  },
  {
    "path": "docker/litemall/Dockerfile",
    "content": "FROM openjdk:8-jre\nCOPY application.yml application.yml\nCOPY litemall.jar litemall.jar\nENTRYPOINT [\"java\",\"-Djava.security.egd=file:/dev/./urandom\",\"-jar\",\"litemall.jar\"]"
  },
  {
    "path": "docker/litemall/application.yml",
    "content": "spring:\n  profiles:\n    active: none\n  message:\n    encoding: UTF-8\n  datasource:\n    druid:\n      url:  jdbc:mysql://mysql:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTC&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=true\n      driver-class-name:  com.mysql.cj.jdbc.Driver\n      username:  litemall\n      password:  litemall123456\n      initial-size:  10\n      max-active:  50\n      min-idle:  10\n      max-wait:  60000\n      pool-prepared-statements:  true\n      max-pool-prepared-statement-per-connection-size:  20\n      validation-query:  SELECT 1 FROM DUAL\n      test-on-borrow:  false\n      test-on-return:  false\n      test-while-idle:  true\n      time-between-eviction-runs-millis:  60000\n      filters:  stat,wall\n\nserver:\n  port: 8080\n\nlogging:\n  config: classpath:logback-spring.xml\n\npagehelper:\n  helperDialect:  mysql\n  reasonable: true\n  supportMethodsArguments:  true\n  params: count=countSql\n\nlitemall:\n  # 开发者应该设置成自己的wx相关信息\n  wx:\n    app-id: wxa5b486c6b918ecfb\n    app-secret: e04004829d4c383b4db7769d88dfbca1\n    mch-id: 111111\n    mch-key: xxxxxx\n    notify-url: http://122.51.199.160:8080/wx/order/pay-notify\n    # 商户证书文件路径\n    # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3\n    key-path: xxxxx\n\n  #通知相关配置\n  notify:\n    mail:\n      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单，sendto 定义邮件接收者，通常为商城运营人员\n      enable: false\n      host: smtp.exmail.qq.com\n      username: ex@ex.com.cn\n      password: XXXXXXXXXXXXX\n      sendfrom: ex@ex.com.cn\n      sendto: ex@qq.com\n      port: 465\n\n    # 短消息模版通知配置\n    # 短信息用于通知客户，例如发货短信通知，注意配置格式；template-name，template-templateId 请参考 NotifyType 枚举值\n    sms:\n      enable: false\n      # 如果是腾讯云短信，则设置active的值tencent\n      # 如果是阿里云短信，则设置active的值aliyun\n      active: tencent\n      sign: litemall\n      template:\n        - name: paySucceed\n          templateId: 156349\n        - name: captcha\n          templateId: 156433\n        - name: ship\n          templateId: 158002\n        - name: refund\n          templateId: 159447\n      tencent:\n        appid: 111111111\n        appkey: xxxxxxxxxxxxxx\n      aliyun:\n        regionId: xxx\n        accessKeyId: xxx\n        accessKeySecret: xxx\n\n  # 快鸟物流查询配置\n  express:\n    enable: false\n    appId: \"XXXXXXXXX\"\n    appKey: \"XXXXXXXXXXXXXXXXXXXXXXXXX\"\n    vendors:\n      - code: \"ZTO\"\n        name: \"中通快递\"\n      - code: \"YTO\"\n        name: \"圆通速递\"\n      - code: \"YD\"\n        name: \"韵达速递\"\n      - code: \"YZPY\"\n        name: \"邮政快递包裹\"\n      - code: \"EMS\"\n        name: \"EMS\"\n      - code: \"DBL\"\n        name: \"德邦快递\"\n      - code: \"FAST\"\n        name: \"快捷快递\"\n      - code: \"ZJS\"\n        name: \"宅急送\"\n      - code: \"TNT\"\n        name: \"TNT快递\"\n      - code: \"UPS\"\n        name: \"UPS\"\n      - code: \"DHL\"\n        name: \"DHL\"\n      - code: \"FEDEX\"\n        name: \"FEDEX联邦(国内件)\"\n      - code: \"FEDEX_GJ\"\n        name: \"FEDEX联邦(国际件)\"\n\n  # 对象存储配置\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent\n    active: local\n    # 本地对象存储配置信息\n    local:\n      storagePath: storage\n      address: http://122.51.199.160:8080/wx/storage/fetch/\n    # 阿里云对象存储配置信息\n    aliyun:\n      endpoint: oss-cn-shenzhen.aliyuncs.com\n      accessKeyId: 111111\n      accessKeySecret: xxxxxx\n      bucketName: xxxxxx\n    # 腾讯对象存储配置信息\n    # 请参考 https://cloud.tencent.com/document/product/436/6249\n    tencent:\n      secretId: 111111\n      secretKey: xxxxxx\n      region: xxxxxx\n      bucketName: xxxxxx\n    # 七牛云对象存储配置信息\n    qiniu:\n      endpoint: http://pd5cb6ulu.bkt.clouddn.com\n      accessKey: 111111\n      secretKey: xxxxxx\n      bucketName: litemall\n\nswagger:\n  production: true"
  },
  {
    "path": "docker/util/lazy.sh",
    "content": "#!/bin/bash\n\n# 本脚本的作用是\n# 1. 项目打包\n# 2. 上传云服务器\n# 3. 远程登录云服务器并执行reset脚本\n\n# 请设置云服务器的IP地址和账户\n# 例如 ubuntu@122.51.199.160\nREMOTE=ubuntu@122.51.199.160\n# 请设置本地SSH私钥文件id_rsa路径\n# 例如 /home/litemall/id_rsa\nID_RSA=/d/00/cloud/litemall.txt\n\nif test -z \"$REMOTE\"\nthen\n  echo \"请设置云服务器登录IP地址和账户\"\n  exit 1\nfi\n\nif test -z \"$ID_RSA\"\nthen\n  echo \"请设置云服务器登录IP地址和账户\"\n  exit 1\nfi\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null && pwd )\"\ncd $DIR/../.. || exit 2\nLITEMALL_HOME=$PWD\necho \"LITEMALL_HOME $LITEMALL_HOME\"\n\n# 项目打包\ncd $LITEMALL_HOME || exit 2\n./docker/util/package.sh\n\n# 上传云服务器\ncd $LITEMALL_HOME || exit 2\nscp -i $ID_RSA -r  ./docker $REMOTE:/home/ubuntu/\n\n# 远程登录云服务器并执行reset脚本\n# 这里使用tr命令，因为有可能deploy.sh和reset.sh的换行格式是CRLF，而LINUX环境应该是LF\nssh $REMOTE -i $ID_RSA << eeooff\ncd /home/ubuntu/docker/bin\ncat deploy.sh | tr -d '\\r' > deploy2.sh\nmv deploy2.sh deploy.sh\nchmod +x deploy.sh\ncat reset.sh | tr -d '\\r' > reset2.sh\nmv reset2.sh reset.sh\nchmod +x reset.sh\nsudo ./reset.sh\nexit\neeooff"
  },
  {
    "path": "docker/util/package.sh",
    "content": "#!/bin/bash\n\n# 请注意\n# 本脚本的作用是把本项目编译的结果保存到deploy文件夹中\n# 1. 把项目数据库文件拷贝到docker/db/init-sql\n# 2. 编译litemall-admin\n# 3. 编译litemall-all模块，然后拷贝到docker/litemall\n\nDIR=\"$( cd \"$( dirname \"${BASH_SOURCE[0]}\" )\" >/dev/null && pwd )\"\ncd $DIR/../..\nLITEMALL_HOME=$PWD\necho \"LITEMALL_HOME $LITEMALL_HOME\"\n\n# 复制数据库\ncat $LITEMALL_HOME/litemall-db/sql/litemall_schema.sql > $LITEMALL_HOME/docker/db/init-sql/litemall.sql\ncat $LITEMALL_HOME/litemall-db/sql/litemall_table.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql\ncat $LITEMALL_HOME/litemall-db/sql/litemall_data.sql >> $LITEMALL_HOME/docker/db/init-sql/litemall.sql\n\n# 打包litemall-admin\ncd $LITEMALL_HOME/litemall-admin\nnpm install --registry=https://registry.npm.taobao.org\nnpm run build:dep\n\n# 打包litemall-vue\ncd $LITEMALL_HOME/litemall-vue\nnpm install --registry=https://registry.npm.taobao.org\nnpm run build:dep\n\ncd $LITEMALL_HOME\nmvn clean package\ncp -f $LITEMALL_HOME/litemall-all/target/litemall-all-*-exec.jar $LITEMALL_HOME/docker/litemall/litemall.jar"
  },
  {
    "path": "litemall-admin/.editorconfig",
    "content": "# https://editorconfig.org\nroot = true\n\n[*]\ncharset = utf-8\nindent_style = space\nindent_size = 2\nend_of_line = lf\ninsert_final_newline = true\ntrim_trailing_whitespace = true\n\n[*.md]\ninsert_final_newline = false\ntrim_trailing_whitespace = false\n"
  },
  {
    "path": "litemall-admin/.eslintignore",
    "content": "build/*.js\nsrc/assets\npublic\ndist\n"
  },
  {
    "path": "litemall-admin/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  parserOptions: {\n    ecmaVersion:\"latest\",\n    parser: 'babel-eslint',\n    sourceType: 'module'\n  },\n  env: {\n    browser: true,\n    node: true,\n    es6: true,\n  },\n  extends: ['plugin:vue/recommended', 'eslint:recommended'],\n\n  // add your custom rules here\n  //it is base on https://github.com/vuejs/eslint-config-vue\n  rules: {\n    \"vue/max-attributes-per-line\": [2, {\n      \"singleline\": 10,\n      \"multiline\": {\n        \"max\": 1,\n        \"allowFirstLine\": false\n      }\n    }],\n    \"vue/singleline-html-element-content-newline\": \"off\",\n    \"vue/multiline-html-element-content-newline\":\"off\",\n    \"vue/name-property-casing\": [\"error\", \"PascalCase\"],\n    \"vue/no-v-html\": \"off\",\n    'accessor-pairs': 2,\n    'arrow-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'block-spacing': [2, 'always'],\n    'brace-style': [2, '1tbs', {\n      'allowSingleLine': true\n    }],\n    'camelcase': [0, {\n      'properties': 'always'\n    }],\n    'comma-dangle': [2, 'never'],\n    'comma-spacing': [2, {\n      'before': false,\n      'after': true\n    }],\n    'comma-style': [2, 'last'],\n    'constructor-super': 2,\n    'curly': [2, 'multi-line'],\n    'dot-location': [2, 'property'],\n    'eol-last': 2,\n    'eqeqeq': [\"error\", \"always\", {\"null\": \"ignore\"}],\n    'generator-star-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'handle-callback-err': [2, '^(err|error)$'],\n    'indent': [2, 2, {\n      'SwitchCase': 1\n    }],\n    'jsx-quotes': [2, 'prefer-single'],\n    'key-spacing': [2, {\n      'beforeColon': false,\n      'afterColon': true\n    }],\n    'keyword-spacing': [2, {\n      'before': true,\n      'after': true\n    }],\n    'new-cap': [2, {\n      'newIsCap': true,\n      'capIsNew': false\n    }],\n    'new-parens': 2,\n    'no-array-constructor': 2,\n    'no-caller': 2,\n    'no-console': 'off',\n    'no-class-assign': 2,\n    'no-cond-assign': 2,\n    'no-const-assign': 2,\n    'no-control-regex': 0,\n    'no-delete-var': 2,\n    'no-dupe-args': 2,\n    'no-dupe-class-members': 2,\n    'no-dupe-keys': 2,\n    'no-duplicate-case': 2,\n    'no-empty-character-class': 2,\n    'no-empty-pattern': 2,\n    'no-eval': 2,\n    'no-ex-assign': 2,\n    'no-extend-native': 2,\n    'no-extra-bind': 2,\n    'no-extra-boolean-cast': 2,\n    'no-extra-parens': [2, 'functions'],\n    'no-fallthrough': 2,\n    'no-floating-decimal': 2,\n    'no-func-assign': 2,\n    'no-implied-eval': 2,\n    'no-inner-declarations': [2, 'functions'],\n    'no-invalid-regexp': 2,\n    'no-irregular-whitespace': 2,\n    'no-iterator': 2,\n    'no-label-var': 2,\n    'no-labels': [2, {\n      'allowLoop': false,\n      'allowSwitch': false\n    }],\n    'no-lone-blocks': 2,\n    'no-mixed-spaces-and-tabs': 2,\n    'no-multi-spaces': 2,\n    'no-multi-str': 2,\n    'no-multiple-empty-lines': [2, {\n      'max': 1\n    }],\n    'no-native-reassign': 2,\n    'no-negated-in-lhs': 2,\n    'no-new-object': 2,\n    'no-new-require': 2,\n    'no-new-symbol': 2,\n    'no-new-wrappers': 2,\n    'no-obj-calls': 2,\n    'no-octal': 2,\n    'no-octal-escape': 2,\n    'no-path-concat': 2,\n    'no-proto': 2,\n    'no-redeclare': 2,\n    'no-regex-spaces': 2,\n    'no-return-assign': [2, 'except-parens'],\n    'no-self-assign': 2,\n    'no-self-compare': 2,\n    'no-sequences': 2,\n    'no-shadow-restricted-names': 2,\n    'no-spaced-func': 2,\n    'no-sparse-arrays': 2,\n    'no-this-before-super': 2,\n    'no-throw-literal': 2,\n    'no-trailing-spaces': 2,\n    'no-undef': 2,\n    'no-undef-init': 2,\n    'no-unexpected-multiline': 2,\n    'no-unmodified-loop-condition': 2,\n    'no-unneeded-ternary': [2, {\n      'defaultAssignment': false\n    }],\n    'no-unreachable': 2,\n    'no-unsafe-finally': 2,\n    'no-unused-vars': [2, {\n      'vars': 'all',\n      'args': 'none'\n    }],\n    'no-useless-call': 2,\n    'no-useless-computed-key': 2,\n    'no-useless-constructor': 2,\n    'no-useless-escape': 0,\n    'no-whitespace-before-property': 2,\n    'no-with': 2,\n    'one-var': [2, {\n      'initialized': 'never'\n    }],\n    'operator-linebreak': [2, 'after', {\n      'overrides': {\n        '?': 'before',\n        ':': 'before'\n      }\n    }],\n    'padded-blocks': [2, 'never'],\n    'quotes': [2, 'single', {\n      'avoidEscape': true,\n      'allowTemplateLiterals': true\n    }],\n    'semi': [2, 'never'],\n    'semi-spacing': [2, {\n      'before': false,\n      'after': true\n    }],\n    'space-before-blocks': [2, 'always'],\n    'space-before-function-paren': [2, 'never'],\n    'space-in-parens': [2, 'never'],\n    'space-infix-ops': 2,\n    'space-unary-ops': [2, {\n      'words': true,\n      'nonwords': false\n    }],\n    'spaced-comment': [2, 'always', {\n      'markers': ['global', 'globals', 'eslint', 'eslint-disable', '*package', '!', ',']\n    }],\n    'template-curly-spacing': [2, 'never'],\n    'use-isnan': 2,\n    'valid-typeof': 2,\n    'wrap-iife': [2, 'any'],\n    'yield-star-spacing': [2, 'both'],\n    'yoda': [2, 'never'],\n    'prefer-const': 2,\n    'no-debugger': process.env.NODE_ENV === 'production' ? 2 : 0,\n    'object-curly-spacing': [2, 'always', {\n      objectsInObjects: false\n    }],\n    'array-bracket-spacing': [2, 'never']\n  }\n}\n"
  },
  {
    "path": "litemall-admin/.gitignore",
    "content": ".DS_Store\nnode_modules/\ndist/\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n**/*.log\n\ntests/**/coverage/\ntests/e2e/reports\nselenium-debug.log\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.local\n\npackage-lock.json\nyarn.lock\n"
  },
  {
    "path": "litemall-admin/babel.config.js",
    "content": "module.exports = {\n  presets: [\n    '@vue/app'\n  ]\n}\n"
  },
  {
    "path": "litemall-admin/build/index.js",
    "content": "const { run } = require('runjs')\nconst chalk = require('chalk')\nconst rawArgv = process.argv.slice(2)\nconst args = rawArgv.join(' ')\n\nif (process.env.npm_config_preview || rawArgv.includes('--preview')) {\n  const report = rawArgv.includes('--report')\n\n  run(`vue-cli-service build ${args}`)\n\n  const port = 9526\n  const publicPath = '/'\n\n  var connect = require('connect')\n  var serveStatic = require('serve-static')\n  const app = connect()\n\n  app.use(\n    publicPath,\n    serveStatic('./dist', {\n      index: ['index.html', '/']\n    })\n  )\n\n  app.listen(port, function () {\n    console.log(chalk.green(`> Preview at  http://localhost:${port}${publicPath}`))\n    if (report) {\n      console.log(chalk.green(`> Report at  http://localhost:${port}${publicPath}report.html`))\n    }\n\n  })\n} else {\n  run(`vue-cli-service build ${args}`)\n}"
  },
  {
    "path": "litemall-admin/jest.config.js",
    "content": "module.exports = {\n  moduleFileExtensions: ['js', 'jsx', 'json', 'vue'],\n  transform: {\n    '^.+\\\\.vue$': 'vue-jest',\n    '.+\\\\.(css|styl|less|sass|scss|svg|png|jpg|ttf|woff|woff2)$':\n      'jest-transform-stub',\n    '^.+\\\\.jsx?$': 'babel-jest'\n  },\n  moduleNameMapper: {\n    '^@/(.*)$': '<rootDir>/src/$1'\n  },\n  snapshotSerializers: ['jest-serializer-vue'],\n  testMatch: [\n    '**/tests/unit/**/*.spec.(js|jsx|ts|tsx)|**/__tests__/*.(js|jsx|ts|tsx)'\n  ],\n  collectCoverageFrom: ['src/utils/**/*.{js,vue}', '!src/utils/auth.js', '!src/utils/request.js', 'src/components/**/*.{js,vue}'],\n  coverageDirectory: '<rootDir>/tests/unit/coverage',\n  // 'collectCoverage': true,\n  'coverageReporters': [\n    'lcov',\n    'text-summary'\n  ],\n  testURL: 'http://localhost/'\n}\n"
  },
  {
    "path": "litemall-admin/jsconfig.json",
    "content": "{ \n  \"compilerOptions\": {\n    \"baseUrl\": \"./\",\n    \"paths\": {\n        \"@/*\": [\"src/*\"]\n    }\n  },\n  \"exclude\": [\"node_modules\", \"dist\"]\n}"
  },
  {
    "path": "litemall-admin/package.json",
    "content": "{\n  \"name\": \"litemall-admin\",\n  \"version\": \"1.0.0\",\n  \"description\": \"litemall-admin basing on vue-element-admin 4.3.0\",\n  \"author\": \"linlinjava <linlinjava@163.com>\",\n  \"license\": \"MIT\",\n  \"scripts\": {\n    \"dev\": \"vue-cli-service serve\",\n    \"build\": \"vue-cli-service build --mode production\",\n    \"build:prod\": \"vue-cli-service build --mode production\",\n    \"build:dep\": \"vue-cli-service build --mode deployment\",\n    \"preview\": \"node build/index.js --preview\",\n    \"lint\": \"eslint --ext .js,.vue src\",\n    \"test:unit\": \"jest --clearCache && vue-cli-service test:unit\",\n    \"test:ci\": \"npm run lint && npm run test:unit\",\n    \"svgo\": \"svgo -f src/icons/svg --config=src/icons/svgo.yml\"\n  },\n  \"husky\": {\n    \"hooks\": {\n      \"pre-commit\": \"lint-staged\"\n    }\n  },\n  \"lint-staged\": {\n    \"src/**/*.{js,vue}\": [\n      \"eslint --fix\",\n      \"git add\"\n    ]\n  },\n  \"keywords\": [\n    \"vue\",\n    \"admin\",\n    \"dashboard\",\n    \"element-ui\",\n    \"boilerplate\",\n    \"admin-template\",\n    \"management-system\"\n  ],\n  \"repository\": {\n    \"type\": \"git\",\n    \"url\": \"git+https://github.com/linlinjava/litemall.git\"\n  },\n  \"bugs\": {\n    \"url\": \"https://github.com/linlinjava/litemall/issues\"\n  },\n  \"dependencies\": {\n    \"@tinymce/tinymce-vue\": \"3.0.1\",\n    \"axios\": \">=0.21.2\",\n    \"clipboard\": \"2.0.4\",\n    \"connect\": \"3.6.6\",\n    \"core-js\": \"^3.30.1\",\n    \"echarts\": \"4.2.1\",\n    \"element-ui\": \"2.15.6\",\n    \"file-saver\": \"1.3.8\",\n    \"js-cookie\": \"2.2.0\",\n    \"lodash\": \"^4.17.11\",\n    \"normalize.css\": \"7.0.0\",\n    \"nprogress\": \"0.2.0\",\n    \"path-to-regexp\": \"3.3.0\",\n    \"screenfull\": \"4.2.0\",\n    \"script-loader\": \"0.7.2\",\n    \"v-charts\": \"1.19.0\",\n    \"vue\": \"2.6.10\",\n    \"vue-count-to\": \"1.0.13\",\n    \"vue-i18n\": \"^8.28.2\",\n    \"vue-router\": \"3.0.2\",\n    \"vuex\": \"3.1.0\",\n    \"xlsx\": \">=0.17.0\"\n  },\n  \"devDependencies\": {\n    \"@babel/core\": \"7.0.0\",\n    \"@babel/register\": \"7.0.0\",\n    \"@vue/cli-plugin-babel\": \"4.4.4\",\n    \"@vue/cli-plugin-eslint\": \"4.4.4\",\n    \"@vue/cli-plugin-unit-jest\": \"4.4.4\",\n    \"@vue/cli-service\": \"4.4.4\",\n    \"autoprefixer\": \"9.5.1\",\n    \"babel-eslint\": \"10.1.0\",\n    \"babel-jest\": \"23.6.0\",\n    \"babel-plugin-dynamic-import-node\": \"2.3.3\",\n    \"chalk\": \"2.4.2\",\n    \"chokidar\": \"2.1.5\",\n    \"connect\": \"3.6.6\",\n    \"eslint\": \"6.7.2\",\n    \"eslint-plugin-vue\": \"6.2.2\",\n    \"html-webpack-plugin\": \"3.2.0\",\n    \"husky\": \"1.3.1\",\n    \"lint-staged\": \"8.1.5\",\n    \"runjs\": \"4.3.2\",\n    \"sass\": \"1.26.2\",\n    \"sass-loader\": \"8.0.2\",\n    \"script-ext-html-webpack-plugin\": \"2.1.3\",\n    \"serve-static\": \"1.16.0\",\n    \"svg-sprite-loader\": \"4.1.3\",\n    \"svgo\": \"1.2.0\",\n    \"vue-template-compiler\": \"2.6.10\"\n  },\n  \"engines\": {\n    \"node\": \">=8.9\",\n    \"npm\": \">= 3.0.0\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\"\n  ]\n}\n"
  },
  {
    "path": "litemall-admin/postcss.config.js",
    "content": "module.exports = {\n  plugins: {\n    autoprefixer: {}\n  }\n}\n"
  },
  {
    "path": "litemall-admin/public/index.html",
    "content": "<!DOCTYPE html>\n<html>\n  <head>\n    <meta charset=\"utf-8\">\n    <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge,chrome=1\">\n    <meta name=\"renderer\" content=\"webkit\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no\">\n    <link rel=\"icon\" href=\"<%= BASE_URL %>favicon.ico\">\n    <title><%= webpackConfig.name %></title>\n  </head>\n  <body>\n    <script src=<%= BASE_URL %>/tinymce4.7.5/tinymce.min.js></script>\n    <div id=\"app\"></div>\n    <!-- built files will be auto injected -->\n  </body>\n</html>\n"
  },
  {
    "path": "litemall-admin/public/tinymce4.7.5/langs/zh_CN.js",
    "content": "tinymce.addI18n('zh_CN',{\n\"Cut\": \"\\u526a\\u5207\",\n\"Heading 5\": \"\\u6807\\u98985\",\n\"Header 2\": \"\\u6807\\u98982\",\n\"Your browser doesn't support direct access to the clipboard. Please use the Ctrl+X\\/C\\/V keyboard shortcuts instead.\": \"\\u4f60\\u7684\\u6d4f\\u89c8\\u5668\\u4e0d\\u652f\\u6301\\u5bf9\\u526a\\u8d34\\u677f\\u7684\\u8bbf\\u95ee\\uff0c\\u8bf7\\u4f7f\\u7528Ctrl+X\\/C\\/V\\u952e\\u8fdb\\u884c\\u590d\\u5236\\u7c98\\u8d34\\u3002\",\n\"Heading 4\": \"\\u6807\\u98984\",\n\"Div\": \"Div\\u533a\\u5757\",\n\"Heading 2\": \"\\u6807\\u98982\",\n\"Paste\": \"\\u7c98\\u8d34\",\n\"Close\": \"\\u5173\\u95ed\",\n\"Font Family\": \"\\u5b57\\u4f53\",\n\"Pre\": \"\\u9884\\u683c\\u5f0f\\u6587\\u672c\",\n\"Align right\": \"\\u53f3\\u5bf9\\u9f50\",\n\"New document\": \"\\u65b0\\u6587\\u6863\",\n\"Blockquote\": \"\\u5f15\\u7528\",\n\"Numbered list\": \"\\u7f16\\u53f7\\u5217\\u8868\",\n\"Heading 1\": \"\\u6807\\u98981\",\n\"Headings\": \"\\u6807\\u9898\",\n\"Increase indent\": \"\\u589e\\u52a0\\u7f29\\u8fdb\",\n\"Formats\": \"\\u683c\\u5f0f\",\n\"Headers\": \"\\u6807\\u9898\",\n\"Select all\": \"\\u5168\\u9009\",\n\"Header 3\": \"\\u6807\\u98983\",\n\"Blocks\": \"\\u533a\\u5757\",\n\"Undo\": \"\\u64a4\\u6d88\",\n\"Strikethrough\": \"\\u5220\\u9664\\u7ebf\",\n\"Bullet list\": \"\\u9879\\u76ee\\u7b26\\u53f7\",\n\"Header 1\": \"\\u6807\\u98981\",\n\"Superscript\": \"\\u4e0a\\u6807\",\n\"Clear formatting\": \"\\u6e05\\u9664\\u683c\\u5f0f\",\n\"Font Sizes\": \"\\u5b57\\u53f7\",\n\"Subscript\": \"\\u4e0b\\u6807\",\n\"Header 6\": \"\\u6807\\u98986\",\n\"Redo\": \"\\u91cd\\u590d\",\n\"Paragraph\": \"\\u6bb5\\u843d\",\n\"Ok\": \"\\u786e\\u5b9a\",\n\"Bold\": \"\\u7c97\\u4f53\",\n\"Code\": \"\\u4ee3\\u7801\",\n\"Italic\": \"\\u659c\\u4f53\",\n\"Align center\": \"\\u5c45\\u4e2d\",\n\"Header 5\": \"\\u6807\\u98985\",\n\"Heading 6\": \"\\u6807\\u98986\",\n\"Heading 3\": \"\\u6807\\u98983\",\n\"Decrease indent\": \"\\u51cf\\u5c11\\u7f29\\u8fdb\",\n\"Header 4\": \"\\u6807\\u98984\",\n\"Paste is now in plain text mode. Contents will now be pasted as plain text until you toggle this option off.\": \"\\u5f53\\u524d\\u4e3a\\u7eaf\\u6587\\u672c\\u7c98\\u8d34\\u6a21\\u5f0f\\uff0c\\u518d\\u6b21\\u70b9\\u51fb\\u53ef\\u4ee5\\u56de\\u5230\\u666e\\u901a\\u7c98\\u8d34\\u6a21\\u5f0f\\u3002\",\n\"Underline\": \"\\u4e0b\\u5212\\u7ebf\",\n\"Cancel\": \"\\u53d6\\u6d88\",\n\"Justify\": \"\\u4e24\\u7aef\\u5bf9\\u9f50\",\n\"Inline\": \"\\u6587\\u672c\",\n\"Copy\": \"\\u590d\\u5236\",\n\"Align left\": \"\\u5de6\\u5bf9\\u9f50\",\n\"Visual aids\": \"\\u7f51\\u683c\\u7ebf\",\n\"Lower Greek\": \"\\u5c0f\\u5199\\u5e0c\\u814a\\u5b57\\u6bcd\",\n\"Square\": \"\\u65b9\\u5757\",\n\"Default\": \"\\u9ed8\\u8ba4\",\n\"Lower Alpha\": \"\\u5c0f\\u5199\\u82f1\\u6587\\u5b57\\u6bcd\",\n\"Circle\": \"\\u7a7a\\u5fc3\\u5706\",\n\"Disc\": \"\\u5b9e\\u5fc3\\u5706\",\n\"Upper Alpha\": \"\\u5927\\u5199\\u82f1\\u6587\\u5b57\\u6bcd\",\n\"Upper Roman\": \"\\u5927\\u5199\\u7f57\\u9a6c\\u5b57\\u6bcd\",\n\"Lower Roman\": \"\\u5c0f\\u5199\\u7f57\\u9a6c\\u5b57\\u6bcd\",\n\"Id should start with a letter, followed only by letters, numbers, dashes, dots, colons or underscores.\": \"\\u6807\\u8bc6\\u7b26\\u5e94\\u8be5\\u4ee5\\u5b57\\u6bcd\\u5f00\\u5934\\uff0c\\u540e\\u8ddf\\u5b57\\u6bcd\\u3001\\u6570\\u5b57\\u3001\\u7834\\u6298\\u53f7\\u3001\\u70b9\\u3001\\u5192\\u53f7\\u6216\\u4e0b\\u5212\\u7ebf\\u3002\",\n\"Name\": \"\\u540d\\u79f0\",\n\"Anchor\": \"\\u951a\\u70b9\",\n\"Id\": \"\\u6807\\u8bc6\\u7b26\",\n\"You have unsaved changes are you sure you want to navigate away?\": \"\\u4f60\\u8fd8\\u6709\\u6587\\u6863\\u5c1a\\u672a\\u4fdd\\u5b58\\uff0c\\u786e\\u5b9a\\u8981\\u79bb\\u5f00\\uff1f\",\n\"Restore last draft\": \"\\u6062\\u590d\\u4e0a\\u6b21\\u7684\\u8349\\u7a3f\",\n\"Special character\": \"\\u7279\\u6b8a\\u7b26\\u53f7\",\n\"Source code\": \"\\u6e90\\u4ee3\\u7801\",\n\"Language\": \"\\u8bed\\u8a00\",\n\"Insert\\/Edit code sample\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u4ee3\\u7801\\u793a\\u4f8b\",\n\"B\": \"B\",\n\"R\": \"R\",\n\"G\": \"G\",\n\"Color\": \"\\u989c\\u8272\",\n\"Right to left\": \"\\u4ece\\u53f3\\u5230\\u5de6\",\n\"Left to right\": \"\\u4ece\\u5de6\\u5230\\u53f3\",\n\"Emoticons\": \"\\u8868\\u60c5\",\n\"Robots\": \"\\u673a\\u5668\\u4eba\",\n\"Document properties\": \"\\u6587\\u6863\\u5c5e\\u6027\",\n\"Title\": \"\\u6807\\u9898\",\n\"Keywords\": \"\\u5173\\u952e\\u8bcd\",\n\"Encoding\": \"\\u7f16\\u7801\",\n\"Description\": \"\\u63cf\\u8ff0\",\n\"Author\": \"\\u4f5c\\u8005\",\n\"Fullscreen\": \"\\u5168\\u5c4f\",\n\"Horizontal line\": \"\\u6c34\\u5e73\\u5206\\u5272\\u7ebf\",\n\"Horizontal space\": \"\\u6c34\\u5e73\\u8fb9\\u8ddd\",\n\"Insert\\/edit image\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u56fe\\u7247\",\n\"General\": \"\\u666e\\u901a\",\n\"Advanced\": \"\\u9ad8\\u7ea7\",\n\"Source\": \"\\u5730\\u5740\",\n\"Border\": \"\\u8fb9\\u6846\",\n\"Constrain proportions\": \"\\u4fdd\\u6301\\u7eb5\\u6a2a\\u6bd4\",\n\"Vertical space\": \"\\u5782\\u76f4\\u8fb9\\u8ddd\",\n\"Image description\": \"\\u56fe\\u7247\\u63cf\\u8ff0\",\n\"Style\": \"\\u6837\\u5f0f\",\n\"Dimensions\": \"\\u5927\\u5c0f\",\n\"Insert image\": \"\\u63d2\\u5165\\u56fe\\u7247\",\n\"Image\": \"\\u56fe\\u7247\",\n\"Zoom in\": \"\\u653e\\u5927\",\n\"Contrast\": \"\\u5bf9\\u6bd4\\u5ea6\",\n\"Back\": \"\\u540e\\u9000\",\n\"Gamma\": \"\\u4f3d\\u9a6c\\u503c\",\n\"Flip horizontally\": \"\\u6c34\\u5e73\\u7ffb\\u8f6c\",\n\"Resize\": \"\\u8c03\\u6574\\u5927\\u5c0f\",\n\"Sharpen\": \"\\u9510\\u5316\",\n\"Zoom out\": \"\\u7f29\\u5c0f\",\n\"Image options\": \"\\u56fe\\u7247\\u9009\\u9879\",\n\"Apply\": \"\\u5e94\\u7528\",\n\"Brightness\": \"\\u4eae\\u5ea6\",\n\"Rotate clockwise\": \"\\u987a\\u65f6\\u9488\\u65cb\\u8f6c\",\n\"Rotate counterclockwise\": \"\\u9006\\u65f6\\u9488\\u65cb\\u8f6c\",\n\"Edit image\": \"\\u7f16\\u8f91\\u56fe\\u7247\",\n\"Color levels\": \"\\u989c\\u8272\\u5c42\\u6b21\",\n\"Crop\": \"\\u88c1\\u526a\",\n\"Orientation\": \"\\u65b9\\u5411\",\n\"Flip vertically\": \"\\u5782\\u76f4\\u7ffb\\u8f6c\",\n\"Invert\": \"\\u53cd\\u8f6c\",\n\"Date\\/time\": \"\\u65e5\\u671f\\/\\u65f6\\u95f4\",\n\"Insert date\\/time\": \"\\u63d2\\u5165\\u65e5\\u671f\\/\\u65f6\\u95f4\",\n\"Remove link\": \"\\u5220\\u9664\\u94fe\\u63a5\",\n\"Url\": \"\\u5730\\u5740\",\n\"Text to display\": \"\\u663e\\u793a\\u6587\\u5b57\",\n\"Anchors\": \"\\u951a\\u70b9\",\n\"Insert link\": \"\\u63d2\\u5165\\u94fe\\u63a5\",\n\"Link\": \"\\u94fe\\u63a5\",\n\"New window\": \"\\u5728\\u65b0\\u7a97\\u53e3\\u6253\\u5f00\",\n\"None\": \"\\u65e0\",\n\"The URL you entered seems to be an external link. Do you want to add the required http:\\/\\/ prefix?\": \"\\u4f60\\u6240\\u586b\\u5199\\u7684URL\\u5730\\u5740\\u5c5e\\u4e8e\\u5916\\u90e8\\u94fe\\u63a5\\uff0c\\u9700\\u8981\\u52a0\\u4e0ahttp:\\/\\/:\\u524d\\u7f00\\u5417\\uff1f\",\n\"Paste or type a link\": \"\\u7c98\\u8d34\\u6216\\u8f93\\u5165\\u94fe\\u63a5\",\n\"Target\": \"\\u6253\\u5f00\\u65b9\\u5f0f\",\n\"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?\": \"\\u4f60\\u6240\\u586b\\u5199\\u7684URL\\u5730\\u5740\\u4e3a\\u90ae\\u4ef6\\u5730\\u5740\\uff0c\\u9700\\u8981\\u52a0\\u4e0amailto:\\u524d\\u7f00\\u5417\\uff1f\",\n\"Insert\\/edit link\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u94fe\\u63a5\",\n\"Insert\\/edit video\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u89c6\\u9891\",\n\"Media\": \"\\u5a92\\u4f53\",\n\"Alternative source\": \"\\u955c\\u50cf\",\n\"Paste your embed code below:\": \"\\u5c06\\u5185\\u5d4c\\u4ee3\\u7801\\u7c98\\u8d34\\u5728\\u4e0b\\u9762:\",\n\"Insert video\": \"\\u63d2\\u5165\\u89c6\\u9891\",\n\"Poster\": \"\\u5c01\\u9762\",\n\"Insert\\/edit media\": \"\\u63d2\\u5165\\/\\u7f16\\u8f91\\u5a92\\u4f53\",\n\"Embed\": \"\\u5185\\u5d4c\",\n\"Nonbreaking space\": \"\\u4e0d\\u95f4\\u65ad\\u7a7a\\u683c\",\n\"Page break\": \"\\u5206\\u9875\\u7b26\",\n\"Paste as text\": \"\\u7c98\\u8d34\\u4e3a\\u6587\\u672c\",\n\"Preview\": \"\\u9884\\u89c8\",\n\"Print\": \"\\u6253\\u5370\",\n\"Save\": \"\\u4fdd\\u5b58\",\n\"Could not find the specified string.\": \"\\u672a\\u627e\\u5230\\u641c\\u7d22\\u5185\\u5bb9.\",\n\"Replace\": \"\\u66ff\\u6362\",\n\"Next\": \"\\u4e0b\\u4e00\\u4e2a\",\n\"Whole words\": \"\\u5168\\u5b57\\u5339\\u914d\",\n\"Find and replace\": \"\\u67e5\\u627e\\u548c\\u66ff\\u6362\",\n\"Replace with\": \"\\u66ff\\u6362\\u4e3a\",\n\"Find\": \"\\u67e5\\u627e\",\n\"Replace all\": \"\\u5168\\u90e8\\u66ff\\u6362\",\n\"Match case\": \"\\u533a\\u5206\\u5927\\u5c0f\\u5199\",\n\"Prev\": \"\\u4e0a\\u4e00\\u4e2a\",\n\"Spellcheck\": \"\\u62fc\\u5199\\u68c0\\u67e5\",\n\"Finish\": \"\\u5b8c\\u6210\",\n\"Ignore all\": \"\\u5168\\u90e8\\u5ffd\\u7565\",\n\"Ignore\": \"\\u5ffd\\u7565\",\n\"Add to Dictionary\": \"\\u6dfb\\u52a0\\u5230\\u5b57\\u5178\",\n\"Insert row before\": \"\\u5728\\u4e0a\\u65b9\\u63d2\\u5165\",\n\"Rows\": \"\\u884c\",\n\"Height\": \"\\u9ad8\",\n\"Paste row after\": \"\\u7c98\\u8d34\\u5230\\u4e0b\\u65b9\",\n\"Alignment\": \"\\u5bf9\\u9f50\\u65b9\\u5f0f\",\n\"Border color\": \"\\u8fb9\\u6846\\u989c\\u8272\",\n\"Column group\": \"\\u5217\\u7ec4\",\n\"Row\": \"\\u884c\",\n\"Insert column before\": \"\\u5728\\u5de6\\u4fa7\\u63d2\\u5165\",\n\"Split cell\": \"\\u62c6\\u5206\\u5355\\u5143\\u683c\",\n\"Cell padding\": \"\\u5355\\u5143\\u683c\\u5185\\u8fb9\\u8ddd\",\n\"Cell spacing\": \"\\u5355\\u5143\\u683c\\u5916\\u95f4\\u8ddd\",\n\"Row type\": \"\\u884c\\u7c7b\\u578b\",\n\"Insert table\": \"\\u63d2\\u5165\\u8868\\u683c\",\n\"Body\": \"\\u8868\\u4f53\",\n\"Caption\": \"\\u6807\\u9898\",\n\"Footer\": \"\\u8868\\u5c3e\",\n\"Delete row\": \"\\u5220\\u9664\\u884c\",\n\"Paste row before\": \"\\u7c98\\u8d34\\u5230\\u4e0a\\u65b9\",\n\"Scope\": \"\\u8303\\u56f4\",\n\"Delete table\": \"\\u5220\\u9664\\u8868\\u683c\",\n\"H Align\": \"\\u6c34\\u5e73\\u5bf9\\u9f50\",\n\"Top\": \"\\u9876\\u90e8\\u5bf9\\u9f50\",\n\"Header cell\": \"\\u8868\\u5934\\u5355\\u5143\\u683c\",\n\"Column\": \"\\u5217\",\n\"Row group\": \"\\u884c\\u7ec4\",\n\"Cell\": \"\\u5355\\u5143\\u683c\",\n\"Middle\": \"\\u5782\\u76f4\\u5c45\\u4e2d\",\n\"Cell type\": \"\\u5355\\u5143\\u683c\\u7c7b\\u578b\",\n\"Copy row\": \"\\u590d\\u5236\\u884c\",\n\"Row properties\": \"\\u884c\\u5c5e\\u6027\",\n\"Table properties\": \"\\u8868\\u683c\\u5c5e\\u6027\",\n\"Bottom\": \"\\u5e95\\u90e8\\u5bf9\\u9f50\",\n\"V Align\": \"\\u5782\\u76f4\\u5bf9\\u9f50\",\n\"Header\": \"\\u8868\\u5934\",\n\"Right\": \"\\u53f3\\u5bf9\\u9f50\",\n\"Insert column after\": \"\\u5728\\u53f3\\u4fa7\\u63d2\\u5165\",\n\"Cols\": \"\\u5217\",\n\"Insert row after\": \"\\u5728\\u4e0b\\u65b9\\u63d2\\u5165\",\n\"Width\": \"\\u5bbd\",\n\"Cell properties\": \"\\u5355\\u5143\\u683c\\u5c5e\\u6027\",\n\"Left\": \"\\u5de6\\u5bf9\\u9f50\",\n\"Cut row\": \"\\u526a\\u5207\\u884c\",\n\"Delete column\": \"\\u5220\\u9664\\u5217\",\n\"Center\": \"\\u5c45\\u4e2d\",\n\"Merge cells\": \"\\u5408\\u5e76\\u5355\\u5143\\u683c\",\n\"Insert template\": \"\\u63d2\\u5165\\u6a21\\u677f\",\n\"Templates\": \"\\u6a21\\u677f\",\n\"Background color\": \"\\u80cc\\u666f\\u8272\",\n\"Custom...\": \"\\u81ea\\u5b9a\\u4e49...\",\n\"Custom color\": \"\\u81ea\\u5b9a\\u4e49\\u989c\\u8272\",\n\"No color\": \"\\u65e0\",\n\"Text color\": \"\\u6587\\u5b57\\u989c\\u8272\",\n\"Table of Contents\": \"\\u5185\\u5bb9\\u5217\\u8868\",\n\"Show blocks\": \"\\u663e\\u793a\\u533a\\u5757\\u8fb9\\u6846\",\n\"Show invisible characters\": \"\\u663e\\u793a\\u4e0d\\u53ef\\u89c1\\u5b57\\u7b26\",\n\"Words: {0}\": \"\\u5b57\\u6570\\uff1a{0}\",\n\"Insert\": \"\\u63d2\\u5165\",\n\"File\": \"\\u6587\\u4ef6\",\n\"Edit\": \"\\u7f16\\u8f91\",\n\"Rich Text Area. Press ALT-F9 for menu. Press ALT-F10 for toolbar. Press ALT-0 for help\": \"\\u5728\\u7f16\\u8f91\\u533a\\u6309ALT-F9\\u6253\\u5f00\\u83dc\\u5355\\uff0c\\u6309ALT-F10\\u6253\\u5f00\\u5de5\\u5177\\u680f\\uff0c\\u6309ALT-0\\u67e5\\u770b\\u5e2e\\u52a9\",\n\"Tools\": \"\\u5de5\\u5177\",\n\"View\": \"\\u89c6\\u56fe\",\n\"Table\": \"\\u8868\\u683c\",\n\"Format\": \"\\u683c\\u5f0f\"\n});"
  },
  {
    "path": "litemall-admin/public/tinymce4.7.5/plugins/codesample/css/prism.css",
    "content": "/* http://prismjs.com/download.html?themes=prism&languages=markup+css+clike+javascript */\n/**\n * prism.js default theme for JavaScript, CSS and HTML\n * Based on dabblet (http://dabblet.com)\n * @author Lea Verou\n */\n\ncode[class*=\"language-\"],\npre[class*=\"language-\"] {\n  color: black;\n  text-shadow: 0 1px white;\n  font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;\n  direction: ltr;\n  text-align: left;\n  white-space: pre;\n  word-spacing: normal;\n  word-break: normal;\n  word-wrap: normal;\n  line-height: 1.5;\n\n  -moz-tab-size: 4;\n  -o-tab-size: 4;\n  tab-size: 4;\n\n  -webkit-hyphens: none;\n  -moz-hyphens: none;\n  -ms-hyphens: none;\n  hyphens: none;\n}\n\npre[class*=\"language-\"]::-moz-selection, pre[class*=\"language-\"] ::-moz-selection,\ncode[class*=\"language-\"]::-moz-selection, code[class*=\"language-\"] ::-moz-selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\npre[class*=\"language-\"]::selection, pre[class*=\"language-\"] ::selection,\ncode[class*=\"language-\"]::selection, code[class*=\"language-\"] ::selection {\n  text-shadow: none;\n  background: #b3d4fc;\n}\n\n@media print {\n  code[class*=\"language-\"],\n  pre[class*=\"language-\"] {\n    text-shadow: none;\n  }\n}\n\n/* Code blocks */\npre[class*=\"language-\"] {\n  padding: 1em;\n  margin: .5em 0;\n  overflow: auto;\n}\n\n:not(pre) > code[class*=\"language-\"],\npre[class*=\"language-\"] {\n  background: #f5f2f0;\n}\n\n/* Inline code */\n:not(pre) > code[class*=\"language-\"] {\n  padding: .1em;\n  border-radius: .3em;\n}\n\n.token.comment,\n.token.prolog,\n.token.doctype,\n.token.cdata {\n  color: slategray;\n}\n\n.token.punctuation {\n  color: #999;\n}\n\n.namespace {\n  opacity: .7;\n}\n\n.token.property,\n.token.tag,\n.token.boolean,\n.token.number,\n.token.constant,\n.token.symbol,\n.token.deleted {\n  color: #905;\n}\n\n.token.selector,\n.token.attr-name,\n.token.string,\n.token.char,\n.token.builtin,\n.token.inserted {\n  color: #690;\n}\n\n.token.operator,\n.token.entity,\n.token.url,\n.language-css .token.string,\n.style .token.string {\n  color: #a67f59;\n  background: hsla(0, 0%, 100%, .5);\n}\n\n.token.atrule,\n.token.attr-value,\n.token.keyword {\n  color: #07a;\n}\n\n.token.function {\n  color: #DD4A68;\n}\n\n.token.regex,\n.token.important,\n.token.variable {\n  color: #e90;\n}\n\n.token.important,\n.token.bold {\n  font-weight: bold;\n}\n.token.italic {\n  font-style: italic;\n}\n\n.token.entity {\n  cursor: help;\n}\n\n"
  },
  {
    "path": "litemall-admin/public/tinymce4.7.5/plugins/visualblocks/css/visualblocks.css",
    "content": ".mce-visualblocks p {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhCQAJAJEAAAAAAP///7u7u////yH5BAEAAAMALAAAAAAJAAkAAAIQnG+CqCN/mlyvsRUpThG6AgA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h1 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGu1JuxHoAfRNRW3TWXyF2YiRUAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h2 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8Hybbx4oOuqgTynJd6bGlWg3DkJzoaUAAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h3 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIZjI8Hybbx4oOuqgTynJf2Ln2NOHpQpmhAAQA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h4 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxInR0zqeAdhtJlXwV1oCll2HaWgAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h5 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjane4iq5GlW05GgIkIZUAAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks h6 {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDgAKAIABALu7u////yH5BAEAAAEALAAAAAAOAAoAAAIajI8HybbxIoiuwjan04jep1iZ1XRlAo5bVgAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks div:not([data-mce-bogus]) {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhEgAKAIABALu7u////yH5BAEAAAEALAAAAAASAAoAAAIfjI9poI0cgDywrhuxfbrzDEbQM2Ei5aRjmoySW4pAAQA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks section {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhKAAKAIABALu7u////yH5BAEAAAEALAAAAAAoAAoAAAI5jI+pywcNY3sBWHdNrplytD2ellDeSVbp+GmWqaDqDMepc8t17Y4vBsK5hDyJMcI6KkuYU+jpjLoKADs=);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks article {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhKgAKAIABALu7u////yH5BAEAAAEALAAAAAAqAAoAAAI6jI+pywkNY3wG0GBvrsd2tXGYSGnfiF7ikpXemTpOiJScasYoDJJrjsG9gkCJ0ag6KhmaIe3pjDYBBQA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks blockquote {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  background-image: url(data:image/gif;base64,R0lGODlhPgAKAIABALu7u////yH5BAEAAAEALAAAAAA+AAoAAAJPjI+py+0Knpz0xQDyuUhvfoGgIX5iSKZYgq5uNL5q69asZ8s5rrf0yZmpNkJZzFesBTu8TOlDVAabUyatguVhWduud3EyiUk45xhTTgMBBQA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks address {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhLQAKAIABALu7u////yH5BAEAAAEALAAAAAAtAAoAAAI/jI+pywwNozSP1gDyyZcjb3UaRpXkWaXmZW4OqKLhBmLs+K263DkJK7OJeifh7FicKD9A1/IpGdKkyFpNmCkAADs=);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks pre {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin-left: 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhFQAKAIABALu7uwAAACH5BAEAAAEALAAAAAAVAAoAAAIjjI+ZoN0cgDwSmnpz1NCueYERhnibZVKLNnbOq8IvKpJtVQAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks figure {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhJAAKAIAAALu7u////yH5BAEAAAEALAAAAAAkAAoAAAI0jI+py+2fwAHUSFvD3RlvG4HIp4nX5JFSpnZUJ6LlrM52OE7uSWosBHScgkSZj7dDKnWAAgA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks hgroup {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhJwAKAIABALu7uwAAACH5BAEAAAEALAAAAAAnAAoAAAI3jI+pywYNI3uB0gpsRtt5fFnfNZaVSYJil4Wo03Hv6Z62uOCgiXH1kZIIJ8NiIxRrAZNMZAtQAAA7);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks aside {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhHgAKAIABAKqqqv///yH5BAEAAAEALAAAAAAeAAoAAAItjI+pG8APjZOTzgtqy7I3f1yehmQcFY4WKZbqByutmW4aHUd6vfcVbgudgpYCADs=);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks figcaption {\n  border: 1px dashed #BBB;\n}\n\n.mce-visualblocks ul {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIAAALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybGuYnqUVSjvw26DzzXiqIDlVwAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks ol {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybH6HHt0qourxC6CvzXieHyeWQAAOw==);\n  background-repeat: no-repeat;\n}\n\n.mce-visualblocks dl {\n  padding-top: 10px;\n  border: 1px dashed #BBB;\n  margin: 0 0 1em 3px;\n  background-image: url(data:image/gif;base64,R0lGODlhDQAKAIABALu7u////yH5BAEAAAEALAAAAAANAAoAAAIXjI8GybEOnmOvUoWznTqeuEjNSCqeGRUAOw==);\n  background-repeat: no-repeat;\n}\n"
  },
  {
    "path": "litemall-admin/src/App.vue",
    "content": "<template>\n  <div id=\"app\">\n    <router-view/>\n  </div>\n</template>\n\n<script>\nexport default{\n  name: 'App'\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/api/ad.js",
    "content": "import request from '@/utils/request'\n\nexport function listAd(query) {\n  return request({\n    url: '/ad/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createAd(data) {\n  return request({\n    url: '/ad/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readAd(data) {\n  return request({\n    url: '/ad/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateAd(data) {\n  return request({\n    url: '/ad/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteAd(data) {\n  return request({\n    url: '/ad/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/admin.js",
    "content": "import request from '@/utils/request'\n\nexport function listAdmin(query) {\n  return request({\n    url: '/admin/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createAdmin(data) {\n  return request({\n    url: '/admin/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readminAdmin(data) {\n  return request({\n    url: '/admin/readmin',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateAdmin(data) {\n  return request({\n    url: '/admin/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteAdmin(data) {\n  return request({\n    url: '/admin/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/aftersale.js",
    "content": "import request from '@/utils/request'\n\nexport function listAftersale(query) {\n  return request({\n    url: '/aftersale/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function receptAftersale(data) {\n  return request({\n    url: '/aftersale/recept',\n    method: 'post',\n    data\n  })\n}\n\nexport function batchReceptAftersale(data) {\n  return request({\n    url: '/aftersale/batch-recept',\n    method: 'post',\n    data\n  })\n}\n\nexport function rejectAftersale(data) {\n  return request({\n    url: '/aftersale/reject',\n    method: 'post',\n    data\n  })\n}\n\nexport function batchRejectAftersale(data) {\n  return request({\n    url: '/aftersale/batch-reject',\n    method: 'post',\n    data\n  })\n}\n\nexport function refundAftersale(data) {\n  return request({\n    url: '/aftersale/refund',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/brand.js",
    "content": "import request from '@/utils/request'\n\nexport function listBrand(query) {\n  return request({\n    url: '/brand/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createBrand(data) {\n  return request({\n    url: '/brand/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readBrand(data) {\n  return request({\n    url: '/brand/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateBrand(data) {\n  return request({\n    url: '/brand/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteBrand(data) {\n  return request({\n    url: '/brand/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/category.js",
    "content": "import request from '@/utils/request'\n\nexport function listCategory(query) {\n  return request({\n    url: '/category/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listCatL1() {\n  return request({\n    url: '/category/l1',\n    method: 'get'\n  })\n}\n\nexport function createCategory(data) {\n  return request({\n    url: '/category/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readCategory(data) {\n  return request({\n    url: '/category/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateCategory(data) {\n  return request({\n    url: '/category/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteCategory(data) {\n  return request({\n    url: '/category/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/comment.js",
    "content": "import request from '@/utils/request'\n\nexport function listComment(query) {\n  return request({\n    url: '/comment/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function deleteComment(data) {\n  return request({\n    url: '/comment/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/config.js",
    "content": "import request from '@/utils/request'\n\nexport function listMall() {\n  return request({\n    url: '/config/mall',\n    method: 'get'\n  })\n}\n\nexport function updateMall(data) {\n  return request({\n    url: '/config/mall',\n    method: 'post',\n    data\n  })\n}\n\nexport function listExpress() {\n  return request({\n    url: '/config/express',\n    method: 'get'\n  })\n}\n\nexport function updateExpress(data) {\n  return request({\n    url: '/config/express',\n    method: 'post',\n    data\n  })\n}\n\nexport function listOrder() {\n  return request({\n    url: '/config/order',\n    method: 'get'\n  })\n}\n\nexport function updateOrder(data) {\n  return request({\n    url: '/config/order',\n    method: 'post',\n    data\n  })\n}\n\nexport function listWx() {\n  return request({\n    url: '/config/wx',\n    method: 'get'\n  })\n}\n\nexport function updateWx(data) {\n  return request({\n    url: '/config/wx',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/coupon.js",
    "content": "import request from '@/utils/request'\n\nexport function listCoupon(query) {\n  return request({\n    url: '/coupon/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createCoupon(data) {\n  return request({\n    url: '/coupon/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readCoupon(id) {\n  return request({\n    url: '/coupon/read',\n    method: 'get',\n    params: { id }\n  })\n}\n\nexport function updateCoupon(data) {\n  return request({\n    url: '/coupon/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteCoupon(data) {\n  return request({\n    url: '/coupon/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function listCouponUser(query) {\n  return request({\n    url: '/coupon/listuser',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/dashboard.js",
    "content": "import request from '@/utils/request'\n\nexport function info(query) {\n  return request({\n    url: '/dashboard',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/goods.js",
    "content": "import request from '@/utils/request'\n\nexport function listGoods(query) {\n  return request({\n    url: '/goods/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function deleteGoods(data) {\n  return request({\n    url: '/goods/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function publishGoods(data) {\n  return request({\n    url: '/goods/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function detailGoods(id) {\n  return request({\n    url: '/goods/detail',\n    method: 'get',\n    params: { id }\n  })\n}\n\nexport function editGoods(data) {\n  return request({\n    url: '/goods/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function listCatAndBrand() {\n  return request({\n    url: '/goods/catAndBrand',\n    method: 'get'\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/groupon.js",
    "content": "import request from '@/utils/request'\n\nexport function listRecord(query) {\n  return request({\n    url: '/groupon/listRecord',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listGroupon(query) {\n  return request({\n    url: '/groupon/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function deleteGroupon(data) {\n  return request({\n    url: '/groupon/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function publishGroupon(data) {\n  return request({\n    url: '/groupon/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function editGroupon(data) {\n  return request({\n    url: '/groupon/update',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/issue.js",
    "content": "import request from '@/utils/request'\n\nexport function listIssue(query) {\n  return request({\n    url: '/issue/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createIssue(data) {\n  return request({\n    url: '/issue/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readIssue(data) {\n  return request({\n    url: '/issue/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateIssue(data) {\n  return request({\n    url: '/issue/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteIssue(data) {\n  return request({\n    url: '/issue/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/keyword.js",
    "content": "import request from '@/utils/request'\n\nexport function listKeyword(query) {\n  return request({\n    url: '/keyword/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createKeyword(data) {\n  return request({\n    url: '/keyword/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readKeyword(data) {\n  return request({\n    url: '/keyword/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateKeyword(data) {\n  return request({\n    url: '/keyword/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteKeyword(data) {\n  return request({\n    url: '/keyword/delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/log.js",
    "content": "import request from '@/utils/request'\n\nexport function listLog(query) {\n  return request({\n    url: '/log/list',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/login.js",
    "content": "import request from '@/utils/request'\n\nexport function loginByUsername(username, password, code) {\n  const data = {\n    username,\n    password,\n    code\n  }\n  return request({\n    url: '/auth/login',\n    method: 'post',\n    data\n  })\n}\n\nexport function logout() {\n  return request({\n    url: '/auth/logout',\n    method: 'post'\n  })\n}\n\nexport function getUserInfo(token) {\n  return request({\n    url: '/auth/info',\n    method: 'get',\n    params: { token }\n  })\n}\n\nexport function getKaptcha() {\n  return request({\n    url: '/auth/kaptcha',\n    method: 'get'\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/notice.js",
    "content": "import request from '@/utils/request'\n\nexport function listNotice(query) {\n  return request({\n    url: '/notice/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createNotice(data) {\n  return request({\n    url: '/notice/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readNotice(query) {\n  return request({\n    url: '/notice/read',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function updateNotice(data) {\n  return request({\n    url: '/notice/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteNotice(data) {\n  return request({\n    url: '/notice/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function batchDeleteNotice(data) {\n  return request({\n    url: '/notice/batch-delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/order.js",
    "content": "import request from '@/utils/request'\nimport Qs from 'qs'\n\nexport function listOrder(query) {\n  return request({\n    url: '/order/list',\n    method: 'get',\n    params: query,\n    paramsSerializer: {\n      serialize: (params) => Qs.stringify(params, { arrayFormat: 'repeat' })\n    }\n  })\n}\n\nexport function detailOrder(id) {\n  return request({\n    url: '/order/detail',\n    method: 'get',\n    params: { id }\n  })\n}\n\nexport function shipOrder(data) {\n  return request({\n    url: '/order/ship',\n    method: 'post',\n    data\n  })\n}\n\nexport function refundOrder(data) {\n  return request({\n    url: '/order/refund',\n    method: 'post',\n    data\n  })\n}\n\nexport function payOrder(data) {\n  return request({\n    url: '/order/pay',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteOrder(data) {\n  return request({\n    url: '/order/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function replyComment(data) {\n  return request({\n    url: '/order/reply',\n    method: 'post',\n    data\n  })\n}\n\nexport function listChannel(id) {\n  return request({\n    url: '/order/channel',\n    method: 'get'\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/profile.js",
    "content": "import request from '@/utils/request'\n\nexport function changePassword(data) {\n  return request({\n    url: '/profile/password',\n    method: 'post',\n    data\n  })\n}\n\nexport function nNotice() {\n  return request({\n    url: '/profile/nnotice',\n    method: 'get'\n  })\n}\n\nexport function listNotice(query) {\n  return request({\n    url: '/profile/lsnotice',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function catNotice(data) {\n  return request({\n    url: '/profile/catnotice',\n    method: 'post',\n    data\n  })\n}\n\nexport function bcatNotice(data) {\n  return request({\n    url: '/profile/bcatnotice',\n    method: 'post',\n    data\n  })\n}\n\nexport function rmotice(data) {\n  return request({\n    url: '/profile/rmnotice',\n    method: 'post',\n    data\n  })\n}\n\nexport function brmNotice(data) {\n  return request({\n    url: '/profile/brmnotice',\n    method: 'post',\n    data\n  })\n}\n\n"
  },
  {
    "path": "litemall-admin/src/api/region.js",
    "content": "import request from '@/utils/request'\n\nexport function listRegion() {\n  return request({\n    url: '/region/list',\n    method: 'get'\n  })\n}\n\nexport function listSubRegion(query) {\n  return request({\n    url: '/region/clist',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/role.js",
    "content": "import request from '@/utils/request'\n\nexport function listRole(query) {\n  return request({\n    url: '/role/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createRole(data) {\n  return request({\n    url: '/role/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readRole(data) {\n  return request({\n    url: '/role/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateRole(data) {\n  return request({\n    url: '/role/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteRole(data) {\n  return request({\n    url: '/role/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function getPermission(query) {\n  return request({\n    url: '/role/permissions',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function updatePermission(data) {\n  return request({\n    url: '/role/permissions',\n    method: 'post',\n    data\n  })\n}\n\nexport function roleOptions(query) {\n  return request({\n    url: '/role/options',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/stat.js",
    "content": "import request from '@/utils/request'\n\nexport function statUser(query) {\n  return request({\n    url: '/stat/user',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function statOrder(query) {\n  return request({\n    url: '/stat/order',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function statGoods(query) {\n  return request({\n    url: '/stat/goods',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/storage.js",
    "content": "import request from '@/utils/request'\n\nexport function listStorage(query) {\n  return request({\n    url: '/storage/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createStorage(data) {\n  return request({\n    url: '/storage/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readStorage(data) {\n  return request({\n    url: '/storage/read',\n    method: 'get',\n    data\n  })\n}\n\nexport function updateStorage(data) {\n  return request({\n    url: '/storage/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteStorage(data) {\n  return request({\n    url: '/storage/delete',\n    method: 'post',\n    data\n  })\n}\n\nconst uploadPath = process.env.VUE_APP_BASE_API + '/storage/create'\nexport { uploadPath }\n"
  },
  {
    "path": "litemall-admin/src/api/topic.js",
    "content": "import request from '@/utils/request'\n\nexport function listTopic(query) {\n  return request({\n    url: '/topic/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function createTopic(data) {\n  return request({\n    url: '/topic/create',\n    method: 'post',\n    data\n  })\n}\n\nexport function readTopic(query) {\n  return request({\n    url: '/topic/read',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function updateTopic(data) {\n  return request({\n    url: '/topic/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function deleteTopic(data) {\n  return request({\n    url: '/topic/delete',\n    method: 'post',\n    data\n  })\n}\n\nexport function batchDeleteTopic(data) {\n  return request({\n    url: '/topic/batch-delete',\n    method: 'post',\n    data\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/api/user.js",
    "content": "import request from '@/utils/request'\n\nexport function fetchList(query) {\n  return request({\n    url: '/user/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function userDetail(id) {\n  return request({\n    url: '/user/detail',\n    method: 'get',\n    params: {id}\n  })\n}\n\nexport function updateUser(data) {\n  return request({\n    url: '/user/update',\n    method: 'post',\n    data\n  })\n}\n\nexport function listAddress(query) {\n  return request({\n    url: '/address/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listCollect(query) {\n  return request({\n    url: '/collect/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listFeedback(query) {\n  return request({\n    url: '/feedback/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listFootprint(query) {\n  return request({\n    url: '/footprint/list',\n    method: 'get',\n    params: query\n  })\n}\n\nexport function listHistory(query) {\n  return request({\n    url: '/history/list',\n    method: 'get',\n    params: query\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/components/BackToTop/index.vue",
    "content": "<template>\n  <transition :name=\"transitionName\">\n    <div v-show=\"visible\" :style=\"customStyle\" class=\"back-to-ceiling\" @click=\"backToTop\">\n      <svg width=\"16\" height=\"16\" viewBox=\"0 0 17 17\" xmlns=\"http://www.w3.org/2000/svg\" class=\"Icon Icon--backToTopArrow\" aria-hidden=\"true\" style=\"height: 16px; width: 16px;\">\n        <title>{{ $t('app.button.back_to_top') }}</title>\n        <g>\n          <path d=\"M12.036 15.59c0 .55-.453.995-.997.995H5.032c-.55 0-.997-.445-.997-.996V8.584H1.03c-1.1 0-1.36-.633-.578-1.416L7.33.29c.39-.39 1.026-.385 1.412 0l6.878 6.88c.782.78.523 1.415-.58 1.415h-3.004v7.004z\" fill-rule=\"evenodd\"/>\n        </g>\n      </svg>\n    </div>\n  </transition>\n</template>\n\n<script>\nexport default {\n  name: 'BackToTop',\n  props: {\n    visibilityHeight: {\n      type: Number,\n      default: 400\n    },\n    backPosition: {\n      type: Number,\n      default: 0\n    },\n    customStyle: {\n      type: Object,\n      default: function() {\n        return {\n          right: '50px',\n          bottom: '50px',\n          width: '40px',\n          height: '40px',\n          'border-radius': '4px',\n          'line-height': '45px',\n          background: '#e7eaf1'\n        }\n      }\n    },\n    transitionName: {\n      type: String,\n      default: 'fade'\n    }\n  },\n  data() {\n    return {\n      visible: false,\n      interval: null,\n      isMoving: false\n    }\n  },\n  mounted() {\n    window.addEventListener('scroll', this.handleScroll)\n  },\n  beforeDestroy() {\n    window.removeEventListener('scroll', this.handleScroll)\n    if (this.interval) {\n      clearInterval(this.interval)\n    }\n  },\n  methods: {\n    handleScroll() {\n      this.visible = window.pageYOffset > this.visibilityHeight\n    },\n    backToTop() {\n      if (this.isMoving) return\n      const start = window.pageYOffset\n      let i = 0\n      this.isMoving = true\n      this.interval = setInterval(() => {\n        const next = Math.floor(this.easeInOutQuad(10 * i, start, -start, 500))\n        if (next <= this.backPosition) {\n          window.scrollTo(0, this.backPosition)\n          clearInterval(this.interval)\n          this.isMoving = false\n        } else {\n          window.scrollTo(0, next)\n        }\n        i++\n      }, 16.7)\n    },\n    easeInOutQuad(t, b, c, d) {\n      if ((t /= d / 2) < 1) return c / 2 * t * t + b\n      return -c / 2 * (--t * (t - 2) - 1) + b\n    }\n  }\n}\n</script>\n\n<style scoped>\n  .back-to-ceiling {\n    position: fixed;\n    display: inline-block;\n    text-align: center;\n    cursor: pointer;\n  }\n\n  .back-to-ceiling:hover {\n    background: #d5dbe7;\n  }\n\n  .fade-enter-active,\n  .fade-leave-active {\n    transition: opacity .5s;\n  }\n\n  .fade-enter,\n  .fade-leave-to {\n    opacity: 0\n  }\n\n  .back-to-ceiling .Icon {\n    fill: #9aaabf;\n    background: none;\n  }\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/Breadcrumb/index.vue",
    "content": "<template>\n  <el-breadcrumb class=\"app-breadcrumb\" separator=\"/\">\n    <transition-group name=\"breadcrumb\">\n      <el-breadcrumb-item v-for=\"(item, index) in levelList\" :key=\"item.path\">\n        <span v-if=\"item.redirect === 'noredirect' || index == levelList.length - 1\" class=\"no-redirect\">{{ $t(item.meta.title) }}</span>\n        <a v-else @click.prevent=\"handleLink(item)\">{{ $t(item.meta.title) }}</a>\n      </el-breadcrumb-item>\n    </transition-group>\n  </el-breadcrumb>\n</template>\n\n<script>\nimport pathToRegexp from 'path-to-regexp'\n\nexport default {\n  data() {\n    return {\n      levelList: null\n    }\n  },\n  watch: {\n    $route(route) {\n      // if you go to the redirect page, do not update the breadcrumbs\n      if (route.path.startsWith('/redirect/')) {\n        return\n      }\n      this.getBreadcrumb()\n    }\n  },\n  created() {\n    this.getBreadcrumb()\n  },\n  methods: {\n    getBreadcrumb() {\n      // only show routes with meta.title\n      let matched = this.$route.matched.filter(\n        item => item.meta && item.meta.title\n      )\n      const first = matched[0]\n      if (!this.isDashboard(first)) {\n        matched = [{ path: '/dashboard', meta: { title: 'app.menu.dashboard' }}].concat(matched)\n      }\n      this.levelList = matched.filter(\n        item => item.meta && item.meta.title && item.meta.breadcrumb !== false\n      )\n    },\n    isDashboard(route) {\n      const name = route && route.name\n      if (!name) {\n        return false\n      }\n      return (\n        name.trim().toLocaleLowerCase() === 'Dashboard'.toLocaleLowerCase())\n    },\n    pathCompile(path) {\n      // To solve this problem https://github.com/PanJiaChen/vue-element-admin/issues/561\n      const { params } = this.$route\n      var toPath = pathToRegexp.compile(path)\n      return toPath(params)\n    },\n    handleLink(item) {\n      const { redirect, path } = item\n      if (redirect) {\n        this.$router.push(redirect)\n        return\n      }\n      this.$router.push(this.pathCompile(path))\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.app-breadcrumb.el-breadcrumb {\n  display: inline-block;\n  font-size: 14px;\n  line-height: 50px;\n  margin-left: 10px;\n  .no-redirect {\n    color: #97a8be;\n    cursor: text;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/Hamburger/index.vue",
    "content": "<template>\n  <div>\n    <svg\n      :class=\"{'is-active':isActive}\"\n      t=\"1492500959545\"\n      class=\"hamburger\"\n      style=\"\"\n      viewBox=\"0 0 1024 1024\"\n      version=\"1.1\"\n      xmlns=\"http://www.w3.org/2000/svg\"\n      p-id=\"1691\"\n      xmlns:xlink=\"http://www.w3.org/1999/xlink\"\n      width=\"64\"\n      height=\"64\"\n      @click=\"toggleClick\">\n      <path\n        d=\"M966.8023 568.849776 57.196677 568.849776c-31.397081 0-56.850799-25.452695-56.850799-56.850799l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 543.397081 998.200404 568.849776 966.8023 568.849776z\"\n        p-id=\"1692\"/>\n      <path\n        d=\"M966.8023 881.527125 57.196677 881.527125c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.849776 56.850799-56.849776l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.849776l0 0C1023.653099 856.07443 998.200404 881.527125 966.8023 881.527125z\"\n        p-id=\"1693\"/>\n      <path\n        d=\"M966.8023 256.17345 57.196677 256.17345c-31.397081 0-56.850799-25.452695-56.850799-56.849776l0 0c0-31.397081 25.452695-56.850799 56.850799-56.850799l909.605623 0c31.397081 0 56.849776 25.452695 56.849776 56.850799l0 0C1023.653099 230.720755 998.200404 256.17345 966.8023 256.17345z\"\n        p-id=\"1694\"/>\n    </svg>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'Hamburger',\n  props: {\n    isActive: {\n      type: Boolean,\n      default: false\n    },\n    toggleClick: {\n      type: Function,\n      default: null\n    }\n  }\n}\n</script>\n\n<style scoped>\n.hamburger {\n  display: inline-block;\n  cursor: pointer;\n  width: 20px;\n  height: 20px;\n  transform: rotate(90deg);\n  transition: .38s;\n  transform-origin: 50% 50%;\n}\n\n.hamburger.is-active {\n  transform: rotate(0deg);\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/LocaleChanger/index.vue",
    "content": "<!-- https://kazupon.github.io/vue-i18n/guide/locale.html -->\n<template>\n  <el-select v-model=\"$i18n.locale\" size=\"mini\" placeholder=\"lang\" class=\"select\">\n    <el-option v-for=\"(lang, i) in langs\" :key=\"`Lang${i}`\" :label=\"lang.label\" :value=\"lang.value\" />\n  </el-select>\n</template>\n\n<script>\nexport default {\n  name: 'LocaleChanger',\n  data() {\n    return {\n      langs: Object.entries(this.$i18n.messages)\n        .map(([key, messages]) => ({\n          label: messages.lang ?? key,\n          value: key\n        }))\n    }\n  }\n}\n</script>\n\n<style>\n.select {\n  width: 180px;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/Notice/index.vue",
    "content": "<template>\n  <div>\n    <el-badge :is-dot=\"hasNotice\">\n      <i class=\"el-icon-bell\" @click=\"click\" />\n    </el-badge>\n  </div>\n</template>\n\n<script>\nimport { nNotice } from '@/api/profile'\n\nexport default {\n  data() {\n    return {\n      hasNotice: false,\n      timer: ''\n    }\n  },\n  mounted() {\n    this.timer = setInterval(this.checkNotice, 30 * 1000)\n  },\n  beforeDestroy() {\n    clearInterval(this.timer)\n  },\n  created() {\n    this.checkNotice()\n  },\n  methods: {\n    click() {\n      this.$router.push({ path: '/profile/notice' })\n    },\n    checkNotice() {\n      if (this.hasNotice) {\n        return\n      }\n      nNotice().then(response => {\n        this.hasNotice = response.data.data > 0\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n::v-deep .el-badge__content.is-fixed.is-dot {\n  right: 5px;\n  top: 10px;\n}\n\n.el-icon-bell {\n  font-size: 20px;\n  cursor: pointer;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/Pagination/index.vue",
    "content": "<template>\n  <div :class=\"{'hidden':hidden}\" class=\"pagination-container\">\n    <el-pagination\n      :background=\"background\"\n      :current-page.sync=\"currentPage\"\n      :page-size.sync=\"pageSize\"\n      :layout=\"layout\"\n      :total=\"total\"\n      v-bind=\"$attrs\"\n      @size-change=\"handleSizeChange\"\n      @current-change=\"handleCurrentChange\"/>\n  </div>\n</template>\n\n<script>\nimport { scrollTo } from '@/utils/scrollTo'\n\nexport default {\n  name: 'Pagination',\n  props: {\n    total: {\n      required: true,\n      type: Number\n    },\n    page: {\n      type: Number,\n      default: 1\n    },\n    limit: {\n      type: Number,\n      default: 20\n    },\n    pageSizes: {\n      type: Array,\n      default() {\n        return [10, 20, 30, 50]\n      }\n    },\n    layout: {\n      type: String,\n      default: 'total, sizes, prev, pager, next, jumper'\n    },\n    background: {\n      type: Boolean,\n      default: true\n    },\n    autoScroll: {\n      type: Boolean,\n      default: true\n    },\n    hidden: {\n      type: Boolean,\n      default: false\n    }\n  },\n  computed: {\n    currentPage: {\n      get() {\n        return this.page\n      },\n      set(val) {\n        this.$emit('update:page', val)\n      }\n    },\n    pageSize: {\n      get() {\n        return this.limit\n      },\n      set(val) {\n        this.$emit('update:limit', val)\n      }\n    }\n  },\n  methods: {\n    handleSizeChange(val) {\n      this.$emit('pagination', { page: this.currentPage, limit: val })\n      if (this.autoScroll) {\n        scrollTo(0, 800)\n      }\n    },\n    handleCurrentChange(val) {\n      this.$emit('pagination', { page: val, limit: this.pageSize })\n      if (this.autoScroll) {\n        scrollTo(0, 800)\n      }\n    }\n  }\n}\n</script>\n\n<style scoped>\n.pagination-container {\n  background: #fff;\n  padding: 32px 16px;\n}\n.pagination-container.hidden {\n  display: none;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/Screenfull/index.vue",
    "content": "<template>\n  <div>\n    <i class=\"el-icon-full-screen\" @click=\"click\" />\n  </div>\n</template>\n\n<script>\nimport screenfull from 'screenfull'\n\nexport default {\n  name: 'Screenfull',\n  props: {\n    width: {\n      type: Number,\n      default: 22\n    },\n    height: {\n      type: Number,\n      default: 22\n    },\n    fill: {\n      type: String,\n      default: '#48576a'\n    }\n  },\n  data() {\n    return {\n      isFullscreen: false\n    }\n  },\n  methods: {\n    click() {\n      if (!screenfull.enabled) {\n        this.$message({\n          message: '浏览器不支持全屏',\n          type: 'warning'\n        })\n        return false\n      }\n      screenfull.toggle()\n    }\n  }\n}\n</script>\n\n<style scoped>\n.el-icon-full-screen {\n  display: inline-block;\n  cursor: pointer;\n  fill: #5a5e66;;\n  width: 20px;\n  height: 20px;\n  font-size: 20px;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/ScrollPane/index.vue",
    "content": "<template>\n  <el-scrollbar ref=\"scrollContainer\" :vertical=\"false\" class=\"scroll-container\" @wheel.native.prevent=\"handleScroll\">\n    <slot />\n  </el-scrollbar>\n</template>\n\n<script>\nconst tagAndTagSpacing = 4 // tagAndTagSpacing\n\nexport default {\n  name: 'ScrollPane',\n  data() {\n    return {\n      left: 0\n    }\n  },\n  methods: {\n    handleScroll(e) {\n      const eventDelta = e.wheelDelta || -e.deltaY * 40\n      const $scrollWrapper = this.$refs.scrollContainer.$refs.wrap\n      $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4\n    },\n    moveToTarget(currentTag) {\n      const $container = this.$refs.scrollContainer.$el\n      const $containerWidth = $container.offsetWidth\n      const $scrollWrapper = this.$refs.scrollContainer.$refs.wrap\n      const tagList = this.$parent.$refs.tag\n\n      let firstTag = null\n      let lastTag = null\n      let prevTag = null\n      let nextTag = null\n\n      // find first tag and last tag\n      if (tagList.length > 0) {\n        firstTag = tagList[0]\n        lastTag = tagList[tagList.length - 1]\n      }\n\n      // find preTag and nextTag\n      for (let i = 0; i < tagList.length; i++) {\n        if (tagList[i] === currentTag) {\n          if (i === 0) {\n            nextTag = tagList[i].length > 1 && tagList[i + 1]\n          } else if (i === tagList.length - 1) {\n            prevTag = tagList[i].length > 1 && tagList[i - 1]\n          } else {\n            prevTag = tagList[i - 1]\n            nextTag = tagList[i + 1]\n          }\n          break\n        }\n      }\n\n      if (firstTag === currentTag) {\n        $scrollWrapper.scrollLeft = 0\n      } else if (lastTag === currentTag) {\n        $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth\n      } else {\n        // the tag's offsetLeft after of nextTag\n        const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing\n\n        // the tag's offsetLeft before of prevTag\n        const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagAndTagSpacing\n\n        if (afterNextTagOffsetLeft > $scrollWrapper.scrollLeft + $containerWidth) {\n          $scrollWrapper.scrollLeft = afterNextTagOffsetLeft - $containerWidth\n        } else if (beforePrevTagOffsetLeft < $scrollWrapper.scrollLeft) {\n          $scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\n        }\n      }\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.scroll-container {\n  white-space: nowrap;\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  ::v-deep {\n    .el-scrollbar__bar {\n      bottom: 0px;\n    }\n    .el-scrollbar__wrap {\n      height: 49px;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/components/SizeSelect/index.vue",
    "content": "<template>\n  <el-dropdown trigger=\"click\" @command=\"handleSetSize\">\n    <div>\n      <i class=\"el-icon-rank\" />\n    </div>\n    <el-dropdown-menu slot=\"dropdown\">\n      <el-dropdown-item :disabled=\"size==='medium'\" command=\"medium\">Medium</el-dropdown-item>\n      <el-dropdown-item :disabled=\"size==='small'\" command=\"small\">Small</el-dropdown-item>\n      <el-dropdown-item :disabled=\"size==='mini'\" command=\"mini\">Mini</el-dropdown-item>\n    </el-dropdown-menu>\n  </el-dropdown>\n</template>\n\n<script>\nexport default {\n  computed: {\n    size() {\n      return this.$store.getters.size\n    }\n  },\n  methods: {\n    handleSetSize(size) {\n      this.$ELEMENT.size = size\n      this.$store.dispatch('setSize', size)\n      this.refreshView()\n      this.$message({\n        message: '布局尺寸切换成功',\n        type: 'success'\n      })\n    },\n    refreshView() {\n      // In order to make the cached page re-rendered\n      this.$store.dispatch('delAllCachedViews', this.$route)\n\n      const { fullPath } = this.$route\n\n      this.$nextTick(() => {\n        this.$router.replace({\n          path: '/redirect' + fullPath\n        })\n      })\n    }\n  }\n\n}\n</script>\n\n<style scoped>\n.el-icon-rank {\n  display: inline-block;\n  cursor: pointer;\n  fill: #5a5e66;;\n  width: 20px;\n  height: 20px;\n  font-size: 20px;\n}\n</style>\n\n"
  },
  {
    "path": "litemall-admin/src/components/SvgIcon/index.vue",
    "content": "<template>\n  <div v-if=\"isExternal\" :style=\"styleExternalIcon\" class=\"svg-external-icon svg-icon\" v-on=\"$listeners\" />\n  <svg v-else :class=\"svgClass\" aria-hidden=\"true\" v-on=\"$listeners\">\n    <use :xlink:href=\"iconName\" />\n  </svg>\n</template>\n\n<script>\n// doc: https://panjiachen.github.io/vue-element-admin-site/feature/component/svg-icon.html#usage\nimport { isExternal } from '@/utils/validate'\nexport default {\n  name: 'SvgIcon',\n  props: {\n    iconClass: {\n      type: String,\n      required: true\n    },\n    className: {\n      type: String,\n      default: ''\n    }\n  },\n  computed: {\n    isExternal() {\n      return isExternal(this.iconClass)\n    },\n    iconName() {\n      return `#icon-${this.iconClass}`\n    },\n    svgClass() {\n      if (this.className) {\n        return 'svg-icon ' + this.className\n      } else {\n        return 'svg-icon'\n      }\n    },\n    styleExternalIcon() {\n      return {\n        mask: `url(${this.iconClass}) no-repeat 50% 50%`,\n        '-webkit-mask': `url(${this.iconClass}) no-repeat 50% 50%`\n      }\n    }\n  }\n}\n</script>\n\n<style scoped>\n.svg-icon {\n  width: 1em;\n  height: 1em;\n  vertical-align: -0.15em;\n  fill: currentColor;\n  overflow: hidden;\n}\n.svg-external-icon {\n  background-color: currentColor;\n  mask-size: cover!important;\n  display: inline-block;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/directive/clipboard/clipboard.js",
    "content": "// Inspired by https://github.com/Inndy/vue-clipboard2\nconst Clipboard = require('clipboard')\nif (!Clipboard) {\n  throw new Error('you should npm install `clipboard` --save at first ')\n}\n\nexport default {\n  bind(el, binding) {\n    if (binding.arg === 'success') {\n      el._v_clipboard_success = binding.value\n    } else if (binding.arg === 'error') {\n      el._v_clipboard_error = binding.value\n    } else {\n      const clipboard = new Clipboard(el, {\n        text() { return binding.value },\n        action() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n      })\n      clipboard.on('success', e => {\n        const callback = el._v_clipboard_success\n        callback && callback(e) // eslint-disable-line\n      })\n      clipboard.on('error', e => {\n        const callback = el._v_clipboard_error\n        callback && callback(e) // eslint-disable-line\n      })\n      el._v_clipboard = clipboard\n    }\n  },\n  update(el, binding) {\n    if (binding.arg === 'success') {\n      el._v_clipboard_success = binding.value\n    } else if (binding.arg === 'error') {\n      el._v_clipboard_error = binding.value\n    } else {\n      el._v_clipboard.text = function() { return binding.value }\n      el._v_clipboard.action = function() { return binding.arg === 'cut' ? 'cut' : 'copy' }\n    }\n  },\n  unbind(el, binding) {\n    if (binding.arg === 'success') {\n      delete el._v_clipboard_success\n    } else if (binding.arg === 'error') {\n      delete el._v_clipboard_error\n    } else {\n      el._v_clipboard.destroy()\n      delete el._v_clipboard\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/directive/clipboard/index.js",
    "content": "import Clipboard from './clipboard'\n\nconst install = function(Vue) {\n  Vue.directive('Clipboard', Clipboard)\n}\n\nif (window.Vue) {\n  window.clipboard = Clipboard\n  Vue.use(install); // eslint-disable-line\n}\n\nClipboard.install = install\nexport default Clipboard\n"
  },
  {
    "path": "litemall-admin/src/directive/permission/index.js",
    "content": "import permission from './permission'\n\nconst install = function(Vue) {\n  Vue.directive('permission', permission)\n}\n\nif (window.Vue) {\n  window['permission'] = permission\n  Vue.use(install); // eslint-disable-line\n}\n\npermission.install = install\nexport default permission\n"
  },
  {
    "path": "litemall-admin/src/directive/permission/permission.js",
    "content": "\nimport store from '@/store'\n\nexport default{\n  inserted(el, binding, vnode) {\n    const { value } = binding\n    const perms = store.getters && store.getters.perms\n\n    if (value && value instanceof Array && value.length > 0) {\n      const permissions = value\n\n      var hasPermission = false\n\n      if (perms.indexOf('*') >= 0) {\n        hasPermission = true\n      } else {\n        hasPermission = perms.some(perm => {\n          return permissions.includes(perm)\n        })\n      }\n\n      if (!hasPermission) {\n        el.parentNode && el.parentNode.removeChild(el)\n      }\n    } else {\n      throw new Error(`need perms! Like v-permission=\"['GET /aaa','POST /bbb']\"`)\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/filters/index.js",
    "content": "// import parseTime, formatTime and set to filter\nexport { parseTime, formatTime } from '@/utils'\n\n/**\n * Show plural label if time is plural number\n * @param {number} time\n * @param {string} label\n * @return {string}\n */\nfunction pluralize(time, label) {\n  if (time === 1) {\n    return time + label\n  }\n  return time + label + 's'\n}\n\n/**\n * @param {number} time\n */\nexport function timeAgo(time) {\n  const between = Date.now() / 1000 - Number(time)\n  if (between < 3600) {\n    return pluralize(~~(between / 60), ' minute')\n  } else if (between < 86400) {\n    return pluralize(~~(between / 3600), ' hour')\n  } else {\n    return pluralize(~~(between / 86400), ' day')\n  }\n}\n\n/**\n * Number formatting\n * like 10000 => 10k\n * @param {number} num\n * @param {number} digits\n */\nexport function numberFormatter(num, digits) {\n  const si = [\n    { value: 1E18, symbol: 'E' },\n    { value: 1E15, symbol: 'P' },\n    { value: 1E12, symbol: 'T' },\n    { value: 1E9, symbol: 'G' },\n    { value: 1E6, symbol: 'M' },\n    { value: 1E3, symbol: 'k' }\n  ]\n  for (let i = 0; i < si.length; i++) {\n    if (num >= si[i].value) {\n      return (num / si[i].value).toFixed(digits).replace(/\\.0+$|(\\.[0-9]*[1-9])0+$/, '$1') + si[i].symbol\n    }\n  }\n  return num.toString()\n}\n\n/**\n * 10000 => \"10,000\"\n * @param {number} num\n */\nexport function toThousandFilter(num) {\n  return (+num || 0).toString().replace(/^-?\\d+/g, m => m.replace(/(?=(?!\\b)(\\d{3})+$)/g, ','))\n}\n\n/**\n * Upper case first char\n * @param {String} string\n */\nexport function uppercaseFirst(string) {\n  return string.charAt(0).toUpperCase() + string.slice(1)\n}\n"
  },
  {
    "path": "litemall-admin/src/icons/index.js",
    "content": "import Vue from 'vue'\nimport SvgIcon from '@/components/SvgIcon'// svg组件\n\n// register globally\nVue.component('svg-icon', SvgIcon)\n\nconst req = require.context('./svg', false, /\\.svg$/)\nconst requireAll = requireContext => requireContext.keys().map(requireContext)\nrequireAll(req)\n"
  },
  {
    "path": "litemall-admin/src/icons/svgo.yml",
    "content": "# replace default config\n\n# multipass: true\n# full: true\n\nplugins:\n\n  # - name\n  #\n  # or:\n  # - name: false\n  # - name: true\n  #\n  # or:\n  # - name:\n  #     param1: 1\n  #     param2: 2\n\n- removeAttrs:\n    attrs:\n      - 'fill'\n      - 'fill-rule'\n"
  },
  {
    "path": "litemall-admin/src/locales/en.js",
    "content": "// https://element.eleme.cn/#/en-US/component/i18n\nimport el from 'element-ui/lib/locale/lang/en'\n\nexport default {\n  ...el,\n  lang: 'English',\n  app: {\n    menu: {\n      dashboard: 'Dashboard',\n      user: 'Users',\n      user_user: 'Users',\n      user_address: 'Addresses',\n      user_collect: 'Favorites',\n      user_footprint: 'Footprints',\n      user_history: 'Search history',\n      user_feedback: 'Feedbacks',\n      mall: 'Mall',\n      mall_region: 'Regions',\n      mall_brand: 'Brands',\n      mall_category: 'Categories',\n      mall_order: 'Orders',\n      mall_aftersale: 'After-sales',\n      mall_issue: 'Issues',\n      mall_keyword: 'Keywords',\n      goods: 'Goods',\n      goods_list: 'List goods',\n      goods_create: 'Add goods',\n      goods_edit: 'Edit goods',\n      goods_comment: 'Comments',\n      promotion: 'Promotion',\n      promotion_ad: 'Ads',\n      promotion_coupon: 'Coupons',\n      promotion_coupon_detail: 'Coupon details',\n      promotion_topic: 'Topics',\n      promotion_topic_create: 'Create topic',\n      promotion_topic_edit: 'Edit topic',\n      promotion_groupon_rule: 'Groupon rules',\n      promotion_groupon_activity: 'Groupon activity',\n      sys: 'System',\n      sys_admin: 'Admins',\n      sys_notice: 'Notifications',\n      sys_log: 'Logs',\n      sys_role: 'Roles',\n      sys_os: 'Storage',\n      config: 'Configuration',\n      config_mall: 'Mall config',\n      config_express: 'Freight config',\n      config_order: 'Order config',\n      config_wx: 'Mini-program config',\n      stat: 'Statistics',\n      stat_user: 'User stats',\n      stat_order: 'Order stats',\n      stat_goods: 'Goods stats',\n      external_link: 'External links',\n      external_link_tencent_cos: 'Tencent cloud storage',\n      external_link_tencent_sms: 'Tencent cloud SMS',\n      external_link_weixin_pay: 'WeChat Pay',\n      external_link_weixin_mpkf: 'WeChat mini-program',\n      external_link_alibaba_oss: 'Ali cloud storage',\n      external_link_qiniu_kodo: 'Qiniu cloud storage',\n      external_link_kdniao_api: 'Kdniao API',\n      profile_password: 'Change password',\n      profile_notice: 'Notifications'\n    },\n    button: {\n      add: '+ Add',\n      back_to_top: 'Back to top',\n      batch_delete: 'Batch delete',\n      cancel: 'Cancel',\n      confirm: 'Confirm',\n      create: 'Create',\n      delete: 'Delete',\n      detail: 'Details',\n      download: 'Download',\n      edit: 'Edit',\n      permission: 'Permissions',\n      reply: 'Reply',\n      search: 'Search',\n      settings: 'Settings',\n      view: 'View'\n    },\n    tooltip: {\n      back_to_top: 'Back to top'\n    },\n    message: {\n      list_loading: 'Loading...'\n    }\n  },\n  login: {\n    page: {\n      title: 'Admin login'\n    },\n    placeholder: {\n      username: 'Admin account',\n      password: 'Admin password'\n    },\n    button: {\n      login: 'Login'\n    }\n  },\n  navbar: {\n    tooltip: {\n      locale: 'Language',\n      full_screen: 'Full screen',\n      size_select: 'Select size',\n      notice: 'Notifications'\n    },\n    menu: {\n      home: 'Home',\n      github: 'Github',\n      gitee: 'Gitee',\n      password: 'Change password',\n      logout: 'Logout'\n    }\n  },\n  dashboard: {\n    section: {\n      user_total: 'Users',\n      goods_total: 'Goods',\n      product_total: 'Products',\n      order_total: 'Orders'\n    }\n  },\n  user_user: {\n    table: {\n      id: 'ID',\n      nickname: 'Nickname',\n      avatar: 'Avatar',\n      mobile: 'Mobile',\n      gender: 'Gender',\n      birthday: 'Birthday',\n      user_level: 'Level',\n      status: 'Status',\n      actions: 'Actions'\n    },\n    dialog: {\n      edit: 'Edit user'\n    },\n    form: {\n      username: 'Username',\n      nickname: 'Nickname',\n      mobile: 'Mobile',\n      gender: 'Gender',\n      user_level: 'Level',\n      status: 'Status'\n    },\n    placeholder: {\n      filter_username: 'Username',\n      filter_user_id: 'User ID',\n      filter_mobile: 'Mobile',\n      gender: 'Please choose',\n      user_level: 'Please choose',\n      status: 'Please choose'\n    }\n  },\n  user_address: {\n    table: {\n      id: 'ID',\n      user_id: 'User ID',\n      name: 'Name',\n      tel: 'Mobile',\n      address_region: 'Region',\n      address_detail: 'Detail',\n      is_default: 'Default'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_name: 'Name'\n    }\n  },\n  user_collect: {\n    table: {\n      id: 'ID',\n      user_id: 'User ID',\n      value_id: 'Item ID',\n      add_time: 'Time added'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_value_id: 'Item ID'\n    }\n  },\n  user_footprint: {\n    table: {\n      id: 'ID',\n      user_id: 'User ID',\n      goods_id: 'Goods ID',\n      add_time: 'Time added'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_goods_id: 'Goods ID'\n    }\n  },\n  user_history: {\n    table: {\n      id: 'ID',\n      user_id: 'User ID',\n      keyword: 'Keyword',\n      add_time: 'Time added'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_keyword: 'Keyword'\n    }\n  },\n  user_feedback: {\n    table: {\n      id: 'ID',\n      username: 'Username',\n      mobile: 'Mobile',\n      feed_type: 'Type',\n      content: 'Content',\n      pic_urls: 'Pictures',\n      add_time: 'Time added'\n    },\n    placeholder: {\n      filter_username: 'Username',\n      filter_id: 'Feedback ID'\n    }\n  },\n  mall_region: {\n    table: {\n      name: 'Name',\n      type: 'Type',\n      code: 'Code'\n    }\n  },\n  mall_brand: {\n    table: {\n      id: 'ID',\n      name: 'Name',\n      pic_url: 'Picture',\n      desc: 'Description',\n      floor_price: 'Floor price',\n      actions: 'Actions'\n    },\n    form: {\n      name: 'Name',\n      simple_desc: 'Description',\n      pic_url: 'Picture',\n      floor_price: 'Floor price'\n    },\n    placeholder: {\n      filter_id: 'ID',\n      filter_name: 'Name'\n    }\n  },\n  mall_category: {\n    table: {\n      id: 'ID',\n      name: 'Name',\n      icon_url: 'Icon',\n      pic_url: 'Picture',\n      keywords: 'Keywords',\n      desc: 'Description',\n      level: 'Level',\n      actions: 'Actions'\n    },\n    form: {\n      name: 'Name',\n      keywords: 'Keywords',\n      level: 'Level',\n      pid: 'Parent',\n      icon_url: 'Icon',\n      pic_url: 'Picture',\n      desc: 'Description'\n    },\n    value: {\n      level_L1: 'Level 1',\n      level_L2: 'Level 2'\n    }\n  },\n  mall_order: {\n    text: {\n      date_range_separator: 'to',\n      expand_goods_name: 'Goods name: {goods_name}',\n      expand_specifications: 'Specifications: {specifications}',\n      expand_unit_price: 'Unit price: {price} 元',\n      expand_number: 'Quantity: {number}',\n      expand_subtotal_price: 'Subtotal: {price} 元',\n      detail_consigne: '(consignee) {consignee} ',\n      detail_mobile: '(mobile) {mobile} ',\n      detail_address: '(address) {address} ',\n      detail_price_info: '(actual){actual_price}元 = (goods){goods_price}元 + (freight){freight_price}元 - (coupon){coupon_price}元 - (integral){integral_price}元',\n      detail_pay_channel: '(payment channel) {pay_channel} ',\n      detail_pay_time: '(payment time) {pay_time} ',\n      detail_ship_channel: '(shipment company) {ship_channel} ',\n      detail_ship_sn: '(shipment SN) {ship_sn} ',\n      detail_ship_time: '(shipment time) {ship_time} ',\n      detail_refund_amount: '(refund amount) {refund_amount}元 ',\n      detail_refund_type: '(type) {refund_type} ',\n      detail_refund_content: '(content) {refund_content} ',\n      detail_refund_time: '(time) {refund_time} ',\n      detail_confirm_time: '(confirm time) {confirm_time} '\n    },\n    table: {\n      order_sn: 'Order SN',\n      avatar: 'Avatar',\n      user_name: 'User name',\n      add_time: 'Time added',\n      order_status: 'Status',\n      order_price: 'Order price',\n      actual_price: 'Actual price',\n      pay_time: 'Time paid',\n      consignee: 'Consignee',\n      mobile: 'Mobile',\n      ship_sn: 'Ship SN',\n      ship_channel: 'Ship channel',\n      actions: 'Actions',\n      detail_goods_name: 'Name',\n      detail_goods_sn: 'Goods SN',\n      detail_goods_specifications: 'Specifications',\n      detail_goods_price: 'Price',\n      detail_goods_number: 'Quantity',\n      detail_goods_pic_url: 'Picture',\n      pay_goods_name: 'Name',\n      pay_goods_specifications: 'Specifications',\n      pay_goods_number: 'Quantity'\n    },\n    dialog: {\n      detail: 'Details',\n      pay: 'Pay',\n      ship: 'Ship',\n      refund: 'Refund'\n    },\n    form: {\n      detail_order_sn: 'Order SN',\n      detail_order_status: 'Status',\n      detail_user_nickname: 'User nickname',\n      detail_message: 'User message',\n      detail_receiving_info: 'Receipt info',\n      detail_goods: 'Goods info',\n      detail_price_info: 'Price info',\n      detail_pay_info: 'Payment info',\n      detail_ship_info: 'Shipment info',\n      detail_refund_info: 'Refund info',\n      detail_receipt_info: 'Receipt info',\n      pay_old_money: 'Order amount',\n      pay_new_money: 'Payment amount',\n      ship_channel: 'Ship company',\n      ship_sn: 'Ship SN',\n      refund_money: 'Refund amount'\n    },\n    placeholder: {\n      filter_nickname: 'Nickname',\n      filter_consignee: 'Consignee',\n      filter_order_sn: 'Order SN',\n      filter_time_start: 'From date',\n      filter_time_end: 'To date',\n      filter_order_status: 'Status',\n      ship_channel: 'Please choose'\n    },\n    message: {\n      pay_confirm: 'Confirm that the current order (order number {order_sn}) has been paid offline?'\n    },\n    button: {\n      pay: 'Pay',\n      ship: 'Ship',\n      refund: 'Refund',\n      detail_cancel: 'Cancel',\n      detail_print: 'Print'\n    }\n  },\n  mall_aftersale: {\n    section: {\n      all: 'All',\n      uncheck: 'Awaiting approval',\n      unrefund: 'To refund'\n    },\n    table: {\n      aftersale_sn: 'Aftersale SN',\n      order_id: 'Order ID',\n      user_id: 'User ID',\n      type: 'Type',\n      reason: 'Reason',\n      amount: 'Amount',\n      add_time: 'Time added',\n      actions: 'Actions',\n      detail_pictures: 'Pictures'\n    },\n    dialog: {\n      detail: 'Details'\n    },\n    form: {\n      id: 'ID',\n      aftersale_sn: 'Aftersale SN',\n      order_id: 'Order ID',\n      amount: 'Order amount',\n      status: 'Order status',\n      user_id: 'User ID',\n      type: 'Aftersale type',\n      reason: 'Reason for refund',\n      add_time: 'Time added',\n      update_time: 'Time updated',\n      handle_time: 'Time processed',\n      pictures: 'Pictures'\n    },\n    value: {\n      status_1: 'Applied for, pending review',\n      status_2: 'Approved, pending refund',\n      status_3: 'Refunded',\n      status_4: 'Refund Successful',\n      type_0: 'Refund without receipt',\n      type_1: 'No Refund',\n      type_2: 'Return Refund'\n    },\n    placeholder: {\n      filter_aftersale_sn: 'Aftersale SN',\n      filter_order_id: 'Order ID'\n    },\n    button: {\n      batch_recept: 'Batch pass',\n      batch_reject: 'Batch reject',\n      recept: 'Pass',\n      reject: 'Reject',\n      refund: 'Refund',\n      cancel: 'Cancel'\n    }\n  },\n  mall_issue: {\n    table: {\n      id: 'ID',\n      question: 'Question',\n      answer: 'Answer',\n      actions: 'Actions'\n    },\n    form: {\n      question: 'Question',\n      answer: 'Answer'\n    },\n    placeholder: {\n      filter_question: 'Question',\n      answer: 'Content'\n    }\n  },\n  mall_keyword: {\n    text: {\n      yes: 'Yes',\n      no: 'No'\n    },\n    table: {\n      id: 'ID',\n      keyword: 'Keyword',\n      url: 'URL',\n      is_hot: 'Hot',\n      is_default: 'Default',\n      actions: 'Actions'\n    },\n    form: {\n      keyword: 'Keyword',\n      url: 'URL',\n      is_hot: 'Hot',\n      is_default: 'Default'\n    },\n    placeholder: {\n      filter_keyword: 'Keyword',\n      filter_url: 'URL',\n      is_hot: 'Please choose',\n      is_default: 'Please choose'\n    },\n    value: {\n      is_hot_true: 'Hot',\n      is_hot_false: 'Ordinary',\n      is_default_true: 'Default',\n      is_default_false: 'Non default'\n    }\n  },\n  goods_list: {\n    table: {\n      id: 'ID',\n      name: 'Name',\n      pic_url: 'Picture',\n      share_url: 'Share',\n      detail: 'Detail',\n      counter_price: 'Counter price',\n      retail_price: 'Retail price',\n      is_new: 'New',\n      is_hot: 'Hot',\n      is_on_sale: 'On sale',\n      actions: 'Actions',\n      goods_sn: 'Goods SN',\n      gallery: 'Gallery',\n      brief: 'Description',\n      unit: 'Unit',\n      keywords: 'Keywords',\n      category_id: 'Category',\n      brand_id: 'Brand'\n    },\n    dialog: {\n      detail: 'Details'\n    },\n    value: {\n      is_new_true: 'New',\n      is_new_false: 'Not new',\n      is_hot_true: 'Hot',\n      is_hot_false: 'Ordinary',\n      is_on_sale_true: 'On sale',\n      is_on_sale_false: 'Not on sale'\n    },\n    placeholder: {\n      filter_goods_id: 'Goods ID',\n      filter_goods_sn: 'Goods SN',\n      filter_name: 'Goods name'\n    }\n  },\n  goods_edit: {\n    section: {\n      goods: 'Goods',\n      specifications: 'Specifications',\n      products: 'Products',\n      attributes: 'Attributes'\n    },\n    table: {\n      specification_name: 'Name',\n      specification_value: 'Value',\n      specification_pic_url: 'Picture',\n      specification_actions: 'Actions',\n      product_specifications: 'Specifications',\n      product_price: 'Price',\n      product_number: 'Quantity',\n      product_url: 'Picture',\n      product_actions: 'Actions',\n      attribute_name: 'Name',\n      attribute_value: 'Value',\n      attribute_actions: 'Actions'\n    },\n    dialog: {\n      create_specification: 'Specification',\n      create_product: 'Product',\n      create_attribute: 'Attribute',\n      edit_specification: 'Specification',\n      edit_product: 'Product',\n      edit_attribute_add: 'Add attribute',\n      edit_attribute_edit: 'Edit attribute'\n    },\n    form: {\n      id: 'ID',\n      goods_sn: 'Goods SN',\n      name: 'Name',\n      counter_price: 'Counter price',\n      is_new: 'New',\n      is_hot: 'Hot',\n      is_on_sale: 'On sale',\n      pic_url: 'Picture',\n      gallery: 'Gallery',\n      unit: 'Unit',\n      keywords: 'Keywords',\n      category_id: 'Category',\n      brand_id: 'Brand',\n      brief: 'Description',\n      detail: 'Detail',\n      specification_name: 'Name',\n      specification_value: 'Value',\n      specification_pic_url: 'Picture',\n      product_specifications: 'Specifications',\n      product_price: 'Price',\n      product_number: 'Quantity',\n      product_url: 'Picture',\n      attribute_name: 'Name',\n      attribute_value: 'Value'\n    },\n    value: {\n      is_new_true: 'New',\n      is_new_false: 'Not new',\n      is_hot_true: 'Hot',\n      is_hot_false: 'Ordinary',\n      is_on_sale_true: 'On sale',\n      is_on_sale_false: 'Not on sale',\n      multiple_spec_true: 'Multiple',\n      multiple_spec_false: 'Single'\n    },\n    placeholder: {\n      unit: '件 / 个 / 盒'\n    },\n    button: {\n      publish: 'Publish',\n      edit: 'Edit'\n    }\n  },\n  goods_comment: {\n    table: {\n      user_id: 'User ID',\n      value_id: 'Item ID',\n      star: 'Rating',\n      content: 'Content',\n      pic_urls: 'Pictures',\n      add_time: 'Time added',\n      actions: 'Actions'\n    },\n    dialog: {\n      reply: 'Reply'\n    },\n    form: {\n      content: 'Content'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_value_id: 'Item ID'\n    }\n  },\n  promotion_ad: {\n    table: {\n      id: 'ID',\n      name: 'Name',\n      content: 'Content',\n      url: 'Picture',\n      position: 'Position',\n      link: 'Link',\n      enabled: 'Enabled',\n      actions: 'Actions'\n    },\n    form: {\n      name: 'Name',\n      content: 'Content',\n      url: 'Picture',\n      position: 'Position',\n      link: 'Link',\n      enabled: 'Enabled'\n    },\n    value: {\n      position_1: 'Home',\n      enabled_true: 'On',\n      enabled_false: 'Off'\n    },\n    placeholder: {\n      filter_name: 'Name',\n      filter_content: 'Content',\n      position: 'Please choose',\n      enabled: 'Please choose'\n    },\n    help: {\n      url: 'Only jpg/png files can be uploaded and do not exceed 1024kb'\n    }\n  },\n  promotion_coupon: {\n    text: {\n      days: 'days',\n      to_time: 'to',\n      units: 'units',\n      coupon_min: 'Available for {min}元 spent',\n      coupon_discount: 'Reduced by {discount}元',\n      unlimited: 'Unlimited'\n    },\n    table: {\n      id: 'ID',\n      name: 'Name',\n      desc: 'Description',\n      tag: 'Tag',\n      min: 'Min spend',\n      discount: 'Discount',\n      limit: 'Limit/user',\n      goods_type: 'Goods type',\n      type: 'Coupon type',\n      total: 'Quantity',\n      status: 'Status',\n      actions: 'Actions',\n      category_name: 'Name',\n      category_actions: 'Actions',\n      goods_name: 'Name',\n      goods_sn: 'Goods SN',\n      goods_actions: 'Actions'\n    },\n    form: {\n      name: 'Name',\n      desc: 'Description',\n      tag: 'Tag',\n      min: 'Min spend',\n      discount: 'Discount',\n      limit: 'Limit/user',\n      type: 'Coupon type',\n      total: 'Quantity',\n      time_type: 'Validity period',\n      goods_type: 'Goods type'\n    },\n    value: {\n      time_type_0: 'Relative time',\n      time_type_1: 'Absolute time',\n      goods_type_0: 'All',\n      goods_type_1: 'By category',\n      goods_type_2: 'By goods'\n    },\n    placeholder: {\n      filter_name: 'Name',\n      filter_type: 'Coupon type',\n      filter_status: 'Status',\n      start_time: 'Select date',\n      end_time: 'Select date',\n      category: 'Select category',\n      goods: 'Goods name / Goods ID'\n    }\n  },\n  promotion_coupon_detail: {\n    text: {\n      coupon_min: 'Available for {min}元 spent',\n      coupon_discount: 'Reduced by {discount}元',\n      unlimited: 'Unlimited'\n    },\n    table: {\n      name: 'Name',\n      desc: 'Description',\n      tag: 'Tag',\n      type: 'Coupon type',\n      min: 'Min spend',\n      discount: 'Discount',\n      limit: 'Limit/user',\n      status: 'Status',\n      goods_type: 'Goods type',\n      time_scope: 'Validity period',\n      code: 'Code',\n      total: 'Quantity',\n      id: 'ID',\n      user_id: 'User ID',\n      add_time: 'Time added',\n      use_status: 'Use status',\n      order_id: 'Order ID',\n      used_time: 'Time used'\n    },\n    placeholder: {\n      filter_user_id: 'User ID',\n      filter_status: 'Status'\n    }\n  },\n  promotion_topic: {\n    table: {\n      title: 'Title',\n      subtitle: 'Subtitle',\n      pic_url: 'Picture',\n      content: 'Content',\n      price: 'Price',\n      read_count: 'Read count',\n      actions: 'Actions'\n    },\n    dialog: {\n      content_detail: 'Content detail'\n    },\n    placeholder: {\n      filter_title: 'Title',\n      filter_subtitle: 'Subtitle',\n      filter_sort: 'Sort by'\n    }\n  },\n  promotion_topic_edit: {\n    table: {\n      goods_id: 'ID',\n      goods_pic_url: 'Picture',\n      goods_name: 'Name',\n      goods_brief: 'Description',\n      goods_actions: 'Actions',\n      search_goods_id: 'ID',\n      search_goods_pic_url: 'Picture',\n      search_goods_name: 'Name'\n    },\n    dialog: {\n      add_goods: 'Add goods'\n    },\n    form: {\n      title: 'Title',\n      subtitle: 'Subtitle',\n      pic_url: 'Picture',\n      content: 'Content',\n      price: 'Price',\n      read_count: 'Read count',\n      goods: 'Goods'\n    },\n    placeholder: {\n      search_goods_sn: 'Goods SN',\n      search_name: 'Name'\n    },\n    button: {\n      goods_create: 'Add'\n    }\n  },\n  promotion_groupon_rule: {\n    table: {\n      id: 'ID',\n      goods_id: 'Goods ID',\n      goods_name: 'Goods name',\n      pic_url: 'Picture',\n      discount: 'Discount',\n      discount_member: 'Min buy quantity',\n      status: 'Status',\n      expire_time: 'Expire time',\n      actions: 'Actions'\n    },\n    form: {\n      goods_id: 'Goods ID',\n      discount: 'Discount',\n      discount_member: 'Min buy quantity',\n      expire_time: 'Expire time'\n    },\n    placeholder: {\n      filter_goods_id: 'Goods ID',\n      expire_time: 'Select date'\n    }\n  },\n  promotion_groupon_activity: {\n    table: {\n      order_id: 'Order ID',\n      user_id: 'User ID',\n      groupon_order_id: 'Order ID',\n      groupon_user_id: 'User ID',\n      subgroupons_length: 'Number used',\n      rules_discount: 'Discount',\n      rules_discount_member: 'Min buy quantity',\n      groupon_share_url: 'Picture',\n      rules_add_time: 'Time added',\n      rules_expire_time: 'Expire time'\n    },\n    placeholder: {\n      filter_groupon_rule_id: 'Rule ID'\n    }\n  },\n  sys_admin: {\n    table: {\n      id: 'ID',\n      username: 'Username',\n      avatar: 'Avatar',\n      role_ids: 'Roles',\n      actions: 'Actions'\n    },\n    form: {\n      username: 'Username',\n      password: 'Password',\n      avatar: 'Avatar',\n      role_ids: 'Roles'\n    },\n    placeholder: {\n      filter_username: 'Username',\n      role_ids: 'Please choose'\n    }\n  },\n  sys_notice: {\n    table: {\n      title: 'Title',\n      content: 'Content',\n      add_time: 'Time added',\n      admin_id: 'Admin ID',\n      actions: 'Actions'\n    },\n    dialog: {\n      content_detail: 'Content detail'\n    },\n    form: {\n      title: 'Title',\n      content: 'Content'\n    },\n    placeholder: {\n      filter_title: 'Title',\n      filter_content: 'Content'\n    }\n  },\n  sys_log: {\n    table: {\n      admin: 'Admin',\n      ip: 'IP address',\n      add_time: 'Time added',\n      type: 'Type',\n      action: 'Action',\n      status: 'Status',\n      result: 'Result',\n      comment: 'Comment'\n    },\n    placeholder: {\n      filter_name: 'Admin'\n    },\n    value: {\n      status_success: 'Success',\n      status_error: 'Error'\n    }\n  },\n  sys_role: {\n    table: {\n      name: 'Name',\n      desc: 'Description',\n      actions: 'Actions'\n    },\n    dialog: {\n      permission: 'Permissions'\n    },\n    form: {\n      name: 'Name',\n      desc: 'Description'\n    },\n    placeholder: {\n      filter_name: 'Name'\n    }\n  },\n  sys_os: {\n    table: {\n      key: 'Key',\n      name: 'Name',\n      type: 'Type',\n      size: 'size',\n      url: 'Picture',\n      url_link: 'Link',\n      actions: 'Actions'\n    },\n    dialog: {\n      create: 'Create',\n      update: 'Update'\n    },\n    form: {\n      name: 'Name'\n    },\n    placeholder: {\n      filter_key: 'Key',\n      filter_name: 'Name'\n    },\n    button: {\n      upload: 'Upload'\n    }\n  },\n  config_mall: {\n    form: {\n      mall_name: 'Name',\n      mall_address: 'Address',\n      mall_coordinates: 'Coordinates',\n      mall_phone: 'Phone',\n      mall_qq: 'QQ'\n    },\n    placeholder: {\n      mall_longitude: 'Longitude',\n      mall_latitude: 'Latitude'\n    }\n  },\n  config_express: {\n    form: {\n      freight_min: 'Min spend for free delivery',\n      freight_value: 'Delivery fee'\n    }\n  },\n  config_order: {\n    text: {\n      minutes: 'minutes',\n      days: 'days'\n    },\n    form: {\n      unpaid: 'Timeout after order creation',\n      unconfirm: 'Overdue after shipment',\n      comment: 'Overdue after confirming receipt'\n    },\n    help: {\n      unpaid: 'The order is automatically canceled if the user does not pay',\n      unconfirm: 'No confirmation of receipt, then the order is automatically confirmed for receipt',\n      comment: 'If the product is not evaluated, it will be disqualified'\n    }\n  },\n  config_wx: {\n    section: {\n      home: 'Home',\n      other: 'Other'\n    },\n    form: {\n      index_new: 'Number of new goods shown',\n      index_hot: 'Number of hot goods shown',\n      index_brand: 'Number of brands shown',\n      index_topic: 'Number of topics shown',\n      catlog_list: 'Number of categories shown',\n      catlog_goods: 'Number of goods shown',\n      share: 'Product sharing function'\n    }\n  },\n  profile_notice: {\n    text: {\n      read: '已读',\n      unread: '未读',\n      admin_time: 'Notified by {admin} at {time}:'\n    },\n    section: {\n      unread: 'Unread',\n      read: 'Read',\n      all: 'All'\n    },\n    table: {\n      notice_title: 'Title',\n      add_time: 'Time added',\n      read_time: 'Time read',\n      actions: 'Actions'\n    },\n    placeholder: {\n      filter_title: 'Title'\n    },\n    button: {\n      batch_read: 'Batch read',\n      read: 'Read'\n    }\n  },\n  profile_password: {\n    form: {\n      old_password: 'Old password',\n      new_password: 'New password',\n      new_password_2: 'Confirm password'\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/locales/zh-Hans.js",
    "content": "// https://element.eleme.cn/#/en-US/component/i18n\nimport el from 'element-ui/lib/locale/lang/zh-CN'\n\nexport default {\n  ...el,\n  lang: '中文',\n  app: {\n    menu: {\n      dashboard: '首页',\n      user: '用户管理',\n      user_user: '会员管理',\n      user_address: '收货地址',\n      user_collect: '会员收藏',\n      user_footprint: '会员足迹',\n      user_history: '搜索历史',\n      user_feedback: '意见反馈',\n      mall: '商场管理',\n      mall_region: '行政区域',\n      mall_brand: '品牌制造商',\n      mall_category: '商品类目',\n      mall_order: '订单管理',\n      mall_aftersale: '售后管理',\n      mall_issue: '通用问题',\n      mall_keyword: '关键词',\n      goods: '商品管理',\n      goods_list: '商品列表',\n      goods_create: '商品上架',\n      goods_edit: '商品编辑',\n      goods_comment: '商品评论',\n      promotion: '推广管理',\n      promotion_ad: '广告管理',\n      promotion_coupon: '优惠券管理',\n      promotion_coupon_detail: '优惠券详情',\n      promotion_topic: '专题管理',\n      promotion_topic_create: '专题创建',\n      promotion_topic_edit: '专题编辑',\n      promotion_groupon_rule: '团购规则',\n      promotion_groupon_activity: '团购活动',\n      sys: '系统管理',\n      sys_admin: '管理员',\n      sys_notice: '通知管理',\n      sys_log: '操作日志',\n      sys_role: '角色管理',\n      sys_os: '对象存储',\n      config: '配置管理',\n      config_mall: '商场配置',\n      config_express: '运费配置',\n      config_order: '订单配置',\n      config_wx: '小程序配置',\n      stat: '统计报表',\n      stat_user: '用户统计',\n      stat_order: '订单统计',\n      stat_goods: '商品统计',\n      external_link: '外链',\n      external_link_tencent_cos: '腾讯云存储',\n      external_link_tencent_sms: '腾讯云短信',\n      external_link_weixin_pay: '微信支付',\n      external_link_weixin_mpkf: '小程序客服',\n      external_link_alibaba_oss: '阿里云存储',\n      external_link_qiniu_kodo: '七牛云存储',\n      external_link_kdniao_api: '快递鸟',\n      profile_password: '修改密码',\n      profile_notice: '通知中心'\n    },\n    button: {\n      add: '+ 增加',\n      back_to_top: '回到顶部',\n      batch_delete: '批量删除',\n      cancel: '取消',\n      confirm: '确定',\n      create: '添加',\n      delete: '删除',\n      detail: '详情',\n      download: '导出',\n      edit: '编辑',\n      permission: '授权',\n      reply: '回复',\n      search: '查找',\n      settings: '设置',\n      view: '查看'\n    },\n    tooltip: {\n      back_to_top: '返回顶部'\n    },\n    message: {\n      list_loading: '正在查询中。。。'\n    }\n  },\n  login: {\n    page: {\n      title: '管理员登录'\n    },\n    placeholder: {\n      username: '管理员账户',\n      password: '管理员密码'\n    },\n    button: {\n      login: '登录'\n    }\n  },\n  navbar: {\n    tooltip: {\n      locale: '语言',\n      full_screen: '全屏',\n      size_select: '布局大小',\n      notice: '通知中心'\n    },\n    menu: {\n      home: '首页',\n      github: 'Github',\n      gitee: '码云',\n      password: '密码修改',\n      logout: '退出'\n    }\n  },\n  dashboard: {\n    section: {\n      user_total: '用户数量',\n      goods_total: '商品数量',\n      product_total: '货品数量',\n      order_total: '订单数量'\n    }\n  },\n  user_user: {\n    table: {\n      id: '用户ID',\n      nickname: '用户昵称',\n      avatar: '用户头像',\n      mobile: '手机号码',\n      gender: '性别',\n      birthday: '生日',\n      user_level: '用户等级',\n      status: '状态',\n      actions: '操作'\n    },\n    dialog: {\n      edit: '用户编辑'\n    },\n    form: {\n      username: '用户名',\n      nickname: '用户昵称',\n      mobile: '用户手机',\n      gender: '用户性别',\n      user_level: '用户等级',\n      status: '状态'\n    },\n    placeholder: {\n      filter_username: '请输入用户名',\n      filter_user_id: '请输入用户Id',\n      filter_mobile: '请输入手机号',\n      gender: '请选择',\n      user_level: '请选择',\n      status: '请选择'\n    }\n  },\n  user_address: {\n    table: {\n      id: '地址ID',\n      user_id: '用户ID',\n      name: '收货人名称',\n      tel: '手机号码',\n      address_region: '区域地址',\n      address_detail: '区域地址',\n      is_default: '默认'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_name: '请输入收货人名称'\n    }\n  },\n  user_collect: {\n    table: {\n      id: '收藏ID',\n      user_id: '用户ID',\n      value_id: '商品ID',\n      add_time: '添加时间'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_value_id: '请输入商品ID'\n    }\n  },\n  user_footprint: {\n    table: {\n      id: '足迹ID',\n      user_id: '用户ID',\n      goods_id: '商品ID',\n      add_time: '添加时间'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_goods_id: '请输入商品ID'\n    }\n  },\n  user_history: {\n    table: {\n      id: '搜索ID',\n      user_id: '用户ID',\n      keyword: '关键字',\n      add_time: '添加时间'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_keyword: '请输入搜索历史关键字'\n    }\n  },\n  user_feedback: {\n    table: {\n      id: '反馈ID',\n      username: '用户名',\n      mobile: '手机号码',\n      feed_type: '反馈类型',\n      content: '反馈内容',\n      pic_urls: '反馈图片',\n      add_time: '时间'\n    },\n    placeholder: {\n      filter_username: '请输入用户名',\n      filter_id: '请输入反馈ID'\n    }\n  },\n  mall_region: {\n    table: {\n      name: '区域名称',\n      type: '区域类型',\n      code: '区域编码'\n    }\n  },\n  mall_brand: {\n    table: {\n      id: '品牌商ID',\n      name: '品牌商名称',\n      pic_url: '品牌商图片',\n      desc: '介绍',\n      floor_price: '底价',\n      actions: '操作'\n    },\n    form: {\n      name: '品牌商名称',\n      simple_desc: '介绍',\n      pic_url: '品牌商图片',\n      floor_price: '底价'\n    },\n    placeholder: {\n      filter_id: '请输入品牌商ID',\n      filter_name: '请输入品牌商名称'\n    }\n  },\n  mall_category: {\n    table: {\n      id: '类目ID',\n      name: '类目名',\n      icon_url: '类目图标',\n      pic_url: '类目图片',\n      keywords: '关键字',\n      desc: '简介',\n      level: '级别',\n      actions: '操作'\n    },\n    form: {\n      name: '类目名称',\n      keywords: '关键字',\n      level: '级别',\n      pid: '父类目',\n      icon_url: '类目图标',\n      pic_url: '类目图片',\n      desc: '类目简介'\n    },\n    value: {\n      level_L1: '一级类目',\n      level_L2: '二级类目'\n    }\n  },\n  mall_order: {\n    text: {\n      date_range_separator: '至',\n      expand_goods_name: '商品名称：{goods_name}',\n      expand_specifications: '规格：{specifications}',\n      expand_unit_price: '单价：{price} 元',\n      expand_number: '数量：{number} 件',\n      expand_subtotal_price: '小计：{price} 元',\n      detail_consigne: '（收货人）{consignee}',\n      detail_mobile: '（手机号）{mobile}',\n      detail_address: '（地址）{address}',\n      detail_price_info: '(实际费用){actual_price}元 = (商品总价){goods_price}元 + (快递费用){freight_price}元 - (优惠减免){coupon_price}元 - (积分减免){integral_price}元',\n      detail_pay_channel: '（支付渠道）{pay_channel}',\n      detail_pay_time: '（支付时间）{pay_time}',\n      detail_ship_channel: '（快递公司）{ship_channel}',\n      detail_ship_sn: '（快递单号）{ship_sn}',\n      detail_ship_time: '（发货时间）{ship_time}',\n      detail_refund_amount: '（退款金额）{refund_amount}元',\n      detail_refund_type: '（退款类型）{refund_type}',\n      detail_refund_content: '（退款备注）{refund_content}',\n      detail_refund_time: '（退款时间）{refund_time}',\n      detail_confirm_time: '（确认收货时间）{confirm_time}'\n    },\n    table: {\n      order_sn: '订单编号',\n      avatar: '用户头像',\n      user_name: '下单用户',\n      add_time: '下单时间',\n      order_status: '订单状态',\n      order_price: '订单金额',\n      actual_price: '实付金额',\n      pay_time: '支付时间',\n      consignee: '收货人',\n      mobile: '收货电话',\n      ship_sn: '物流单号',\n      ship_channel: '物流渠道',\n      actions: '操作',\n      detail_goods_name: '商品名称',\n      detail_goods_sn: '商品编号',\n      detail_goods_specifications: '货品规格',\n      detail_goods_price: '货品价格',\n      detail_goods_number: '货品数量',\n      detail_goods_pic_url: '货品图片',\n      pay_goods_name: '商品',\n      pay_goods_specifications: '规格',\n      pay_goods_number: '下单数量'\n    },\n    dialog: {\n      detail: '订单详情',\n      pay: '订单收款',\n      ship: '发货',\n      refund: '退款'\n    },\n    form: {\n      detail_order_sn: '订单编号',\n      detail_order_status: '订单状态',\n      detail_user_nickname: '订单用户',\n      detail_message: '用户留言',\n      detail_receiving_info: '收货信息',\n      detail_goods: '商品信息',\n      detail_price_info: '费用信息',\n      detail_pay_info: '支付信息',\n      detail_ship_info: '快递信息',\n      detail_refund_info: '退款信息',\n      detail_receipt_info: '收货信息',\n      pay_old_money: '订单金额',\n      pay_new_money: '付款金额',\n      ship_channel: '快递公司',\n      ship_sn: '快递编号',\n      refund_money: '退款金额'\n    },\n    placeholder: {\n      filter_nickname: '请输入用户昵称',\n      filter_consignee: '请输入收货人名称',\n      filter_order_sn: '请输入订单编号',\n      filter_time_start: '开始日期',\n      filter_time_end: '结束日期',\n      filter_order_status: '请选择订单状态',\n      ship_channel: '请选择'\n    },\n    message: {\n      pay_confirm: '确认当前订单（订单编号 {order_sn} ) 已经完成线下收款  ？'\n    },\n    button: {\n      pay: '收款',\n      ship: '发货',\n      refund: '退款',\n      detail_cancel: '取 消',\n      detail_print: '打 印'\n    }\n  },\n  mall_aftersale: {\n    section: {\n      all: '全部',\n      uncheck: '待审核',\n      unrefund: '待退款'\n    },\n    table: {\n      aftersale_sn: '售后编号',\n      order_id: '订单ID',\n      user_id: '用户ID',\n      type: '售后类型',\n      reason: '退款原因',\n      amount: '退款价格',\n      add_time: '申请时间',\n      actions: '操作',\n      detail_pictures: '售后图片'\n    },\n    dialog: {\n      detail: '售后详情'\n    },\n    form: {\n      id: '售后id',\n      aftersale_sn: '售后编号',\n      order_id: '订单号',\n      amount: '订单金额',\n      status: '订单状态',\n      user_id: '订单用户id',\n      type: '售后类型',\n      reason: '退款原因',\n      add_time: '申请时间',\n      update_time: '更新时间',\n      handle_time: '处理时间',\n      pictures: '售后图片'\n    },\n    value: {\n      status_1: '已申请,待审核',\n      status_2: '审核通过,待退款',\n      status_3: '退款成功',\n      status_4: '审核不通过,已拒绝',\n      type_0: '未收货退款',\n      type_1: '不退货退款',\n      type_2: '退货退款'\n    },\n    placeholder: {\n      filter_aftersale_sn: '请输入售后编号',\n      filter_order_id: '请输入订单ID'\n    },\n    button: {\n      batch_recept: '批量通过',\n      batch_reject: '批量拒绝',\n      recept: '通过',\n      reject: '拒绝',\n      refund: '退款',\n      cancel: '取 消'\n    }\n  },\n  mall_issue: {\n    table: {\n      id: '问题ID',\n      question: '问题内容',\n      answer: '问题回复',\n      actions: '操作'\n    },\n    form: {\n      question: '问题',\n      answer: '回复'\n    },\n    placeholder: {\n      filter_question: '请输入问题',\n      answer: '请输入内容'\n    }\n  },\n  mall_keyword: {\n    text: {\n      yes: '是',\n      no: '否'\n    },\n    table: {\n      id: '关键词ID',\n      keyword: '关键词',\n      url: '跳转链接',\n      is_hot: '是否推荐',\n      is_default: '是否默认',\n      actions: '操作'\n    },\n    form: {\n      keyword: '关键词',\n      url: '跳转链接',\n      is_hot: '是否推荐',\n      is_default: '是否默认'\n    },\n    placeholder: {\n      filter_keyword: '请输入关键字',\n      filter_url: '请输入跳转链接',\n      is_hot: '请选择',\n      is_default: '请选择'\n    },\n    value: {\n      is_hot_true: '推荐',\n      is_hot_false: '普通',\n      is_default_true: '默认',\n      is_default_false: '非默认'\n    }\n  },\n  goods_list: {\n    table: {\n      id: '商品ID',\n      name: '名称',\n      pic_url: '图片',\n      share_url: '分享图',\n      detail: '详情',\n      counter_price: '市场售价',\n      retail_price: '当前价格',\n      is_new: '是否新品',\n      is_hot: '是否热品',\n      is_on_sale: '是否在售',\n      actions: '操作',\n      goods_sn: '商品编号',\n      gallery: '宣传画廊',\n      brief: '商品介绍',\n      unit: '商品单位',\n      keywords: '关键字',\n      category_id: '类目ID',\n      brand_id: '品牌商ID'\n    },\n    dialog: {\n      detail: '商品详情'\n    },\n    value: {\n      is_new_true: '新品',\n      is_new_false: '非新品',\n      is_hot_true: '热卖',\n      is_hot_false: '普通',\n      is_on_sale_true: '在售',\n      is_on_sale_false: '未售'\n    },\n    placeholder: {\n      filter_goods_id: '请输入商品ID',\n      filter_goods_sn: '请输入商品编号',\n      filter_name: '请输入商品名称'\n    }\n  },\n  goods_edit: {\n    section: {\n      goods: '商品介绍',\n      specifications: '商品规格',\n      products: '商品库存',\n      attributes: '商品参数'\n    },\n    table: {\n      specification_name: '规格名',\n      specification_value: '规格值',\n      specification_pic_url: '规格图片',\n      specification_actions: '操作',\n      product_specifications: '货品规格',\n      product_price: '货品售价',\n      product_number: '货品数量',\n      product_url: '货品图片',\n      product_actions: '操作',\n      attribute_name: '商品参数名称',\n      attribute_value: '商品参数值',\n      attribute_actions: '操作'\n    },\n    dialog: {\n      create_specification: '设置规格',\n      create_product: '添加货品',\n      create_attribute: '添加商品参数',\n      edit_specification: '设置规格',\n      edit_product: '编辑货品',\n      edit_attribute_add: '添加商品参数',\n      edit_attribute_edit: '编辑商品参数'\n    },\n    form: {\n      id: '商品ID',\n      goods_sn: '商品编号',\n      name: '商品名称',\n      counter_price: '市场售价',\n      is_new: '是否新品',\n      is_hot: '是否热卖',\n      is_on_sale: '是否在售',\n      pic_url: '商品图片',\n      gallery: '宣传画廊',\n      unit: '商品单位',\n      keywords: '关键字',\n      category_id: '所属分类',\n      brand_id: '所属品牌商',\n      brief: '商品简介',\n      detail: '商品详细介绍',\n      specification_name: '规格名',\n      specification_value: '规格值',\n      specification_pic_url: '规格图片',\n      product_specifications: '货品规格列',\n      product_price: '货品售价',\n      product_number: '货品数量',\n      product_url: '货品图片',\n      attribute_name: '商品参数名称',\n      attribute_value: '商品参数值'\n    },\n    value: {\n      is_new_true: '新品',\n      is_new_false: '非新品',\n      is_hot_true: '热卖',\n      is_hot_false: '普通',\n      is_on_sale_true: '在售',\n      is_on_sale_false: '未售',\n      multiple_spec_true: '多规格支持',\n      multiple_spec_false: '默认标准规格'\n    },\n    placeholder: {\n      unit: '件 / 个 / 盒'\n    },\n    button: {\n      publish: '上架',\n      edit: '更新商品'\n    }\n  },\n  goods_comment: {\n    table: {\n      user_id: '用户ID',\n      value_id: '商品ID',\n      star: '打分',\n      content: '评论内容',\n      pic_urls: '评论图片',\n      add_time: '时间',\n      actions: '操作'\n    },\n    dialog: {\n      reply: '回复'\n    },\n    form: {\n      content: '回复内容'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_value_id: '请输入商品ID'\n    }\n  },\n  promotion_ad: {\n    table: {\n      id: '广告ID',\n      name: '广告标题',\n      content: '广告内容',\n      url: '广告图片',\n      position: '广告位置',\n      link: '活动链接',\n      enabled: '是否启用',\n      actions: '操作'\n    },\n    form: {\n      name: '广告标题',\n      content: '广告内容',\n      url: '广告图片',\n      position: '广告位置',\n      link: '活动链接',\n      enabled: '是否启用'\n    },\n    value: {\n      position_1: '首页',\n      enabled_true: '启用',\n      enabled_false: '不启用'\n    },\n    placeholder: {\n      filter_name: '请输入广告标题',\n      filter_content: '请输入广告内容',\n      position: '请选择',\n      enabled: '请选择'\n    },\n    help: {\n      url: '只能上传jpg/png文件，且不超过1024kb'\n    }\n  },\n  promotion_coupon: {\n    text: {\n      days: '天',\n      to_time: '至',\n      units: '张',\n      coupon_min: '满{min}元可用',\n      coupon_discount: '减免{discount}元',\n      unlimited: '不限'\n    },\n    table: {\n      id: '优惠券ID',\n      name: '优惠券名称',\n      desc: '介绍',\n      tag: '标签',\n      min: '最低消费',\n      discount: '满减金额',\n      limit: '每人限领',\n      goods_type: '商品使用范围',\n      type: '优惠券类型',\n      total: '优惠券数量',\n      status: '状态',\n      actions: '操作',\n      category_name: '分类名称',\n      category_actions: '操作',\n      goods_name: '商品名称',\n      goods_sn: '商品编号',\n      goods_actions: '操作'\n    },\n    form: {\n      name: '优惠券名称',\n      desc: '介绍',\n      tag: '标签',\n      min: '最低消费',\n      discount: '满减金额',\n      limit: '每人限领',\n      type: '分发类型',\n      total: '优惠券数量',\n      time_type: '有效期',\n      goods_type: '商品限制范围'\n    },\n    value: {\n      time_type_0: '领券相对天数',\n      time_type_1: '指定绝对时间',\n      goods_type_0: '全场通用',\n      goods_type_1: '指定分类',\n      goods_type_2: '指定商品'\n    },\n    placeholder: {\n      filter_name: '请输入优惠券标题',\n      filter_type: '请选择优惠券类型',\n      filter_status: '请选择优惠券状态',\n      start_time: '选择日期',\n      end_time: '选择日期',\n      category: '请选择分类名称',\n      goods: '商品名称/商品货号'\n    }\n  },\n  promotion_coupon_detail: {\n    text: {\n      coupon_min: '满{min}元可用',\n      coupon_discount: '减免{discount}元',\n      unlimited: '不限'\n    },\n    table: {\n      name: '名称',\n      desc: '介绍名称',\n      tag: '标签',\n      type: '优惠券类型',\n      min: '最低消费',\n      discount: '优惠面值',\n      limit: '每人限额',\n      status: '当前状态',\n      goods_type: '商品范围',\n      time_scope: '有效期',\n      code: '优惠兑换码',\n      total: '发行数量',\n      id: '用户优惠券ID',\n      user_id: '用户ID',\n      add_time: '领取时间',\n      use_status: '使用状态',\n      order_id: '订单ID',\n      used_time: '使用时间'\n    },\n    placeholder: {\n      filter_user_id: '请输入用户ID',\n      filter_status: '请选择使用状态'\n    }\n  },\n  promotion_topic: {\n    table: {\n      title: '专题标题',\n      subtitle: '专题子标题',\n      pic_url: '图片',\n      content: '专题详情',\n      price: '底价',\n      read_count: '阅读数量',\n      actions: '操作'\n    },\n    dialog: {\n      content_detail: '专题详情'\n    },\n    placeholder: {\n      filter_title: '请输入专题标题',\n      filter_subtitle: '请输入专题子标题',\n      filter_sort: '请选择排序字段'\n    }\n  },\n  promotion_topic_edit: {\n    table: {\n      goods_id: '商品ID',\n      goods_pic_url: '图片',\n      goods_name: '商品名称',\n      goods_brief: '商品介绍',\n      goods_actions: '操作',\n      search_goods_id: '商品ID',\n      search_goods_pic_url: '图片',\n      search_goods_name: '商品名称'\n    },\n    dialog: {\n      add_goods: '添加商品'\n    },\n    form: {\n      title: '专题标题',\n      subtitle: '专题子标题',\n      pic_url: '专题图片',\n      content: '专题内容',\n      price: '商品低价',\n      read_count: '阅读量',\n      goods: '专题商品'\n    },\n    placeholder: {\n      search_goods_sn: '请输入商品编号',\n      search_name: '请输入商品名称'\n    },\n    button: {\n      goods_create: '创建商品'\n    }\n  },\n  promotion_groupon_rule: {\n    table: {\n      id: '团购规则ID',\n      goods_id: '商品ID',\n      goods_name: '名称',\n      pic_url: '图片',\n      discount: '团购优惠',\n      discount_member: '团购要求',\n      status: '状态',\n      expire_time: '结束时间',\n      actions: '操作'\n    },\n    form: {\n      goods_id: '商品ID',\n      discount: '团购折扣',\n      discount_member: '团购人数要求',\n      expire_time: '过期时间'\n    },\n    placeholder: {\n      filter_goods_id: '请输入商品编号',\n      expire_time: '选择日期'\n    }\n  },\n  promotion_groupon_activity: {\n    table: {\n      order_id: '订单ID',\n      user_id: '用户ID',\n      groupon_order_id: '订单ID',\n      groupon_user_id: '用户ID',\n      subgroupons_length: '参与人数',\n      rules_discount: '团购折扣',\n      rules_discount_member: '团购要求',\n      groupon_share_url: '分享图片',\n      rules_add_time: '开始时间',\n      rules_expire_time: '结束时间'\n    },\n    placeholder: {\n      filter_groupon_rule_id: '请输入团购规则ID'\n    }\n  },\n  sys_admin: {\n    table: {\n      id: '管理员ID',\n      username: '管理员名称',\n      avatar: '管理员头像',\n      role_ids: '管理员角色',\n      actions: '操作'\n    },\n    form: {\n      username: '管理员名称',\n      password: '管理员密码',\n      avatar: '管理员头像',\n      role_ids: '管理员角色'\n    },\n    placeholder: {\n      filter_username: '请输入管理员名称',\n      role_ids: '请选择'\n    }\n  },\n  sys_notice: {\n    table: {\n      title: '通知标题',\n      content: '通知详情',\n      add_time: '添加时间',\n      admin_id: '管理员ID',\n      actions: '操作'\n    },\n    dialog: {\n      content_detail: '通知详情'\n    },\n    form: {\n      title: '通知标题',\n      content: '通知内容'\n    },\n    placeholder: {\n      filter_title: '请输入标题关键字',\n      filter_content: '请输入内容关键字'\n    }\n  },\n  sys_log: {\n    table: {\n      admin: '操作管理员',\n      ip: 'IP地址',\n      add_time: '操作时间',\n      type: '操作类别',\n      action: '操作动作',\n      status: '操作状态',\n      result: '操作结果',\n      comment: '备注信息'\n    },\n    placeholder: {\n      filter_name: '请输入操作管理员'\n    },\n    value: {\n      status_success: '成功',\n      status_error: '失败'\n    }\n  },\n  sys_role: {\n    table: {\n      name: '角色名称',\n      desc: '说明',\n      actions: '操作'\n    },\n    dialog: {\n      permission: '权限配置'\n    },\n    form: {\n      name: '角色名称',\n      desc: '说明'\n    },\n    placeholder: {\n      filter_name: '请输入角色名称'\n    }\n  },\n  sys_os: {\n    table: {\n      key: '对象KEY',\n      name: '对象名称',\n      type: '对象类型',\n      size: '对象大小',\n      url: '图片',\n      url_link: '图片链接',\n      actions: '操作'\n    },\n    dialog: {\n      create: '上传对象',\n      update: '修改对象名称'\n    },\n    form: {\n      name: '对象名称'\n    },\n    placeholder: {\n      filter_key: '请输入对象KEY',\n      filter_name: '请输入对象名称'\n    },\n    button: {\n      upload: '点击上传'\n    }\n  },\n  config_mall: {\n    form: {\n      mall_name: '商场名称',\n      mall_address: '商场地址',\n      mall_coordinates: '地理坐标',\n      mall_phone: '联系电话',\n      mall_qq: '联系QQ'\n    },\n    placeholder: {\n      mall_longitude: '经度',\n      mall_latitude: '纬度'\n    }\n  },\n  config_express: {\n    form: {\n      freight_min: '运费满减所需最低消费',\n      freight_value: '运费满减不足所需运费'\n    }\n  },\n  config_order: {\n    text: {\n      minutes: '分钟',\n      days: '天'\n    },\n    form: {\n      unpaid: '用户下单后超时',\n      unconfirm: '订单发货后超期',\n      comment: '确认收货后超期'\n    },\n    help: {\n      unpaid: '用户未付款，则订单自动取消',\n      unconfirm: '未确认收货，则订单自动确认收货',\n      comment: '未评价商品，则取消评价资格'\n    }\n  },\n  config_wx: {\n    section: {\n      home: '首页配置',\n      other: '其他配置'\n    },\n    form: {\n      index_new: '新品首发栏目商品显示数量',\n      index_hot: '人气推荐栏目商品显示数量',\n      index_brand: '品牌制造商直供栏目品牌商显示数量',\n      index_topic: '专题精选栏目显示数量',\n      catlog_list: '分类栏目显示数量',\n      catlog_goods: '分类栏目商品显示数量',\n      share: '商品分享功能'\n    }\n  },\n  profile_notice: {\n    text: {\n      read: '已读',\n      unread: '未读',\n      admin_time: '{admin} 于 {time} 通知如下内容：'\n    },\n    section: {\n      unread: '未读通知',\n      read: '已读通知',\n      all: '所有通知'\n    },\n    table: {\n      notice_title: '通知标题',\n      add_time: '通知时间',\n      read_time: '通知状态',\n      actions: '操作'\n    },\n    placeholder: {\n      filter_title: '请输入标题关键字'\n    },\n    button: {\n      batch_read: '批量已读',\n      read: '阅读'\n    }\n  },\n  profile_password: {\n    form: {\n      old_password: '原密码',\n      new_password: '新密码',\n      new_password_2: '确认密码'\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/main.js",
    "content": "import Vue from 'vue'\nimport VueI18n from 'vue-i18n' // translations\n\nimport Cookies from 'js-cookie'\n\nimport 'normalize.css/normalize.css' // A modern alternative to CSS resets\n\nimport Element from 'element-ui'\nimport ElementLocale from 'element-ui/lib/locale'\nimport './styles/element-variables.scss'\n\nimport '@/styles/index.scss' // global css\n\nimport App from './App'\nimport store from './store'\nimport router from './router'\n\nimport './icons' // icon\nimport './permission' // permission control\n\nimport * as filters from './filters' // global filters\n\nimport permission from '@/directive/permission/index.js' // 权限判断指令\n\nimport Print from '@/utils/print' // 打印\n\nVue.use(VueI18n)\n\n// Load all locales and remember context\n// https://kazupon.github.io/vue-i18n/guide/hot-reload.html\nfunction loadMessages() {\n  const context = require.context('./locales', false, /[a-z0-9-_]+\\.js$/i)\n\n  const messages = context\n    .keys()\n    .sort()\n    .map((key) => ({ key, locale: key.match(/[a-z0-9-_]+/i)[0] }))\n    .reduce(\n      (messages, { key, locale }) => ({\n        ...messages,\n        [locale]: context(key).default\n      }),\n      {}\n    )\n\n  return { context, messages }\n}\n\nconst { context, messages } = loadMessages()\n\n// VueI18n instance\nconst i18n = new VueI18n({\n  locale: 'zh-Hans',\n  messages\n})\n\n// Update Element UI locale when Vue locale is changed\n// https://element.eleme.cn/#/en-US/component/i18n\nElementLocale.i18n((key, value) => i18n.t(key, value))\n\nVue.use(Print)\n\nVue.use(Element, {\n  size: Cookies.get('size') || 'mini' // set element-ui default size\n})\n\nVue.directive('permission', permission)\n\n// register global utility filters.\nObject.keys(filters).forEach(key => {\n  Vue.filter(key, filters[key])\n})\n\nVue.config.productionTip = false\n\nnew Vue({\n  el: '#app',\n  router,\n  store,\n  i18n,\n  render: h => h(App)\n})\n\n// Hot updates\n// https://kazupon.github.io/vue-i18n/guide/hot-reload.html\nif (module.hot) {\n  module.hot.accept(context.id, () => {\n    const { messages: newMessages } = loadMessages()\n\n    Object.keys(newMessages)\n      .filter((locale) => messages[locale] !== newMessages[locale])\n      .forEach((locale) => {\n        messages[locale] = newMessages[locale]\n        i18n.setLocaleMessage(locale, messages[locale])\n      })\n  })\n}\n"
  },
  {
    "path": "litemall-admin/src/permission.js",
    "content": "import router from './router'\nimport store from './store'\nimport { Message } from 'element-ui'\nimport NProgress from 'nprogress' // progress bar\nimport 'nprogress/nprogress.css'// progress bar style\nimport { getToken } from '@/utils/auth' // getToken from cookie\n\nNProgress.configure({ showSpinner: false })// NProgress Configuration\n\n// permission judge function\nfunction hasPermission(perms, permissions) {\n  if (perms.indexOf('*') >= 0) return true // admin permission passed directly\n  if (!permissions) return true\n  return perms.some(perm => permissions.indexOf(perm) >= 0)\n}\n\nconst whiteList = ['/login', '/auth-redirect']// no redirect whitelist\n\nrouter.beforeEach((to, from, next) => {\n  NProgress.start() // start progress bar\n  if (getToken()) { // determine if there has token\n    /* has token*/\n    if (to.path === '/login') {\n      next({ path: '/' })\n      NProgress.done() // if current page is dashboard will not trigger\tafterEach hook, so manually handle it\n    } else {\n      if (store.getters.perms.length === 0) { // 判断当前用户是否已拉取完user_info信息\n        store.dispatch('GetUserInfo').then(res => { // 拉取user_info\n          const perms = res.data.data.perms // note: perms must be a array! such as: ['GET /aaa','POST /bbb']\n          store.dispatch('GenerateRoutes', { perms }).then(() => { // 根据perms权限生成可访问的路由表\n            router.addRoutes(store.getters.addRoutes) // 动态添加可访问路由表\n            next({ ...to, replace: true }) // hack方法 确保addRoutes已完成 ,set the replace: true so the navigation will not leave a history record\n          })\n        }).catch((err) => {\n          store.dispatch('FedLogOut').then(() => {\n            Message.error(err || 'Verification failed, please login again')\n            next({ path: '/' })\n          })\n        })\n      } else {\n        // 没有动态改变权限的需求可直接next() 删除下方权限判断 ↓\n        if (hasPermission(store.getters.perms, to.meta.perms)) {\n          next()\n        } else {\n          next({ path: '/401', replace: true, query: { noGoBack: true }})\n        }\n        // 可删 ↑\n      }\n    }\n  } else {\n    /* has no token*/\n    if (whiteList.indexOf(to.path) !== -1) { // 在免登录白名单，直接进入\n      next()\n    } else {\n      next(`/login?redirect=${to.path}`) // 否则全部重定向到登录页\n      NProgress.done() // if current page is login will not trigger afterEach hook, so manually handle it\n    }\n  }\n})\n\nrouter.afterEach(() => {\n  NProgress.done() // finish progress bar\n})\n"
  },
  {
    "path": "litemall-admin/src/router/index.js",
    "content": "import Vue from 'vue'\nimport Router from 'vue-router'\n\nVue.use(Router)\n\n/* Layout */\nimport Layout from '@/views/layout/Layout'\n\n/** note: Submenu only appear when children.length>=1\n *  detail see  https://panjiachen.github.io/vue-element-admin-site/guide/essentials/router-and-nav.html\n **/\n\n/**\n* hidden: true                   if `hidden:true` will not show in the sidebar(default is false)\n* alwaysShow: true               if set true, will always show the root menu, whatever its child routes length\n*                                if not set alwaysShow, only more than one route under the children\n*                                it will becomes nested mode, otherwise not show the root menu\n* redirect: noredirect           if `redirect:noredirect` will no redirect in the breadcrumb\n* name:'router-name'             the name is used by <keep-alive> (must set!!!)\n* meta : {\n    perms: ['GET /aaa','POST /bbb']     will control the page perms (you can set multiple perms)\n    title: 'title'               the name show in submenu and breadcrumb (recommend set)\n    icon: 'svg-name'             the icon show in the sidebar,\n    noCache: true                if true ,the page will no be cached(default is false)\n  }\n**/\nexport const constantRoutes = [\n  {\n    path: '/redirect',\n    component: Layout,\n    hidden: true,\n    children: [\n      {\n        path: '/redirect/:path(.*)',\n        component: () => import('@/views/redirect/index')\n      }\n    ]\n  },\n  {\n    path: '/login',\n    component: () => import('@/views/login/index'),\n    hidden: true\n  },\n  {\n    path: '/auth-redirect',\n    component: () => import('@/views/login/authredirect'),\n    hidden: true\n  },\n  {\n    path: '/404',\n    component: () => import('@/views/errorPage/404'),\n    hidden: true\n  },\n  {\n    path: '/401',\n    component: () => import('@/views/errorPage/401'),\n    hidden: true\n  },\n  {\n    path: '',\n    component: Layout,\n    redirect: 'dashboard',\n    children: [\n      {\n        path: 'dashboard',\n        component: () => import('@/views/dashboard/index'),\n        name: 'Dashboard',\n        meta: { title: 'app.menu.dashboard', icon: 'dashboard', affix: true }\n      }\n    ]\n  }\n]\n\nexport const asyncRoutes = [\n  {\n    path: '/user',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'userManage',\n    meta: {\n      title: 'app.menu.user',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'user',\n        component: () => import('@/views/user/user'),\n        name: 'user',\n        meta: {\n          perms: ['GET /admin/user/list'],\n          title: 'app.menu.user_user',\n          noCache: true\n        }\n      },\n      {\n        path: 'address',\n        component: () => import('@/views/user/address'),\n        name: 'address',\n        meta: {\n          perms: ['GET /admin/address/list'],\n          title: 'app.menu.user_address',\n          noCache: true\n        }\n      },\n      {\n        path: 'collect',\n        component: () => import('@/views/user/collect'),\n        name: 'collect',\n        meta: {\n          perms: ['GET /admin/collect/list'],\n          title: 'app.menu.user_collect',\n          noCache: true\n        }\n      },\n      {\n        path: 'footprint',\n        component: () => import('@/views/user/footprint'),\n        name: 'footprint',\n        meta: {\n          perms: ['GET /admin/footprint/list'],\n          title: 'app.menu.user_footprint',\n          noCache: true\n        }\n      },\n      {\n        path: 'history',\n        component: () => import('@/views/user/history'),\n        name: 'history',\n        meta: {\n          perms: ['GET /admin/history/list'],\n          title: 'app.menu.user_history',\n          noCache: true\n        }\n      },\n      {\n        path: 'feedback',\n        component: () => import('@/views/user/feedback'),\n        name: 'feedback',\n        meta: {\n          perms: ['GET /admin/feedback/list'],\n          title: 'app.menu.user_feedback',\n          noCache: true\n        }\n      }\n    ]\n  },\n\n  {\n    path: '/mall',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'mallManage',\n    meta: {\n      title: 'app.menu.mall',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'region',\n        component: () => import('@/views/mall/region'),\n        name: 'region',\n        meta: {\n          title: 'app.menu.mall_region',\n          noCache: true\n        }\n      },\n      {\n        path: 'brand',\n        component: () => import('@/views/mall/brand'),\n        name: 'brand',\n        meta: {\n          perms: ['GET /admin/brand/list', 'POST /admin/brand/create', 'GET /admin/brand/read', 'POST /admin/brand/update', 'POST /admin/brand/delete'],\n          title: 'app.menu.mall_brand',\n          noCache: true\n        }\n      },\n      {\n        path: 'category',\n        component: () => import('@/views/mall/category'),\n        name: 'category',\n        meta: {\n          perms: ['GET /admin/category/list', 'POST /admin/category/create', 'GET /admin/category/read', 'POST /admin/category/update', 'POST /admin/category/delete'],\n          title: 'app.menu.mall_category',\n          noCache: true\n        }\n      },\n      {\n        path: 'order',\n        component: () => import('@/views/mall/order'),\n        name: 'order',\n        meta: {\n          perms: ['GET /admin/order/list', 'GET /admin/order/detail', 'POST /admin/order/ship', 'POST /admin/order/refund', 'POST /admin/order/delete', 'POST /admin/order/reply'],\n          title: 'app.menu.mall_order',\n          noCache: true\n        }\n      },\n      {\n        path: 'aftersale',\n        component: () => import('@/views/mall/aftersale'),\n        name: 'aftersale',\n        meta: {\n          perms: ['GET /admin/aftersale/list', 'GET /admin/aftersale/detail', 'POST /admin/order/receive', 'POST /admin/aftersale/complete', 'POST /admin/aftersale/reject'],\n          title: 'app.menu.mall_aftersale',\n          noCache: true\n        }\n      },\n      {\n        path: 'issue',\n        component: () => import('@/views/mall/issue'),\n        name: 'issue',\n        meta: {\n          perms: ['GET /admin/issue/list', 'POST /admin/issue/create', 'GET /admin/issue/read', 'POST /admin/issue/update', 'POST /admin/issue/delete'],\n          title: 'app.menu.mall_issue',\n          noCache: true\n        }\n      },\n      {\n        path: 'keyword',\n        component: () => import('@/views/mall/keyword'),\n        name: 'keyword',\n        meta: {\n          perms: ['GET /admin/keyword/list', 'POST /admin/keyword/create', 'GET /admin/keyword/read', 'POST /admin/keyword/update', 'POST /admin/keyword/delete'],\n          title: 'app.menu.mall_keyword',\n          noCache: true\n        }\n      }\n    ]\n  },\n\n  {\n    path: '/goods',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'goodsManage',\n    meta: {\n      title: 'app.menu.goods',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'list',\n        component: () => import('@/views/goods/list'),\n        name: 'goodsList',\n        meta: {\n          perms: ['GET /admin/goods/list', 'POST /admin/goods/delete'],\n          title: 'app.menu.goods_list',\n          noCache: true\n        }\n      },\n      {\n        path: 'create',\n        component: () => import('@/views/goods/create'),\n        name: 'goodsCreate',\n        meta: {\n          perms: ['POST /admin/goods/create'],\n          title: 'app.menu.goods_create',\n          noCache: true\n        }\n      },\n      {\n        path: 'edit',\n        component: () => import('@/views/goods/edit'),\n        name: 'goodsEdit',\n        meta: {\n          perms: ['GET /admin/goods/detail', 'POST /admin/goods/update', 'POST /admin/goods/catAndBrand'],\n          title: 'app.menu.goods_edit',\n          noCache: true\n        },\n        hidden: true\n      },\n      {\n        path: 'comment',\n        component: () => import('@/views/goods/comment'),\n        name: 'goodsComment',\n        meta: {\n          perms: ['GET /admin/comment/list', 'POST /admin/comment/delete'],\n          title: 'app.menu.goods_comment',\n          noCache: true\n        }\n      }\n    ]\n  },\n  {\n    path: '/promotion',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'promotionManage',\n    meta: {\n      title: 'app.menu.promotion',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'ad',\n        component: () => import('@/views/promotion/ad'),\n        name: 'ad',\n        meta: {\n          perms: ['GET /admin/ad/list', 'POST /admin/ad/create', 'GET /admin/ad/read', 'POST /admin/ad/update', 'POST /admin/ad/delete'],\n          title: 'app.menu.promotion_ad',\n          noCache: true\n        }\n      },\n      {\n        path: 'coupon',\n        component: () => import('@/views/promotion/coupon'),\n        name: 'coupon',\n        meta: {\n          perms: ['GET /admin/coupon/list', 'POST /admin/coupon/create', 'POST /admin/coupon/update', 'POST /admin/coupon/delete'],\n          title: 'app.menu.promotion_coupon',\n          noCache: true\n        }\n      },\n      {\n        path: 'couponDetail',\n        component: () => import('@/views/promotion/couponDetail'),\n        name: 'couponDetail',\n        meta: {\n          perms: ['GET /admin/coupon/list', 'GET /admin/coupon/listuser'],\n          title: 'app.menu.promotion_coupon_detail',\n          noCache: true\n        },\n        hidden: true\n      },\n      {\n        path: 'topic',\n        component: () => import('@/views/promotion/topic'),\n        name: 'topic',\n        meta: {\n          perms: ['GET /admin/topic/list', 'POST /admin/topic/create', 'GET /admin/topic/read', 'POST /admin/topic/update', 'POST /admin/topic/delete'],\n          title: 'app.menu.promotion_topic',\n          noCache: true\n        }\n      },\n      {\n        path: 'topic-create',\n        component: () => import('@/views/promotion/topicCreate'),\n        name: 'topicCreate',\n        meta: {\n          perms: ['POST /admin/topic/create'],\n          title: 'app.menu.promotion_topic_create',\n          noCache: true\n        },\n        hidden: true\n      },\n      {\n        path: 'topic-edit',\n        component: () => import('@/views/promotion/topicEdit'),\n        name: 'topicEdit',\n        meta: {\n          perms: ['GET /admin/topic/read', 'POST /admin/topic/update'],\n          title: 'app.menu.promotion_topic_edit',\n          noCache: true\n        },\n        hidden: true\n      },\n      {\n        path: 'groupon-rule',\n        component: () => import('@/views/promotion/grouponRule'),\n        name: 'grouponRule',\n        meta: {\n          perms: ['GET /admin/groupon/list', 'POST /admin/groupon/create', 'POST /admin/groupon/update', 'POST /admin/groupon/delete'],\n          title: 'app.menu.promotion_groupon_rule',\n          noCache: true\n        }\n      },\n      {\n        path: 'groupon-activity',\n        component: () => import('@/views/promotion/grouponActivity'),\n        name: 'grouponActivity',\n        meta: {\n          perms: ['GET /admin/groupon/listRecord'],\n          title: 'app.menu.promotion_groupon_activity',\n          noCache: true\n        }\n      }\n    ]\n  },\n\n  {\n    path: '/sys',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'sysManage',\n    meta: {\n      title: 'app.menu.sys',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'admin',\n        component: () => import('@/views/sys/admin'),\n        name: 'admin',\n        meta: {\n          perms: ['GET /admin/admin/list', 'POST /admin/admin/create', 'POST /admin/admin/update', 'POST /admin/admin/delete'],\n          title: 'app.menu.sys_admin',\n          noCache: true\n        }\n      },\n      {\n        path: 'notice',\n        component: () => import('@/views/sys/notice'),\n        name: 'sysNotice',\n        meta: {\n          perms: ['GET /admin/notice/list', 'POST /admin/notice/create', 'POST /admin/notice/update', 'POST /admin/notice/delete'],\n          title: 'app.menu.sys_notice',\n          noCache: true\n        }\n      },\n      {\n        path: 'log',\n        component: () => import('@/views/sys/log'),\n        name: 'log',\n        meta: {\n          perms: ['GET /admin/log/list'],\n          title: 'app.menu.sys_log',\n          noCache: true\n        }\n      },\n      {\n        path: 'role',\n        component: () => import('@/views/sys/role'),\n        name: 'role',\n        meta: {\n          perms: ['GET /admin/role/list', 'POST /admin/role/create', 'POST /admin/role/update', 'POST /admin/role/delete', 'GET /admin/role/permissions', 'POST /admin/role/permissions'],\n          title: 'app.menu.sys_role',\n          noCache: true\n        }\n      },\n      {\n        path: 'os',\n        component: () => import('@/views/sys/os'),\n        name: 'os',\n        meta: {\n          perms: ['GET /admin/storage/list', 'POST /admin/storage/create', 'POST /admin/storage/update', 'POST /admin/storage/delete'],\n          title: 'app.menu.sys_os',\n          noCache: true\n        }\n      }\n    ]\n  },\n\n  {\n    path: '/config',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'configManage',\n    meta: {\n      title: 'app.menu.config',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'mall',\n        component: () => import('@/views/config/mall'),\n        name: 'configMall',\n        meta: {\n          perms: ['GET /admin/config/mall', 'POST /admin/config/mall'],\n          title: 'app.menu.config_mall',\n          noCache: true\n        }\n      },\n      {\n        path: 'express',\n        component: () => import('@/views/config/express'),\n        name: 'configExpress',\n        meta: {\n          perms: ['GET /admin/config/express', 'POST /admin/config/express'],\n          title: 'app.menu.config_express',\n          noCache: true\n        }\n      },\n      {\n        path: 'order',\n        component: () => import('@/views/config/order'),\n        name: 'configOrder',\n        meta: {\n          perms: ['GET /admin/config/order', 'POST /admin/config/order'],\n          title: 'app.menu.config_order',\n          noCache: true\n        }\n      },\n      {\n        path: 'wx',\n        component: () => import('@/views/config/wx'),\n        name: 'configWx',\n        meta: {\n          perms: ['GET /admin/config/wx', 'POST /admin/config/wx'],\n          title: 'app.menu.config_wx',\n          noCache: true\n        }\n      }\n    ]\n  },\n\n  {\n    path: '/stat',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'statManage',\n    meta: {\n      title: 'app.menu.stat',\n      icon: 'chart'\n    },\n    children: [\n      {\n        path: 'user',\n        component: () => import('@/views/stat/user'),\n        name: 'statUser',\n        meta: {\n          perms: ['GET /admin/stat/user'],\n          title: 'app.menu.stat_user',\n          noCache: true\n        }\n      },\n      {\n        path: 'order',\n        component: () => import('@/views/stat/order'),\n        name: 'statOrder',\n        meta: {\n          perms: ['GET /admin/stat/order'],\n          title: 'app.menu.stat_order',\n          noCache: true\n        }\n      },\n      {\n        path: 'goods',\n        component: () => import('@/views/stat/goods'),\n        name: 'statGoods',\n        meta: {\n          perms: ['GET /admin/stat/goods'],\n          title: 'app.menu.stat_goods',\n          noCache: true\n        }\n      }\n    ]\n  },\n  {\n    path: 'external-link',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    name: 'externalLink',\n    meta: {\n      title: 'app.menu.external_link',\n      icon: 'link'\n    },\n    children: [\n      {\n        path: 'https://cloud.tencent.com/product/cos',\n        meta: { title: 'app.menu.external_link_tencent_cos', icon: 'link' }\n      },\n      {\n        path: 'https://cloud.tencent.com/product/sms',\n        meta: { title: 'app.menu.external_link_tencent_sms', icon: 'link' }\n      },\n      {\n        path: 'https://pay.weixin.qq.com/index.php/core/home/login',\n        meta: { title: 'app.menu.external_link_weixin_pay', icon: 'link' }\n      },\n      {\n        path: 'https://mpkf.weixin.qq.com/',\n        meta: { title: 'app.menu.external_link_weixin_mpkf', icon: 'link' }\n      },\n      {\n        path: 'https://www.alibabacloud.com/zh/product/oss',\n        meta: { title: 'app.menu.external_link_alibaba_oss', icon: 'link' }\n      },\n      {\n        path: 'https://www.qiniu.com/products/kodo',\n        meta: { title: 'app.menu.external_link_qiniu_kodo', icon: 'link' }\n      },\n      {\n        path: 'http://www.kdniao.com/api-track',\n        meta: { title: 'app.menu.external_link_kdniao_api', icon: 'link' }\n      }\n    ]\n  },\n  {\n    path: '/profile',\n    component: Layout,\n    redirect: 'noredirect',\n    alwaysShow: true,\n    children: [\n      {\n        path: 'password',\n        component: () => import('@/views/profile/password'),\n        name: 'password',\n        meta: { title: 'app.menu.profile_password', noCache: true }\n      },\n      {\n        path: 'notice',\n        component: () => import('@/views/profile/notice'),\n        name: 'notice',\n        meta: { title: 'app.menu.profile_notice', noCache: true }\n      }\n    ],\n    hidden: true\n  },\n\n  { path: '*', redirect: '/404', hidden: true }\n]\n\nconst createRouter = () => new Router({\n  // mode: 'history', // require service support\n  scrollBehavior: () => ({ y: 0 }),\n  routes: constantRoutes\n})\n\nconst router = createRouter()\n\n// Detail see: https://github.com/vuejs/vue-router/issues/1234#issuecomment-357941465\nexport function resetRouter() {\n  const newRouter = createRouter()\n  router.matcher = newRouter.matcher // reset router\n}\n\nexport default router\n"
  },
  {
    "path": "litemall-admin/src/store/getters.js",
    "content": "const getters = {\n  sidebar: state => state.app.sidebar,\n  language: state => state.app.language,\n  size: state => state.app.size,\n  device: state => state.app.device,\n  visitedViews: state => state.tagsView.visitedViews,\n  cachedViews: state => state.tagsView.cachedViews,\n  token: state => state.user.token,\n  avatar: state => state.user.avatar,\n  name: state => state.user.name,\n  roles: state => state.user.roles,\n  perms: state => state.user.perms,\n  permission_routes: state => state.permission.routes,\n  addRoutes: state => state.permission.addRoutes\n}\nexport default getters\n"
  },
  {
    "path": "litemall-admin/src/store/index.js",
    "content": "import Vue from 'vue'\nimport Vuex from 'vuex'\nimport app from './modules/app'\nimport permission from './modules/permission'\nimport tagsView from './modules/tagsView'\nimport user from './modules/user'\nimport getters from './getters'\n\nVue.use(Vuex)\n\nconst store = new Vuex.Store({\n  modules: {\n    app,\n    permission,\n    tagsView,\n    user\n  },\n  getters\n})\n\nexport default store\n"
  },
  {
    "path": "litemall-admin/src/store/modules/app.js",
    "content": "import Cookies from 'js-cookie'\n\nconst app = {\n  state: {\n    sidebar: {\n      opened: !+Cookies.get('sidebarStatus'),\n      withoutAnimation: false\n    },\n    device: 'desktop',\n    language: Cookies.get('language') || 'en',\n    size: Cookies.get('size') || 'medium'\n  },\n  mutations: {\n    TOGGLE_SIDEBAR: state => {\n      if (state.sidebar.opened) {\n        Cookies.set('sidebarStatus', 1)\n      } else {\n        Cookies.set('sidebarStatus', 0)\n      }\n      state.sidebar.opened = !state.sidebar.opened\n      state.sidebar.withoutAnimation = false\n    },\n    CLOSE_SIDEBAR: (state, withoutAnimation) => {\n      Cookies.set('sidebarStatus', 1)\n      state.sidebar.opened = false\n      state.sidebar.withoutAnimation = withoutAnimation\n    },\n    TOGGLE_DEVICE: (state, device) => {\n      state.device = device\n    },\n    SET_LANGUAGE: (state, language) => {\n      state.language = language\n      Cookies.set('language', language)\n    },\n    SET_SIZE: (state, size) => {\n      state.size = size\n      Cookies.set('size', size)\n    }\n  },\n  actions: {\n    toggleSideBar({ commit }) {\n      commit('TOGGLE_SIDEBAR')\n    },\n    closeSideBar({ commit }, { withoutAnimation }) {\n      commit('CLOSE_SIDEBAR', withoutAnimation)\n    },\n    toggleDevice({ commit }, device) {\n      commit('TOGGLE_DEVICE', device)\n    },\n    setLanguage({ commit }, language) {\n      commit('SET_LANGUAGE', language)\n    },\n    setSize({ commit }, size) {\n      commit('SET_SIZE', size)\n    }\n  }\n}\n\nexport default app\n"
  },
  {
    "path": "litemall-admin/src/store/modules/permission.js",
    "content": "import { asyncRoutes, constantRoutes } from '@/router'\n\n/**\n * 通过meta.perms判断是否与当前用户权限匹配\n * @param perms\n * @param route\n */\nfunction hasPermission(perms, route) {\n  if (route.meta && route.meta.perms) {\n    return perms.some(perm => route.meta.perms.includes(perm))\n  } else {\n    return true\n  }\n}\n\n/**\n * 递归过滤异步路由表，返回符合用户角色权限的路由表\n * @param routes asyncRoutes\n * @param perms\n */\nfunction filterAsyncRoutes(routes, perms) {\n  const res = []\n\n  routes.forEach(route => {\n    const tmp = { ...route }\n    if (tmp.children) {\n      tmp.children = filterAsyncRoutes(tmp.children, perms)\n      if (tmp.children && tmp.children.length > 0) {\n        res.push(tmp)\n      }\n    } else {\n      if (hasPermission(perms, tmp)) {\n        res.push(tmp)\n      }\n    }\n  })\n\n  return res\n}\n\nconst permission = {\n  state: {\n    routes: constantRoutes,\n    addRoutes: []\n  },\n  mutations: {\n    SET_ROUTES: (state, routes) => {\n      state.addRoutes = routes\n      state.routes = constantRoutes.concat(routes)\n    }\n  },\n  actions: {\n    GenerateRoutes({ commit }, data) {\n      return new Promise(resolve => {\n        const { perms } = data\n        let accessedRoutes\n        if (perms.includes('*')) {\n          accessedRoutes = asyncRoutes\n        } else {\n          accessedRoutes = filterAsyncRoutes(asyncRoutes, perms)\n        }\n        commit('SET_ROUTES', accessedRoutes)\n        resolve()\n      })\n    }\n  }\n}\n\nexport default permission\n"
  },
  {
    "path": "litemall-admin/src/store/modules/tagsView.js",
    "content": "const state = {\n  visitedViews: [],\n  cachedViews: []\n}\n\nconst mutations = {\n  ADD_VISITED_VIEW: (state, view) => {\n    if (state.visitedViews.some(v => v.path === view.path)) return\n    state.visitedViews.push(\n      Object.assign({}, view, {\n        title: view.meta.title || 'no-name'\n      })\n    )\n  },\n  ADD_CACHED_VIEW: (state, view) => {\n    if (state.cachedViews.includes(view.name)) return\n    if (!view.meta.noCache) {\n      state.cachedViews.push(view.name)\n    }\n  },\n\n  DEL_VISITED_VIEW: (state, view) => {\n    for (const [i, v] of state.visitedViews.entries()) {\n      if (v.path === view.path) {\n        state.visitedViews.splice(i, 1)\n        break\n      }\n    }\n  },\n  DEL_CACHED_VIEW: (state, view) => {\n    const index = state.cachedViews.indexOf(view.name)\n    index > -1 && state.cachedViews.splice(index, 1)\n  },\n\n  DEL_OTHERS_VISITED_VIEWS: (state, view) => {\n    state.visitedViews = state.visitedViews.filter(v => {\n      return v.meta.affix || v.path === view.path\n    })\n  },\n  DEL_OTHERS_CACHED_VIEWS: (state, view) => {\n    const index = state.cachedViews.indexOf(view.name)\n    if (index > -1) {\n      state.cachedViews = state.cachedViews.slice(index, index + 1)\n    } else {\n      // if index = -1, there is no cached tags\n      state.cachedViews = []\n    }\n  },\n\n  DEL_ALL_VISITED_VIEWS: state => {\n    // keep affix tags\n    const affixTags = state.visitedViews.filter(tag => tag.meta.affix)\n    state.visitedViews = affixTags\n  },\n  DEL_ALL_CACHED_VIEWS: state => {\n    state.cachedViews = []\n  },\n\n  UPDATE_VISITED_VIEW: (state, view) => {\n    for (let v of state.visitedViews) {\n      if (v.path === view.path) {\n        v = Object.assign(v, view)\n        break\n      }\n    }\n  }\n}\n\nconst actions = {\n  addView({ dispatch }, view) {\n    dispatch('addVisitedView', view)\n    dispatch('addCachedView', view)\n  },\n  addVisitedView({ commit }, view) {\n    commit('ADD_VISITED_VIEW', view)\n  },\n  addCachedView({ commit }, view) {\n    commit('ADD_CACHED_VIEW', view)\n  },\n\n  delView({ dispatch, state }, view) {\n    return new Promise(resolve => {\n      dispatch('delVisitedView', view)\n      dispatch('delCachedView', view)\n      resolve({\n        visitedViews: [...state.visitedViews],\n        cachedViews: [...state.cachedViews]\n      })\n    })\n  },\n  delVisitedView({ commit, state }, view) {\n    return new Promise(resolve => {\n      commit('DEL_VISITED_VIEW', view)\n      resolve([...state.visitedViews])\n    })\n  },\n  delCachedView({ commit, state }, view) {\n    return new Promise(resolve => {\n      commit('DEL_CACHED_VIEW', view)\n      resolve([...state.cachedViews])\n    })\n  },\n\n  delOthersViews({ dispatch, state }, view) {\n    return new Promise(resolve => {\n      dispatch('delOthersVisitedViews', view)\n      dispatch('delOthersCachedViews', view)\n      resolve({\n        visitedViews: [...state.visitedViews],\n        cachedViews: [...state.cachedViews]\n      })\n    })\n  },\n  delOthersVisitedViews({ commit, state }, view) {\n    return new Promise(resolve => {\n      commit('DEL_OTHERS_VISITED_VIEWS', view)\n      resolve([...state.visitedViews])\n    })\n  },\n  delOthersCachedViews({ commit, state }, view) {\n    return new Promise(resolve => {\n      commit('DEL_OTHERS_CACHED_VIEWS', view)\n      resolve([...state.cachedViews])\n    })\n  },\n\n  delAllViews({ dispatch, state }, view) {\n    return new Promise(resolve => {\n      dispatch('delAllVisitedViews', view)\n      dispatch('delAllCachedViews', view)\n      resolve({\n        visitedViews: [...state.visitedViews],\n        cachedViews: [...state.cachedViews]\n      })\n    })\n  },\n  delAllVisitedViews({ commit, state }) {\n    return new Promise(resolve => {\n      commit('DEL_ALL_VISITED_VIEWS')\n      resolve([...state.visitedViews])\n    })\n  },\n  delAllCachedViews({ commit, state }) {\n    return new Promise(resolve => {\n      commit('DEL_ALL_CACHED_VIEWS')\n      resolve([...state.cachedViews])\n    })\n  },\n\n  updateVisitedView({ commit }, view) {\n    commit('UPDATE_VISITED_VIEW', view)\n  }\n}\n\nexport default {\n  namespaced: true,\n  state,\n  mutations,\n  actions\n}\n"
  },
  {
    "path": "litemall-admin/src/store/modules/user.js",
    "content": "import { loginByUsername, logout, getUserInfo } from '@/api/login'\nimport { getToken, setToken, removeToken } from '@/utils/auth'\nimport router, { resetRouter } from '@/router'\n\nconst user = {\n  state: {\n    user: '',\n    token: getToken(),\n    name: '',\n    avatar: '',\n    roles: [],\n    perms: []\n  },\n\n  mutations: {\n    SET_TOKEN: (state, token) => {\n      state.token = token\n    },\n    SET_NAME: (state, name) => {\n      state.name = name\n    },\n    SET_AVATAR: (state, avatar) => {\n      state.avatar = avatar\n    },\n    SET_ROLES: (state, roles) => {\n      state.roles = roles\n    },\n    SET_PERMS: (state, perms) => {\n      state.perms = perms\n    }\n  },\n\n  actions: {\n    // 用户名登录\n    LoginByUsername({ commit }, userInfo) {\n      const username = userInfo.username.trim()\n      return new Promise((resolve, reject) => {\n        loginByUsername(username, userInfo.password, userInfo.code).then(response => {\n          const token = response.data.data.token\n          commit('SET_TOKEN', token)\n          setToken(token)\n          resolve()\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 获取用户信息\n    GetUserInfo({ commit, state }) {\n      return new Promise((resolve, reject) => {\n        getUserInfo(state.token).then(response => {\n          const data = response.data.data\n\n          if (data.perms && data.perms.length > 0) { // 验证返回的perms是否是一个非空数组\n            commit('SET_PERMS', data.perms)\n          } else {\n            reject('getInfo: perms must be a non-null array !')\n          }\n\n          commit('SET_ROLES', data.roles)\n          commit('SET_NAME', data.name)\n          commit('SET_AVATAR', data.avatar)\n          resolve(response)\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 登出\n    LogOut({ commit, state, dispatch }) {\n      return new Promise((resolve, reject) => {\n        logout(state.token).then(() => {\n          commit('SET_TOKEN', '')\n          commit('SET_ROLES', [])\n          commit('SET_PERMS', [])\n          removeToken()\n          resetRouter()\n\n          // reset visited views and cached views\n          // to fixed https://github.com/PanJiaChen/vue-element-admin/issues/2485\n          dispatch('tagsView/delAllViews', null, { root: true })\n\n          resolve()\n        }).catch(error => {\n          reject(error)\n        })\n      })\n    },\n\n    // 前端 登出\n    FedLogOut({ commit }) {\n      return new Promise(resolve => {\n        commit('SET_TOKEN', '')\n        commit('SET_ROLES', [])\n        removeToken()\n        resolve()\n      })\n    },\n\n    // 动态修改权限\n    ChangeRoles({ commit, dispatch }, role) {\n      return new Promise(async resolve => {\n        commit('SET_TOKEN', role)\n        setToken(role)\n\n        const { roles } = await dispatch('GetUserInfo')\n\n        resetRouter()\n\n        const accessRoutes = await dispatch('permission/generateRoutes', roles, { root: true })\n\n        // dynamically add accessible routes\n        router.addRoutes(accessRoutes)\n\n        // reset visited views and cached views\n        dispatch('tagsView/delAllViews', null, { root: true })\n\n        resolve()\n      })\n    }\n  }\n}\n\nexport default user\n"
  },
  {
    "path": "litemall-admin/src/styles/btn.scss",
    "content": "@import './variables.scss';\n\n@mixin colorBtn($color) {\n  background: $color;\n\n  &:hover {\n    color: $color;\n\n    &:before,\n    &:after {\n      background: $color;\n    }\n  }\n}\n\n.blue-btn {\n  @include colorBtn($blue)\n}\n\n.light-blue-btn {\n  @include colorBtn($light-blue)\n}\n\n.red-btn {\n  @include colorBtn($red)\n}\n\n.pink-btn {\n  @include colorBtn($pink)\n}\n\n.green-btn {\n  @include colorBtn($green)\n}\n\n.tiffany-btn {\n  @include colorBtn($tiffany)\n}\n\n.yellow-btn {\n  @include colorBtn($yellow)\n}\n\n.pan-btn {\n  font-size: 14px;\n  color: #fff;\n  padding: 14px 36px;\n  border-radius: 8px;\n  border: none;\n  outline: none;\n  transition: 600ms ease all;\n  position: relative;\n  display: inline-block;\n\n  &:hover {\n    background: #fff;\n\n    &:before,\n    &:after {\n      width: 100%;\n      transition: 600ms ease all;\n    }\n  }\n\n  &:before,\n  &:after {\n    content: '';\n    position: absolute;\n    top: 0;\n    right: 0;\n    height: 2px;\n    width: 0;\n    transition: 400ms ease all;\n  }\n\n  &::after {\n    right: inherit;\n    top: inherit;\n    left: 0;\n    bottom: 0;\n  }\n}\n\n.custom-button {\n  display: inline-block;\n  line-height: 1;\n  white-space: nowrap;\n  cursor: pointer;\n  background: #fff;\n  color: #fff;\n  -webkit-appearance: none;\n  text-align: center;\n  box-sizing: border-box;\n  outline: 0;\n  margin: 0;\n  padding: 10px 15px;\n  font-size: 14px;\n  border-radius: 4px;\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/element-ui.scss",
    "content": "// cover some element-ui styles\n\n.el-breadcrumb__inner,\n.el-breadcrumb__inner a {\n  font-weight: 400 !important;\n}\n\n.el-upload {\n  input[type=\"file\"] {\n    display: none !important;\n  }\n}\n\n.el-upload__input {\n  display: none;\n}\n\n.cell {\n  .el-tag {\n    margin-right: 0px;\n  }\n}\n\n.small-padding {\n  .cell {\n    padding-left: 5px;\n    padding-right: 5px;\n  }\n}\n\n.fixed-width {\n  .el-button--mini {\n    padding: 7px 10px;\n    min-width: 60px;\n  }\n}\n\n.status-col {\n  .cell {\n    padding: 0 10px;\n    text-align: center;\n\n    .el-tag {\n      margin-right: 0px;\n    }\n  }\n}\n\n// to fixed https://github.com/ElemeFE/element/issues/2461\n.el-dialog {\n  transform: none;\n  left: 0;\n  position: relative;\n  margin: 0 auto;\n}\n\n// refine element ui upload\n.upload-container {\n  .el-upload {\n    width: 100%;\n\n    .el-upload-dragger {\n      width: 100%;\n      height: 200px;\n    }\n  }\n}\n\n// dropdown\n.el-dropdown-menu {\n  a {\n    display: block\n  }\n}\n\n// fix date-picker ui bug in filter-item\n.el-range-editor.el-input__inner {\n  display: inline-flex !important;\n}\n\n// to fix el-date-picker css style\n.el-range-separator {\n  box-sizing: content-box;\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/element-variables.scss",
    "content": "/**\n* I think element-ui's default theme color is too light for long-term use.\n* So I modified the default color and you can modify it to your liking.\n**/\n\n/* theme color */\n$--color-primary: #1890ff;\n$--color-success: #13ce66;\n$--color-warning: #ffba00;\n$--color-danger: #ff4949;\n// $--color-info: #1E1E1E;\n\n$--button-font-weight: 400;\n\n// $--color-text-regular: #1f2d3d;\n\n$--border-color-light: #dfe4ed;\n$--border-color-lighter: #e6ebf5;\n\n$--table-border: 1px solid #dfe6ec;\n\n/* icon font path, required */\n$--font-path: \"~element-ui/lib/theme-chalk/fonts\";\n\n@import \"~element-ui/packages/theme-chalk/src/index\";\n\n// the :export directive is the magic sauce for webpack\n// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass\n:export {\n  theme: $--color-primary;\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/index.scss",
    "content": "@import './variables.scss';\n@import './mixin.scss';\n@import './transition.scss';\n@import './element-ui.scss';\n@import './sidebar.scss';\n@import './btn.scss';\n\nbody {\n  height: 100%;\n  -moz-osx-font-smoothing: grayscale;\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n  font-family: Helvetica Neue, Helvetica, PingFang SC, Hiragino Sans GB, Microsoft YaHei, Arial, sans-serif;\n}\n\nlabel {\n  font-weight: 700;\n}\n\nhtml {\n  height: 100%;\n  box-sizing: border-box;\n}\n\n#app {\n  height: 100%;\n}\n\n*,\n*:before,\n*:after {\n  box-sizing: inherit;\n}\n\n.no-padding {\n  padding: 0px !important;\n}\n\n.padding-content {\n  padding: 4px 0;\n}\n\na:focus,\na:active {\n  outline: none;\n}\n\na,\na:focus,\na:hover {\n  cursor: pointer;\n  color: inherit;\n  text-decoration: none;\n}\n\ndiv:focus {\n  outline: none;\n}\n\n.fr {\n  float: right;\n}\n\n.fl {\n  float: left;\n}\n\n.pr-5 {\n  padding-right: 5px;\n}\n\n.pl-5 {\n  padding-left: 5px;\n}\n\n.block {\n  display: block;\n}\n\n.pointer {\n  cursor: pointer;\n}\n\n.inlineBlock {\n  display: block;\n}\n\n.clearfix {\n  &:after {\n    visibility: hidden;\n    display: block;\n    font-size: 0;\n    content: \" \";\n    clear: both;\n    height: 0;\n  }\n}\n\naside {\n  background: #eef1f6;\n  padding: 8px 24px;\n  margin-bottom: 20px;\n  border-radius: 2px;\n  display: block;\n  line-height: 32px;\n  font-size: 16px;\n  font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell, \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\", sans-serif;\n  color: #2c3e50;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n\n  a {\n    color: #337ab7;\n    cursor: pointer;\n\n    &:hover {\n      color: rgb(32, 160, 255);\n    }\n  }\n}\n\n//main-container全局样式\n.app-container {\n  padding: 20px;\n}\n\n.components-container {\n  margin: 30px 50px;\n  position: relative;\n}\n\n.pagination-container {\n  margin-top: 30px;\n}\n\n.text-center {\n  text-align: center\n}\n\n.sub-navbar {\n  height: 50px;\n  line-height: 50px;\n  position: relative;\n  width: 100%;\n  text-align: right;\n  padding-right: 20px;\n  transition: 600ms ease position;\n  background: linear-gradient(90deg, rgba(32, 182, 249, 1) 0%, rgba(32, 182, 249, 1) 0%, rgba(33, 120, 241, 1) 100%, rgba(33, 120, 241, 1) 100%);\n\n  .subtitle {\n    font-size: 20px;\n    color: #fff;\n  }\n\n  &.draft {\n    background: #d0d0d0;\n  }\n\n  &.deleted {\n    background: #d0d0d0;\n  }\n}\n\n.link-type,\n.link-type:focus {\n  color: #337ab7;\n  cursor: pointer;\n\n  &:hover {\n    color: rgb(32, 160, 255);\n  }\n}\n\n.filter-container {\n  padding-bottom: 10px;\n\n  .filter-item {\n    display: inline-block;\n    vertical-align: middle;\n    margin-bottom: 10px;\n  }\n}\n\n.operator-container {\n  padding-bottom: 10px;\n  display: flex;\n  justify-content: flex-end;\n}\n\n//refine vue-multiselect plugin\n.multiselect {\n  line-height: 16px;\n}\n\n.multiselect--active {\n  z-index: 1000 !important;\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/mixin.scss",
    "content": "@mixin clearfix {\n  &:after {\n    content: \"\";\n    display: table;\n    clear: both;\n  }\n}\n\n@mixin scrollBar {\n  &::-webkit-scrollbar-track-piece {\n    background: #d3dce6;\n  }\n\n  &::-webkit-scrollbar {\n    width: 6px;\n  }\n\n  &::-webkit-scrollbar-thumb {\n    background: #99a9bf;\n    border-radius: 20px;\n  }\n}\n\n@mixin relative {\n  position: relative;\n  width: 100%;\n  height: 100%;\n}\n\n@mixin pct($pct) {\n  width: #{$pct};\n  position: relative;\n  margin: 0 auto;\n}\n\n@mixin triangle($width, $height, $color, $direction) {\n  $width: $width/2;\n  $color-border-style: $height solid $color;\n  $transparent-border-style: $width solid transparent;\n  height: 0;\n  width: 0;\n\n  @if $direction==up {\n    border-bottom: $color-border-style;\n    border-left: $transparent-border-style;\n    border-right: $transparent-border-style;\n  }\n\n  @else if $direction==right {\n    border-left: $color-border-style;\n    border-top: $transparent-border-style;\n    border-bottom: $transparent-border-style;\n  }\n\n  @else if $direction==down {\n    border-top: $color-border-style;\n    border-left: $transparent-border-style;\n    border-right: $transparent-border-style;\n  }\n\n  @else if $direction==left {\n    border-right: $color-border-style;\n    border-top: $transparent-border-style;\n    border-bottom: $transparent-border-style;\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/sidebar.scss",
    "content": "#app {\n\n  .main-container {\n    min-height: 100%;\n    transition: margin-left .28s;\n    margin-left: $sideBarWidth;\n    position: relative;\n  }\n\n  .sidebar-container {\n    transition: width 0.28s;\n    width: $sideBarWidth !important;\n    background-color: $menuBg;\n    height: 100%;\n    position: fixed;\n    font-size: 0px;\n    top: 0;\n    bottom: 0;\n    left: 0;\n    z-index: 1001;\n    overflow: hidden;\n\n    // reset element-ui css\n    .horizontal-collapse-transition {\n      transition: 0s width ease-in-out, 0s padding-left ease-in-out, 0s padding-right ease-in-out;\n    }\n\n    .scrollbar-wrapper {\n      overflow-x: hidden !important;\n    }\n\n    .el-scrollbar__bar.is-vertical {\n      right: 0px;\n    }\n\n    .el-scrollbar {\n      height: 100%;\n    }\n\n    &.has-logo {\n      .el-scrollbar {\n        height: calc(100% - 50px);\n      }\n    }\n\n    .is-horizontal {\n      display: none;\n    }\n\n    a {\n      display: inline-block;\n      width: 100%;\n      overflow: hidden;\n    }\n\n    .svg-icon {\n      margin-right: 16px;\n    }\n\n    .sub-el-icon {\n      margin-right: 12px;\n      margin-left: -2px;\n    }\n\n    .el-menu {\n      border: none;\n      height: 100%;\n      width: 100% !important;\n    }\n\n    // menu hover\n    .submenu-title-noDropdown,\n    .el-submenu__title {\n      &:hover {\n        background-color: $menuHover !important;\n      }\n    }\n\n    .is-active>.el-submenu__title {\n      color: $subMenuActiveText !important;\n    }\n\n    & .nest-menu .el-submenu>.el-submenu__title,\n    & .el-submenu .el-menu-item {\n      min-width: $sideBarWidth !important;\n      background-color: $subMenuBg !important;\n\n      &:hover {\n        background-color: $subMenuHover !important;\n      }\n    }\n  }\n\n  .hideSidebar {\n    .sidebar-container {\n      width: 54px !important;\n    }\n\n    .main-container {\n      margin-left: 54px;\n    }\n\n    .submenu-title-noDropdown {\n      padding: 0 !important;\n      position: relative;\n\n      .el-tooltip {\n        padding: 0 !important;\n\n        .svg-icon {\n          margin-left: 20px;\n        }\n\n        .sub-el-icon {\n          margin-right: 12px;\n          margin-left: -2px;\n        }        \n      }\n    }\n\n    .el-submenu {\n      overflow: hidden;\n\n      &>.el-submenu__title {\n        padding: 0 !important;\n\n        .svg-icon {\n          margin-left: 20px;\n        }\n\n        .sub-el-icon {\n          margin-right: 12px;\n          margin-left: -2px;\n        }\n\n        .el-submenu__icon-arrow {\n          display: none;\n        }\n      }\n    }\n\n    .el-menu--collapse {\n      .el-submenu {\n        &>.el-submenu__title {\n          &>span {\n            height: 0;\n            width: 0;\n            overflow: hidden;\n            visibility: hidden;\n            display: inline-block;\n          }\n        }\n      }\n    }\n  }\n\n  .el-menu--collapse .el-menu .el-submenu {\n    min-width: $sideBarWidth !important;\n  }\n\n  // mobile responsive\n  .mobile {\n    .main-container {\n      margin-left: 0px;\n    }\n\n    .sidebar-container {\n      transition: transform .28s;\n      width: $sideBarWidth !important;\n    }\n\n    &.hideSidebar {\n      .sidebar-container {\n        pointer-events: none;\n        transition-duration: 0.3s;\n        transform: translate3d(-$sideBarWidth, 0, 0);\n      }\n    }\n  }\n\n  .withoutAnimation {\n\n    .main-container,\n    .sidebar-container {\n      transition: none;\n    }\n  }\n}\n\n// when menu collapsed\n.el-menu--vertical {\n  &>.el-menu {\n    .svg-icon {\n      margin-right: 16px;\n    }\n    .sub-el-icon {\n      margin-right: 12px;\n      margin-left: -2px;\n    }    \n  }\n\n  .nest-menu .el-submenu>.el-submenu__title,\n  .el-menu-item {\n    &:hover {\n      // you can use $subMenuHover\n      background-color: $menuHover !important;\n    }\n  }\n\n  // the scroll bar appears when the subMenu is too long\n  >.el-menu--popup {\n    max-height: 100vh;\n    overflow-y: auto;\n\n    &::-webkit-scrollbar-track-piece {\n      background: #d3dce6;\n    }\n\n    &::-webkit-scrollbar {\n      width: 6px;\n    }\n\n    &::-webkit-scrollbar-thumb {\n      background: #99a9bf;\n      border-radius: 20px;\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/transition.scss",
    "content": "// global transition css\n\n/* fade */\n.fade-enter-active,\n.fade-leave-active {\n  transition: opacity 0.28s;\n}\n\n.fade-enter,\n.fade-leave-active {\n  opacity: 0;\n}\n\n/* fade-transform */\n.fade-transform-leave-active,\n.fade-transform-enter-active {\n  transition: all .5s;\n}\n\n.fade-transform-enter {\n  opacity: 0;\n  transform: translateX(-30px);\n}\n\n.fade-transform-leave-to {\n  opacity: 0;\n  transform: translateX(30px);\n}\n\n/* breadcrumb transition */\n.breadcrumb-enter-active,\n.breadcrumb-leave-active {\n  transition: all .5s;\n}\n\n.breadcrumb-enter,\n.breadcrumb-leave-active {\n  opacity: 0;\n  transform: translateX(20px);\n}\n\n.breadcrumb-move {\n  transition: all .5s;\n}\n\n.breadcrumb-leave-active {\n  position: absolute;\n}\n"
  },
  {
    "path": "litemall-admin/src/styles/variables.scss",
    "content": "// base color\n$blue:#324157;\n$light-blue:#3A71A8;\n$red:#C03639;\n$pink: #E65D6E;\n$green: #30B08F;\n$tiffany: #4AB7BD;\n$yellow:#FEC171;\n$panGreen: #30B08F;\n\n// sidebar\n$menuText:#bfcbd9;\n$menuActiveText:#409EFF;\n$subMenuActiveText:#f4f4f5; // https://github.com/ElemeFE/element/issues/12951\n\n$menuBg:#304156;\n$menuHover:#263445;\n\n$subMenuBg:#1f2d3d;\n$subMenuHover:#001528;\n\n$sideBarWidth: 210px;\n\n// the :export directive is the magic sauce for webpack\n// https://www.bluematador.com/blog/how-to-share-variables-between-js-and-sass\n:export {\n  menuText: $menuText;\n  menuActiveText: $menuActiveText;\n  subMenuActiveText: $subMenuActiveText;\n  menuBg: $menuBg;\n  menuHover: $menuHover;\n  subMenuBg: $subMenuBg;\n  subMenuHover: $subMenuHover;\n  sideBarWidth: $sideBarWidth;\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/auth.js",
    "content": "import Cookies from 'js-cookie'\n\nconst TokenKey = 'X-Litemall-Admin-Token'\n\nexport function getToken() {\n  return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n  return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n  return Cookies.remove(TokenKey)\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/clipboard.js",
    "content": "import Vue from 'vue'\nimport Clipboard from 'clipboard'\n\nfunction clipboardSuccess() {\n  Vue.prototype.$message({\n    message: '拷贝成功',\n    type: 'success',\n    duration: 1500\n  })\n}\n\nfunction clipboardError() {\n  Vue.prototype.$message({\n    message: '拷贝失败',\n    type: 'error'\n  })\n}\n\nexport default function handleClipboard(text, event) {\n  const clipboard = new Clipboard(event.target, {\n    text: () => text\n  })\n  clipboard.on('success', () => {\n    clipboardSuccess()\n    clipboard.off('error')\n    clipboard.off('success')\n    clipboard.destroy()\n  })\n  clipboard.on('error', () => {\n    clipboardError()\n    clipboard.off('error')\n    clipboard.off('success')\n    clipboard.destroy()\n  })\n  clipboard.onClick(event)\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/index.js",
    "content": "/**\n * Created by jiachenpan on 16/11/18.\n */\n\nexport function parseTime(time, cFormat) {\n  if (arguments.length === 0) {\n    return null\n  }\n  const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}'\n  let date\n  if (typeof time === 'object') {\n    date = time\n  } else {\n    if (('' + time).length === 10) time = parseInt(time) * 1000\n    date = new Date(time)\n  }\n  const formatObj = {\n    y: date.getFullYear(),\n    m: date.getMonth() + 1,\n    d: date.getDate(),\n    h: date.getHours(),\n    i: date.getMinutes(),\n    s: date.getSeconds(),\n    a: date.getDay()\n  }\n  const time_str = format.replace(/{(y|m|d|h|i|s|a)+}/g, (result, key) => {\n    let value = formatObj[key]\n    // Note: getDay() returns 0 on Sunday\n    if (key === 'a') { return ['日', '一', '二', '三', '四', '五', '六'][value ] }\n    if (result.length > 0 && value < 10) {\n      value = '0' + value\n    }\n    return value || 0\n  })\n  return time_str\n}\n\n// NOTE: 这里的缩略图只用于阿里云存储。\n// 开发者可以参考其他云存储的缩略图参数。\nexport function thumbnail(src) {\n  return src + '?x-oss-process=image/resize,m_lfit,h_250,w_250'\n}\n\nexport function toPreview(item, url) {\n  item.preview = [url]\n  return item.preview\n}\n\nexport function formatTime(time, option) {\n  time = +time * 1000\n  const d = new Date(time)\n  const now = Date.now()\n\n  const diff = (now - d) / 1000\n\n  if (diff < 30) {\n    return '刚刚'\n  } else if (diff < 3600) {\n    // less 1 hour\n    return Math.ceil(diff / 60) + '分钟前'\n  } else if (diff < 3600 * 24) {\n    return Math.ceil(diff / 3600) + '小时前'\n  } else if (diff < 3600 * 24 * 2) {\n    return '1天前'\n  }\n  if (option) {\n    return parseTime(time, option)\n  } else {\n    return (\n      d.getMonth() +\n      1 +\n      '月' +\n      d.getDate() +\n      '日' +\n      d.getHours() +\n      '时' +\n      d.getMinutes() +\n      '分'\n    )\n  }\n}\n\n// 格式化时间\nexport function getQueryObject(url) {\n  url = url == null ? window.location.href : url\n  const search = url.substring(url.lastIndexOf('?') + 1)\n  const obj = {}\n  const reg = /([^?&=]+)=([^?&=]*)/g\n  search.replace(reg, (rs, $1, $2) => {\n    const name = decodeURIComponent($1)\n    let val = decodeURIComponent($2)\n    val = String(val)\n    obj[name] = val\n    return rs\n  })\n  return obj\n}\n\n/**\n *get getByteLen\n * @param {Sting} val input value\n * @returns {number} output value\n */\nexport function getByteLen(val) {\n  let len = 0\n  for (let i = 0; i < val.length; i++) {\n    if (val[i].match(/[^\\x00-\\xff]/gi) != null) {\n      len += 1\n    } else {\n      len += 0.5\n    }\n  }\n  return Math.floor(len)\n}\n\nexport function cleanArray(actual) {\n  const newArray = []\n  for (let i = 0; i < actual.length; i++) {\n    if (actual[i]) {\n      newArray.push(actual[i])\n    }\n  }\n  return newArray\n}\n\nexport function param(json) {\n  if (!json) return ''\n  return cleanArray(\n    Object.keys(json).map(key => {\n      if (json[key] === undefined) return ''\n      return encodeURIComponent(key) + '=' + encodeURIComponent(json[key])\n    })\n  ).join('&')\n}\n\nexport function param2Obj(url) {\n  const search = url.split('?')[1]\n  if (!search) {\n    return {}\n  }\n  return JSON.parse(\n    '{\"' +\n      decodeURIComponent(search)\n        .replace(/\"/g, '\\\\\"')\n        .replace(/&/g, '\",\"')\n        .replace(/=/g, '\":\"') +\n      '\"}'\n  )\n}\n\nexport function html2Text(val) {\n  const div = document.createElement('div')\n  div.innerHTML = val\n  return div.textContent || div.innerText\n}\n\nexport function objectMerge(target, source) {\n  /* Merges two  objects,\n     giving the last one precedence */\n\n  if (typeof target !== 'object') {\n    target = {}\n  }\n  if (Array.isArray(source)) {\n    return source.slice()\n  }\n  Object.keys(source).forEach(property => {\n    const sourceProperty = source[property]\n    if (typeof sourceProperty === 'object') {\n      target[property] = objectMerge(target[property], sourceProperty)\n    } else {\n      target[property] = sourceProperty\n    }\n  })\n  return target\n}\n\nexport function toggleClass(element, className) {\n  if (!element || !className) {\n    return\n  }\n  let classString = element.className\n  const nameIndex = classString.indexOf(className)\n  if (nameIndex === -1) {\n    classString += '' + className\n  } else {\n    classString =\n      classString.substr(0, nameIndex) +\n      classString.substr(nameIndex + className.length)\n  }\n  element.className = classString\n}\n\nexport const pickerOptions = [\n  {\n    text: '今天',\n    onClick(picker) {\n      const end = new Date()\n      const start = new Date(new Date().toDateString())\n      end.setTime(start.getTime())\n      picker.$emit('pick', [start, end])\n    }\n  },\n  {\n    text: '最近一周',\n    onClick(picker) {\n      const end = new Date(new Date().toDateString())\n      const start = new Date()\n      start.setTime(end.getTime() - 3600 * 1000 * 24 * 7)\n      picker.$emit('pick', [start, end])\n    }\n  },\n  {\n    text: '最近一个月',\n    onClick(picker) {\n      const end = new Date(new Date().toDateString())\n      const start = new Date()\n      start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n      picker.$emit('pick', [start, end])\n    }\n  },\n  {\n    text: '最近三个月',\n    onClick(picker) {\n      const end = new Date(new Date().toDateString())\n      const start = new Date()\n      start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n      picker.$emit('pick', [start, end])\n    }\n  }\n]\n\nexport function getTime(type) {\n  if (type === 'start') {\n    return new Date().getTime() - 3600 * 1000 * 24 * 90\n  } else {\n    return new Date(new Date().toDateString())\n  }\n}\n\nexport function debounce(func, wait, immediate) {\n  let timeout, args, context, timestamp, result\n\n  const later = function() {\n    // 据上一次触发时间间隔\n    const last = +new Date() - timestamp\n\n    // 上次被包装函数被调用时间间隔last小于设定时间间隔wait\n    if (last < wait && last > 0) {\n      timeout = setTimeout(later, wait - last)\n    } else {\n      timeout = null\n      // 如果设定为immediate===true，因为开始边界已经调用过了此处无需调用\n      if (!immediate) {\n        result = func.apply(context, args)\n        if (!timeout) context = args = null\n      }\n    }\n  }\n\n  return function(...args) {\n    context = this\n    timestamp = +new Date()\n    const callNow = immediate && !timeout\n    // 如果延时不存在，重新设定延时\n    if (!timeout) timeout = setTimeout(later, wait)\n    if (callNow) {\n      result = func.apply(context, args)\n      context = args = null\n    }\n\n    return result\n  }\n}\n\n/**\n * This is just a simple version of deep copy\n * Has a lot of edge cases bug\n * If you want to use a perfect deep copy, use lodash's _.cloneDeep\n */\nexport function deepClone(source) {\n  if (!source && typeof source !== 'object') {\n    throw new Error('error arguments', 'shallowClone')\n  }\n  const targetObj = source.constructor === Array ? [] : {}\n  Object.keys(source).forEach(keys => {\n    if (source[keys] && typeof source[keys] === 'object') {\n      targetObj[keys] = deepClone(source[keys])\n    } else {\n      targetObj[keys] = source[keys]\n    }\n  })\n  return targetObj\n}\n\nexport function uniqueArr(arr) {\n  return Array.from(new Set(arr))\n}\n\nexport function isExternal(path) {\n  return /^(https?:|mailto:|tel:)/.test(path)\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/openWindow.js",
    "content": "/**\n *Created by jiachenpan on 16/11/29.\n * @param {Sting} url\n * @param {Sting} title\n * @param {Number} w\n * @param {Number} h\n */\n\nexport default function openWindow(url, title, w, h) {\n  // Fixes dual-screen position                            Most browsers       Firefox\n  const dualScreenLeft = window.screenLeft !== undefined ? window.screenLeft : screen.left\n  const dualScreenTop = window.screenTop !== undefined ? window.screenTop : screen.top\n\n  const width = window.innerWidth ? window.innerWidth : document.documentElement.clientWidth ? document.documentElement.clientWidth : screen.width\n  const height = window.innerHeight ? window.innerHeight : document.documentElement.clientHeight ? document.documentElement.clientHeight : screen.height\n\n  const left = ((width / 2) - (w / 2)) + dualScreenLeft\n  const top = ((height / 2) - (h / 2)) + dualScreenTop\n  const newWindow = window.open(url, title, 'toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, copyhistory=no, width=' + w + ', height=' + h + ', top=' + top + ', left=' + left)\n\n  // Puts focus on the newWindow\n  if (window.focus) {\n    newWindow.focus()\n  }\n}\n\n"
  },
  {
    "path": "litemall-admin/src/utils/permission.js",
    "content": "import store from '@/store'\n\n/**\n * @param {Array} value\n * @returns {Boolean}\n * @example see @/views/permission/directive.vue\n */\nexport default function checkPermission(value) {\n  if (value && value instanceof Array && value.length > 0) {\n    const perms = store.getters && store.getters.perms\n    const permissions = value\n\n    var hasPermission = false\n\n    if (perms.indexOf('*') >= 0) {\n      hasPermission = true\n    } else {\n      hasPermission = perms.some(perm => {\n        return permissions.includes(perm)\n      })\n    }\n\n    if (!hasPermission) {\n      return false\n    }\n    return true\n  } else {\n    console.error(`need perms! Like v-permission=\"['GET /aaa','POST /bbb']\"`)\n    return false\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/print.js",
    "content": "// 打印类属性、方法定义\n/* eslint-disable */\nconst Print = function (dom, options) {\n  if (!(this instanceof Print)) return new Print(dom, options);\n\n  this.options = this.extend({\n    'noPrint': '.no-print'\n  }, options);\n\n  if ((typeof dom) === \"string\") {\n    this.dom = document.querySelector(dom);\n  } else {\n    this.isDOM(dom)\n    this.dom = this.isDOM(dom) ? dom : dom.$el;\n  }\n\n  this.init();\n};\nPrint.prototype = {\n  init: function () {\n    var content = this.getStyle() + this.getHtml();\n    this.writeIframe(content);\n  },\n  extend: function (obj, obj2) {\n    for (var k in obj2) {\n      obj[k] = obj2[k];\n    }\n    return obj;\n  },\n\n  getStyle: function () {\n    var str = \"\",\n      styles = document.querySelectorAll('style,link');\n    for (var i = 0; i < styles.length; i++) {\n      str += styles[i].outerHTML;\n    }\n    str += \"<style>\" + (this.options.noPrint ? this.options.noPrint : '.no-print') + \"{display:none;}</style>\";\n\n    return str;\n  },\n\n  getHtml: function () {\n    var inputs = document.querySelectorAll('input');\n    var textareas = document.querySelectorAll('textarea');\n    var selects = document.querySelectorAll('select');\n\n    for (var k = 0; k < inputs.length; k++) {\n      if (inputs[k].type == \"checkbox\" || inputs[k].type == \"radio\") {\n        if (inputs[k].checked == true) {\n          inputs[k].setAttribute('checked', \"checked\")\n        } else {\n          inputs[k].removeAttribute('checked')\n        }\n      } else if (inputs[k].type == \"text\") {\n        inputs[k].setAttribute('value', inputs[k].value)\n      } else {\n        inputs[k].setAttribute('value', inputs[k].value)\n      }\n    }\n\n    for (var k2 = 0; k2 < textareas.length; k2++) {\n      if (textareas[k2].type == 'textarea') {\n        textareas[k2].innerHTML = textareas[k2].value\n      }\n    }\n\n    for (var k3 = 0; k3 < selects.length; k3++) {\n      if (selects[k3].type == 'select-one') {\n        var child = selects[k3].children;\n        for (var i in child) {\n          if (child[i].tagName == 'OPTION') {\n            if (child[i].selected == true) {\n              child[i].setAttribute('selected', \"selected\")\n            } else {\n              child[i].removeAttribute('selected')\n            }\n          }\n        }\n      }\n    }\n\n    return this.dom.outerHTML;\n  },\n\n  writeIframe: function (content) {\n    var w, doc, iframe = document.createElement('iframe'),\n      f = document.body.appendChild(iframe);\n    iframe.id = \"myIframe\";\n    //iframe.style = \"position:absolute;width:0;height:0;top:-10px;left:-10px;\";\n    iframe.setAttribute('style', 'position:absolute;width:0;height:0;top:-10px;left:-10px;');\n    w = f.contentWindow || f.contentDocument;\n    doc = f.contentDocument || f.contentWindow.document;\n    doc.open();\n    doc.write(content);\n    doc.close();\n    var _this = this\n    iframe.onload = function(){\n      _this.toPrint(w);\n      setTimeout(function () {\n        document.body.removeChild(iframe)\n      }, 100)\n    }\n  },\n\n  toPrint: function (frameWindow) {\n    try {\n      setTimeout(function () {\n        frameWindow.focus();\n        try {\n          if (!frameWindow.document.execCommand('print', false, null)) {\n            frameWindow.print();\n          }\n        } catch (e) {\n          frameWindow.print();\n        }\n        frameWindow.close();\n      }, 10);\n    } catch (err) {\n      console.log('err', err);\n    }\n  },\n  isDOM: (typeof HTMLElement === 'object') ?\n    function (obj) {\n      return obj instanceof HTMLElement;\n    } :\n    function (obj) {\n      return obj && typeof obj === 'object' && obj.nodeType === 1 && typeof obj.nodeName === 'string';\n    }\n};\nconst MyPlugin = {}\nMyPlugin.install = function (Vue, options) {\n  // 4. 添加实例方法\n  Vue.prototype.$print = Print\n}\nexport default MyPlugin\n"
  },
  {
    "path": "litemall-admin/src/utils/request.js",
    "content": "import axios from 'axios'\nimport { Message, MessageBox } from 'element-ui'\nimport store from '@/store'\nimport { getToken } from '@/utils/auth'\n\naxios.defaults.withCredentials = true\n\n// create an axios instance\nconst service = axios.create({\n  baseURL: process.env.VUE_APP_BASE_API, // api 的 base_url\n  timeout: 5000 // request timeout\n})\n\n// request interceptor\nservice.interceptors.request.use(\n  config => {\n    // Do something before request is sent\n    if (store.getters.token) {\n      // 让每个请求携带token-- ['X-Litemall-Admin-Token']为自定义key 请根据实际情况自行修改\n      config.headers['X-Litemall-Admin-Token'] = getToken()\n    }\n    return config\n  },\n  error => {\n    // Do something with request error\n    console.log(error) // for debug\n    Promise.reject(error)\n  }\n)\n\n// response interceptor\nservice.interceptors.response.use(\n  response => {\n    const res = response.data\n\n    if (res.errno === 501) {\n      MessageBox.alert('系统未登录，请重新登录', '错误', {\n        confirmButtonText: '确定',\n        type: 'error'\n      }).then(() => {\n        store.dispatch('FedLogOut').then(() => {\n          location.reload()\n        })\n      })\n      return Promise.reject('error')\n    } else if (res.errno === 502) {\n      MessageBox.alert('系统内部错误，请联系管理员维护', '错误', {\n        confirmButtonText: '确定',\n        type: 'error'\n      })\n      return Promise.reject('error')\n    } else if (res.errno === 503) {\n      MessageBox.alert('请求业务目前未支持', '警告', {\n        confirmButtonText: '确定',\n        type: 'error'\n      })\n      return Promise.reject('error')\n    } else if (res.errno === 504) {\n      MessageBox.alert('更新数据已经失效，请刷新页面重新操作', '警告', {\n        confirmButtonText: '确定',\n        type: 'error'\n      })\n      return Promise.reject('error')\n    } else if (res.errno === 505) {\n      MessageBox.alert('更新失败，请再尝试一次', '警告', {\n        confirmButtonText: '确定',\n        type: 'error'\n      })\n      return Promise.reject('error')\n    } else if (res.errno === 506) {\n      MessageBox.alert('没有操作权限，请联系管理员授权', '错误', {\n        confirmButtonText: '确定',\n        type: 'error'\n      })\n      return Promise.reject('error')\n    } else if (res.errno !== 0) {\n      // 非5xx的错误属于业务错误，留给具体页面处理\n      return Promise.reject(response)\n    } else {\n      return response\n    }\n  }, error => {\n    console.log('err' + error)// for debug\n    Message({\n      message: '登录连接超时（后台不能连接，请联系系统管理员）',\n      type: 'error',\n      duration: 5 * 1000\n    })\n    return Promise.reject(error)\n  })\n\nexport default service\n"
  },
  {
    "path": "litemall-admin/src/utils/scrollTo.js",
    "content": "Math.easeInOutQuad = function(t, b, c, d) {\n  t /= d / 2\n  if (t < 1) {\n    return c / 2 * t * t + b\n  }\n  t--\n  return -c / 2 * (t * (t - 2) - 1) + b\n}\n\n// requestAnimationFrame for Smart Animating http://goo.gl/sx5sts\nvar requestAnimFrame = (function() {\n  return window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || function(callback) { window.setTimeout(callback, 1000 / 60) }\n})()\n\n// because it's so fucking difficult to detect the scrolling element, just move them all\nfunction move(amount) {\n  document.documentElement.scrollTop = amount\n  document.body.parentNode.scrollTop = amount\n  document.body.scrollTop = amount\n}\n\nfunction position() {\n  return document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop\n}\n\nexport function scrollTo(to, duration, callback) {\n  const start = position()\n  const change = to - start\n  const increment = 20\n  let currentTime = 0\n  duration = (typeof (duration) === 'undefined') ? 500 : duration\n  var animateScroll = function() {\n    // increment the time\n    currentTime += increment\n    // find the value with the quadratic in-out easing function\n    var val = Math.easeInOutQuad(currentTime, start, change, duration)\n    // move the document.body\n    move(val)\n    // do the animation unless its over\n    if (currentTime < duration) {\n      requestAnimFrame(animateScroll)\n    } else {\n      if (callback && typeof (callback) === 'function') {\n        // the animation is done so lets callback\n        callback()\n      }\n    }\n  }\n  animateScroll()\n}\n"
  },
  {
    "path": "litemall-admin/src/utils/validate.js",
    "content": "/**\n * Created by PanJiaChen on 16/11/18.\n */\n\n/**\n * @param {string} path\n * @returns {Boolean}\n */\nexport function isExternal(path) {\n  return /^(https?:|mailto:|tel:)/.test(path)\n}\n\n/**\n * @param {string} str\n * @returns {Boolean}\n */\nexport function validUsername(str) {\n  const valid_map = ['admin', 'editor']\n  return valid_map.indexOf(str.trim()) >= 0\n}\n\n/**\n * @param {string} url\n * @returns {Boolean}\n */\nexport function validURL(url) {\n  const reg = /^(https?|ftp):\\/\\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\\.)*[a-zA-Z0-9-]+\\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\\/($|[a-zA-Z0-9.,?'\\\\+&%$#=~_-]+))*$/\n  return reg.test(url)\n}\n\n/**\n * @param {string} str\n * @returns {Boolean}\n */\nexport function validLowerCase(str) {\n  const reg = /^[a-z]+$/\n  return reg.test(str)\n}\n\n/**\n * @param {string} str\n * @returns {Boolean}\n */\nexport function validUpperCase(str) {\n  const reg = /^[A-Z]+$/\n  return reg.test(str)\n}\n\n/**\n * @param {string} str\n * @returns {Boolean}\n */\nexport function validAlphabets(str) {\n  const reg = /^[A-Za-z]+$/\n  return reg.test(str)\n}\n\n/**\n * @param {string} email\n * @returns {Boolean}\n */\nexport function validEmail(email) {\n  const reg = /^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/\n  return reg.test(email)\n}\n\n/**\n * @param {string} str\n * @returns {Boolean}\n */\nexport function isString(str) {\n  if (typeof str === 'string' || str instanceof String) {\n    return true\n  }\n  return false\n}\n\n/**\n * @param {Array} arg\n * @returns {Boolean}\n */\nexport function isArray(arg) {\n  if (typeof Array.isArray === 'undefined') {\n    return Object.prototype.toString.call(arg) === '[object Array]'\n  }\n  return Array.isArray(arg)\n}\n"
  },
  {
    "path": "litemall-admin/src/vendor/Export2Excel.js",
    "content": "/* eslint-disable */\nimport { saveAs } from 'file-saver'\nimport { utils, SSF, write } from 'xlsx'\n\nfunction generateArray(table) {\n    var out = [];\n    var rows = table.querySelectorAll('tr');\n    var ranges = [];\n    for (var R = 0; R < rows.length; ++R) {\n        var outRow = [];\n        var row = rows[R];\n        var columns = row.querySelectorAll('td');\n        for (var C = 0; C < columns.length; ++C) {\n            var cell = columns[C];\n            var colspan = cell.getAttribute('colspan');\n            var rowspan = cell.getAttribute('rowspan');\n            var cellValue = cell.innerText;\n            if (cellValue !== \"\" && cellValue == +cellValue) cellValue = +cellValue;\n\n            //Skip ranges\n            ranges.forEach(function(range) {\n                if (R >= range.s.r && R <= range.e.r && outRow.length >= range.s.c && outRow.length <= range.e.c) {\n                    for (var i = 0; i <= range.e.c - range.s.c; ++i) outRow.push(null);\n                }\n            });\n\n            //Handle Row Span\n            if (rowspan || colspan) {\n                rowspan = rowspan || 1;\n                colspan = colspan || 1;\n                ranges.push({\n                    s: {\n                        r: R,\n                        c: outRow.length\n                    },\n                    e: {\n                        r: R + rowspan - 1,\n                        c: outRow.length + colspan - 1\n                    }\n                });\n            };\n\n            //Handle Value\n            outRow.push(cellValue !== \"\" ? cellValue : null);\n\n            //Handle Colspan\n            if (colspan)\n                for (var k = 0; k < colspan - 1; ++k) outRow.push(null);\n        }\n        out.push(outRow);\n    }\n    return [out, ranges];\n};\n\nfunction datenum(v, date1904) {\n    if (date1904) v += 1462;\n    var epoch = Date.parse(v);\n    return (epoch - new Date(Date.UTC(1899, 11, 30))) / (24 * 60 * 60 * 1000);\n}\n\nfunction sheet_from_array_of_arrays(data, opts) {\n    var ws = {};\n    var range = {\n        s: {\n            c: 10000000,\n            r: 10000000\n        },\n        e: {\n            c: 0,\n            r: 0\n        }\n    };\n    for (var R = 0; R != data.length; ++R) {\n        for (var C = 0; C != data[R].length; ++C) {\n            if (range.s.r > R) range.s.r = R;\n            if (range.s.c > C) range.s.c = C;\n            if (range.e.r < R) range.e.r = R;\n            if (range.e.c < C) range.e.c = C;\n            var cell = {\n                v: data[R][C]\n            };\n            if (cell.v == null) continue;\n            var cell_ref = utils.encode_cell({\n                c: C,\n                r: R\n            });\n\n            if (typeof cell.v === 'number') cell.t = 'n';\n            else if (typeof cell.v === 'boolean') cell.t = 'b';\n            else if (cell.v instanceof Date) {\n                cell.t = 'n';\n                cell.z = SSF._table[14];\n                cell.v = datenum(cell.v);\n            } else cell.t = 's';\n\n            ws[cell_ref] = cell;\n        }\n    }\n    if (range.s.c < 10000000) ws['!ref'] = utils.encode_range(range);\n    return ws;\n}\n\nfunction Workbook() {\n    if (!(this instanceof Workbook)) return new Workbook();\n    this.SheetNames = [];\n    this.Sheets = {};\n}\n\nfunction s2ab(s) {\n    var buf = new ArrayBuffer(s.length);\n    var view = new Uint8Array(buf);\n    for (var i = 0; i != s.length; ++i) view[i] = s.charCodeAt(i) & 0xFF;\n    return buf;\n}\n\nexport function export_table_to_excel(id) {\n    var theTable = document.getElementById(id);\n    var oo = generateArray(theTable);\n    var ranges = oo[1];\n\n    /* original data */\n    var data = oo[0];\n    var ws_name = \"SheetJS\";\n\n    var wb = new Workbook(),\n        ws = sheet_from_array_of_arrays(data);\n\n    /* add ranges to worksheet */\n    // ws['!cols'] = ['apple', 'banan'];\n    ws['!merges'] = ranges;\n\n    /* add worksheet to workbook */\n    wb.SheetNames.push(ws_name);\n    wb.Sheets[ws_name] = ws;\n\n    var wbout = write(wb, {\n        bookType: 'xlsx',\n        bookSST: false,\n        type: 'binary'\n    });\n\n    saveAs(new Blob([s2ab(wbout)], {\n        type: \"application/octet-stream\"\n    }), \"test.xlsx\")\n}\n\nexport function export_json_to_excel({\n    multiHeader = [],\n    header,\n    data,\n    filename,\n    merges = [],\n    autoWidth = true,\n    bookType = 'xlsx'\n} = {}) {\n    /* original data */\n    filename = filename || 'excel-list'\n    data = [...data]\n    data.unshift(header);\n\n    for (let i = multiHeader.length - 1; i > -1; i--) {\n        data.unshift(multiHeader[i])\n    }\n\n    var ws_name = \"SheetJS\";\n    var wb = new Workbook(),\n        ws = sheet_from_array_of_arrays(data);\n\n    if (merges.length > 0) {\n        if (!ws['!merges']) ws['!merges'] = [];\n        merges.forEach(item => {\n            ws['!merges'].push(utils.decode_range(item))\n        })\n    }\n\n    if (autoWidth) {\n        /*设置worksheet每列的最大宽度*/\n        const colWidth = data.map(row => row.map(val => {\n                /*先判断是否为null/undefined*/\n                if (val == null) {\n                    return {\n                        'wch': 10\n                    };\n                }\n                /*再判断是否为中文*/\n                else if (val.toString().charCodeAt(0) > 255) {\n                    return {\n                        'wch': val.toString().length * 2\n                    };\n                } else {\n                    return {\n                        'wch': val.toString().length\n                    };\n                }\n            }))\n            /*以第一行为初始值*/\n        let result = colWidth[0];\n        for (let i = 1; i < colWidth.length; i++) {\n            for (let j = 0; j < colWidth[i].length; j++) {\n                if (result[j]['wch'] < colWidth[i][j]['wch']) {\n                    result[j]['wch'] = colWidth[i][j]['wch'];\n                }\n            }\n        }\n        ws['!cols'] = result;\n    }\n\n    /* add worksheet to workbook */\n    wb.SheetNames.push(ws_name);\n    wb.Sheets[ws_name] = ws;\n\n    var wbout = write(wb, {\n        bookType: bookType,\n        bookSST: false,\n        type: 'binary'\n    });\n    saveAs(new Blob([s2ab(wbout)], {\n        type: \"application/octet-stream\"\n    }), `${filename}.${bookType}`);\n}\n\nfunction formatJson(jsonSource, jsonFillter) {\n    return jsonSource.map(v => jsonFillter.map(j => {\n        return v[j]\n    }))\n}\n\nexport function export_json_to_excel2(th, jsonSource, jsonFillter, name) {\n    const data = formatJson(jsonSource, jsonFillter)\n    export_json_to_excel({ header: th, data, filename: name })\n}"
  },
  {
    "path": "litemall-admin/src/views/config/express.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-width=\"300px\">\n      <el-form-item :label=\"$t('config_express.form.freight_min')\" prop=\"litemall_express_freight_min\">\n        <el-input v-model=\"dataForm.litemall_express_freight_min\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_express.form.freight_value')\" prop=\"litemall_express_freight_value\">\n        <el-input v-model=\"dataForm.litemall_express_freight_value\"/>\n      </el-form-item>\n      <el-form-item>\n        <el-button @click=\"cancel\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"update\">{{ $t('app.button.confirm') }}</el-button>\n      </el-form-item>\n  </el-form></div>\n</template>\n\n<script>\nimport { listExpress, updateExpress } from '@/api/config'\n\nexport default {\n  name: 'ConfigExpress',\n  data() {\n    return {\n      dataForm: {\n        litemall_express_freight_min: 0,\n        litemall_express_freight_value: 0\n      },\n      rules: {\n        litemall_express_freight_min: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_express_freight_value: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      listExpress().then(response => {\n        this.dataForm = response.data.data\n      })\n    },\n    cancel() {\n      this.init()\n    },\n    update() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (!valid) {\n          return false\n        }\n        this.doUpdate()\n      })\n    },\n    doUpdate() {\n      updateExpress(this.dataForm).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '运费配置修改成功'\n        })\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/config/mall.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-width=\"300px\">\n      <el-form-item :label=\"$t('config_mall.form.mall_name')\" prop=\"litemall_mall_name\">\n        <el-input v-model=\"dataForm.litemall_mall_name\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_mall.form.mall_address')\" prop=\"litemall_mall_address\">\n        <el-input v-model=\"dataForm.litemall_mall_address\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_mall.form.mall_coordinates')\">\n        <el-col :span=\"11\">\n          <el-input v-model=\"dataForm.litemall_mall_longitude\" :placeholder=\"$t('config_mall.placeholder.mall_longitude')\" />\n        </el-col>\n        <el-col :span=\"2\" style=\"text-align: center;\">-</el-col>\n        <el-col :span=\"11\">\n          <el-input v-model=\"dataForm.litemall_mall_latitude\" :placeholder=\"$t('config_mall.placeholder.mall_latitude')\" />\n        </el-col>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_mall.form.mall_phone')\" prop=\"litemall_mall_phone\">\n        <el-input v-model=\"dataForm.litemall_mall_phone\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_mall.form.mall_qq')\" prop=\"litemall_mall_qq\">\n        <el-input v-model=\"dataForm.litemall_mall_qq\"/>\n      </el-form-item>\n      <el-form-item>\n        <el-button @click=\"cancel\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"update\">{{ $t('app.button.confirm') }}</el-button>\n      </el-form-item>\n    </el-form>\n  </div>\n</template>\n\n<script>\nimport { listMall, updateMall } from '@/api/config'\n\nexport default {\n  name: 'ConfigMail',\n  data() {\n    return {\n      dataForm: {\n        litemall_mall_name: '',\n        litemall_mall_address: '',\n        litemall_mall_phone: '',\n        litemall_mall_qq: '',\n        litemall_mall_longitude: '',\n        litemall_mall_latitude: ''\n      },\n      rules: {\n        litemall_mall_name: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_mall_address: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_mall_phone: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_mall_qq: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      listMall().then(response => {\n        this.dataForm = response.data.data\n      })\n    },\n    cancel() {\n      this.init()\n    },\n    update() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (!valid) {\n          return false\n        }\n        this.doUpdate()\n      })\n    },\n    doUpdate() {\n      updateMall(this.dataForm)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '商场配置成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/config/order.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-width=\"300px\">\n      <el-form-item :label=\"$t('config_order.form.unpaid')\" prop=\"litemall_order_unpaid\">\n        <el-input v-model=\"dataForm.litemall_order_unpaid\" class=\"input-width\">\n          <template slot=\"append\">{{ $t('config_order.text.minutes') }}</template>\n        </el-input>\n        <span class=\"info\">{{ $t('config_order.help.unpaid') }}</span>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_order.form.unconfirm')\" prop=\"litemall_order_unconfirm\">\n        <el-input v-model=\"dataForm.litemall_order_unconfirm\" class=\"input-width\">\n          <template slot=\"append\"> {{ $t('config_order.text.days') }}</template>\n        </el-input>\n        <span class=\"info\">{{ $t('config_order.help.unconfirm') }}</span>\n      </el-form-item>\n      <el-form-item :label=\"$t('config_order.form.comment')\" prop=\"litemall_order_comment\">\n        <el-input v-model=\"dataForm.litemall_order_comment\" class=\"input-width\">\n          <template slot=\"append\">{{ $t('config_order.text.days') }}</template>\n        </el-input>\n        <span class=\"info\">{{ $t('config_order.help.comment') }}</span>\n      </el-form-item>\n      <el-form-item>\n        <el-button @click=\"cancel\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"update\">{{ $t('app.button.confirm') }}</el-button>\n      </el-form-item>\n    </el-form>\n  </div>\n</template>\n\n<script>\nimport { listOrder, updateOrder } from '@/api/config'\n\nexport default {\n  name: 'ConfigOrder',\n  data() {\n    return {\n      dataForm: {\n        litemall_order_unpaid: 0,\n        litemall_order_unconfirm: 0,\n        litemall_order_comment: 0\n      },\n      rules: {\n        litemall_order_unpaid: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_order_unconfirm: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_order_comment: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      listOrder().then(response => {\n        this.dataForm = response.data.data\n      })\n    },\n    cancel() {\n      this.init()\n    },\n    update() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (!valid) {\n          return false\n        }\n        this.doUpdate()\n      })\n    },\n    doUpdate() {\n      updateOrder(this.dataForm)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '订单参数配置成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n<style scoped>\n  .input-width {\n    width: 50%;\n  }\n  .info {\n    margin-left: 15px;\n  }\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/config/wx.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <el-form\n      ref=\"dataForm\"\n      :rules=\"rules\"\n      :model=\"dataForm\"\n      status-icon\n      label-width=\"300px\">\n      <el-tabs tab-position=\"left\" >\n        <el-tab-pane :label=\"$t('config_wx.section.home')\">\n          <el-form-item :label=\"$t('config_wx.form.index_new')\" prop=\"litemall_wx_index_new\">\n            <el-input v-model=\"dataForm.litemall_wx_index_new\"/>\n          </el-form-item>\n          <el-form-item :label=\"$t('config_wx.form.index_hot')\" prop=\"litemall_wx_index_hot\">\n            <el-input v-model=\"dataForm.litemall_wx_index_hot\"/>\n          </el-form-item>\n          <el-form-item :label=\"$t('config_wx.form.index_brand')\" prop=\"litemall_wx_index_brand\">\n            <el-input v-model=\"dataForm.litemall_wx_index_brand\"/>\n          </el-form-item>\n          <el-form-item :label=\"$t('config_wx.form.index_topic')\" prop=\"litemall_wx_index_topic\">\n            <el-input v-model=\"dataForm.litemall_wx_index_topic\"/>\n          </el-form-item>\n          <el-form-item :label=\"$t('config_wx.form.catlog_list')\" prop=\"litemall_wx_catlog_list\">\n            <el-input v-model=\"dataForm.litemall_wx_catlog_list\"/>\n          </el-form-item>\n          <el-form-item :label=\"$t('config_wx.form.catlog_goods')\" prop=\"litemall_wx_catlog_goods\">\n            <el-input v-model=\"dataForm.litemall_wx_catlog_goods\"/>\n          </el-form-item>\n        </el-tab-pane>\n        <el-tab-pane :label=\"$t('config_wx.section.other')\">\n          <el-form-item :label=\"$t('config_wx.form.share')\" prop=\"litemall_wx_share\">\n            <el-switch v-model=\"dataForm.litemall_wx_share\"/>\n          </el-form-item>\n        </el-tab-pane>\n      </el-tabs>\n      <el-form-item>\n        <el-button @click=\"cancel\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"update\">{{ $t('app.button.confirm') }}</el-button>\n      </el-form-item>\n    </el-form>\n\n  </div>\n</template>\n\n<script>\nimport { listWx, updateWx } from '@/api/config'\n\nexport default {\n  name: 'ConfigWx',\n  data() {\n    return {\n      dataForm: {\n        litemall_wx_index_new: 0,\n        litemall_wx_index_hot: 0,\n        litemall_wx_index_brand: 0,\n        litemall_wx_index_topic: 0,\n        litemall_wx_catlog_list: 0,\n        litemall_wx_catlog_goods: 0,\n        litemall_wx_share: false\n      },\n      rules: {\n        litemall_wx_index_new: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_wx_index_hot: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_wx_index_brand: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_wx_index_topic: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_wx_catlog_list: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ],\n        litemall_wx_catlog_goods: [\n          { required: true, message: '不能为空', trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      listWx().then(response => {\n        this.dataForm = response.data.data\n        this.dataForm.litemall_wx_share = this.dataForm.litemall_wx_share === 'true'\n      })\n    },\n    cancel() {\n      this.init()\n    },\n    update() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (!valid) {\n          return false\n        }\n        this.doUpdate()\n      })\n    },\n    doUpdate() {\n      updateWx(this.dataForm)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '小程序配置成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/dashboard/index.vue",
    "content": "<template>\n  <div class=\"dashboard-editor-container\">\n\n    <el-row :gutter=\"40\" class=\"panel-group\">\n      <el-col :xs=\"12\" :sm=\"12\" :lg=\"6\" class=\"card-panel-col\">\n        <div class=\"card-panel\" @click=\"handleSetLineChartData('newVisitis')\">\n          <div class=\"card-panel-icon-wrapper icon-people\">\n            <svg-icon icon-class=\"peoples\" class-name=\"card-panel-icon\" />\n          </div>\n          <div class=\"card-panel-description\">\n            <div class=\"card-panel-text\">{{ $t('dashboard.section.user_total') }}</div>\n            <count-to :start-val=\"0\" :end-val=\"userTotal\" :duration=\"2600\" class=\"card-panel-num\"/>\n          </div>\n        </div>\n      </el-col>\n      <el-col :xs=\"12\" :sm=\"12\" :lg=\"6\" class=\"card-panel-col\">\n        <div class=\"card-panel\" @click=\"handleSetLineChartData('messages')\">\n          <div class=\"card-panel-icon-wrapper icon-message\">\n            <svg-icon icon-class=\"message\" class-name=\"card-panel-icon\" />\n          </div>\n          <div class=\"card-panel-description\">\n            <div class=\"card-panel-text\">{{ $t('dashboard.section.goods_total') }}</div>\n            <count-to :start-val=\"0\" :end-val=\"goodsTotal\" :duration=\"3000\" class=\"card-panel-num\"/>\n          </div>\n        </div>\n      </el-col>\n      <el-col :xs=\"12\" :sm=\"12\" :lg=\"6\" class=\"card-panel-col\">\n        <div class=\"card-panel\" @click=\"handleSetLineChartData('purchases')\">\n          <div class=\"card-panel-icon-wrapper icon-money\">\n            <svg-icon icon-class=\"message\" class-name=\"card-panel-icon\" />\n          </div>\n          <div class=\"card-panel-description\">\n            <div class=\"card-panel-text\">{{ $t('dashboard.section.product_total') }}</div>\n            <count-to :start-val=\"0\" :end-val=\"productTotal\" :duration=\"3200\" class=\"card-panel-num\"/>\n          </div>\n        </div>\n      </el-col>\n      <el-col :xs=\"12\" :sm=\"12\" :lg=\"6\" class=\"card-panel-col\">\n        <div class=\"card-panel\" @click=\"handleSetLineChartData('shoppings')\">\n          <div class=\"card-panel-icon-wrapper icon-shoppingCard\">\n            <svg-icon icon-class=\"money\" class-name=\"card-panel-icon\" />\n          </div>\n          <div class=\"card-panel-description\">\n            <div class=\"card-panel-text\">{{ $t('dashboard.section.order_total') }}</div>\n            <count-to :start-val=\"0\" :end-val=\"orderTotal\" :duration=\"3600\" class=\"card-panel-num\"/>\n          </div>\n        </div>\n      </el-col>\n    </el-row>\n  </div>\n</template>\n\n<script>\nimport { info } from '@/api/dashboard'\nimport CountTo from 'vue-count-to'\n\nexport default {\n  components: {\n    CountTo\n  },\n  data() {\n    return {\n      userTotal: 0,\n      goodsTotal: 0,\n      productTotal: 0,\n      orderTotal: 0\n    }\n  },\n  created() {\n    info().then(response => {\n      this.userTotal = response.data.data.userTotal\n      this.goodsTotal = response.data.data.goodsTotal\n      this.productTotal = response.data.data.productTotal\n      this.orderTotal = response.data.data.orderTotal\n    })\n  },\n  methods: {\n    handleSetLineChartData(type) {\n      this.$emit('handleSetLineChartData', type)\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.dashboard-editor-container {\n  padding: 32px;\n  background-color: rgb(240, 242, 245);\n  .chart-wrapper {\n    background: #fff;\n    padding: 16px 16px 0;\n    margin-bottom: 32px;\n  }\n}\n\n.panel-group {\n  margin-top: 18px;\n\n  .card-panel-col{\n    margin-bottom: 32px;\n  }\n  .card-panel {\n    height: 108px;\n    cursor: pointer;\n    font-size: 12px;\n    position: relative;\n    overflow: hidden;\n    color: #666;\n    background: #fff;\n    box-shadow: 4px 4px 40px rgba(0, 0, 0, .05);\n    border-color: rgba(0, 0, 0, .05);\n    &:hover {\n      .card-panel-icon-wrapper {\n        color: #fff;\n      }\n      .icon-people {\n         background: #40c9c6;\n      }\n      .icon-message {\n        background: #36a3f7;\n      }\n      .icon-money {\n        background: #f4516c;\n      }\n      .icon-shoppingCard {\n        background: #34bfa3\n      }\n    }\n    .icon-people {\n      color: #40c9c6;\n    }\n    .icon-message {\n      color: #36a3f7;\n    }\n    .icon-money {\n      color: #f4516c;\n    }\n    .icon-shoppingCard {\n      color: #34bfa3\n    }\n    .card-panel-icon-wrapper {\n      float: left;\n      margin: 14px 0 0 14px;\n      padding: 16px;\n      transition: all 0.38s ease-out;\n      border-radius: 6px;\n    }\n    .card-panel-icon {\n      float: left;\n      font-size: 48px;\n    }\n    .card-panel-description {\n      float: right;\n      font-weight: bold;\n      margin: 26px;\n      margin-left: 0px;\n      .card-panel-text {\n        line-height: 18px;\n        color: rgba(0, 0, 0, 0.45);\n        font-size: 16px;\n        margin-bottom: 12px;\n      }\n      .card-panel-num {\n        font-size: 20px;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/errorPage/401.vue",
    "content": "<template>\n  <div class=\"errPage-container\">\n    <el-button icon=\"el-icon-arrow-left\" class=\"pan-back-btn\" @click=\"back\">返回</el-button>\n    <el-row>\n      <el-col :span=\"12\">\n        <h1 class=\"text-jumbo text-ginormous\">Oops!</h1>\n        gif来源<a href=\"https://zh.airbnb.com/\" target=\"_blank\">airbnb</a> 页面\n        <h2>你没有权限去该页面</h2>\n        <h6>如有不满请联系你领导</h6>\n        <ul class=\"list-unstyled\">\n          <li>或者你可以去:</li>\n          <li class=\"link-type\">\n            <router-link to=\"/dashboard\">回首页</router-link>\n          </li>\n          <li class=\"link-type\"><a href=\"https://www.taobao.com/\">随便看看</a></li>\n          <li><a href=\"#\" @click.prevent=\"dialogVisible=true\">点我看图</a></li>\n        </ul>\n      </el-col>\n      <el-col :span=\"12\">\n        <img :src=\"errGif\" width=\"313\" height=\"428\" alt=\"Girl has dropped her ice cream.\">\n      </el-col>\n    </el-row>\n    <el-dialog :visible.sync=\"dialogVisible\" title=\"随便看\">\n      <img :src=\"ewizardClap\" class=\"pan-img\">\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport errGif from '@/assets/401_images/401.gif'\n\nexport default {\n  name: 'Page401',\n  data() {\n    return {\n      errGif: errGif + '?' + +new Date(),\n      ewizardClap: 'https://wpimg.wallstcn.com/007ef517-bafd-4066-aae4-6883632d9646',\n      dialogVisible: false\n    }\n  },\n  methods: {\n    back() {\n      if (this.$route.query.noGoBack) {\n        this.$router.push({ path: '/dashboard' })\n      } else {\n        this.$router.go(-1)\n      }\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n  .errPage-container {\n    width: 800px;\n    max-width: 100%;\n    margin: 100px auto;\n    .pan-back-btn {\n      background: #008489;\n      color: #fff;\n      border: none!important;\n    }\n    .pan-gif {\n      margin: 0 auto;\n      display: block;\n    }\n    .pan-img {\n      display: block;\n      margin: 0 auto;\n      width: 100%;\n    }\n    .text-jumbo {\n      font-size: 60px;\n      font-weight: 700;\n      color: #484848;\n    }\n    .list-unstyled {\n      font-size: 14px;\n      li {\n        padding-bottom: 5px;\n      }\n      a {\n        color: #008489;\n        text-decoration: none;\n        &:hover {\n          text-decoration: underline;\n        }\n      }\n    }\n  }\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/errorPage/404.vue",
    "content": "<template>\n  <div class=\"wscn-http404-container\">\n    <div class=\"wscn-http404\">\n      <div class=\"pic-404\">\n        <img class=\"pic-404__parent\" src=\"@/assets/404_images/404.png\" alt=\"404\">\n        <img class=\"pic-404__child left\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n        <img class=\"pic-404__child mid\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n        <img class=\"pic-404__child right\" src=\"@/assets/404_images/404_cloud.png\" alt=\"404\">\n      </div>\n      <div class=\"bullshit\">\n        <div class=\"bullshit__oops\">OOPS!</div>\n        <div class=\"bullshit__info\">版权所有\n          <a class=\"link-type\" href=\"https://wallstreetcn.com\" target=\"_blank\">华尔街见闻</a>\n        </div>\n        <div class=\"bullshit__headline\">{{ message }}</div>\n        <div class=\"bullshit__info\">请检查您输入的网址是否正确，请点击以下按钮返回主页或者发送错误报告</div>\n        <a href=\"\" class=\"bullshit__return-home\">返回首页</a>\n      </div>\n    </div>\n  </div>\n</template>\n\n<script>\n\nexport default {\n  name: 'Page404',\n  computed: {\n    message() {\n      return '网管说这个页面你不能进......'\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.wscn-http404-container{\n  transform: translate(-50%,-50%);\n  position: absolute;\n  top: 40%;\n  left: 50%;\n}\n.wscn-http404 {\n  position: relative;\n  width: 1200px;\n  padding: 0 50px;\n  overflow: hidden;\n  .pic-404 {\n    position: relative;\n    float: left;\n    width: 600px;\n    overflow: hidden;\n    &__parent {\n      width: 100%;\n    }\n    &__child {\n      position: absolute;\n      &.left {\n        width: 80px;\n        top: 17px;\n        left: 220px;\n        opacity: 0;\n        animation-name: cloudLeft;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      &.mid {\n        width: 46px;\n        top: 10px;\n        left: 420px;\n        opacity: 0;\n        animation-name: cloudMid;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1.2s;\n      }\n      &.right {\n        width: 62px;\n        top: 100px;\n        left: 500px;\n        opacity: 0;\n        animation-name: cloudRight;\n        animation-duration: 2s;\n        animation-timing-function: linear;\n        animation-fill-mode: forwards;\n        animation-delay: 1s;\n      }\n      @keyframes cloudLeft {\n        0% {\n          top: 17px;\n          left: 220px;\n          opacity: 0;\n        }\n        20% {\n          top: 33px;\n          left: 188px;\n          opacity: 1;\n        }\n        80% {\n          top: 81px;\n          left: 92px;\n          opacity: 1;\n        }\n        100% {\n          top: 97px;\n          left: 60px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudMid {\n        0% {\n          top: 10px;\n          left: 420px;\n          opacity: 0;\n        }\n        20% {\n          top: 40px;\n          left: 360px;\n          opacity: 1;\n        }\n        70% {\n          top: 130px;\n          left: 180px;\n          opacity: 1;\n        }\n        100% {\n          top: 160px;\n          left: 120px;\n          opacity: 0;\n        }\n      }\n      @keyframes cloudRight {\n        0% {\n          top: 100px;\n          left: 500px;\n          opacity: 0;\n        }\n        20% {\n          top: 120px;\n          left: 460px;\n          opacity: 1;\n        }\n        80% {\n          top: 180px;\n          left: 340px;\n          opacity: 1;\n        }\n        100% {\n          top: 200px;\n          left: 300px;\n          opacity: 0;\n        }\n      }\n    }\n  }\n  .bullshit {\n    position: relative;\n    float: left;\n    width: 300px;\n    padding: 30px 0;\n    overflow: hidden;\n    &__oops {\n      font-size: 32px;\n      font-weight: bold;\n      line-height: 40px;\n      color: #1482f0;\n      opacity: 0;\n      margin-bottom: 20px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-fill-mode: forwards;\n    }\n    &__headline {\n      font-size: 20px;\n      line-height: 24px;\n      color: #222;\n      font-weight: bold;\n      opacity: 0;\n      margin-bottom: 10px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.1s;\n      animation-fill-mode: forwards;\n    }\n    &__info {\n      font-size: 13px;\n      line-height: 21px;\n      color: grey;\n      opacity: 0;\n      margin-bottom: 30px;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.2s;\n      animation-fill-mode: forwards;\n    }\n    &__return-home {\n      display: block;\n      float: left;\n      width: 110px;\n      height: 36px;\n      background: #1482f0;\n      border-radius: 100px;\n      text-align: center;\n      color: #ffffff;\n      opacity: 0;\n      font-size: 14px;\n      line-height: 36px;\n      cursor: pointer;\n      animation-name: slideUp;\n      animation-duration: 0.5s;\n      animation-delay: 0.3s;\n      animation-fill-mode: forwards;\n    }\n    @keyframes slideUp {\n      0% {\n        transform: translateY(60px);\n        opacity: 0;\n      }\n      100% {\n        transform: translateY(0);\n        opacity: 1;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/goods/comment.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('goods_comment.placeholder.filter_user_id')\" />\n      <el-input v-model=\"listQuery.valueId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('goods_comment.placeholder.filter_value_id')\" />\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.value_id')\" prop=\"valueId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.star')\" prop=\"star\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.content')\" prop=\"content\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.pic_urls')\" prop=\"picUrls\">\n        <template slot-scope=\"scope\">\n          <el-image v-for=\"item in scope.row.picUrls\" :key=\"item\" :src=\"item\" :preview-src-list=\"scope.row.picUrls\" :lazy=\"true\" style=\"width: 40px; height: 40px; margin-right: 5px;\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.add_time')\" prop=\"addTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_comment.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleReply(scope.row)\">{{ $t('app.button.reply') }}</el-button>\n          <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 评论回复 -->\n    <el-dialog :visible.sync=\"replyFormVisible\" :title=\"$t('goods_comment.dialog.reply')\">\n      <el-form ref=\"replyForm\" :model=\"replyForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('goods_comment.form.content')\" prop=\"content\">\n          <el-input v-model=\"replyForm.content\" :autosize=\"{ minRows: 4, maxRows: 8}\" type=\"textarea\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"replyFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"reply\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<script>\nimport { listComment, deleteComment } from '@/api/comment'\nimport { replyComment } from '@/api/order'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Comment',\n  components: { Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        userId: undefined,\n        valueId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false,\n      replyForm: {\n        commentId: 0,\n        content: ''\n      },\n      replyFormVisible: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listComment(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleReply(row) {\n      this.replyForm = { commentId: row.id, content: '' }\n      this.replyFormVisible = true\n    },\n    reply() {\n      replyComment(this.replyForm).then(response => {\n        this.replyFormVisible = false\n        this.$notify.success({\n          title: '成功',\n          message: '回复成功'\n        })\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDelete(row) {\n      deleteComment(row).then(response => {\n        this.$notify({\n          title: '成功',\n          message: '删除成功',\n          type: 'success',\n          duration: 2000\n        })\n        this.getList()\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['评论ID', '用户ID', '商品ID', '评论', '评论图片列表', '评论时间']\n        const filterVal = ['id', 'userId', 'valueId', 'content', 'picUrls', 'addTime']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '商品评论信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/goods/create.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.goods') }}</h3>\n      <el-form ref=\"goods\" :rules=\"rules\" :model=\"goods\" label-width=\"150px\">\n        <el-form-item :label=\"$t('goods_edit.form.goods_sn')\" prop=\"goodsSn\">\n          <el-input v-model=\"goods.goodsSn\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.name')\" prop=\"name\">\n          <el-input v-model=\"goods.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.counter_price')\" prop=\"counterPrice\">\n          <el-input v-model=\"goods.counterPrice\" placeholder=\"0.00\">\n            <template slot=\"append\">元</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_new')\" prop=\"isNew\">\n          <el-radio-group v-model=\"goods.isNew\">\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_new_true') }}</el-radio>\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_new_false') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_hot')\" prop=\"isHot\">\n          <el-radio-group v-model=\"goods.isHot\">\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_hot_false') }}</el-radio>\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_hot_true') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_on_sale')\" prop=\"isOnSale\">\n          <el-radio-group v-model=\"goods.isOnSale\">\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_on_sale_true') }}</el-radio>\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_on_sale_false') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.pic_url')\">\n          <el-upload\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :headers=\"headers\"\n            :on-success=\"uploadPicUrl\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\"\n          >\n            <img v-if=\"goods.picUrl\" :src=\"goods.picUrl\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n          </el-upload>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.gallery')\">\n          <el-upload\n            :action=\"uploadPath\"\n            :limit=\"5\"\n            :headers=\"headers\"\n            :on-exceed=\"uploadOverrun\"\n            :on-success=\"handleGalleryUrl\"\n            :on-remove=\"handleRemove\"\n            multiple\n            accept=\".jpg,.jpeg,.png,.gif\"\n            list-type=\"picture-card\"\n          >\n            <i class=\"el-icon-plus\" />\n          </el-upload>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.unit')\">\n          <el-input v-model=\"goods.unit\" :placeholder=\"$t('goods_edit.placeholder.unit')\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.keywords')\">\n          <el-tag v-for=\"tag in keywords\" :key=\"tag\" closable type=\"primary\" @close=\"handleClose(tag)\">\n            {{ tag }}\n          </el-tag>\n          <el-input\n            v-if=\"newKeywordVisible\"\n            ref=\"newKeywordInput\"\n            v-model=\"newKeyword\"\n            class=\"input-new-keyword\"\n\n            @keyup.enter.native=\"handleInputConfirm\"\n            @blur=\"handleInputConfirm\"\n          />\n          <el-button v-else class=\"button-new-keyword\" type=\"primary\" @click=\"showInput\">{{ $t('app.button.add') }}</el-button>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.category_id')\">\n          <el-cascader :options=\"categoryList\" expand-trigger=\"hover\" clearable @change=\"handleCategoryChange\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.brand_id')\">\n          <el-select v-model=\"goods.brandId\" clearable>\n            <el-option v-for=\"item in brandList\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\" />\n          </el-select>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.brief')\">\n          <el-input v-model=\"goods.brief\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.detail')\">\n          <editor v-model=\"goods.detail\" :init=\"editorInit\" />\n        </el-form-item>\n      </el-form>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.specifications') }}</h3>\n      <el-row :gutter=\"20\" type=\"flex\" align=\"middle\" style=\"padding:20px 0;\">\n        <el-col :span=\"10\">\n          <el-radio-group v-model=\"multipleSpec\" @change=\"specChanged\">\n            <el-radio-button :label=\"false\">{{ $t('goods_edit.value.multiple_spec_false') }}</el-radio-button>\n            <el-radio-button :label=\"true\">{{ $t('goods_edit.value.multiple_spec_true') }}</el-radio-button>\n          </el-radio-group>\n        </el-col>\n        <el-col v-if=\"multipleSpec\" :span=\"10\">\n          <el-button :plain=\"true\" type=\"primary\" @click=\"handleSpecificationShow\">{{ $t('app.button.create') }}</el-button>\n        </el-col>\n      </el-row>\n\n      <el-table :data=\"specifications\">\n        <el-table-column property=\"specification\" :label=\"$t('goods_edit.table.specification_name')\" />\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.specification_value')\">\n          <template slot-scope=\"scope\">\n            <el-tag type=\"primary\">\n              {{ scope.row.value }}\n            </el-tag>\n          </template>\n        </el-table-column>\n        <el-table-column property=\"picUrl\" :label=\"$t('goods_edit.table.specification_pic_url')\">\n          <template slot-scope=\"scope\">\n            <img v-if=\"scope.row.picUrl\" :src=\"scope.row.picUrl\" width=\"40\">\n          </template>\n        </el-table-column>\n        <el-table-column\n          v-if=\"multipleSpec\"\n          align=\"center\"\n          :label=\"$t('goods_edit.table.specification_actions')\"\n          width=\"250\"\n          class-name=\"small-padding fixed-width\"\n        >\n          <template slot-scope=\"scope\">\n            <el-button type=\"danger\" size=\"mini\" @click=\"handleSpecificationDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"specVisiable\" :title=\"$t('goods_edit.dialog.create_specification')\">\n        <el-form\n          ref=\"specForm\"\n          :rules=\"rules\"\n          :model=\"specForm\"\n          status-icon\n          label-position=\"left\"\n          label-width=\"100px\"\n          style=\"width: 400px; margin-left:50px;\"\n        >\n          <el-form-item :label=\"$t('goods_edit.form.specification_name')\" prop=\"specification\">\n            <el-input v-model=\"specForm.specification\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.specification_value')\" prop=\"value\">\n            <el-input v-model=\"specForm.value\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.specification_pic_url')\" prop=\"picUrl\">\n            <el-upload\n              :action=\"uploadPath\"\n              :show-file-list=\"false\"\n              :headers=\"headers\"\n              :on-success=\"uploadSpecPicUrl\"\n              class=\"avatar-uploader\"\n              accept=\".jpg,.jpeg,.png,.gif\"\n            >\n              <img v-if=\"specForm.picUrl\" :src=\"specForm.picUrl\" class=\"avatar\">\n              <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n            </el-upload>\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"specVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button type=\"primary\" @click=\"handleSpecificationAdd\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.products') }}</h3>\n      <el-table :data=\"products\">\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.product_specifications')\">\n          <template slot-scope=\"scope\">\n            <el-tag v-for=\"tag in scope.row.specifications\" :key=\"tag\">\n              {{ tag }}\n            </el-tag>\n          </template>\n        </el-table-column>\n        <el-table-column property=\"price\" width=\"100\" :label=\"$t('goods_edit.table.product_price')\" />\n        <el-table-column property=\"number\" width=\"100\" :label=\"$t('goods_edit.table.product_number')\" />\n        <el-table-column property=\"url\" width=\"100\" :label=\"$t('goods_edit.table.product_url')\">\n          <template slot-scope=\"scope\">\n            <img v-if=\"scope.row.url\" :src=\"scope.row.url\" width=\"40\">\n          </template>\n        </el-table-column>\n        <el-table-column align=\"center\" :label=\"$t('goods_edit.table.product_actions')\" width=\"100\" class-name=\"small-padding fixed-width\">\n          <template slot-scope=\"scope\">\n            <el-button type=\"primary\" size=\"mini\" @click=\"handleProductShow(scope.row)\">{{ $t('app.button.settings') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"productVisiable\" :title=\"$t('goods_edit.dialog.create_product')\">\n        <el-form\n          ref=\"productForm\"\n          :model=\"productForm\"\n          status-icon\n          label-position=\"left\"\n          label-width=\"100px\"\n          style=\"width: 400px; margin-left:50px;\"\n        >\n          <el-form-item :label=\"$t('goods_edit.form.product_specifications')\" prop=\"specifications\">\n            <el-tag v-for=\"tag in productForm.specifications\" :key=\"tag\">\n              {{ tag }}\n            </el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_price')\" prop=\"price\">\n            <el-input v-model=\"productForm.price\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_number')\" prop=\"number\">\n            <el-input v-model=\"productForm.number\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_url')\" prop=\"url\">\n            <el-upload\n              :action=\"uploadPath\"\n              :show-file-list=\"false\"\n              :headers=\"headers\"\n              :on-success=\"uploadProductUrl\"\n              class=\"avatar-uploader\"\n              accept=\".jpg,.jpeg,.png,.gif\"\n            >\n              <img v-if=\"productForm.url\" :src=\"productForm.url\" class=\"avatar\">\n              <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n            </el-upload>\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"productVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button type=\"primary\" @click=\"handleProductEdit\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.attributes') }}</h3>\n      <el-button type=\"primary\" @click=\"handleAttributeShow\">{{ $t('app.button.create') }}</el-button>\n      <el-table :data=\"attributes\">\n        <el-table-column property=\"attribute\" :label=\"$t('goods_edit.table.attribute_name')\" />\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.attribute_value')\" />\n        <el-table-column align=\"center\" :label=\"$t('goods_edit.table.attribute_actions')\" width=\"100\" class-name=\"small-padding fixed-width\">\n          <template slot-scope=\"scope\">\n            <el-button type=\"danger\" size=\"mini\" @click=\"handleAttributeDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"attributeVisiable\" :title=\"$t('goods_edit.dialog.create_attribute')\">\n        <el-form\n          ref=\"attributeForm\"\n          :model=\"attributeForm\"\n          status-icon\n          label-position=\"left\"\n          label-width=\"100px\"\n          style=\"width: 400px; margin-left:50px;\"\n        >\n          <el-form-item :label=\"$t('goods_edit.form.attribute_name')\" prop=\"attribute\">\n            <el-input v-model=\"attributeForm.attribute\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.attribute_value')\" prop=\"value\">\n            <el-input v-model=\"attributeForm.value\" />\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"attributeVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button type=\"primary\" @click=\"handleAttributeAdd\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <div class=\"op-container\">\n      <el-button @click=\"handleCancel\">{{ $t('app.button.cancel') }}</el-button>\n      <el-button type=\"primary\" @click=\"handlePublish\">{{ $t('goods_edit.button.publish') }}</el-button>\n    </div>\n\n  </div>\n</template>\n\n<style>\n  .el-card {\n    margin-bottom: 10px;\n  }\n\n  .el-tag + .el-tag {\n    margin-left: 10px;\n  }\n\n  .input-new-keyword {\n    width: 90px;\n    margin-left: 10px;\n    vertical-align: bottom;\n  }\n\n  .avatar-uploader .el-upload {\n    width: 145px;\n    height: 145px;\n    border: 1px dashed #d9d9d9;\n    border-radius: 6px;\n    cursor: pointer;\n    position: relative;\n    overflow: hidden;\n  }\n\n  .avatar-uploader .el-upload:hover {\n    border-color: #20a0ff;\n  }\n\n  .avatar-uploader-icon {\n    font-size: 28px;\n    color: #8c939d;\n    width: 120px;\n    height: 120px;\n    line-height: 120px;\n    text-align: center;\n  }\n\n  .avatar {\n    width: 145px;\n    height: 145px;\n    display: block;\n  }\n</style>\n\n<script>\nimport { publishGoods, listCatAndBrand } from '@/api/goods'\nimport { createStorage, uploadPath } from '@/api/storage'\nimport Editor from '@tinymce/tinymce-vue'\nimport { MessageBox } from 'element-ui'\nimport { getToken } from '@/utils/auth'\n\nexport default {\n  name: 'GoodsCreate',\n  components: { Editor },\n\n  data() {\n    return {\n      uploadPath,\n      newKeywordVisible: false,\n      newKeyword: '',\n      keywords: [],\n      categoryList: [],\n      brandList: [],\n      goods: { picUrl: '', gallery: [], isHot: false, isNew: true, isOnSale: true },\n      specVisiable: false,\n      specForm: { specification: '', value: '', picUrl: '' },\n      multipleSpec: false,\n      specifications: [{ specification: '规格', value: '标准', picUrl: '' }],\n      productVisiable: false,\n      productForm: { id: 0, specifications: [], price: 0.00, number: 0, url: '' },\n      products: [{ id: 0, specifications: ['标准'], price: 0.00, number: 0, url: '' }],\n      attributeVisiable: false,\n      attributeForm: { attribute: '', value: '' },\n      attributes: [],\n      rules: {\n        goodsSn: [{ required: true, message: '商品编号不能为空', trigger: 'blur' }],\n        name: [{ required: true, message: '商品名称不能为空', trigger: 'blur' }]\n      },\n      editorInit: {\n        language: 'zh_CN',\n        height: 500,\n        convert_urls: false,\n        plugins: ['advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'],\n        toolbar: ['searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample', 'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'],\n        images_upload_handler: function(blobInfo, success, failure) {\n          const formData = new FormData()\n          formData.append('file', blobInfo.blob())\n          createStorage(formData).then(res => {\n            success(res.data.data.url)\n          }).catch(() => {\n            failure('上传失败，请重新上传')\n          })\n        }\n      }\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.init()\n  },\n\n  methods: {\n    init: function() {\n      listCatAndBrand().then(response => {\n        this.categoryList = response.data.data.categoryList\n        this.brandList = response.data.data.brandList\n      })\n    },\n    handleCategoryChange(value) {\n      this.goods.categoryId = value[value.length - 1]\n    },\n    handleCancel: function() {\n      this.$store.dispatch('tagsView/delView', this.$route)\n      this.$router.push({ path: '/goods/list' })\n    },\n    handlePublish: function() {\n      const finalGoods = {\n        goods: this.goods,\n        specifications: this.specifications,\n        products: this.products,\n        attributes: this.attributes\n      }\n      publishGoods(finalGoods).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '创建成功'\n        })\n        this.$store.dispatch('tagsView/delView', this.$route)\n        this.$router.push({ path: '/goods/list' })\n      }).catch(response => {\n        MessageBox.alert('业务错误：' + response.data.errmsg, '警告', {\n          confirmButtonText: '确定',\n          type: 'error'\n        })\n      })\n    },\n    handleClose(tag) {\n      this.keywords.splice(this.keywords.indexOf(tag), 1)\n      this.goods.keywords = this.keywords.toString()\n    },\n    showInput() {\n      this.newKeywordVisible = true\n      this.$nextTick(_ => {\n        this.$refs.newKeywordInput.$refs.input.focus()\n      })\n    },\n    handleInputConfirm() {\n      const newKeyword = this.newKeyword\n      if (newKeyword) {\n        this.keywords.push(newKeyword)\n        this.goods.keywords = this.keywords.toString()\n      }\n      this.newKeywordVisible = false\n      this.newKeyword = ''\n    },\n    uploadPicUrl: function(response) {\n      this.goods.picUrl = response.data.url\n    },\n    uploadOverrun: function() {\n      this.$message({\n        type: 'error',\n        message: '上传文件个数超出限制!最多上传5张图片!'\n      })\n    },\n    handleGalleryUrl(response, file, fileList) {\n      if (response.errno === 0) {\n        this.goods.gallery.push(response.data.url)\n      }\n    },\n    handleRemove: function(file, fileList) {\n      for (var i = 0; i < this.goods.gallery.length; i++) {\n        // 这里存在两种情况\n        // 1. 如果所删除图片是刚刚上传的图片，那么图片地址是file.response.data.url\n        //    此时的file.url虽然存在，但是是本机地址，而不是远程地址。\n        // 2. 如果所删除图片是后台返回的已有图片，那么图片地址是file.url\n        var url\n        if (file.response === undefined) {\n          url = file.url\n        } else {\n          url = file.response.data.url\n        }\n\n        if (this.goods.gallery[i] === url) {\n          this.goods.gallery.splice(i, 1)\n        }\n      }\n    },\n    specChanged: function(label) {\n      if (label === false) {\n        this.specifications = [{ specification: '规格', value: '标准', picUrl: '' }]\n        this.products = [{ id: 0, specifications: ['标准'], price: 0.00, number: 0, url: '' }]\n      } else {\n        this.specifications = []\n        this.products = []\n      }\n    },\n    uploadSpecPicUrl: function(response) {\n      this.specForm.picUrl = response.data.url\n    },\n    handleSpecificationShow() {\n      this.specForm = { specification: '', value: '', picUrl: '' }\n      this.specVisiable = true\n    },\n    handleSpecificationAdd() {\n      var index = this.specifications.length - 1\n      for (var i = 0; i < this.specifications.length; i++) {\n        const v = this.specifications[i]\n        if (v.specification === this.specForm.specification) {\n          if (v.value === this.specForm.value) {\n            this.$message({\n              type: 'warning',\n              message: '已经存在规格值:' + v.value\n            })\n            this.specForm = {}\n            this.specVisiable = false\n            return\n          } else {\n            index = i\n          }\n        }\n      }\n\n      this.specifications.splice(index + 1, 0, this.specForm)\n      this.specVisiable = false\n\n      this.specToProduct()\n    },\n    handleSpecificationDelete(row) {\n      const index = this.specifications.indexOf(row)\n      this.specifications.splice(index, 1)\n      this.specToProduct()\n    },\n    specToProduct() {\n      if (this.specifications.length === 0) {\n        return\n      }\n      // 根据specifications创建临时规格列表\n      var specValues = []\n      var spec = this.specifications[0].specification\n      var values = []\n      values.push(0)\n\n      for (var i = 1; i < this.specifications.length; i++) {\n        const aspec = this.specifications[i].specification\n\n        if (aspec === spec) {\n          values.push(i)\n        } else {\n          specValues.push(values)\n          spec = aspec\n          values = []\n          values.push(i)\n        }\n      }\n      specValues.push(values)\n\n      // 根据临时规格列表生产货品规格\n      // 算法基于 https://blog.csdn.net/tyhj_sf/article/details/53893125\n      var productsIndex = 0\n      var products = []\n      var combination = []\n      var n = specValues.length\n      for (var s = 0; s < n; s++) {\n        combination[s] = 0\n      }\n      var index = 0\n      var isContinue = false\n      do {\n        var specifications = []\n        for (var x = 0; x < n; x++) {\n          var z = specValues[x][combination[x]]\n          specifications.push(this.specifications[z].value)\n        }\n        products[productsIndex] = { id: productsIndex, specifications: specifications, price: 0.00, number: 0, url: '' }\n        productsIndex++\n\n        index++\n        combination[n - 1] = index\n        for (var j = n - 1; j >= 0; j--) {\n          if (combination[j] >= specValues[j].length) {\n            combination[j] = 0\n            index = 0\n            if (j - 1 >= 0) {\n              combination[j - 1] = combination[j - 1] + 1\n            }\n          }\n        }\n        isContinue = false\n        for (var p = 0; p < n; p++) {\n          if (combination[p] !== 0) {\n            isContinue = true\n          }\n        }\n      } while (isContinue)\n\n      this.products = products\n    },\n    handleProductShow(row) {\n      this.productForm = Object.assign({}, row)\n      this.productVisiable = true\n    },\n    uploadProductUrl: function(response) {\n      this.productForm.url = response.data.url\n    },\n    handleProductEdit() {\n      for (var i = 0; i < this.products.length; i++) {\n        const v = this.products[i]\n        if (v.id === this.productForm.id) {\n          this.products.splice(i, 1, this.productForm)\n          break\n        }\n      }\n      this.productVisiable = false\n    },\n    handleAttributeShow() {\n      this.attributeForm = {}\n      this.attributeVisiable = true\n    },\n    handleAttributeAdd() {\n      this.attributes.unshift(this.attributeForm)\n      this.attributeVisiable = false\n    },\n    handleAttributeDelete(row) {\n      const index = this.attributes.indexOf(row)\n      this.attributes.splice(index, 1)\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/goods/edit.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.goods') }}</h3>\n      <el-form ref=\"goods\" :rules=\"rules\" :model=\"goods\" label-width=\"150px\">\n        <el-form-item :label=\"$t('goods_edit.form.id')\" prop=\"id\">\n          <el-input v-model=\"goods.id\" disabled />\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.name')\" prop=\"name\">\n          <el-input v-model=\"goods.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.goods_sn')\" prop=\"goodsSn\">\n          <el-input v-model=\"goods.goodsSn\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.counter_price')\" prop=\"counterPrice\">\n          <el-input v-model=\"goods.counterPrice\" placeholder=\"0.00\">\n            <template slot=\"append\">元</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_new')\" prop=\"isNew\">\n          <el-radio-group v-model=\"goods.isNew\">\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_new_true') }}</el-radio>\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_new_false') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_hot')\" prop=\"isHot\">\n          <el-radio-group v-model=\"goods.isHot\">\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_hot_false') }}</el-radio>\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_hot_true') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item :label=\"$t('goods_edit.form.is_on_sale')\" prop=\"isOnSale\">\n          <el-radio-group v-model=\"goods.isOnSale\">\n            <el-radio :label=\"true\">{{ $t('goods_edit.value.is_on_sale_true') }}</el-radio>\n            <el-radio :label=\"false\">{{ $t('goods_edit.value.is_on_sale_false') }}</el-radio>\n          </el-radio-group>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.pic_url')\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadPicUrl\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\"\n          >\n            <img v-if=\"goods.picUrl\" :src=\"goods.picUrl\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n          </el-upload>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.gallery')\">\n          <el-upload\n            :action=\"uploadPath\"\n            :headers=\"headers\"\n            :limit=\"5\"\n            :file-list=\"galleryFileList\"\n            :on-exceed=\"uploadOverrun\"\n            :on-success=\"handleGalleryUrl\"\n            :on-remove=\"handleRemove\"\n            multiple\n            accept=\".jpg,.jpeg,.png,.gif\"\n            list-type=\"picture-card\"\n          >\n            <i class=\"el-icon-plus\" />\n          </el-upload>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.unit')\">\n          <el-input v-model=\"goods.unit\" :placeholder=\"$t('goods_edit.placeholder.unit')\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.keywords')\">\n          <el-tag v-for=\"tag in keywords\" :key=\"tag\" closable type=\"primary\" @close=\"handleClose(tag)\">\n            {{ tag }}\n          </el-tag>\n          <el-input v-if=\"newKeywordVisible\" ref=\"newKeywordInput\" v-model=\"newKeyword\" class=\"input-new-keyword\" @keyup.enter.native=\"handleInputConfirm\" @blur=\"handleInputConfirm\" />\n          <el-button v-else class=\"button-new-keyword\" type=\"primary\" @click=\"showInput\">{{ $t('app.button.add') }}</el-button>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.category_id')\">\n          <el-cascader v-model=\"categoryIds\" :options=\"categoryList\" clearable expand-trigger=\"hover\" @change=\"handleCategoryChange\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.brand_id')\">\n          <el-select v-model=\"goods.brandId\" clearable>\n            <el-option v-for=\"item in brandList\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\" />\n          </el-select>\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.brief')\">\n          <el-input v-model=\"goods.brief\" />\n        </el-form-item>\n\n        <el-form-item :label=\"$t('goods_edit.form.detail')\">\n          <editor v-model=\"goods.detail\" :init=\"editorInit\" />\n        </el-form-item>\n      </el-form>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.specifications') }}</h3>\n      <el-table :data=\"specifications\">\n        <el-table-column property=\"specification\" :label=\"$t('goods_edit.table.specification_name')\" />\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.specification_value')\">\n          <template slot-scope=\"scope\">\n            <el-tag type=\"primary\">\n              {{ scope.row.value }}\n            </el-tag>\n          </template>\n        </el-table-column>\n        <el-table-column property=\"picUrl\" :label=\"$t('goods_edit.table.specification_pic_url')\">\n          <template slot-scope=\"scope\">\n            <img v-if=\"scope.row.picUrl\" :src=\"scope.row.picUrl\" width=\"40\">\n          </template>\n        </el-table-column>\n        <el-table-column align=\"center\" :label=\"$t('goods_edit.table.specification_actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n          <template slot-scope=\"scope\">\n            <el-button type=\"primary\" size=\"mini\" @click=\"handleSpecificationShow(scope.row)\">{{ $t('app.button.settings') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"specVisiable\" :title=\"$t('goods_edit.dialog.edit_specification')\">\n        <el-form ref=\"specForm\" :rules=\"rules\" :model=\"specForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n          <el-form-item :label=\"$t('goods_edit.form.specification_name')\" prop=\"specification\">\n            <el-input v-model=\"specForm.specification\" disabled />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.specification_value')\" prop=\"value\">\n            <el-input v-model=\"specForm.value\" disabled />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.specification_pic_url')\" prop=\"picUrl\">\n            <el-upload\n              :headers=\"headers\"\n              :action=\"uploadPath\"\n              :show-file-list=\"false\"\n              :on-success=\"uploadSpecPicUrl\"\n              class=\"avatar-uploader\"\n              accept=\".jpg,.jpeg,.png,.gif\"\n            >\n              <img v-if=\"specForm.picUrl\" :src=\"specForm.picUrl\" class=\"avatar\">\n              <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n            </el-upload>\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"specVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button type=\"primary\" @click=\"handleSpecificationEdit\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.products') }}</h3>\n      <el-table :data=\"products\">\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.product_specifications')\">\n          <template slot-scope=\"scope\">\n            <el-tag v-for=\"tag in scope.row.specifications\" :key=\"tag\">\n              {{ tag }}\n            </el-tag>\n          </template>\n        </el-table-column>\n        <el-table-column property=\"price\" :label=\"$t('goods_edit.table.product_price')\" />\n        <el-table-column property=\"number\" :label=\"$t('goods_edit.table.product_number')\" />\n        <el-table-column property=\"url\" :label=\"$t('goods_edit.table.product_url')\">\n          <template slot-scope=\"scope\">\n            <img v-if=\"scope.row.url\" :src=\"scope.row.url\" width=\"40\">\n          </template>\n        </el-table-column>\n        <el-table-column align=\"center\" :label=\"$t('goods_edit.table.product_actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n          <template slot-scope=\"scope\">\n            <el-button type=\"primary\" size=\"mini\" @click=\"handleProductShow(scope.row)\">{{ $t('app.button.settings') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"productVisiable\" :title=\"$t('goods_edit.dialog.edit_product')\">\n        <el-form ref=\"productForm\" :model=\"productForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n          <el-form-item :label=\"$t('goods_edit.form.product_specifications')\" prop=\"specifications\">\n            <el-tag v-for=\"tag in productForm.specifications\" :key=\"tag\">\n              {{ tag }}\n            </el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_price')\" prop=\"price\">\n            <el-input v-model=\"productForm.price\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_number')\" prop=\"number\">\n            <el-input v-model=\"productForm.number\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.product_url')\" prop=\"url\">\n            <el-upload\n              :headers=\"headers\"\n              :action=\"uploadPath\"\n              :show-file-list=\"false\"\n              :on-success=\"uploadProductUrl\"\n              class=\"avatar-uploader\"\n              accept=\".jpg,.jpeg,.png,.gif\"\n            >\n              <img v-if=\"productForm.url\" :src=\"productForm.url\" class=\"avatar\">\n              <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n            </el-upload>\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"productVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button type=\"primary\" @click=\"handleProductEdit\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <el-card class=\"box-card\">\n      <h3>{{ $t('goods_edit.section.attributes') }}</h3>\n      <el-button type=\"primary\" @click=\"handleAttributeShow\">{{ $t('app.button.create') }}</el-button>\n      <el-table :data=\"attributesData\">\n        <el-table-column property=\"attribute\" :label=\"$t('goods_edit.table.attribute_name')\" />\n        <el-table-column property=\"value\" :label=\"$t('goods_edit.table.attribute_value')\" />\n        <el-table-column align=\"center\" :label=\"$t('goods_edit.table.attribute_actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n          <template slot-scope=\"scope\">\n            <el-button type=\"primary\" size=\"mini\" @click=\"handleAttributeShow(scope.row)\">{{ $t('app.button.settings') }}</el-button>\n            <el-button type=\"danger\" size=\"mini\" @click=\"handleAttributeDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n          </template>\n        </el-table-column>\n      </el-table>\n\n      <el-dialog :visible.sync=\"attributeVisiable\" :title=\"$t(attributeAdd ? 'goods_edit.dialog.edit_attribute_add' : 'goods_edit.dialog.edit_attribute_edit')\">\n        <el-form ref=\"attributeForm\" :model=\"attributeForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n          <el-form-item :label=\"$t('goods_edit.form.attribute_name')\" prop=\"attribute\">\n            <el-input v-model=\"attributeForm.attribute\" />\n          </el-form-item>\n          <el-form-item :label=\"$t('goods_edit.form.attribute_value')\" prop=\"value\">\n            <el-input v-model=\"attributeForm.value\" />\n          </el-form-item>\n        </el-form>\n        <div slot=\"footer\" class=\"dialog-footer\">\n          <el-button @click=\"attributeVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n          <el-button v-if=\"attributeAdd\" type=\"primary\" @click=\"handleAttributeAdd\">{{ $t('app.button.confirm') }}</el-button>\n          <el-button v-else type=\"primary\" @click=\"handleAttributeEdit\">{{ $t('app.button.confirm') }}</el-button>\n        </div>\n      </el-dialog>\n    </el-card>\n\n    <div class=\"op-container\">\n      <el-button @click=\"handleCancel\">{{ $t('app.button.cancel') }}</el-button>\n      <el-button type=\"primary\" @click=\"handleEdit\">{{ $t('goods_edit.button.edit') }}</el-button>\n    </div>\n\n  </div>\n</template>\n\n<style>\n.el-card {\n  margin-bottom: 10px;\n}\n.el-tag + .el-tag {\n  margin-left: 10px;\n}\n.input-new-keyword {\n  width: 90px;\n  margin-left: 10px;\n  vertical-align: bottom;\n}\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n.op-container {\n  display: flex;\n  justify-content: center;\n}\n</style>\n\n<script>\nimport { detailGoods, editGoods, listCatAndBrand } from '@/api/goods'\nimport { createStorage, uploadPath } from '@/api/storage'\nimport Editor from '@tinymce/tinymce-vue'\nimport { MessageBox } from 'element-ui'\nimport { getToken } from '@/utils/auth'\n\nexport default {\n  name: 'GoodsEdit',\n  components: { Editor },\n  data() {\n    return {\n      uploadPath,\n      newKeywordVisible: false,\n      newKeyword: '',\n      keywords: [],\n      galleryFileList: [],\n      categoryList: [],\n      brandList: [],\n      categoryIds: [],\n      goods: { gallery: [] },\n      specVisiable: false,\n      specForm: { specification: '', value: '', picUrl: '' },\n      specifications: [{ specification: '规格', value: '标准', picUrl: '' }],\n      productVisiable: false,\n      productForm: {\n        id: 0,\n        specifications: [],\n        price: 0.0,\n        number: 0,\n        url: ''\n      },\n      products: [\n        { id: 0, specifications: ['标准'], price: 0.0, number: 0, url: '' }\n      ],\n      attributeVisiable: false,\n      attributeAdd: true,\n      attributeForm: { attribute: '', value: '' },\n      attributes: [],\n      rules: {\n        name: [{ required: true, message: '商品名称不能为空', trigger: 'blur' }]\n      },\n      editorInit: {\n        language: 'zh_CN',\n        height: '400px',\n        convert_urls: false,\n        plugins: [\n          'advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'\n        ],\n        toolbar: [\n          'searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample',\n          'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'\n        ],\n        images_upload_handler: function(blobInfo, success, failure) {\n          const formData = new FormData()\n          formData.append('file', blobInfo.blob())\n          createStorage(formData)\n            .then(res => {\n              success(res.data.data.url)\n            })\n            .catch(() => {\n              failure('上传失败，请重新上传')\n            })\n        }\n      }\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    },\n    attributesData() {\n      var attributesData = []\n      for (var i = 0; i < this.attributes.length; i++) {\n        if (this.attributes[i].deleted) {\n          continue\n        }\n        attributesData.push(this.attributes[i])\n      }\n      return attributesData\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      if (this.$route.query.id == null) {\n        return\n      }\n\n      const goodsId = this.$route.query.id\n      detailGoods(goodsId).then(response => {\n        this.goods = response.data.data.goods\n        // 稍微调整一下前后端不一致\n        if (this.goods.brandId === 0) {\n          this.goods.brandId = null\n        }\n        if (this.goods.keywords === '') {\n          this.goods.keywords = null\n        }\n        this.specifications = response.data.data.specifications\n        this.products = response.data.data.products\n        this.attributes = response.data.data.attributes\n        this.categoryIds = response.data.data.categoryIds\n\n        this.galleryFileList = []\n        for (var i = 0; i < this.goods.gallery.length; i++) {\n          this.galleryFileList.push({\n            url: this.goods.gallery[i]\n          })\n        }\n        const keywords = response.data.data.goods.keywords\n        if (keywords !== null) {\n          this.keywords = keywords.split(',')\n        }\n      })\n\n      listCatAndBrand().then(response => {\n        this.categoryList = response.data.data.categoryList\n        this.brandList = response.data.data.brandList\n      })\n    },\n    handleCategoryChange(value) {\n      this.goods.categoryId = value[value.length - 1]\n    },\n    handleCancel: function() {\n      this.$store.dispatch('tagsView/delView', this.$route)\n      this.$router.push({ path: '/goods/list' })\n    },\n    handleEdit: function() {\n      const finalGoods = {\n        goods: this.goods,\n        specifications: this.specifications,\n        products: this.products,\n        attributes: this.attributes\n      }\n      editGoods(finalGoods)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '编辑成功'\n          })\n          this.$store.dispatch('tagsView/delView', this.$route)\n          this.$router.push({ path: '/goods/list' })\n        })\n        .catch(response => {\n          MessageBox.alert('业务错误：' + response.data.errmsg, '警告', {\n            confirmButtonText: '确定',\n            type: 'error'\n          })\n        })\n    },\n    handleClose(tag) {\n      this.keywords.splice(this.keywords.indexOf(tag), 1)\n      this.goods.keywords = this.keywords.toString()\n    },\n    showInput() {\n      this.newKeywordVisible = true\n      this.$nextTick(_ => {\n        this.$refs.newKeywordInput.$refs.input.focus()\n      })\n    },\n    handleInputConfirm() {\n      const newKeyword = this.newKeyword\n      if (newKeyword) {\n        this.keywords.push(newKeyword)\n        this.goods.keywords = this.keywords.toString()\n      }\n      this.newKeywordVisible = false\n      this.newKeyword = ''\n    },\n    uploadPicUrl: function(response) {\n      this.goods.picUrl = response.data.url\n    },\n    uploadOverrun: function() {\n      this.$message({\n        type: 'error',\n        message: '上传文件个数超出限制!最多上传5张图片!'\n      })\n    },\n    handleGalleryUrl(response, file, fileList) {\n      if (response.errno === 0) {\n        this.goods.gallery.push(response.data.url)\n      }\n    },\n    handleRemove: function(file, fileList) {\n      for (var i = 0; i < this.goods.gallery.length; i++) {\n        // 这里存在两种情况\n        // 1. 如果所删除图片是刚刚上传的图片，那么图片地址是file.response.data.url\n        //    此时的file.url虽然存在，但是是本机地址，而不是远程地址。\n        // 2. 如果所删除图片是后台返回的已有图片，那么图片地址是file.url\n        var url\n        if (file.response === undefined) {\n          url = file.url\n        } else {\n          url = file.response.data.url\n        }\n\n        if (this.goods.gallery[i] === url) {\n          this.goods.gallery.splice(i, 1)\n        }\n      }\n    },\n    specChanged: function(label) {\n      if (label === false) {\n        this.specifications = [\n          { specification: '规格', value: '标准', picUrl: '' }\n        ]\n        this.products = [\n          { id: 0, specifications: ['标准'], price: 0.0, number: 0, url: '' }\n        ]\n      } else {\n        this.specifications = []\n        this.products = []\n      }\n    },\n    uploadSpecPicUrl: function(response) {\n      this.specForm.picUrl = response.data.url\n    },\n    handleSpecificationShow(row) {\n      this.specForm = Object.assign({}, row)\n      this.specVisiable = true\n    },\n    handleSpecificationEdit() {\n      this.specForm.updateTime = ''\n      for (var i = 0; i < this.specifications.length; i++) {\n        const v = this.specifications[i]\n        if (v.id === this.specForm.id) {\n          this.specifications.splice(i, 1, this.specForm)\n          break\n        }\n      }\n      this.specVisiable = false\n    },\n    handleProductShow(row) {\n      this.productForm = Object.assign({}, row)\n      this.productVisiable = true\n    },\n    uploadProductUrl: function(response) {\n      this.productForm.url = response.data.url\n    },\n    handleProductEdit() {\n      this.productForm.updateTime = ''\n      for (var i = 0; i < this.products.length; i++) {\n        const v = this.products[i]\n        if (v.id === this.productForm.id) {\n          this.products.splice(i, 1, this.productForm)\n          break\n        }\n      }\n      this.productVisiable = false\n    },\n    handleAttributeShow(row) {\n      if (row.id) {\n        this.attributeForm = Object.assign({}, row)\n        this.attributeAdd = false\n      } else {\n        this.attributeForm = {}\n        this.attributeAdd = true\n      }\n      this.attributeVisiable = true\n    },\n    handleAttributeAdd() {\n      this.attributes.unshift(this.attributeForm)\n      this.attributeVisiable = false\n    },\n    handleAttributeEdit() {\n      // 这是一个trick，设置updateTime的值为空，告诉后端这个记录已编辑需要更新。\n      this.attributeForm.updateTime = ''\n      for (var i = 0; i < this.attributes.length; i++) {\n        const v = this.attributes[i]\n        if (v.id === this.attributeForm.id) {\n          this.attributes.splice(i, 1, this.attributeForm)\n          break\n        }\n      }\n      this.attributeVisiable = false\n    },\n    handleAttributeDelete(row) {\n      row.deleted = true\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/goods/list.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.goodsId\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('goods_list.placeholder.filter_goods_id')\" />\n      <el-input v-model=\"listQuery.goodsSn\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('goods_list.placeholder.filter_goods_sn')\" />\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('goods_list.placeholder.filter_name')\" />\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n      <el-button class=\"filter-item\" type=\"danger\" icon=\"el-icon-delete\" :disabled=\"batchDeleteArr.length === 0\" @click=\"handleDeleteRows\">{{ $t('app.button.batch_delete') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row @selection-change=\"handleSelectionChange\">\n      <el-table-column type=\"expand\">\n        <template slot-scope=\"props\">\n          <el-form label-position=\"left\" class=\"table-expand\">\n            <el-form-item :label=\"$t('goods_list.table.goods_sn')\">\n              <span>{{ props.row.goodsSn }}</span>\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.gallery')\">\n              <el-image v-for=\"pic in props.row.gallery\" :key=\"pic\" :src=\"pic\" class=\"gallery\" :preview-src-list=\"props.row.gallery\" style=\"width: 40px; height: 40px\" />\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.brief')\">\n              <span>{{ props.row.brief }}</span>\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.unit')\">\n              <span>{{ props.row.unit }}</span>\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.keywords')\">\n              <span>{{ props.row.keywords }}</span>\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.category_id')\">\n              <span>{{ props.row.categoryId }}</span>\n            </el-form-item>\n            <el-form-item :label=\"$t('goods_list.table.brand_id')\">\n              <span>{{ props.row.brandId }}</span>\n            </el-form-item>\n\n          </el-form>\n        </template>\n      </el-table-column>\n      <el-table-column type=\"selection\" width=\"55\" />\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.id')\" prop=\"id\" />\n\n      <el-table-column align=\"center\" min-width=\"100\" :label=\"$t('goods_list.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" property=\"iconUrl\" :label=\"$t('goods_list.table.pic_url')\">\n        <template slot-scope=\"scope\">\n          <el-image :src=\"thumbnail(scope.row.picUrl)\" :preview-src-list=\"toPreview(scope.row, scope.row.picUrl)\" style=\"width: 40px; height: 40px\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" property=\"iconUrl\" :label=\"$t('goods_list.table.share_url')\">\n        <template slot-scope=\"scope\">\n          <img :src=\"scope.row.shareUrl\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.detail')\" prop=\"detail\">\n        <template slot-scope=\"scope\">\n          <el-dialog :visible.sync=\"detailDialogVisible\" :title=\"$t('goods_list.dialog.detail')\">\n            <div class=\"goods-detail-box\" v-html=\"goodsDetail\" />\n          </el-dialog>\n          <el-button type=\"primary\" size=\"mini\" @click=\"showDetail(scope.row.detail)\">{{ $t('app.button.view') }}</el-button>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.counter_price')\" prop=\"counterPrice\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.retail_price')\" prop=\"retailPrice\" />\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.is_new')\" prop=\"isNew\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.isNew ? 'success' : 'error' \">{{ $t(scope.row.isNew ? 'goods_list.value.is_new_true' : 'goods_list.value.is_new_false') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.is_hot')\" prop=\"isHot\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.isHot ? 'success' : 'error' \">{{ $t(scope.row.isHot ? 'goods_list.value.is_hot_true' : 'goods_list.value.is_hot_false') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.is_on_sale')\" prop=\"isOnSale\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.isOnSale ? 'success' : 'error' \">{{ $t(scope.row.isOnSale ? 'goods_list.value.is_on_sale_true' : 'goods_list.value.is_on_sale_false') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('goods_list.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n\n  </div>\n</template>\n\n<style>\n  .table-expand {\n    font-size: 0;\n    padding-left: 60px;\n  }\n  .table-expand label {\n    width: 100px;\n    color: #99a9bf;\n  }\n  .table-expand .el-form-item {\n    margin-right: 0;\n    margin-bottom: 0;\n  }\n  .gallery {\n    width: 80px;\n    margin-right: 10px;\n  }\n  .goods-detail-box img {\n    width: 100%;\n  }\n</style>\n\n<script>\nimport { listGoods, deleteGoods } from '@/api/goods'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport { thumbnail, toPreview } from '@/utils/index'\n\nexport default {\n  name: 'GoodsList',\n  components: { BackToTop, Pagination },\n  data() {\n    return {\n      batchDeleteArr: [],\n      thumbnail,\n      toPreview,\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        goodsSn: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      goodsDetail: '',\n      detailDialogVisible: false,\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listGoods(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleCreate() {\n      this.$router.push({ path: '/goods/create' })\n    },\n    handleUpdate(row) {\n      this.$router.push({ path: '/goods/edit', query: { id: row.id }})\n    },\n    showDetail(detail) {\n      this.goodsDetail = detail\n      this.detailDialogVisible = true\n    },\n    handleDelete(row) {\n      this.$confirm('确定删除?', '警告', {\n        confirmButtonText: '确定',\n        cancelButtonText: '取消',\n        type: 'warning',\n        center: true\n      }).then(() => {\n        deleteGoods(row).then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除成功'\n          })\n          this.getList()\n        }).catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n      }).catch(() => {})\n    },\n    handleSelectionChange(val) {\n      console.log(val)\n      this.batchDeleteArr = val\n    },\n    handleDeleteRows() {\n      this.batchDeleteArr.forEach(row => this.handleDeleteEachRow(row))\n      this.getList()\n    },\n    handleDeleteEachRow(row) {\n      deleteGoods(row).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '删除成功'\n        })\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['商品ID', '商品编号', '名称', '专柜价格', '当前价格', '是否新品', '是否热品', '是否在售', '首页主图', '宣传图片列表', '商品介绍', '详细介绍', '商品图片', '商品单位', '关键字', '类目ID', '品牌商ID']\n        const filterVal = ['id', 'goodsSn', 'name', 'counterPrice', 'retailPrice', 'isNew', 'isHot', 'isOnSale', 'listPicUrl', 'gallery', 'brief', 'detail', 'picUrl', 'goodsUnit', 'keywords', 'categoryId', 'brandId']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '商品信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/Layout.vue",
    "content": "<template>\n  <div :class=\"classObj\" class=\"app-wrapper\">\n    <div v-if=\"device==='mobile'&&sidebar.opened\" class=\"drawer-bg\" @click=\"handleClickOutside\"/>\n    <sidebar class=\"sidebar-container\"/>\n    <div class=\"main-container\">\n      <navbar/>\n      <tags-view/>\n      <app-main/>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { Navbar, Sidebar, AppMain, TagsView } from './components'\nimport ResizeMixin from './mixin/ResizeHandler'\n\nexport default {\n  name: 'Layout',\n  components: {\n    Navbar,\n    Sidebar,\n    AppMain,\n    TagsView\n  },\n  mixins: [ResizeMixin],\n  computed: {\n    sidebar() {\n      return this.$store.state.app.sidebar\n    },\n    device() {\n      return this.$store.state.app.device\n    },\n    classObj() {\n      return {\n        hideSidebar: !this.sidebar.opened,\n        openSidebar: this.sidebar.opened,\n        withoutAnimation: this.sidebar.withoutAnimation,\n        mobile: this.device === 'mobile'\n      }\n    }\n  },\n  methods: {\n    handleClickOutside() {\n      this.$store.dispatch('closeSideBar', { withoutAnimation: false })\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n  @import \"src/styles/mixin.scss\";\n  .app-wrapper {\n    @include clearfix;\n    position: relative;\n    height: 100%;\n    width: 100%;\n    &.mobile.openSidebar{\n      position: fixed;\n      top: 0;\n    }\n  }\n  .drawer-bg {\n    background: #000;\n    opacity: 0.3;\n    width: 100%;\n    top: 0;\n    height: 100%;\n    position: absolute;\n    z-index: 999;\n  }\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/AppMain.vue",
    "content": "<template>\n  <section class=\"app-main\">\n    <transition name=\"fade-transform\" mode=\"out-in\">\n      <keep-alive :include=\"cachedViews\">\n        <router-view :key=\"key\" />\n      </keep-alive>\n    </transition>\n  </section>\n</template>\n\n<script>\nexport default {\n  name: 'AppMain',\n  computed: {\n    cachedViews() {\n      return this.$store.state.tagsView.cachedViews\n    },\n    key() {\n      return this.$route.fullPath\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.app-main {\n  /* 50= navbar  50  */\n  min-height: calc(100vh - 50px);\n  width: 100%;\n  position: relative;\n  overflow: hidden;\n}\n.fixed-header+.app-main {\n  padding-top: 50px;\n}\n.hasTagsView {\n  .app-main {\n    /* 84 = navbar + tags-view = 50 + 34 */\n    min-height: calc(100vh - 84px);\n  }\n  .fixed-header+.app-main {\n    padding-top: 84px;\n  }\n}\n</style>\n\n<style lang=\"scss\">\n// fix css style bug in open el-dialog\n.el-popup-parent--hidden {\n  .fixed-header {\n    padding-right: 15px;\n  }\n}\n</style>\n\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Navbar.vue",
    "content": "<template>\n  <div class=\"navbar\">\n    <hamburger :toggle-click=\"toggleSideBar\" :is-active=\"sidebar.opened\" class=\"hamburger-container\" />\n\n    <breadcrumb class=\"breadcrumb-container\" />\n\n    <div class=\"right-menu\">\n      <template v-if=\"device!=='mobile'\">\n        <el-tooltip :content=\"$t('navbar.tooltip.full_screen')\" effect=\"dark\" placement=\"bottom\">\n          <screenfull class=\"right-menu-item\" />\n        </el-tooltip>\n\n        <el-tooltip :content=\"$t('navbar.tooltip.size_select')\" effect=\"dark\" placement=\"bottom\">\n          <size-select class=\"right-menu-item\" />\n        </el-tooltip>\n\n        <el-tooltip :content=\"$t('navbar.tooltip.notice')\" effect=\"dark\" placement=\"bottom\">\n          <notice class=\"right-menu-item\" />\n        </el-tooltip>\n      </template>\n\n      <el-dropdown class=\"avatar-container right-menu-item\" trigger=\"click\">\n        <div class=\"avatar-wrapper\">\n          <img :src=\"avatar+'?imageView2/1/w/80/h/80'\" class=\"user-avatar\">\n          <i class=\"el-icon-caret-bottom\" />\n        </div>\n        <el-dropdown-menu slot=\"dropdown\">\n          <router-link to=\"/\">\n            <el-dropdown-item>\n              {{ $t('navbar.menu.home') }}\n            </el-dropdown-item>\n          </router-link>\n          <el-dropdown-item divided>\n            <a target=\"_blank\" href=\"https://github.com/linlinjava/litemall\">\n              {{ $t('navbar.menu.github') }}\n            </a>\n          </el-dropdown-item>\n          <el-dropdown-item>\n            <a target=\"_blank\" href=\"https://gitee.com/linlinjava/litemall\">\n              {{ $t('navbar.menu.gitee') }}\n            </a>\n          </el-dropdown-item>\n          <el-dropdown-item divided>\n            <router-link to=\"/profile/password\">\n              {{ $t('navbar.menu.password') }}\n            </router-link>\n          </el-dropdown-item>\n          <el-dropdown-item divided @click.native=\"logout\">\n            <span style=\"display:block;\">{{ $t('navbar.menu.logout') }}</span>\n          </el-dropdown-item>\n        </el-dropdown-menu>\n      </el-dropdown>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport Breadcrumb from '@/components/Breadcrumb'\nimport Hamburger from '@/components/Hamburger'\nimport Screenfull from '@/components/Screenfull'\nimport SizeSelect from '@/components/SizeSelect'\nimport Notice from '@/components/Notice'\n\nexport default {\n  components: {\n    Breadcrumb,\n    Hamburger,\n    Screenfull,\n    SizeSelect,\n    Notice\n  },\n  computed: {\n    ...mapGetters([\n      'sidebar',\n      'name',\n      'avatar',\n      'device'\n    ])\n  },\n  methods: {\n    toggleSideBar() {\n      this.$store.dispatch('toggleSideBar')\n    },\n    logout() {\n      this.$store.dispatch('LogOut').then(() => {\n        this.$router.push(`/login?redirect=${this.$route.fullPath}`)\n      })\n    }\n  }\n}\n</script>\n\n<style rel=\"stylesheet/scss\" lang=\"scss\" scoped>\n.navbar {\n  height: 50px;\n  line-height: 50px;\n  border-radius: 0px !important;\n  .hamburger-container {\n    line-height: 58px;\n    height: 50px;\n    float: left;\n    padding: 0 10px;\n  }\n  .breadcrumb-container{\n    float: left;\n  }\n  .errLog-container {\n    display: inline-block;\n    vertical-align: top;\n  }\n  .right-menu {\n    float: right;\n    height: 100%;\n    &:focus{\n     outline: none;\n    }\n    .right-menu-item {\n      display: inline-block;\n      margin: 0 8px;\n      vertical-align: top;\n    }\n    .avatar-container {\n      height: 50px;\n      margin-right: 30px;\n      .avatar-wrapper {\n        cursor: pointer;\n        margin-top: 5px;\n        position: relative;\n        .user-avatar {\n          width: 40px;\n          height: 40px;\n          border-radius: 10px;\n        }\n        .el-icon-caret-bottom {\n          position: absolute;\n          right: -20px;\n          top: 25px;\n          font-size: 12px;\n        }\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Sidebar/FixiOSBug.js",
    "content": "export default {\n  computed: {\n    device() {\n      return this.$store.state.app.device\n    }\n  },\n  mounted() {\n    // In order to fix the click on menu on the ios device will trigger the mouseeleave bug\n    // https://github.com/PanJiaChen/vue-element-admin/issues/1135\n    this.fixBugIniOS()\n  },\n  methods: {\n    fixBugIniOS() {\n      const $submenu = this.$refs.submenu\n      if ($submenu) {\n        const handleMouseleave = $submenu.handleMouseleave\n        $submenu.handleMouseleave = (e) => {\n          if (this.device === 'mobile') {\n            return\n          }\n          handleMouseleave(e)\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Sidebar/Item.vue",
    "content": "<script>\nexport default {\n  name: 'MenuItem',\n  functional: true,\n  props: {\n    icon: {\n      type: String,\n      default: ''\n    },\n    title: {\n      type: String,\n      default: ''\n    }\n  },\n  render(h, context) {\n    const { icon, title } = context.props\n    const vnodes = []\n\n    if (icon) {\n      if (icon.includes('el-icon')) {\n        vnodes.push(<i class={[icon, 'sub-el-icon']} />)\n      } else {\n        vnodes.push(<svg-icon icon-class={icon}/>)\n      }\n    }\n\n    if (title) {\n      vnodes.push(<span slot='title'>{(title)}</span>)\n    }\n    return vnodes\n  }\n}\n</script>\n\n<style scoped>\n.sub-el-icon {\n  color: currentColor;\n  width: 1em;\n  height: 1em;\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Sidebar/Link.vue",
    "content": "<template>\n  <component :is=\"type\" v-bind=\"linkProps(to)\">\n    <slot />\n  </component>\n</template>\n\n<script>\nimport { isExternal } from '@/utils/validate'\nexport default {\n  props: {\n    to: {\n      type: String,\n      required: true\n    }\n  },\n  computed: {\n    isExternal() {\n      return isExternal(this.to)\n    },\n    type() {\n      if (this.isExternal) {\n        return 'a'\n      }\n      return 'router-link'\n    }\n  },\n  methods: {\n    linkProps(to) {\n      if (this.isExternal) {\n        return {\n          href: to,\n          target: '_blank',\n          rel: 'noopener'\n        }\n      }\n      return {\n        to: to\n      }\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Sidebar/SidebarItem.vue",
    "content": "<template>\n  <div v-if=\"!item.hidden\" class=\"menu-wrapper\">\n    <template v-if=\"hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow\">\n      <app-link v-if=\"onlyOneChild.meta\" :to=\"resolvePath(onlyOneChild.path)\">\n        <el-menu-item :index=\"resolvePath(onlyOneChild.path)\" :class=\"{'submenu-title-noDropdown':!isNest}\">\n          <item :icon=\"onlyOneChild.meta.icon||(item.meta&&item.meta.icon)\" :title=\"$t(onlyOneChild.meta.title)\" />\n        </el-menu-item>\n      </app-link>\n    </template>\n    <el-submenu v-else ref=\"subMenu\" :index=\"resolvePath(item.path)\" popper-append-to-body>\n      <template slot=\"title\">\n        <item v-if=\"item.meta\" :icon=\"item.meta && item.meta.icon\" :title=\"$t(item.meta.title)\" />\n      </template>\n      <sidebar-item\n        v-for=\"child in item.children\"\n        :key=\"child.path\"\n        :is-nest=\"true\"\n        :item=\"child\"\n        :base-path=\"resolvePath(child.path)\"\n        class=\"nest-menu\"\n      />\n    </el-submenu>\n  </div>\n</template>\n\n<script>\nimport path from 'path'\nimport { isExternal } from '@/utils/validate'\nimport Item from './Item'\nimport AppLink from './Link'\nimport FixiOSBug from './FixiOSBug'\n\nexport default {\n  name: 'SidebarItem',\n  components: { Item, AppLink },\n  mixins: [FixiOSBug],\n  props: {\n    // route object\n    item: {\n      type: Object,\n      required: true\n    },\n    isNest: {\n      type: Boolean,\n      default: false\n    },\n    basePath: {\n      type: String,\n      default: ''\n    }\n  },\n  data() {\n    // To fix https://github.com/PanJiaChen/vue-admin-template/issues/237\n    // TODO: refactor with render function\n    this.onlyOneChild = null\n    return {}\n  },\n  methods: {\n    hasOneShowingChild(children = [], parent) {\n      const showingChildren = children.filter(item => {\n        if (item.hidden) {\n          return false\n        } else {\n          // Temp set(will be used if only has one showing child)\n          this.onlyOneChild = item\n          return true\n        }\n      })\n\n      // When there is only one child router, the child router is displayed by default\n      if (showingChildren.length === 1) {\n        return true\n      }\n\n      // Show parent if there are no child router to display\n      if (showingChildren.length === 0) {\n        this.onlyOneChild = { ... parent, path: '', noShowingChildren: true }\n        return true\n      }\n\n      return false\n    },\n    resolvePath(routePath) {\n      if (isExternal(routePath)) {\n        return routePath\n      }\n      if (isExternal(this.basePath)) {\n        return this.basePath\n      }\n      return path.resolve(this.basePath, routePath)\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/Sidebar/index.vue",
    "content": "<template>\n  <el-scrollbar wrap-class=\"scrollbar-wrapper\">\n    <el-menu\n      :show-timeout=\"200\"\n      :default-active=\"$route.path\"\n      :collapse=\"isCollapse\"\n      mode=\"vertical\"\n      background-color=\"#304156\"\n      text-color=\"#bfcbd9\"\n      active-text-color=\"#409EFF\"\n    >\n      <sidebar-item v-for=\"route in permission_routes\" :key=\"route.path\" :item=\"route\" :base-path=\"route.path\" />\n    </el-menu>\n  </el-scrollbar>\n</template>\n\n<script>\nimport { mapGetters } from 'vuex'\nimport SidebarItem from './SidebarItem'\n\nexport default {\n  components: { SidebarItem },\n  computed: {\n    ...mapGetters([\n      'permission_routes',\n      'sidebar'\n    ]),\n    isCollapse() {\n      return !this.sidebar.opened\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/TagsView/ScrollPane.vue",
    "content": "<template>\n  <el-scrollbar ref=\"scrollContainer\" :vertical=\"false\" class=\"scroll-container\" @wheel.native.prevent=\"handleScroll\">\n    <slot />\n  </el-scrollbar>\n</template>\n\n<script>\nconst tagAndTagSpacing = 4 // tagAndTagSpacing\nexport default {\n  name: 'ScrollPane',\n  data() {\n    return {\n      left: 0\n    }\n  },\n  computed: {\n    scrollWrapper() {\n      return this.$refs.scrollContainer.$refs.wrap\n    }\n  },\n  mounted() {\n    this.scrollWrapper.addEventListener('scroll', this.emitScroll, true)\n  },\n  beforeDestroy() {\n    this.scrollWrapper.removeEventListener('scroll', this.emitScroll)\n  },\n  methods: {\n    handleScroll(e) {\n      const eventDelta = e.wheelDelta || -e.deltaY * 40\n      const $scrollWrapper = this.scrollWrapper\n      $scrollWrapper.scrollLeft = $scrollWrapper.scrollLeft + eventDelta / 4\n    },\n    emitScroll() {\n      this.$emit('scroll')\n    },\n    moveToTarget(currentTag) {\n      const $container = this.$refs.scrollContainer.$el\n      const $containerWidth = $container.offsetWidth\n      const $scrollWrapper = this.scrollWrapper\n      const tagList = this.$parent.$refs.tag\n      let firstTag = null\n      let lastTag = null\n      // find first tag and last tag\n      if (tagList.length > 0) {\n        firstTag = tagList[0]\n        lastTag = tagList[tagList.length - 1]\n      }\n      if (firstTag === currentTag) {\n        $scrollWrapper.scrollLeft = 0\n      } else if (lastTag === currentTag) {\n        $scrollWrapper.scrollLeft = $scrollWrapper.scrollWidth - $containerWidth\n      } else {\n        // find preTag and nextTag\n        const currentIndex = tagList.findIndex(item => item === currentTag)\n        const prevTag = tagList[currentIndex - 1]\n        const nextTag = tagList[currentIndex + 1]\n        // the tag's offsetLeft after of nextTag\n        const afterNextTagOffsetLeft = nextTag.$el.offsetLeft + nextTag.$el.offsetWidth + tagAndTagSpacing\n        // the tag's offsetLeft before of prevTag\n        const beforePrevTagOffsetLeft = prevTag.$el.offsetLeft - tagAndTagSpacing\n        if (afterNextTagOffsetLeft > $scrollWrapper.scrollLeft + $containerWidth) {\n          $scrollWrapper.scrollLeft = afterNextTagOffsetLeft - $containerWidth\n        } else if (beforePrevTagOffsetLeft < $scrollWrapper.scrollLeft) {\n          $scrollWrapper.scrollLeft = beforePrevTagOffsetLeft\n        }\n      }\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.scroll-container {\n  white-space: nowrap;\n  position: relative;\n  overflow: hidden;\n  width: 100%;\n  ::v-deep {\n    .el-scrollbar__bar {\n      bottom: 0px;\n    }\n    .el-scrollbar__wrap {\n      height: 49px;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/TagsView/index.vue",
    "content": "<template>\n  <div id=\"tags-view-container\" class=\"tags-view-container\">\n    <scroll-pane ref=\"scrollPane\" class=\"tags-view-wrapper\" @scroll=\"handleScroll\">\n      <router-link\n        v-for=\"tag in visitedViews\"\n        ref=\"tag\"\n        :key=\"tag.path\"\n        :class=\"isActive(tag)?'active':''\"\n        :to=\"{ path: tag.path, query: tag.query, fullPath: tag.fullPath }\"\n        tag=\"span\"\n        class=\"tags-view-item\"\n        @click.middle.native=\"!isAffix(tag)?closeSelectedTag(tag):''\"\n        @contextmenu.prevent.native=\"openMenu(tag,$event)\"\n      >\n        {{ $t(tag.title) }}\n        <span v-if=\"!isAffix(tag)\" class=\"el-icon-close\" @click.prevent.stop=\"closeSelectedTag(tag)\" />\n      </router-link>\n    </scroll-pane>\n    <ul v-show=\"visible\" :style=\"{left:left+'px',top:top+'px'}\" class=\"contextmenu\">\n      <li @click=\"refreshSelectedTag(selectedTag)\">Refresh</li>\n      <li v-if=\"!isAffix(selectedTag)\" @click=\"closeSelectedTag(selectedTag)\">Close</li>\n      <li @click=\"closeOthersTags\">Close Others</li>\n      <li @click=\"closeAllTags(selectedTag)\">Close All</li>\n    </ul>\n  </div>\n</template>\n\n<script>\nimport ScrollPane from './ScrollPane'\nimport path from 'path'\nexport default {\n  components: { ScrollPane },\n  data() {\n    return {\n      visible: false,\n      top: 0,\n      left: 0,\n      selectedTag: {},\n      affixTags: []\n    }\n  },\n  computed: {\n    visitedViews() {\n      return this.$store.state.tagsView.visitedViews\n    },\n    routes() {\n      return this.$store.state.permission.routes\n    }\n  },\n  watch: {\n    $route() {\n      this.addTags()\n      this.moveToCurrentTag()\n    },\n    visible(value) {\n      if (value) {\n        document.body.addEventListener('click', this.closeMenu)\n      } else {\n        document.body.removeEventListener('click', this.closeMenu)\n      }\n    }\n  },\n  mounted() {\n    this.initTags()\n    this.addTags()\n  },\n  methods: {\n    isActive(route) {\n      return route.path === this.$route.path\n    },\n    isAffix(tag) {\n      return tag.meta && tag.meta.affix\n    },\n    filterAffixTags(routes, basePath = '/') {\n      let tags = []\n      routes.forEach(route => {\n        if (route.meta && route.meta.affix) {\n          const tagPath = path.resolve(basePath, route.path)\n          tags.push({\n            fullPath: tagPath,\n            path: tagPath,\n            name: route.name,\n            meta: { ...route.meta }\n          })\n        }\n        if (route.children) {\n          const tempTags = this.filterAffixTags(route.children, route.path)\n          if (tempTags.length >= 1) {\n            tags = [...tags, ...tempTags]\n          }\n        }\n      })\n      return tags\n    },\n    initTags() {\n      const affixTags = this.affixTags = this.filterAffixTags(this.routes)\n      for (const tag of affixTags) {\n        // Must have tag name\n        if (tag.name) {\n          this.$store.dispatch('tagsView/addVisitedView', tag)\n        }\n      }\n    },\n    addTags() {\n      const { name } = this.$route\n      if (name) {\n        this.$store.dispatch('tagsView/addView', this.$route)\n      }\n      return false\n    },\n    moveToCurrentTag() {\n      const tags = this.$refs.tag\n      this.$nextTick(() => {\n        for (const tag of tags) {\n          if (tag.to.path === this.$route.path) {\n            this.$refs.scrollPane.moveToTarget(tag)\n            // when query is different then update\n            if (tag.to.fullPath !== this.$route.fullPath) {\n              this.$store.dispatch('tagsView/updateVisitedView', this.$route)\n            }\n            break\n          }\n        }\n      })\n    },\n    refreshSelectedTag(view) {\n      this.$store.dispatch('tagsView/delCachedView', view).then(() => {\n        const { fullPath } = view\n        this.$nextTick(() => {\n          this.$router.replace({\n            path: '/redirect' + fullPath\n          })\n        })\n      })\n    },\n    closeSelectedTag(view) {\n      this.$store.dispatch('tagsView/delView', view).then(({ visitedViews }) => {\n        if (this.isActive(view)) {\n          this.toLastView(visitedViews, view)\n        }\n      })\n    },\n    closeOthersTags() {\n      this.$router.push(this.selectedTag)\n      this.$store.dispatch('tagsView/delOthersViews', this.selectedTag).then(() => {\n        this.moveToCurrentTag()\n      })\n    },\n    closeAllTags(view) {\n      this.$store.dispatch('tagsView/delAllViews').then(({ visitedViews }) => {\n        if (this.affixTags.some(tag => tag.path === view.path)) {\n          return\n        }\n        this.toLastView(visitedViews, view)\n      })\n    },\n    toLastView(visitedViews, view) {\n      const latestView = visitedViews.slice(-1)[0]\n      if (latestView) {\n        this.$router.push(latestView.fullPath)\n      } else {\n        // now the default is to redirect to the home page if there is no tags-view,\n        // you can adjust it according to your needs.\n        if (view.name === 'Dashboard') {\n          // to reload home page\n          this.$router.replace({ path: '/redirect' + view.fullPath })\n        } else {\n          this.$router.push('/')\n        }\n      }\n    },\n    openMenu(tag, e) {\n      const menuMinWidth = 105\n      const offsetLeft = this.$el.getBoundingClientRect().left // container margin left\n      const offsetWidth = this.$el.offsetWidth // container width\n      const maxLeft = offsetWidth - menuMinWidth // left boundary\n      const left = e.clientX - offsetLeft + 15 // 15: margin right\n      if (left > maxLeft) {\n        this.left = maxLeft\n      } else {\n        this.left = left\n      }\n      this.top = e.clientY\n      this.visible = true\n      this.selectedTag = tag\n    },\n    closeMenu() {\n      this.visible = false\n    },\n    handleScroll() {\n      this.closeMenu()\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.tags-view-container {\n  height: 34px;\n  width: 100%;\n  background: #fff;\n  border-bottom: 1px solid #d8dce5;\n  box-shadow: 0 1px 3px 0 rgba(0, 0, 0, .12), 0 0 3px 0 rgba(0, 0, 0, .04);\n  .tags-view-wrapper {\n    .tags-view-item {\n      display: inline-block;\n      position: relative;\n      cursor: pointer;\n      height: 26px;\n      line-height: 26px;\n      border: 1px solid #d8dce5;\n      color: #495060;\n      background: #fff;\n      padding: 0 8px;\n      font-size: 12px;\n      margin-left: 5px;\n      margin-top: 4px;\n      &:first-of-type {\n        margin-left: 15px;\n      }\n      &:last-of-type {\n        margin-right: 15px;\n      }\n      &.active {\n        background-color: #42b983;\n        color: #fff;\n        border-color: #42b983;\n        &::before {\n          content: '';\n          background: #fff;\n          display: inline-block;\n          width: 8px;\n          height: 8px;\n          border-radius: 50%;\n          position: relative;\n          margin-right: 2px;\n        }\n      }\n    }\n  }\n  .contextmenu {\n    margin: 0;\n    background: #fff;\n    z-index: 3000;\n    position: absolute;\n    list-style-type: none;\n    padding: 5px 0;\n    border-radius: 4px;\n    font-size: 12px;\n    font-weight: 400;\n    color: #333;\n    box-shadow: 2px 2px 3px 0 rgba(0, 0, 0, .3);\n    li {\n      margin: 0;\n      padding: 7px 16px;\n      cursor: pointer;\n      &:hover {\n        background: #eee;\n      }\n    }\n  }\n}\n</style>\n\n<style lang=\"scss\">\n//reset element css of el-icon-close\n.tags-view-wrapper {\n  .tags-view-item {\n    .el-icon-close {\n      width: 16px;\n      height: 16px;\n      vertical-align: 2px;\n      border-radius: 50%;\n      text-align: center;\n      transition: all .3s cubic-bezier(.645, .045, .355, 1);\n      transform-origin: 100% 50%;\n      &:before {\n        transform: scale(.6);\n        display: inline-block;\n        vertical-align: -3px;\n      }\n      &:hover {\n        background-color: #b4bccc;\n        color: #fff;\n      }\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/layout/components/index.js",
    "content": "export { default as AppMain } from './AppMain'\nexport { default as Navbar } from './Navbar'\nexport { default as Sidebar } from './Sidebar/index.vue'\nexport { default as TagsView } from './TagsView/index.vue'\n"
  },
  {
    "path": "litemall-admin/src/views/layout/mixin/ResizeHandler.js",
    "content": "import store from '@/store'\n\nconst { body } = document\nconst WIDTH = 1024\nconst RATIO = 3\n\nexport default {\n  watch: {\n    $route(route) {\n      if (this.device === 'mobile' && this.sidebar.opened) {\n        store.dispatch('closeSideBar', { withoutAnimation: false })\n      }\n    }\n  },\n  beforeMount() {\n    window.addEventListener('resize', this.resizeHandler)\n  },\n  mounted() {\n    const isMobile = this.isMobile()\n    if (isMobile) {\n      store.dispatch('toggleDevice', 'mobile')\n      store.dispatch('closeSideBar', { withoutAnimation: true })\n    }\n  },\n  methods: {\n    isMobile() {\n      const rect = body.getBoundingClientRect()\n      return rect.width - RATIO < WIDTH\n    },\n    resizeHandler() {\n      if (!document.hidden) {\n        const isMobile = this.isMobile()\n        store.dispatch('toggleDevice', isMobile ? 'mobile' : 'desktop')\n\n        if (isMobile) {\n          store.dispatch('closeSideBar', { withoutAnimation: true })\n        }\n      }\n    }\n  }\n}\n"
  },
  {
    "path": "litemall-admin/src/views/login/authredirect.vue",
    "content": "<script>\nexport default {\n  name: 'AuthRedirect',\n  created() {\n    const hash = window.location.search.slice(1)\n    window.opener.location.href = window.location.origin + '/login#' + hash\n    window.close()\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/login/index.vue",
    "content": "<template>\n  <div class=\"login-container\">\n    <div class=\"locale-changer\">\n      <locale-changer />\n    </div>\n    <el-form ref=\"loginForm\" :model=\"loginForm\" :rules=\"loginRules\" class=\"login-form\" auto-complete=\"on\" label-position=\"left\">\n      <div class=\"title-container\">\n        <h3 class=\"title\">{{ $t('login.page.title') }}</h3>\n      </div>\n      <el-form-item prop=\"username\">\n        <span class=\"svg-container\">\n          <svg-icon icon-class=\"user\" />\n        </span>\n        <el-input v-model=\"loginForm.username\" name=\"username\" type=\"text\" tabindex=\"1\" auto-complete=\"on\" :placeholder=\"$t('login.placeholder.username')\" />\n      </el-form-item>\n\n      <el-form-item prop=\"password\">\n        <span class=\"svg-container\">\n          <svg-icon icon-class=\"password\" />\n        </span>\n        <el-input v-model=\"loginForm.password\" :type=\"passwordType\" name=\"password\" auto-complete=\"on\" tabindex=\"2\" show-password :placeholder=\"$t('login.placeholder.password')\" @keyup.enter.native=\"handleLogin\" />\n      </el-form-item>\n\n      <!-- <el-form-item prop=\"code\">\n        <span class=\"svg-container\">\n          <svg-icon icon-class=\"lock\" />\n        </span>\n        <el-input v-model=\"loginForm.code\" auto-complete=\"off\" name=\"code\" tabindex=\"2\" placeholder=\"验证码\" style=\"width: 60%\" @keyup.enter.native=\"handleLogin\" />\n        <div class=\"login-code\">\n          <img :src=\"codeImg\" @click=\"getCode\">\n        </div>\n      </el-form-item> -->\n\n      <el-button :loading=\"loading\" type=\"primary\" style=\"width:100%;margin-bottom:30px;\" @click.native.prevent=\"handleLogin\">{{ $t('login.button.login') }}</el-button>\n\n      <div style=\"position:relative\">\n        <div class=\"tips\">\n          <span> 超级管理员用户名: admin123</span>\n          <span> 超级管理员用户名：admin123</span>\n        </div>\n        <div class=\"tips\">\n          <span> 商城管理员用户名: mall123</span>\n          <span> 商城管理员用户名：mall123</span>\n        </div>\n        <div class=\"tips\">\n          <span> 推广管理员用户名: promotion123</span>\n          <span> 推广管理员用户名：promotion123</span>\n        </div>\n      </div>\n    </el-form>\n\n    <div class=\"copyright\">\n      Copyright © 2022 xxx.com 版权所有 <a href=\"https://github.com/linlinjava/litemall\">沪ICP备xxx号</a>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { getKaptcha } from '@/api/login'\nimport LocaleChanger from '@/components/LocaleChanger'\n\nexport default {\n  name: 'Login',\n  components: { LocaleChanger },\n  data() {\n    const validatePassword = (rule, value, callback) => {\n      if (value.length < 6) {\n        callback(new Error('管理员密码长度应大于6'))\n      } else {\n        callback()\n      }\n    }\n    return {\n      loginForm: {\n        username: 'admin123',\n        password: 'admin123',\n        code: ''\n      },\n      codeImg: '',\n      loginRules: {\n        username: [{ required: true, message: '管理员账户不允许为空', trigger: 'blur' }],\n        password: [\n          { required: true, message: '管理员密码不允许为空', trigger: 'blur' },\n          { validator: validatePassword, trigger: 'blur' }\n        ]\n      },\n      passwordType: 'password',\n      loading: false\n    }\n  },\n  watch: {\n    $route: {\n      handler: function(route) {\n        this.redirect = route.query && route.query.redirect\n      },\n      immediate: true\n    }\n\n  },\n  created() {\n    this.getCode()\n    // window.addEventListener('hashchange', this.afterQRScan)\n  },\n  destroyed() {\n    // window.removeEventListener('hashchange', this.afterQRScan)\n  },\n  methods: {\n    getCode() {\n      getKaptcha().then(response => {\n        this.codeImg = response.data.data\n      })\n    },\n    handleLogin() {\n      this.$refs.loginForm.validate(valid => {\n        if (valid && !this.loading) {\n          this.loading = true\n          this.$store.dispatch('LoginByUsername', this.loginForm).then(() => {\n            this.loading = false\n            this.$router.push({ path: this.redirect || '/' })\n          }).catch(response => {\n            if (response.data.data) {\n              this.codeImg = response.data.data\n            }\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n            this.loading = false\n          })\n        } else {\n          return false\n        }\n      })\n    }\n  }\n}\n</script>\n\n<style lang=\"scss\">\n/* 修复input 背景不协调 和光标变色 */\n/* Detail see https://github.com/PanJiaChen/vue-element-admin/pull/927 */\n\n$bg:#283443;\n$light_gray:#fff;\n$cursor: #fff;\n\n@supports (-webkit-mask: none) and (not (cater-color: $cursor)) {\n  .login-container .el-input input {\n    color: $cursor;\n  }\n}\n\n/* reset element-ui css */\n.login-container {\n  .el-input {\n    display: inline-block;\n    height: 47px;\n    width: 85%;\n\n    input {\n      background: transparent;\n      border: 0px;\n      -webkit-appearance: none;\n      border-radius: 0px;\n      padding: 12px 5px 12px 15px;\n      color: $light_gray;\n      height: 47px;\n      caret-color: $cursor;\n\n      &:-webkit-autofill {\n        box-shadow: 0 0 0px 1000px $bg inset !important;\n        -webkit-text-fill-color: $cursor !important;\n      }\n    }\n  }\n\n  .el-form-item {\n    border: 1px solid rgba(255, 255, 255, 0.1);\n    background: rgba(0, 0, 0, 0.1);\n    border-radius: 5px;\n    color: #454545;\n  }\n}\n</style>\n\n<style lang=\"scss\" scoped>\n$bg:#2d3a4b;\n$dark_gray:#889aa4;\n$light_gray:#eee;\n\n.login-container {\n  min-height: 100%;\n  width: 100%;\n  background-color: $bg;\n  overflow: hidden;\n\n  .locale-changer {\n    position: absolute;\n    top: 16px;\n    right: 16px;\n  }\n\n  .login-form {\n    position: relative;\n    width: 520px;\n    max-width: 100%;\n    padding: 160px 35px 0;\n    margin: 0 auto;\n    overflow: hidden;\n  }\n  .login-code {\n    padding-top: 5px;\n    float: right;\n    img{\n      cursor: pointer;\n      vertical-align:middle\n    }\n  }\n  .tips {\n    font-size: 14px;\n    color: #fff;\n    margin-bottom: 10px;\n\n    span {\n      &:first-of-type {\n        margin-right: 16px;\n      }\n    }\n  }\n\n  .svg-container {\n    padding: 6px 5px 6px 15px;\n    color: $dark_gray;\n    vertical-align: middle;\n    width: 30px;\n    display: inline-block;\n  }\n\n  .title-container {\n    position: relative;\n\n    .title {\n      font-size: 26px;\n      color: $light_gray;\n      margin: 0px auto 40px auto;\n      text-align: center;\n      font-weight: bold;\n    }\n  }\n  .copyright {\n    font-size: 12px;\n    color: #fff;\n    position: absolute;\n    bottom: 0;\n    left: 50%;\n    transform: translate(-50%, -50%);\n    margin-bottom: 20px;\n    letter-spacing: 0.6px;\n    a {\n      font-weight: bold;\n      border-bottom: 1px solid #fff;\n      font-family: \"PingFangSC-Semibold\", sans-serif;\n    }\n  }\n}\n</style>\n\n"
  },
  {
    "path": "litemall-admin/src/views/mall/aftersale.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.aftersaleSn\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_aftersale.placeholder.filter_aftersale_sn')\" />\n      <el-input v-model=\"listQuery.orderId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_aftersale.placeholder.filter_order_id')\" />\n      <el-button v-permission=\"['GET /admin/aftersale/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <div class=\"operator-container\">\n      <el-button v-permission=\"['GET /admin/aftersale/batch-recept']\" class=\"filter-item\" type=\"success\" icon=\"el-icon-info\" @click=\"handleBatchRecept\">{{ $t('mall_aftersale.button.batch_recept') }}</el-button>\n      <el-button v-permission=\"['GET /admin/aftersale/batch-reject']\" class=\"filter-item\" type=\"danger\" icon=\"el-icon-delete\" @click=\"handleBatchReject\">{{ $t('mall_aftersale.button.batch_reject') }}</el-button>\n    </div>\n\n    <el-tabs v-model=\"tab\" @tab-click=\"handleClick\">\n      <el-tab-pane :label=\"$t('mall_aftersale.section.all')\" name=\"all\" />\n      <el-tab-pane :label=\"$t('mall_aftersale.section.uncheck')\" name=\"uncheck\" />\n      <el-tab-pane :label=\"$t('mall_aftersale.section.unrefund')\" name=\"unrefund\" />\n    </el-tabs>\n\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" fit highlight-current-row @selection-change=\"handleSelectionChange\">\n      <el-table-column type=\"selection\" width=\"55\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.aftersale_sn')\" prop=\"aftersaleSn\" />\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.order_id')\" prop=\"orderId\" />\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.user_id')\" prop=\"userId\" />\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.type')\" prop=\"type\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"typeTag[scope.row.type]\">{{ typeDesc[scope.row.type] }}</el-tag>\n        </template>\n      </el-table-column>\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.reason')\" prop=\"reason\" />\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.amount')\" prop=\"amount\" />\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.add_time')\" prop=\"addTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.actions')\" min-width=\"120\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/aftersale/detail']\" type=\"primary\" size=\"mini\" @click=\"handleRead(scope.row)\">{{ $t('app.button.detail') }}</el-button>\n          <el-button v-if=\"scope.row.status === 1\" v-permission=\"['POST /admin/aftersale/recept']\" type=\"success\" size=\"mini\" @click=\"handleRecept(scope.row)\">{{ $t('mall_aftersale.button.recept') }}</el-button>\n          <el-button v-if=\"scope.row.status === 1\" v-permission=\"['POST /admin/aftersale/reject']\" type=\"danger\" size=\"mini\" @click=\"handleReject(scope.row)\">{{ $t('mall_aftersale.button.reject') }}</el-button>\n          <el-button v-if=\"scope.row.status === 2\" v-permission=\"['POST /admin/aftersale/refund']\" type=\"warning\" size=\"mini\" @click=\"handleRefund(scope.row)\">{{ $t('mall_aftersale.button.refund') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n    <!-- 详情对话框 -->\n    <el-dialog :visible.sync=\"aftersaleDialogVisible\" :title=\"$t('mall_aftersale.dialog.detail')\" width=\"800\">\n      <section ref=\"print\">\n        <el-form :data=\"aftersaleDetail\" label-position=\"left\">\n          <el-form-item :label=\"$t('mall_aftersale.form.id')\">\n            <el-tag>{{ aftersaleDetail.id }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.aftersale_sn')\">\n            <el-tag>{{ aftersaleDetail.aftersaleSn }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.order_id')\">\n            <el-tag>{{ aftersaleDetail.orderId }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.amount')\">\n            <el-tag>{{ aftersaleDetail.amount }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.status')\">\n            <el-tag v-if=\"aftersaleDetail.status === 1\">{{ $t('mall_aftersale.value.status_1') }}</el-tag>\n            <el-tag v-if=\"aftersaleDetail.status === 2\">{{ $t('mall_aftersale.value.status_2') }}</el-tag>\n            <el-tag v-if=\"aftersaleDetail.status === 3\">{{ $t('mall_aftersale.value.status_3') }}</el-tag>\n            <el-tag v-if=\"aftersaleDetail.status === 4\">{{ $t('mall_aftersale.value.status_4') }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.user_id')\">\n            <el-tag>{{ aftersaleDetail.userId }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.type')\">\n            <el-tag v-if=\"aftersaleDetail.type === 0\">{{ $t('mall_aftersale.value.type_0') }}</el-tag>\n            <el-tag v-if=\"aftersaleDetail.type === 1\">{{ $t('mall_aftersale.value.type_1') }}</el-tag>\n            <el-tag v-if=\"aftersaleDetail.type === 2\">{{ $t('mall_aftersale.value.type_2') }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.reason')\">\n            <span>{{ aftersaleDetail.reason }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.add_time')\">\n            <span>{{ aftersaleDetail.addTime }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.update_time')\">\n            <span>{{ aftersaleDetail.updateTime }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.handle_time')\">\n            <span>{{ aftersaleDetail.handleTime }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_aftersale.form.pictures')\">\n            <el-table :data=\"aftersaleDetail.pictures\" border fit highlight-current-row>\n              <el-table-column align=\"center\" :label=\"$t('mall_aftersale.table.detail_pictures')\">\n                <template slot-scope=\"scope\">\n                  <a :href=\"scope.row\" target=\"_blank\">\n                    <img :src=\"scope.row\" width=\"40\">\n                  </a>\n                </template>\n              </el-table-column>\n            </el-table>\n          </el-form-item>\n        </el-form>\n      </section>\n      <span slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"aftersaleDialogVisible = false\">{{ $t('mall_aftersale.button.cancel') }}</el-button>\n      </span>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport { listAftersale, receptAftersale, batchReceptAftersale, rejectAftersale, batchRejectAftersale, refundAftersale } from '@/api/aftersale'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport _ from 'lodash'\n\nexport default {\n  name: 'Aftersale',\n  components: { BackToTop, Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      tab: 'all',\n      listQuery: {\n        page: 1,\n        limit: 20,\n        aftersaleSn: undefined,\n        orderId: undefined,\n        status: '',\n        sort: 'add_time',\n        order: 'desc'\n      },\n      typeTag: [\n        '',\n        'success',\n        'warning'\n      ],\n      typeDesc: [\n        '未收货退款',\n        '不退货退款',\n        '退货退款'\n      ],\n      multipleSelection: [],\n      contentDetail: '',\n      contentDialogVisible: false,\n      downloadLoading: false,\n      aftersaleDialogVisible:false,\n      aftersaleDetail:{}\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listAftersale(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleSelectionChange(val) {\n      this.multipleSelection = val\n    },\n    handleClick() {\n      if (this.tab === 'all') {\n        this.listQuery.status = ''\n      } else if (this.tab === 'uncheck') {\n        this.listQuery.status = '1'\n      } else if (this.tab === 'unrefund') {\n        this.listQuery.status = '2'\n      }\n      this.getList()\n    },\n    handleRecept(row) {\n      receptAftersale(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '审核通过操作成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleBatchRecept() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      batchReceptAftersale({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量通过操作成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleReject(row) {\n      rejectAftersale(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '审核拒绝操作成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleBatchReject() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      batchRejectAftersale({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量拒绝操作成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleRefund(row) {\n      refundAftersale(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '退款操作成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '售后编号',\n          '订单ID',\n          '用户ID',\n          '售后类型',\n          '退款原因',\n          '退款价格',\n          '申请时间'\n        ]\n        const filterVal = [\n          'aftersaleSn',\n          'orderId',\n          'userId',\n          'type',\n          'reason',\n          'amount',\n          'addTime'\n        ]\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '售后信息')\n        this.downloadLoading = false\n      })\n    },\n    handleRead(row) {\n      this.aftersaleDetail = row;\n      console.log(this.aftersaleDetail);\n      this.aftersaleDialogVisible = true\n    },\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/brand.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.id\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_brand.placeholder.filter_id')\" />\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_brand.placeholder.filter_name')\" />\n      <el-button v-permission=\"['GET /admin/brand/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/brand/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_brand.table.id')\" prop=\"id\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_brand.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('mall_brand.table.pic_url')\">\n        <template slot-scope=\"scope\">\n          <el-image :src=\"thumbnail(scope.row.picUrl)\" :preview-src-list=\"toPreview(scope.row, scope.row.picUrl)\" style=\"width: 40px; height: 40px\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" min-width=\"400px\" :label=\"$t('mall_brand.table.desc')\" prop=\"desc\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_brand.table.floor_price')\" prop=\"floorPrice\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_brand.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/brand/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/brand/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_brand.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_brand.form.simple_desc')\" prop=\"simpleDesc\">\n          <el-input v-model=\"dataForm.desc\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_brand.form.pic_url')\" prop=\"picUrl\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadPicUrl\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\"\n          >\n            <img v-if=\"dataForm.picUrl\" :src=\"dataForm.picUrl\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n          </el-upload>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_brand.form.floor_price')\" prop=\"floorPrice\">\n          <el-input v-model=\"dataForm.floorPrice\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listBrand, createBrand, updateBrand, deleteBrand } from '@/api/brand'\nimport { uploadPath } from '@/api/storage'\nimport { getToken } from '@/utils/auth'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport { thumbnail, toPreview } from '@/utils/index'\n\nexport default {\n  name: 'Brand',\n  components: { Pagination },\n  data() {\n    return {\n      thumbnail,\n      toPreview,\n      uploadPath,\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        id: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        name: '',\n        desc: '',\n        floorPrice: undefined,\n        picUrl: undefined\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [\n          { required: true, message: '品牌商名称不能为空', trigger: 'blur' }\n        ]\n      },\n      downloadLoading: false\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listBrand(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: '',\n        desc: '',\n        floorPrice: undefined,\n        picUrl: undefined\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    uploadPicUrl: function(response) {\n      this.dataForm.picUrl = response.data.url\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createBrand(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '创建成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateBrand(this.dataForm)\n            .then(() => {\n              for (const v of this.list) {\n                if (v.id === this.dataForm.id) {\n                  const index = this.list.indexOf(v)\n                  this.list.splice(index, 1, this.dataForm)\n                  break\n                }\n              }\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteBrand(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '品牌商ID',\n          '品牌商名称',\n          '介绍',\n          '低价',\n          '品牌商图片'\n        ]\n        const filterVal = ['id', 'name', 'desc', 'floorPrice', 'picUrl']\n        excel.export_json_to_excel2(\n          tHeader,\n          this.list,\n          filterVal,\n          '品牌商信息'\n        )\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/category.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-button v-permission=\"['POST /admin/category/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row row-key=\"id\">\n\n      <el-table-column align=\"center\" :label=\"$t('mall_category.table.id')\" prop=\"id\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_category.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" property=\"iconUrl\" :label=\"$t('mall_category.table.icon_url')\">\n        <template slot-scope=\"scope\">\n          <img v-if=\"scope.row.iconUrl\" :src=\"scope.row.iconUrl\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('mall_category.table.pic_url')\">\n        <template slot-scope=\"scope\">\n          <el-image :src=\"thumbnail(scope.row.picUrl)\" :preview-src-list=\"toPreview(scope.row, scope.row.picUrl)\" style=\"width: 80px; height: 40px\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_category.table.keywords')\" prop=\"keywords\" />\n\n      <el-table-column align=\"center\" min-width=\"100\" :label=\"$t('mall_category.table.desc')\" prop=\"desc\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_category.table.level')\" prop=\"level\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.level === 'L1' ? 'primary' : 'info' \">{{ $t(scope.row.level === 'L1' ? 'mall_category.value.level_L1' : 'mall_category.value.level_L2') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_category.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/category/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/category/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_category.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\"/>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_category.form.keywords')\" prop=\"keywords\">\n          <el-input v-model=\"dataForm.keywords\"/>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_category.form.level')\" prop=\"level\">\n          <el-select v-model=\"dataForm.level\" @change=\"onLevelChange\">\n            <el-option :label=\"$t('mall_category.value.level_L1')\" value=\"L1\" />\n            <el-option :label=\"$t('mall_category.value.level_L2')\" value=\"L2\" />\n          </el-select>\n        </el-form-item>\n        <el-form-item v-if=\"dataForm.level === 'L2'\" :label=\"$t('mall_category.form.pid')\" prop=\"pid\">\n          <el-select v-model=\"dataForm.pid\">\n            <el-option v-for=\"item in catL1\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\"/>\n          </el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_category.form.icon_url')\" prop=\"iconUrl\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadIconUrl\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\">\n            <img v-if=\"dataForm.iconUrl\" :src=\"dataForm.iconUrl\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\"/>\n          </el-upload>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_category.form.pic_url')\" prop=\"picUrl\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadPicUrl\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\">\n            <img v-if=\"dataForm.picUrl\" :src=\"dataForm.picUrl\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\"/>\n          </el-upload>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_category.form.desc')\" prop=\"desc\">\n          <el-input v-model=\"dataForm.desc\"/>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style scoped>\n.filter-item{\n  margin-left: 100px;\n}\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listCategory, listCatL1, createCategory, updateCategory, deleteCategory } from '@/api/category'\nimport { uploadPath } from '@/api/storage'\nimport { getToken } from '@/utils/auth'\nimport { thumbnail, toPreview } from '@/utils/index'\n\nexport default {\n  name: 'Category',\n  data() {\n    return {\n      thumbnail,\n      toPreview,\n      uploadPath,\n      list: [],\n      listLoading: true,\n      catL1: {},\n      dataForm: {\n        id: undefined,\n        name: '',\n        keywords: '',\n        level: 'L2',\n        pid: 0,\n        desc: '',\n        iconUrl: '',\n        picUrl: ''\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [{ required: true, message: '类目名不能为空', trigger: 'blur' }]\n      }\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.getList()\n    this.getCatL1()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listCategory()\n        .then(response => {\n          this.list = response.data.data.list\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.listLoading = false\n        })\n    },\n    getCatL1() {\n      listCatL1().then(response => {\n        this.catL1 = response.data.data.list\n      })\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: '',\n        keywords: '',\n        level: 'L2',\n        pid: 0,\n        desc: '',\n        iconUrl: '',\n        picUrl: ''\n      }\n    },\n    onLevelChange: function(value) {\n      if (value === 'L1') {\n        this.dataForm.pid = 0\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    uploadIconUrl: function(response) {\n      this.dataForm.iconUrl = response.data.url\n    },\n    uploadPicUrl: function(response) {\n      this.dataForm.picUrl = response.data.url\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createCategory(this.dataForm)\n            .then(response => {\n              this.getList()\n              // 更新L1目录\n              this.getCatL1()\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '创建成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateCategory(this.dataForm)\n            .then(() => {\n              this.getList()\n              // 更新L1目录\n              this.getCatL1()\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteCategory(row)\n        .then(response => {\n          this.getList()\n          // 更新L1目录\n          this.getCatL1()\n          this.$notify.success({\n            title: '成功',\n            message: '删除成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/issue.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.question\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_issue.placeholder.filter_question')\" />\n      <el-button v-permission=\"['GET /admin/issue/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/issue/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('mall_issue.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"200px\" :label=\"$t('mall_issue.table.question')\" prop=\"question\" />\n\n      <el-table-column align=\"center\" min-width=\"400px\" :label=\"$t('mall_issue.table.answer')\" prop=\"answer\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_issue.table.actions')\" width=\"250\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/issue/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/issue/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_issue.form.question')\" prop=\"question\">\n          <el-input v-model=\"dataForm.question\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_issue.form.answer')\" prop=\"answer\">\n          <el-input v-model=\"dataForm.answer\" :rows=\"8\" type=\"textarea\" :placeholder=\"$t('mall_issue.placeholder.answer')\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<script>\nimport { listIssue, createIssue, updateIssue, deleteIssue } from '@/api/issue'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Issue',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        question: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        question: '',\n        answer: ''\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        question: [{ required: true, message: '问题不能为空', trigger: 'blur' }],\n        answer: [{ required: true, message: '回复不能为空', trigger: 'blur' }]\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listIssue(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        question: '',\n        answer: ''\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          createIssue(this.dataForm).then(response => {\n            this.list.unshift(response.data.data)\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '创建成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          updateIssue(this.dataForm).then(() => {\n            for (const v of this.list) {\n              if (v.id === this.dataForm.id) {\n                const index = this.list.indexOf(v)\n                this.list.splice(index, 1, this.dataForm)\n                break\n              }\n            }\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '更新成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteIssue(row).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '删除成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['问题ID', '问题内容', '问题回复']\n        const filterVal = ['id', 'question', 'answer']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '常见问题信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/keyword.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.keyword\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_keyword.placeholder.filter_keyword')\" />\n      <el-input v-model=\"listQuery.url\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('mall_keyword.placeholder.filter_url')\" />\n      <el-button v-permission=\"['GET /admin/keyword/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/keyword/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" width=\"150px\" :label=\"$t('mall_keyword.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('mall_keyword.table.keyword')\" prop=\"keyword\" />\n\n      <el-table-column align=\"center\" min-width=\"300px\" :label=\"$t('mall_keyword.table.url')\" prop=\"url\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('mall_keyword.table.is_hot')\" prop=\"isHot\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.isHot ? 'success' : 'error' \">{{ $t(scope.row.isHot ? 'mall_keyword.text.yes' : 'mall_keyword.text.no') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('mall_keyword.table.is_default')\" prop=\"isDefault\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.isDefault ? 'success' : 'error' \">{{ $t(scope.row.isDefault ? 'mall_keyword.text.yes' : 'mall_keyword.text.no') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_keyword.table.actions')\" width=\"250\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/keyword/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/keyword/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_keyword.form.keyword')\" prop=\"keyword\">\n          <el-input v-model=\"dataForm.keyword\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_keyword.form.url')\" prop=\"url\">\n          <el-input v-model=\"dataForm.url\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_keyword.form.is_hot')\" prop=\"isHot\">\n          <el-select v-model=\"dataForm.isHot\" :placeholder=\"$t('mall_keyword.form.is_hot.placeholder')\">\n            <el-option :value=\"true\" :label=\"$t('mall_keyword.value.is_hot_true')\" />\n            <el-option :value=\"false\" :label=\"$t('mall_keyword.value.is_hot_false')\" />\n          </el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_keyword.form.is_default')\" prop=\"isDefault\">\n          <el-select v-model=\"dataForm.isDefault\" :placeholder=\"$t('mall_keyword.form.is_default.placeholder')\">\n            <el-option :value=\"true\" :label=\"$t('mall_keyword.value.is_default_true')\" />\n            <el-option :value=\"false\" :label=\"$t('mall_keyword.value.is_default_false')\" />\n          </el-select>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<script>\nimport { listKeyword, createKeyword, updateKeyword, deleteKeyword } from '@/api/keyword'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Keyword',\n  components: { Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        keyword: undefined,\n        url: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        keyword: undefined,\n        url: undefined,\n        isHot: undefined,\n        isDefault: undefined\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        keyword: [{ required: true, message: '关键词不能为空', trigger: 'blur' }]\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listKeyword(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        keyword: undefined,\n        url: undefined,\n        isHot: undefined,\n        isDefault: undefined\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          createKeyword(this.dataForm).then(response => {\n            this.list.unshift(response.data.data)\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '创建成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          updateKeyword(this.dataForm).then(() => {\n            for (const v of this.list) {\n              if (v.id === this.dataForm.id) {\n                const index = this.list.indexOf(v)\n                this.list.splice(index, 1, this.dataForm)\n                break\n              }\n            }\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '更新成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteKeyword(row).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '删除成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['关键词ID', '关键词', '跳转链接', '是否推荐', '是否默认']\n        const filterVal = ['id', 'keyword', 'url', 'isHot', 'isDefault']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '关键词设置')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/order.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.nickname\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('mall_order.placeholder.filter_nickname')\" />\n      <el-input v-model=\"listQuery.consignee\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('mall_order.placeholder.filter_consignee')\" />\n      <el-input v-model=\"listQuery.orderSn\" clearable class=\"filter-item\" style=\"width: 160px;\" :placeholder=\"$t('mall_order.placeholder.filter_order_sn')\" />\n      <el-date-picker v-model=\"listQuery.timeArray\" type=\"datetimerange\" value-format=\"yyyy-MM-dd HH:mm:ss\" class=\"filter-item\" :range-separator=\"$t('mall_order.text.date_range_separator')\" :start-placeholder=\"$t('mall_order.placeholder.filter_time_start')\" :end-placeholder=\"$t('mall_order.placeholder.filter_time_end')\" :picker-options=\"pickerOptions\" />\n      <el-select v-model=\"listQuery.orderStatusArray\" multiple style=\"width: 200px\" class=\"filter-item\" :placeholder=\"$t('mall_order.placeholder.filter_order_status')\">\n        <el-option v-for=\"(key, value) in statusMap\" :key=\"key\" :label=\"key\" :value=\"value\" />\n      </el-select>\n      <el-button v-permission=\"['GET /admin/order/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column type=\"expand\">\n        <template slot-scope=\"props\">\n          <div v-for=\"item in props.row.goodsVoList\" :key=\"item.id\" class=\"order-goods\">\n            <div class=\"picture\">\n              <img :src=\"item.picUrl\" width=\"40\">\n            </div>\n            <div class=\"name\">\n              {{ $t('mall_order.text.expand_goods_name', { goods_name: item.goodsName }) }}\n            </div>\n            <div class=\"spec\">\n              {{ $t('mall_order.text.expand_specifications', { specifications: item.specifications.join('-') }) }}\n            </div>\n            <div class=\"price\">\n              {{ $t('mall_order.text.expand_unit_price', { price: item.price }) }}\n            </div>\n            <div class=\"num\">\n              {{ $t('mall_order.text.expand_number', { number: item.number }) }}\n            </div>\n            <div class=\"price\">\n              {{ $t('mall_order.text.expand_subtotal_price', { price: item.price * item.number }) }}\n            </div>\n          </div>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" min-width=\"120\" :label=\"$t('mall_order.table.order_sn')\" prop=\"orderSn\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.avatar')\" width=\"80\">\n        <template slot-scope=\"scope\">\n          <el-avatar :src=\"scope.row.avatar\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.user_name')\" prop=\"userName\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.add_time')\" prop=\"addTime\" min-width=\"100\">\n        <template slot-scope=\"scope\">\n          {{ (scope.row.addTime || '').substring(0, 10) }}\n        </template>\n      </el-table-column>\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.order_status')\" prop=\"orderStatus\">\n        <template slot-scope=\"scope\">\n          <el-tag>{{ scope.row.orderStatus | orderStatusFilter }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.order_price')\" prop=\"orderPrice\">\n        <template slot-scope=\"scope\">\n          {{ scope.row.orderPrice }} 元\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.actual_price')\" prop=\"actualPrice\">\n        <template slot-scope=\"scope\">\n          {{ scope.row.actualPrice }} 元\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.pay_time')\" prop=\"payTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.consignee')\" prop=\"consignee\">\n        <template slot-scope=\"scope\">\n          <span style=\"color:red; font-weight:bold;\">{{ scope.row.consignee }}</span>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.mobile')\" prop=\"mobile\" min-width=\"100\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.ship_sn')\" prop=\"shipSn\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.ship_channel')\" prop=\"shipChannel\" />\n\n      <el-table-column align=\"center\" :label=\"$t('mall_order.table.actions')\" width=\"250\" class-name=\"oper\">\n        <template slot-scope=\"scope\">\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleDetail(scope.row)\">{{ $t('app.button.detail') }}</el-button>\n          <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n          <el-button type=\"warning\" size=\"mini\" @click=\"handlePay(scope.row)\">{{ $t('mall_order.button.pay') }}</el-button>\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleShip(scope.row)\">{{ $t('mall_order.button.ship') }}</el-button>\n          <el-button type=\"danger\" size=\"mini\" @click=\"handleRefund(scope.row)\">{{ $t('mall_order.button.refund') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 订单详情对话框 -->\n    <el-dialog :visible.sync=\"orderDialogVisible\" :title=\"$t('mall_order.dialog.detail')\" width=\"800\">\n      <section ref=\"print\">\n        <el-form :data=\"orderDetail\" label-position=\"left\">\n          <el-form-item :label=\"$t('mall_order.form.detail_order_sn')\">\n            <span>{{ orderDetail.order.orderSn }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_order_status')\">\n            <el-tag>{{ orderDetail.order.orderStatus | orderStatusFilter }}</el-tag>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_user_nickname')\">\n            <span>{{ orderDetail.user.nickname }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_message')\">\n            <span>{{ orderDetail.order.message }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_receiving_info')\">\n            <span>{{ $t('mall_order.text.detail_consigne', { consignee: orderDetail.order.consignee }) }}</span>\n            <span>{{ $t('mall_order.text.detail_mobile', { mobile: orderDetail.order.mobile }) }}</span>\n            <span>{{ $t('mall_order.text.detail_address', { address: orderDetail.order.address }) }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_goods')\">\n            <el-table :data=\"orderDetail.orderGoods\" border fit highlight-current-row>\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_name')\" prop=\"goodsName\" />\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_sn')\" prop=\"goodsSn\" />\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_specifications')\" prop=\"specifications\" />\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_price')\" prop=\"price\" />\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_number')\" prop=\"number\" />\n              <el-table-column align=\"center\" :label=\"$t('mall_order.table.detail_goods_pic_url')\" prop=\"picUrl\">\n                <template slot-scope=\"scope\">\n                  <img :src=\"scope.row.picUrl\" width=\"40\">\n                </template>\n              </el-table-column>\n            </el-table>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_price_info')\">\n            <span>\n              {{ $t('mall_order.text.detail_price_info', {\n                actual_price: orderDetail.order.actualPrice,\n                goods_price: orderDetail.order.goodsPrice,\n                freight_price: orderDetail.order.freightPrice,\n                coupon_price: orderDetail.order.couponPrice,\n                integral_price: orderDetail.order.integralPrice\n              }) }}\n            </span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_pay_info')\">\n            <span>{{ $t('mall_order.text.detail_pay_channel', { pay_channel: '微信支付' }) }}</span>\n            <span>{{ $t('mall_order.text.detail_pay_time', { pay_time: orderDetail.order.payTime }) }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_ship_info')\">\n            <span>{{ $t('mall_order.text.detail_ship_channel', { ship_channel: orderDetail.order.shipChannel }) }}</span>\n            <span>{{ $t('mall_order.text.detail_ship_sn', { ship_sn: orderDetail.order.shipSn }) }}</span>\n            <span>{{ $t('mall_order.text.detail_ship_time', { ship_time: orderDetail.order.shipTime }) }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_refund_info')\">\n            <span>{{ $t('mall_order.text.detail_refund_amount', { refund_amount: orderDetail.order.refundAmount }) }}</span>\n            <span>{{ $t('mall_order.text.detail_refund_type', { refund_type: orderDetail.order.refundType }) }}</span>\n            <span>{{ $t('mall_order.text.detail_refund_content', { refund_content: orderDetail.order.refundContent }) }}</span>\n            <span>{{ $t('mall_order.text.detail_refund_time', { refund_time: orderDetail.order.refundTime }) }}</span>\n          </el-form-item>\n          <el-form-item :label=\"$t('mall_order.form.detail_receipt_info')\">\n            <span>{{ $t('mall_order.text.detail_confirm_time', { confirm_time: orderDetail.order.confirmTime }) }}</span>\n          </el-form-item>\n        </el-form>\n      </section>\n      <span slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"orderDialogVisible = false\">{{ $t('mall_order.button.detail_cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"printOrder\">{{ $t('mall_order.button.detail_print') }}</el-button>\n      </span>\n    </el-dialog>\n\n    <!-- 收款对话框 -->\n    <el-dialog :visible.sync=\"payDialogVisible\" :title=\"$t('mall_order.dialog.pay')\" width=\"40%\" center>\n      <el-form ref=\"payForm\" :model=\"payForm\" status-icon label-position=\"left\" label-width=\"100px\">\n        <div style=\"margin-bottom: 10px;\">\n          {{ $t('mall_order.message.pay_confirm', { order_sn: payForm.orderSn }) }}\n        </div>\n        <el-form-item :label=\"$t('mall_order.form.pay_old_money')\" prop=\"oldMoney\">\n          <el-input-number v-model=\"payForm.oldMoney\" :controls=\"false\" disabled />\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_order.form.pay_new_money')\" prop=\"newMoney\">\n          <el-input-number v-model=\"payForm.newMoney\" :controls=\"false\" />\n        </el-form-item>\n      </el-form>\n      <el-table :data=\"payForm.goodsList\">\n        <el-table-column property=\"goodsName\" :label=\"$t('mall_order.table.pay_goods_name')\" />\n        <el-table-column :label=\"$t('mall_order.table.pay_goods_specifications')\">\n          <template slot-scope=\"scope\">\n            {{ scope.row.specifications.join('-') }}\n          </template>\n        </el-table-column>\n        <el-table-column property=\"onumber\" width=\"100\" :label=\"$t('mall_order.table.pay_goods_number')\" />\n        <!-- <el-table-column label=\"实际数量\" width=\"100\">\n          <template slot-scope=\"scope\">\n            <el-input-number v-model=\"scope.row.number\" :min=\"0\" :controls=\"false\" />\n          </template>\n        </el-table-column> -->\n      </el-table>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"payDialogVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"confirmPay\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n    <!-- 发货对话框 -->\n    <el-dialog :visible.sync=\"shipDialogVisible\" :title=\"$t('mall_order.dialog.ship')\">\n      <el-form ref=\"shipForm\" :model=\"shipForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_order.form.ship_channel')\" prop=\"shipChannel\">\n          <el-select v-model=\"shipForm.shipChannel\" :placeholder=\"$t('mall_order.placeholder.ship_channel')\">\n            <el-option v-for=\"item in channels\" :key=\"item.code\" :label=\"item.name\" :value=\"item.code\" />\n          </el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('mall_order.form.ship_sn')\" prop=\"shipSn\">\n          <el-input v-model=\"shipForm.shipSn\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"shipDialogVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"confirmShip\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n    <!-- 退款对话框 -->\n    <el-dialog :visible.sync=\"refundDialogVisible\" :title=\"$t('mall_order.dialog.refund')\">\n      <el-form ref=\"refundForm\" :model=\"refundForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('mall_order.form.refund_money')\" prop=\"refundMoney\">\n          <el-input v-model=\"refundForm.refundMoney\" :disabled=\"true\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"refundDialogVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"confirmRefund\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style lang=\"scss\" scoped>\n.el-table--medium th, .el-table--medium td {\n    padding: 3px 0;\n}\n\n.el-input-number--medium {\n  width: 100%;\n}\n\n.oper .el-button--mini {\n  padding: 7px 4px;\n  width: 40px;\n  font-size: 10px;\n  margin-left: 1px;\n}\n\n::v-deep .el-table__expanded-cell {\n  padding: 6px 80px;\n}\n\n.order-goods {\n  display: flex;\n  justify-content: space-around;\n  justify-items: center;\n  align-items:center;\n  padding: 6px 0;\n}\n\n.name {\n  width: 400px;\n}\n\n.spec {\n  width: 180px;\n}\n\n.price {\n  width: 120px;\n}\n\n.num {\n  width: 120px;\n}\n</style>\n\n<script>\nimport { detailOrder, listOrder, listChannel, refundOrder, payOrder, deleteOrder, shipOrder } from '@/api/order'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport checkPermission from '@/utils/permission' // 权限判断函数\n\nconst statusMap = {\n  101: '未付款',\n  102: '用户取消',\n  103: '系统取消',\n  201: '已付款',\n  202: '申请退款',\n  203: '已退款',\n  301: '已发货',\n  401: '用户收货',\n  402: '系统收货'\n}\n\nexport default {\n  name: 'Order',\n  components: { Pagination },\n  filters: {\n    orderStatusFilter(status) {\n      return statusMap[status]\n    }\n  },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        nickname: undefined,\n        consignee: undefined,\n        orderSn: undefined,\n        timeArray: [],\n        orderStatusArray: [],\n        sort: 'add_time',\n        order: 'desc'\n      },\n      pickerOptions: {\n        shortcuts: [{\n          text: '最近一周',\n          onClick(picker) {\n            const end = new Date()\n            const start = new Date()\n            start.setTime(start.getTime() - 3600 * 1000 * 24 * 7)\n            picker.$emit('pick', [start, end])\n          }\n        }, {\n          text: '最近一个月',\n          onClick(picker) {\n            const end = new Date()\n            const start = new Date()\n            start.setTime(start.getTime() - 3600 * 1000 * 24 * 30)\n            picker.$emit('pick', [start, end])\n          }\n        }, {\n          text: '最近三个月',\n          onClick(picker) {\n            const end = new Date()\n            const start = new Date()\n            start.setTime(start.getTime() - 3600 * 1000 * 24 * 90)\n            picker.$emit('pick', [start, end])\n          }\n        }]\n      },\n      statusMap,\n      orderDialogVisible: false,\n      orderDetail: {\n        order: {},\n        user: {},\n        orderGoods: []\n      },\n      shipForm: {\n        orderId: undefined,\n        shipChannel: undefined,\n        shipSn: undefined\n      },\n      shipDialogVisible: false,\n      payForm: {\n        orderId: undefined,\n        orderSn: '',\n        oldMoney: 0,\n        newMoney: 0,\n        goodsList: []\n      },\n      payDialogVisible: false,\n      refundForm: {\n        orderId: undefined,\n        refundMoney: undefined\n      },\n      refundDialogVisible: false,\n      downloadLoading: false,\n      channels: []\n    }\n  },\n  created() {\n    this.getList()\n    this.getChannel()\n  },\n  methods: {\n    checkPermission,\n    getList() {\n      this.listLoading = true\n      if (this.listQuery.timeArray && this.listQuery.timeArray.length === 2) {\n        this.listQuery.start = this.listQuery.timeArray[0]\n        this.listQuery.end = this.listQuery.timeArray[1]\n      } else {\n        this.listQuery.start = null\n        this.listQuery.end = null\n      }\n      if (this.listQuery.orderId) {\n        detailOrder(this.listQuery.orderId).then(response => {\n          this.list = []\n          if (response.data.data.order) {\n            this.list.push(response.data.data.order)\n            this.total = 1\n            this.listLoading = false\n          }\n        }).catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n      } else {\n        listOrder(this.listQuery).then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        }).catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n      }\n    },\n    getChannel() {\n      listChannel().then(response => {\n        this.channels = response.data.data\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDetail(row) {\n      detailOrder(row.id).then(response => {\n        this.orderDetail = response.data.data\n      })\n      this.orderDialogVisible = true\n    },\n    handlePay(row) {\n      this.payForm.orderId = row.id\n      this.payForm.orderSn = row.orderSn\n      this.payForm.oldMoney = row.actualPrice\n      this.payForm.newMoney = row.actualPrice\n      this.payForm.goodsList = row.goodsVoList\n      this.payForm.goodsList.forEach(element => {\n        element.onumber = element.number\n      })\n      this.payDialogVisible = true\n    },\n    confirmPay() {\n      if (this.payForm.oldMoney !== this.payForm.newMoney) {\n        const diff = this.payForm.newMoney - this.payForm.oldMoney\n        this.$confirm('差额 ' + diff + '元， 是否确认提交')\n          .then(_ => {\n            this.confirmPay2()\n          })\n          .catch(_ => {})\n      } else {\n        this.confirmPay2()\n      }\n    },\n    confirmPay2() {\n      payOrder(this.payForm).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '订单收款操作成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      }).finally(() => {\n        this.payDialogVisible = false\n      })\n    },\n    handleShip(row) {\n      this.shipForm.orderId = row.id\n      this.shipForm.shipChannel = row.shipChannel\n      this.shipForm.shipSn = row.shipSn\n\n      this.shipDialogVisible = true\n      this.$nextTick(() => {\n        this.$refs['shipForm'].clearValidate()\n      })\n    },\n    confirmShip() {\n      this.$refs['shipForm'].validate((valid) => {\n        if (valid) {\n          shipOrder(this.shipForm).then(response => {\n            this.shipDialogVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '确认发货成功'\n            })\n            this.getList()\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteOrder({ orderId: row.id }).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '订单删除成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleRefund(row) {\n      this.refundForm.orderId = row.id\n      this.refundForm.refundMoney = row.actualPrice\n\n      this.refundDialogVisible = true\n      this.$nextTick(() => {\n        this.$refs['refundForm'].clearValidate()\n      })\n    },\n    confirmRefund() {\n      this.$refs['refundForm'].validate((valid) => {\n        if (valid) {\n          refundOrder(this.refundForm).then(response => {\n            this.refundDialogVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '确认退款成功'\n            })\n            this.getList()\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['订单ID', '订单编号', '用户ID', '订单状态', '是否删除', '收货人', '收货联系电话', '收货地址']\n        const filterVal = ['id', 'orderSn', 'userId', 'orderStatus', 'isDelete', 'consignee', 'mobile', 'address']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '订单信息')\n        this.downloadLoading = false\n      })\n    },\n    printOrder() {\n      this.$print(this.$refs.print)\n      this.orderDialogVisible = false\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/mall/region.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" row-key=\"id\" style=\"width: 100%;margin-bottom: 20px;\" border=\"\">\n\n      <el-table-column :label=\"$t('mall_region.table.name')\" prop=\"name\" />\n\n      <el-table-column :label=\"$t('mall_region.table.type')\" prop=\"type\">\n        <template slot-scope=\"scope\">\n          {{ scope.row.type | typeFilter }}\n        </template>\n      </el-table-column>\n\n      <el-table-column :label=\"$t('mall_region.table.code')\" prop=\"code\" />\n\n    </el-table>\n\n  </div>\n</template>\n\n<script>\nimport { listRegion } from '@/api/region'\n\nexport default {\n  name: 'Region',\n  filters: {\n    typeFilter(status) {\n      const typeMap = {\n        '1': '省',\n        '2': '市',\n        '3': '区'\n      }\n      return typeMap[status]\n    }\n  },\n  data() {\n    return {\n      list: [],\n      listLoading: true,\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listRegion().then(response => {\n        this.list = response.data.data.list\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.listLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/profile/notice.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.title\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('profile_notice.placeholder.filter_title')\" />\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n    </div>\n\n    <div class=\"operator-container\">\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleBatchRead\">{{ $t('profile_notice.button.batch_read') }}</el-button>\n      <el-button class=\"filter-item\" type=\"danger\" icon=\"el-icon-delete\" @click=\"handleBatchDelete\">{{ $t('app.button.batch_delete') }}</el-button>\n    </div>\n\n    <el-tabs v-model=\"listQuery.type\" @tab-click=\"handleFilter\">\n      <el-tab-pane :label=\"$t('profile_notice.section.unread')\" name=\"unread\" />\n      <el-tab-pane :label=\"$t('profile_notice.section.read')\" name=\"read\" />\n      <el-tab-pane :label=\"$t('profile_notice.section.all')\" name=\"all\" />\n    </el-tabs>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" fit highlight-current-row @selection-change=\"handleSelectionChange\">\n      <el-table-column type=\"selection\" width=\"55\" />\n\n      <el-table-column align=\"center\" :label=\"$t('profile_notice.table.notice_title')\" prop=\"noticeTitle\" />\n\n      <el-table-column align=\"center\" :label=\"$t('profile_notice.table.add_time')\" prop=\"addTime\" width=\"180\" />\n\n      <el-table-column align=\"center\" :label=\"$t('profile_notice.table.read_time')\" prop=\"readTime\" width=\"120\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.readTime ? 'success' : 'error' \">{{ $t(scope.row.readTime ? 'profile_notice.text.read' : 'profile_notice.text.unread') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('profile_notice.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleRead(scope.row)\">{{ $t('profile_notice.button.read') }}</el-button>\n          <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-dialog :title=\"notice.title\" :visible.sync=\"noticeVisible\" center>\n      <el-divider content-position=\"left\">{{ $t('profile_notice.text.admin_time', { admin: notice.admin, time: notice.time }) }}</el-divider>\n      <div v-html=\"notice.content\" />\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button type=\"primary\" @click=\"afterRead\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport { listNotice, catNotice, bcatNotice, rmNotice, brmNotice } from '@/api/profile'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport _ from 'lodash'\n\nexport default {\n  name: 'AdminNotice',\n  components: { Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        title: '',\n        type: 'unread',\n        sort: 'add_time',\n        order: 'desc'\n      },\n      multipleSelection: [],\n      notice: {\n        title: '',\n        source: '',\n        content: '',\n        addTime: ''\n      },\n      noticeVisible: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listNotice(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDelete(row) {\n      rmNotice(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除通知成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleSelectionChange(val) {\n      this.multipleSelection = val\n    },\n    handleBatchDelete() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      brmNotice({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量删除通知成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleRead(row) {\n      catNotice(row)\n        .then(response => {\n          this.notice = response.data.data\n          this.noticeVisible = true\n        })\n    },\n    afterRead() {\n      this.noticeVisible = false\n      this.getList()\n    },\n    handleBatchRead() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      bcatNotice({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量设置通知已读成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/profile/password.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n      <el-form-item :label=\"$t('profile_password.form.old_password')\" prop=\"oldPassword\">\n        <el-input v-model=\"dataForm.oldPassword\" type=\"password\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('profile_password.form.new_password')\" prop=\"newPassword\">\n        <el-input v-model=\"dataForm.newPassword\" type=\"password\" auto-complete=\"off\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('profile_password.form.new_password_2')\" prop=\"newPassword2\">\n        <el-input v-model=\"dataForm.newPassword2\" type=\"password\" auto-complete=\"off\"/>\n      </el-form-item>\n    </el-form>\n    <div style=\"margin-left:100px;\">\n      <el-button @click=\"cancel\">{{ $t('app.button.cancel') }}</el-button>\n      <el-button type=\"primary\" @click=\"change\">{{ $t('app.button.confirm') }}</el-button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { changePassword } from '@/api/profile'\n\nexport default {\n  name: 'ChangePassword',\n  data() {\n    var validatePass = (rule, value, callback) => {\n      if (value === '') {\n        callback(new Error('请输入密码'))\n      } else {\n        callback()\n      }\n    }\n    var validatePass2 = (rule, value, callback) => {\n      if (value === '') {\n        callback(new Error('请再次输入密码'))\n      } else if (value !== this.dataForm.newPassword) {\n        callback(new Error('两次输入密码不一致!'))\n      } else {\n        callback()\n      }\n    }\n    return {\n      dataForm: {\n        oldPassword: '',\n        newPassword: '',\n        newPassword2: ''\n      },\n      rules: {\n        oldPassword: [\n          { required: true, message: '旧密码不能为空', trigger: 'blur' }\n        ],\n        newPassword: [\n          { required: true, message: '新密码不能为空', trigger: 'blur' },\n          { validator: validatePass, trigger: 'blur' }\n        ],\n        newPassword2: [\n          { required: true, message: '确认密码不能为空', trigger: 'blur' },\n          { validator: validatePass2, trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  methods: {\n    cancel() {\n      this.dataForm = {\n        oldPassword: '',\n        newPassword: '',\n        newPassword2: ''\n      }\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    change() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (!valid) {\n          return\n        }\n        changePassword(this.dataForm).then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '修改密码成功'\n          })\n        }).catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/ad.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_ad.placeholder.filter_name')\" />\n      <el-input v-model=\"listQuery.content\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_ad.placeholder.filter_content')\" />\n      <el-button v-permission=\"['GET /admin/ad/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/ad/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.content')\" prop=\"content\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.url')\" prop=\"url\">\n        <template slot-scope=\"scope\">\n          <el-image :src=\"thumbnail(scope.row.url)\" :preview-src-list=\"toPreview(scope.row, scope.row.url)\" style=\"width: 80px; height: 40px\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.position')\" prop=\"position\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.link')\" prop=\"link\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.enabled')\" prop=\"enabled\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.enabled ? 'success' : 'error' \">{{ $t(scope.row.enabled ? 'promotion_ad.value.enabled_true' : 'promotion_ad.value.enabled_false') }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_ad.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/ad/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/ad/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('promotion_ad.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_ad.form.content')\" prop=\"content\">\n          <el-input v-model=\"dataForm.content\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_ad.form.url')\" prop=\"url\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadUrl\"\n            :before-upload=\"checkFileSize\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\"\n          >\n            <img v-if=\"dataForm.url\" :src=\"dataForm.url\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n            <div slot=\"tip\" class=\"el-upload__tip\">{{ $t('promotion_ad.help.url') }}</div>\n          </el-upload>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_ad.form.position')\" prop=\"position\">\n          <el-select v-model=\"dataForm.position\" :placeholder=\"$t('promotion_ad.placeholder.position')\">\n            <el-option :value=\"1\" :label=\"$t('promotion_ad.value.position_1')\" />\n          </el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_ad.form.link')\" prop=\"link\">\n          <el-input v-model=\"dataForm.link\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_ad.form.enabled')\" prop=\"enabled\">\n          <el-select v-model=\"dataForm.enabled\" :placeholder=\"$t('promotion_ad.placeholder.enabled')\">\n            <el-option :value=\"true\" :label=\"$t('promotion_ad.value.enabled_true')\" />\n            <el-option :value=\"false\" :label=\"$t('promotion_ad.value.enabled_false')\" />\n          </el-select>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listAd, createAd, updateAd, deleteAd } from '@/api/ad'\nimport { uploadPath } from '@/api/storage'\nimport { getToken } from '@/utils/auth'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport { thumbnail, toPreview } from '@/utils/index'\n\nexport default {\n  name: 'Ad',\n  components: { Pagination },\n  data() {\n    return {\n      thumbnail,\n      toPreview,\n      uploadPath,\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        name: undefined,\n        content: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        name: undefined,\n        content: undefined,\n        url: undefined,\n        link: undefined,\n        position: 1,\n        enabled: true\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [\n          { required: true, message: '广告标题不能为空', trigger: 'blur' }\n        ],\n        content: [\n          { required: true, message: '广告内容不能为空', trigger: 'blur' }\n        ],\n        url: [{ required: true, message: '广告链接不能为空', trigger: 'blur' }]\n      },\n      downloadLoading: false\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listAd(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: undefined,\n        content: undefined,\n        url: undefined,\n        link: undefined,\n        position: 1,\n        enabled: true\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    uploadUrl: function(response) {\n      this.dataForm.url = response.data.url\n    },\n    checkFileSize: function(file) {\n      if (file.size > 1048576) {\n        this.$message.error(`${file.name}文件大于1024KB，请选择小于1024KB大小的图片`)\n        return false\n      }\n      return true\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createAd(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '创建成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateAd(this.dataForm)\n            .then(() => {\n              // for (const v of this.list) {\n              //   if (v.id === this.dataForm.id) {\n              //     const index = this.list.indexOf(v)\n              //     this.list.splice(index, 1, this.dataForm)\n              //     break\n              //   }\n              // }\n              this.getList()\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新广告成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteAd(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '广告ID',\n          '广告标题',\n          '广告内容',\n          '广告图片',\n          '广告位置',\n          '活动链接',\n          '是否启用'\n        ]\n        const filterVal = [\n          'id',\n          'name',\n          'content',\n          'url',\n          'postion',\n          'link',\n          'enabled'\n        ]\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '广告信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/coupon.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_coupon.placeholder.filter_name')\" />\n      <el-select v-model=\"listQuery.type\" clearable style=\"width: 200px\" class=\"filter-item\" :placeholder=\"$t('promotion_coupon.placeholder.filter_type')\">\n        <el-option v-for=\"type in typeOptions\" :key=\"type.value\" :label=\"type.label\" :value=\"type.value\" />\n      </el-select>\n      <el-select v-model=\"listQuery.status\" clearable style=\"width: 200px\" class=\"filter-item\" :placeholder=\"$t('promotion_coupon.placeholder.filter_status')\">\n        <el-option v-for=\"type in statusOptions\" :key=\"type.value\" :label=\"type.label\" :value=\"type.value\" />\n      </el-select>\n      <el-button v-permission=\"['GET /admin/coupon/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/coupon/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.desc')\" prop=\"desc\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.tag')\" prop=\"tag\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.min')\" prop=\"min\">\n        <template slot-scope=\"scope\">{{ $t('promotion_coupon.text.coupon_min', { min: scope.row.min }) }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.discount')\" prop=\"discount\">\n        <template slot-scope=\"scope\">{{ $t('promotion_coupon.text.coupon_discount', { discount: scope.row.discount }) }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.limit')\" prop=\"limit\">\n        <template slot-scope=\"scope\">{{ scope.row.limit != 0 ? scope.row.limit : $t('promotion_coupon.text.unlimited') }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.goods_type')\" prop=\"goodsType\">\n        <template slot-scope=\"scope\">{{ scope.row.goodsType | formatGoodsType }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.type')\" prop=\"type\">\n        <template slot-scope=\"scope\">{{ scope.row.type | formatType }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.total')\" prop=\"total\">\n        <template slot-scope=\"scope\">{{ scope.row.total != 0 ? scope.row.total : $t('promotion_coupon.text.unlimited') }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.status')\" prop=\"status\">\n        <template slot-scope=\"scope\">{{ scope.row.status | formatStatus }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon.table.actions')\" width=\"300\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['GET /admin/coupon/read']\" type=\"primary\" size=\"mini\" @click=\"handleDetail(scope.row)\">{{ $t('app.button.detail') }}</el-button>\n          <el-button v-permission=\"['POST /admin/coupon/update']\" type=\"info\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/coupon/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('promotion_coupon.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.desc')\" prop=\"desc\">\n          <el-input v-model=\"dataForm.desc\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.tag')\" prop=\"tag\">\n          <el-input v-model=\"dataForm.tag\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.min')\" prop=\"min\">\n          <el-input v-model=\"dataForm.min\">\n            <template slot=\"append\">元</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.discount')\" prop=\"discount\">\n          <el-input v-model=\"dataForm.discount\">\n            <template slot=\"append\">元</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.limit')\" prop=\"limit\">\n          <el-input v-model=\"dataForm.limit\">\n            <template slot=\"append\">{{ $t('promotion_coupon.text.units') }}</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.type')\" prop=\"type\">\n          <el-select v-model=\"dataForm.type\">\n            <el-option\n              v-for=\"type in typeOptions\"\n              :key=\"type.value\"\n              :label=\"type.label\"\n              :value=\"type.value\"\n            />\n          </el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.total')\" prop=\"total\">\n          <el-input v-model=\"dataForm.total\">\n            <template slot=\"append\">{{ $t('promotion_coupon.text.units') }}</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.time_type')\">\n          <el-radio-group v-model=\"dataForm.timeType\">\n            <el-radio-button :label=\"0\">{{ $t('promotion_coupon.value.time_type_0') }}</el-radio-button>\n            <el-radio-button :label=\"1\">{{ $t('promotion_coupon.value.time_type_1') }}</el-radio-button>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item v-show=\"dataForm.timeType === 0\">\n          <el-input v-model=\"dataForm.days\">\n            <template slot=\"append\">{{ $t('promotion_coupon.text.days') }}</template>\n          </el-input>\n        </el-form-item>\n        <el-form-item v-show=\"dataForm.timeType === 1\">\n          <el-col :span=\"11\">\n            <el-date-picker v-model=\"dataForm.startTime\" type=\"datetime\" :placeholder=\"$t('promotion_coupon.placeholder.start_time')\" value-format=\"yyyy-MM-dd HH:mm:ss\" style=\"width: 100%;\" />\n          </el-col>\n          <el-col :span=\"2\" class=\"line\">{{ $t('promotion_coupon.text.to_time') }}</el-col>\n          <el-col :span=\"11\">\n            <el-date-picker v-model=\"dataForm.endTime\" type=\"datetime\" :placeholder=\"$t('promotion_coupon.placeholder.end_time')\" value-format=\"yyyy-MM-dd HH:mm:ss\" style=\"width: 100%;\" />\n          </el-col>\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_coupon.form.goods_type')\">\n          <el-radio-group v-model=\"dataForm.goodsType\">\n            <el-radio-button :label=\"0\">{{ $t('promotion_coupon.value.goods_type_0') }}</el-radio-button>\n            <el-radio-button :label=\"1\">{{ $t('promotion_coupon.value.goods_type_1') }}</el-radio-button>\n            <el-radio-button :label=\"2\">{{ $t('promotion_coupon.value.goods_type_2') }}</el-radio-button>\n          </el-radio-group>\n        </el-form-item>\n        <el-form-item v-show=\"dataForm.goodsType === 1\">\n          <el-cascader\n            v-model=\"selectGoodsCategory\"\n            clearable\n            :placeholder=\"$t('promotion_coupon.placeholder.category')\"\n            :options=\"goodsCategoryOptions\"\n          />\n          <el-button @click=\"handleAddGoodsCategory()\">{{ $t('app.button.create') }}</el-button>\n          <el-table\n            ref=\"goodsCateRelationTable\"\n            :data=\"couponCategoryList\"\n            style=\"width: 100%;margin-top: 20px\"\n            border\n          >\n            <el-table-column :label=\"$t('promotion_coupon.table.category_name')\" align=\"center\">\n              <template slot-scope=\"scope\">{{ scope.row.parentCategoryName }}>{{ scope.row.goodsCategoryName }}</template>\n            </el-table-column>\n            <el-table-column :label=\"$t('promotion_coupon.table.category_actions')\" align=\"center\" width=\"100\">\n              <template slot-scope=\"scope\">\n                <el-button\n                  size=\"mini\"\n                  type=\"text\"\n                  @click=\"handleDeleteGoodsCategory(scope.$index, scope.row)\"\n                >{{ $t('app.button.delete') }}\n                </el-button>\n              </template>\n            </el-table-column>\n          </el-table>\n        </el-form-item>\n        <el-form-item v-show=\"dataForm.goodsType === 2\">\n          <el-select\n            v-model=\"selectGoods\"\n            filterable\n            remote\n            reserve-keyword\n            :placeholder=\"$t('promotion_coupon.placeholder.goods')\"\n          >\n            <el-option\n              v-for=\"item in goodsOptions\"\n              :key=\"item.goodsId\"\n              :label=\"item.goodsName\"\n              :value=\"item.goodsId\"\n            >\n              <span style=\"float: left\">{{ item.goodsName }}</span>\n              <span style=\"float: right; color: #8492a6; font-size: 13px\">NO.{{ item.goodsSn }}</span>\n            </el-option>\n          </el-select>\n          <el-button @click=\"handleAddGoods()\">{{ $t('app.button.create') }}</el-button>\n          <el-table\n            ref=\"goodsRelationTable\"\n            :data=\"couponGoodsList\"\n            style=\"width: 100%;margin-top: 20px\"\n            border\n          >\n            <el-table-column :label=\"$t('promotion_coupon.table.goods_name')\" align=\"center\">\n              <template slot-scope=\"scope\">{{ scope.row.goodsName }}</template>\n            </el-table-column>\n            <el-table-column :label=\"$t('promotion_coupon.table.goods_sn')\" align=\"center\" width=\"80\">\n              <template slot-scope=\"scope\">{{ scope.row.goodsSn }}</template>\n            </el-table-column>\n            <el-table-column :label=\"$t('promotion_coupon.table.goods_actions')\" align=\"center\" width=\"60\">\n              <template slot-scope=\"scope\">\n                <el-button\n                  size=\"mini\"\n                  type=\"text\"\n                  @click=\"handleDeleteGoods(scope.$index, scope.row)\"\n                >{{ $t('app.button.delete') }}\n                </el-button>\n              </template>\n            </el-table-column>\n          </el-table>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 120px;\n  height: 120px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listCoupon, createCoupon, updateCoupon, deleteCoupon } from '@/api/coupon'\nimport { listCategory } from '@/api/category.js'\nimport { listGoods } from '@/api/goods.js'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nconst defaultTypeOptions = [\n  {\n    label: '通用领券',\n    value: 0\n  },\n  {\n    label: '注册赠券',\n    value: 1\n  },\n  {\n    label: '兑换码',\n    value: 2\n  }\n]\n\nconst defaultStatusOptions = [\n  {\n    label: '正常',\n    value: 0\n  },\n  {\n    label: '已过期',\n    value: 1\n  },\n  {\n    label: '已下架',\n    value: 2\n  }\n]\n\nexport default {\n  name: 'Coupon',\n  components: { Pagination },\n  filters: {\n    formatType(type) {\n      for (let i = 0; i < defaultTypeOptions.length; i++) {\n        if (type === defaultTypeOptions[i].value) {\n          return defaultTypeOptions[i].label\n        }\n      }\n      return ''\n    },\n    formatGoodsType(goodsType) {\n      if (goodsType === 0) {\n        return '全场通用'\n      } else if (goodsType === 1) {\n        return '指定分类'\n      } else {\n        return '指定商品'\n      }\n    },\n    formatStatus(status) {\n      if (status === 0) {\n        return '正常'\n      } else if (status === 1) {\n        return '已过期'\n      } else {\n        return '已下架'\n      }\n    }\n  },\n  data() {\n    return {\n      typeOptions: Object.assign({}, defaultTypeOptions),\n      statusOptions: Object.assign({}, defaultStatusOptions),\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        name: undefined,\n        type: undefined,\n        status: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        name: undefined,\n        desc: undefined,\n        tag: undefined,\n        total: 0,\n        discount: 0,\n        min: 0,\n        limit: 1,\n        type: 0,\n        status: 0,\n        goodsType: 0,\n        goodsValue: [],\n        timeType: 0,\n        days: 0,\n        startTime: null,\n        endTime: null\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [\n          { required: true, message: '优惠券标题不能为空', trigger: 'blur' }\n        ]\n      },\n      downloadLoading: false,\n      selectGoods: null,\n      goodsOptions: [],\n      selectGoodsCategory: null,\n      goodsCategoryOptions: [],\n      couponGoodsList: [],\n      couponCategoryList: []\n    }\n  },\n  created() {\n    this.getList()\n    this.getCategoryList()\n    this.getGoodsList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listCoupon(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: undefined,\n        desc: undefined,\n        tag: undefined,\n        total: 0,\n        discount: 0,\n        min: 0,\n        limit: 1,\n        type: 0,\n        status: 0,\n        goodsType: 0,\n        goodsValue: [],\n        timeType: 0,\n        days: 0,\n        startTime: null,\n        endTime: null\n      }\n      this.couponCategoryList = []\n      this.couponGoodsList = []\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          if (this.dataForm.goodsType === 1) {\n            this.dataForm.goodsValue = this.couponCategoryList.map(item => (item.goodsCategoryId))\n          }\n          if (this.dataForm.goodsType === 2) {\n            this.dataForm.goodsValue = this.couponGoodsList.map(item => (item.goodsId))\n          }\n          createCoupon(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '创建优惠券成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      if (this.dataForm.goodsType === 1) {\n        this.couponCategoryList = []\n        for (let i = 0, len = row.goodsValue.length; i < len; i++) {\n          this.couponCategoryList.push(this.getGoodsCategoryById(row.goodsValue[i]))\n        }\n      }\n      if (this.dataForm.goodsType === 2) {\n        this.couponGoodsList = []\n        for (let i = 0, len = row.goodsValue.length; i < len; i++) {\n          this.couponGoodsList.push(this.getGoodsById(row.goodsValue[i]))\n        }\n      }\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        if (this.dataForm.days === 0) {\n          this.dataForm.daysType = 1\n        } else {\n          this.dataForm.daysType = 0\n        }\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          if (this.dataForm.goodsType === 1) {\n            this.dataForm.goodsValue = this.couponCategoryList.map(item => (item.goodsCategoryId))\n          }\n          if (this.dataForm.goodsType === 2) {\n            this.dataForm.goodsValue = this.couponGoodsList.map(item => (item.goodsId))\n          }\n          updateCoupon(this.dataForm)\n            .then(() => {\n              for (const v of this.list) {\n                if (v.id === this.dataForm.id) {\n                  const index = this.list.indexOf(v)\n                  this.list.splice(index, 1, this.dataForm)\n                  break\n                }\n              }\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新优惠券成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteCoupon(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除优惠券成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDetail(row) {\n      this.$router.push({ path: '/promotion/couponDetail', query: { id: row.id }})\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '优惠券ID',\n          '名称',\n          '内容',\n          '标签',\n          '最低消费',\n          '减免金额',\n          '每人限领',\n          '优惠券数量'\n        ]\n        const filterVal = [\n          'id',\n          'name',\n          'desc',\n          'tag',\n          'min',\n          'discount',\n          'limit',\n          'total'\n        ]\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '优惠券信息')\n        this.downloadLoading = false\n      })\n    },\n    getGoodsList() {\n      listGoods({ limit: 0 }).then(response => {\n        const goodsList = response.data.data.list\n        this.goodsOptions = []\n        for (let i = 0; i < goodsList.length; i++) {\n          const item = goodsList[i]\n          this.goodsOptions.push({ goodsId: item.id, goodsName: item.name, goodsSn: item.goodsSn })\n        }\n      }).catch(() => {\n        this.goodsOptions = []\n      })\n    },\n    handleAddGoods() {\n      if (this.selectGoods === null) {\n        this.$message({\n          message: '请先选择商品',\n          type: 'warning'\n        })\n        return\n      }\n      this.couponGoodsList.push(this.getGoodsById(this.selectGoods))\n      this.selectGoods = null\n    },\n    handleDeleteGoods(index, row) {\n      this.couponGoodsList.splice(index, 1)\n    },\n    handleAddGoodsCategory() {\n      if (this.selectGoodsCategory === null || this.selectGoodsCategory.length === 0) {\n        this.$message({\n          message: '请先选择商品分类',\n          type: 'warning'\n        })\n        return\n      }\n      this.couponCategoryList.push(this.getGoodsCategoryByIds(this.selectGoodsCategory))\n      this.selectGoodsCategory = []\n    },\n    handleDeleteGoodsCategory(index, row) {\n      this.couponCategoryList.splice(index, 1)\n    },\n    getGoodsById(id) {\n      for (let i = 0; i < this.goodsOptions.length; i++) {\n        if (id === this.goodsOptions[i].goodsId) {\n          return this.goodsOptions[i]\n        }\n      }\n      return null\n    },\n    getCategoryList() {\n      listCategory().then(response => {\n        const list = response.data.data.list\n        this.goodsCategoryOptions = []\n        for (let i = 0; i < list.length; i++) {\n          const children = []\n          if (list[i].children != null && list[i].children.length > 0) {\n            for (let j = 0; j < list[i].children.length; j++) {\n              children.push({ label: list[i].children[j].name, value: list[i].children[j].id })\n            }\n          }\n          this.goodsCategoryOptions.push({ label: list[i].name, value: list[i].id, children: children })\n        }\n      })\n    },\n    getGoodsCategoryById(id) {\n      let name\n      let parentName\n      for (let i = 0; i < this.goodsCategoryOptions.length; i++) {\n        for (let j = 0; j < this.goodsCategoryOptions[i].children.length; j++) {\n          if (this.goodsCategoryOptions[i].children[j].value === id) {\n            parentName = this.goodsCategoryOptions[i].label\n            name = this.goodsCategoryOptions[i].children[j].label\n          }\n        }\n      }\n      return { goodsCategoryId: id, goodsCategoryName: name, parentCategoryName: parentName }\n    },\n    getGoodsCategoryByIds(ids) {\n      let name\n      let parentName\n      for (let i = 0; i < this.goodsCategoryOptions.length; i++) {\n        if (this.goodsCategoryOptions[i].value === ids[0]) {\n          parentName = this.goodsCategoryOptions[i].label\n          for (let j = 0; j < this.goodsCategoryOptions[i].children.length; j++) {\n            if (this.goodsCategoryOptions[i].children[j].value === ids[1]) {\n              name = this.goodsCategoryOptions[i].children[j].label\n            }\n          }\n        }\n      }\n      return { goodsCategoryId: ids[1], goodsCategoryName: name, parentCategoryName: parentName }\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/couponDetail.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <div class=\"table-layout\">\n      <el-row>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.name') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.desc') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.tag') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.type') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.min') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.discount') }}</el-col>\n      </el-row>\n      <el-row>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.name }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.desc }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.tag }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.type | formatType }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ $t('promotion_coupon_detail.text.coupon_min', { min: coupon.min }) }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ $t('promotion_coupon_detail.text.coupon_discount', { discount: coupon.discount }) }}</el-col>\n      </el-row>\n      <el-row>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.limit') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.status') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.goods_type') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.time_scope') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.code') }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell-title\">{{ $t('promotion_coupon_detail.table.total') }}</el-col>\n      </el-row>\n      <el-row>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.limit }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.status | formatStatus }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.goodsType | formatGoodsType }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ getTimeScope() }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.code }}</el-col>\n        <el-col :span=\"4\" class=\"table-cell\">{{ coupon.total === 0 ? $t('promotion_coupon_detail.text.unlimited') : coupon.total }}</el-col>\n      </el-row>\n    </div>\n\n    <!-- 查询操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_coupon_detail.placeholder.filter_user_id')\"/>\n      <el-select v-model=\"listQuery.status\" clearable style=\"width: 200px\" class=\"filter-item\" :placeholder=\"$t('promotion_coupon_detail.placeholder.filter_status')\">\n        <el-option v-for=\"type in useStatusOptions\" :key=\"type.value\" :label=\"type.label\" :value=\"type.value\"/>\n      </el-select>\n      <el-button v-permission=\"['GET /admin/coupon/listuser']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.add_time')\" prop=\"addTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.use_status')\" prop=\"status\">\n        <template slot-scope=\"scope\">{{ scope.row.status | formatUseStatus }}</template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.order_id')\" prop=\"orderId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_coupon_detail.table.used_time')\" prop=\"usedTime\" />\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { readCoupon, listCouponUser } from '@/api/coupon'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nconst defaultTypeOptions = [\n  {\n    label: '通用领券',\n    value: 0\n  },\n  {\n    label: '注册赠券',\n    value: 1\n  },\n  {\n    label: '兑换码',\n    value: 2\n  }\n]\n\nconst defaultUseStatusOptions = [\n  {\n    label: '未使用',\n    value: 0\n  },\n  {\n    label: '已使用',\n    value: 1\n  },\n  {\n    label: '已过期',\n    value: 2\n  },\n  {\n    label: '已下架',\n    value: 3\n  }\n]\n\nexport default {\n  name: 'CouponDetail',\n  components: { Pagination },\n  filters: {\n    formatType(type) {\n      for (let i = 0; i < defaultTypeOptions.length; i++) {\n        if (type === defaultTypeOptions[i].value) {\n          return defaultTypeOptions[i].label\n        }\n      }\n      return ''\n    },\n    formatGoodsType(goodsType) {\n      if (goodsType === 0) {\n        return '全场通用'\n      } else if (goodsType === 1) {\n        return '指定分类'\n      } else {\n        return '指定商品'\n      }\n    },\n    formatStatus(status) {\n      if (status === 0) {\n        return '正常'\n      } else if (status === 1) {\n        return '已过期'\n      } else {\n        return '已下架'\n      }\n    },\n    formatUseStatus(status) {\n      if (status === 0) {\n        return '未使用'\n      } else if (status === 1) {\n        return '已使用'\n      } else if (status === 3) {\n        return '已过期'\n      } else {\n        return '已下架'\n      }\n    }\n  },\n  data() {\n    return {\n      typeOptions: Object.assign({}, defaultTypeOptions),\n      useStatusOptions: Object.assign({}, defaultUseStatusOptions),\n      coupon: {},\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        couponId: 0,\n        userId: undefined,\n        status: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.init()\n  },\n  methods: {\n    init: function() {\n      if (this.$route.query.id == null) {\n        return\n      }\n      readCoupon(this.$route.query.id).then(response => {\n        this.coupon = response.data.data\n      })\n      this.listQuery.couponId = this.$route.query.id\n      this.getList()\n    },\n    getList() {\n      this.listLoading = true\n      listCouponUser(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    getTimeScope() {\n      if (this.coupon.timeType === 0) {\n        return '领取' + this.coupon.days + '天有效'\n      } else if (this.coupon.timeType === 1) {\n        return '自' + this.coupon.startTime + '至' + this.coupon.endTime + '有效'\n      } else {\n        return '未知'\n      }\n    },\n    getGoodsScope() {\n    }\n  }\n}\n</script>\n<style scoped>\n  .filter-container {\n    margin-top: 20px;\n  }\n\n  .table-layout {\n    margin-top: 20px;\n    border-left: 1px solid #DCDFE6;\n    border-top: 1px solid #DCDFE6;\n  }\n  .table-cell {\n    height: 60px;\n    line-height: 40px;\n    border-right: 1px solid #DCDFE6;\n    border-bottom: 1px solid #DCDFE6;\n    padding: 10px;\n    font-size: 14px;\n    color: #606266;\n    text-align: center;\n    overflow: hidden;\n  }\n  .table-cell-title {\n    border-right: 1px solid #DCDFE6;\n    border-bottom: 1px solid #DCDFE6;\n    padding: 10px;\n    background: #F2F6FC;\n    text-align: center;\n    font-size: 14px;\n    color: #303133;\n  }\n</style>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/grouponActivity.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.grouponRuleId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_groupon_activity.placeholder.filter_groupon_rule_id')\" />\n      <el-button v-permission=\"['GET /admin/groupon/listRecord']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button\n        :loading=\"downloadLoading\"\n        class=\"filter-item\"\n        type=\"primary\"\n        icon=\"el-icon-download\"\n        @click=\"handleDownload\"\n      >{{ $t('app.button.download') }}\n      </el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column type=\"expand\">\n        <template slot-scope=\"scope\">\n          <el-table :data=\"scope.row.subGroupons\" border style=\"width: 100%\">\n            <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.order_id')\" prop=\"orderId\" />\n            <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.user_id')\" prop=\"userId\" />\n          </el-table>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.groupon_order_id')\" prop=\"groupon.orderId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.groupon_user_id')\" prop=\"groupon.userId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.subgroupons_length')\" prop=\"subGroupons.length\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.rules_discount')\" prop=\"rules.discount\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.rules_discount_member')\" prop=\"rules.discountMember\" />\n\n      <el-table-column align=\"center\" property=\"iconUrl\" :label=\"$t('promotion_groupon_activity.table.groupon_share_url')\">\n        <template slot-scope=\"scope\">\n          <img :src=\"scope.row.groupon.shareUrl\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.rules_add_time')\" prop=\"rules.addTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_activity.table.rules_expire_time')\" prop=\"rules.expireTime\" />\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n\n  </div>\n</template>\n\n<style>\n  .table-expand {\n    font-size: 0;\n  }\n\n  .table-expand label {\n    width: 100px;\n    color: #99a9bf;\n  }\n\n  .table-expand .el-form-item {\n    margin-right: 0;\n    margin-bottom: 0;\n  }\n\n  .gallery {\n    width: 80px;\n    margin-right: 10px;\n  }\n</style>\n\n<script>\nimport { listRecord } from '@/api/groupon'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'GrouponActivity',\n  components: { BackToTop, Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        grouponRuleId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      goodsDetail: '',\n      detailDialogVisible: false,\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listRecord(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n        import('@/vendor/Export2Excel').then(excel => {\n          const tHeader = ['商品ID', '名称', '首页主图', '折扣', '人数要求', '活动开始时间', '活动结束时间']\n          const filterVal = ['id', 'name', 'pic_url', 'discount', 'discountMember', 'addTime', 'expireTime']\n          excel.export_json_to_excel2(tHeader, this.list, filterVal, '商品信息')\n          this.downloadLoading = false\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/grouponRule.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.goodsId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_groupon_rule.placeholder.filter_goods_id')\" />\n      <el-button v-permission=\"['GET /admin/groupon/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/groupon/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button\n        :loading=\"downloadLoading\"\n        class=\"filter-item\"\n        type=\"primary\"\n        icon=\"el-icon-download\"\n        @click=\"handleDownload\"\n      >{{ $t('app.button.download') }}\n      </el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.id')\" prop=\"id\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.goods_id')\" prop=\"goodsId\" />\n\n      <el-table-column align=\"center\" min-width=\"100\" :label=\"$t('promotion_groupon_rule.table.goods_name')\" prop=\"goodsName\" />\n\n      <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_groupon_rule.table.pic_url')\">\n        <template slot-scope=\"scope\">\n          <img :src=\"scope.row.picUrl\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.discount')\" prop=\"discount\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.discount_member')\" prop=\"discountMember\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.status')\" prop=\"status\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.status === 0 ? 'success' : 'error' \">{{ statusMap[scope.row.status] }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.expire_time')\" prop=\"expireTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_groupon_rule.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/groupon/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/groupon/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form\n        ref=\"dataForm\"\n        :rules=\"rules\"\n        :model=\"dataForm\"\n        status-icon\n        label-position=\"left\"\n        label-width=\"120px\"\n        style=\"width: 400px; margin-left:50px;\"\n      >\n        <el-form-item :label=\"$t('promotion_groupon_rule.form.goods_id')\" prop=\"goodsId\">\n          <el-input v-model=\"dataForm.goodsId\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_groupon_rule.form.discount')\" prop=\"discount\">\n          <el-input v-model=\"dataForm.discount\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_groupon_rule.form.discount_member')\" prop=\"discountMember\">\n          <el-input v-model=\"dataForm.discountMember\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('promotion_groupon_rule.form.expire_time')\" prop=\"expireTime\">\n          <el-date-picker\n            v-model=\"dataForm.expireTime\"\n            type=\"datetime\"\n            :placeholder=\"$t('promotion_groupon_rule.placeholder.expire_time')\"\n            value-format=\"yyyy-MM-dd HH:mm:ss\"\n          />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n\n  </div>\n</template>\n\n<script>\nimport { listGroupon, publishGroupon, deleteGroupon, editGroupon } from '@/api/groupon'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'GrouponRule',\n  components: { BackToTop, Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        goodsId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false,\n      dataForm: {\n        id: undefined,\n        goodsId: '',\n        discount: '',\n        discountMember: '',\n        expireTime: undefined\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      statusMap: [\n        '正常',\n        '到期下线',\n        '提前下线'\n      ],\n      rules: {\n        goodsId: [{ required: true, message: '商品不能为空', trigger: 'blur' }],\n        discount: [{ required: true, message: '团购折扣不能为空', trigger: 'blur' }],\n        discountMember: [{ required: true, message: '团购人数不能为空', trigger: 'blur' }],\n        expireTime: [{ required: true, message: '过期时间不能为空', trigger: 'blur' }]\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listGroupon(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        goodsId: '',\n        discount: '',\n        discountMember: '',\n        expireTime: undefined\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          publishGroupon(this.dataForm).then(response => {\n            this.list.unshift(response.data.data)\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '创建团购规则成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          editGroupon(this.dataForm).then(() => {\n            for (const v of this.list) {\n              if (v.id === this.dataForm.id) {\n                const index = this.list.indexOf(v)\n                this.list.splice(index, 1, this.dataForm)\n                break\n              }\n            }\n            this.dialogFormVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '更新团购规则成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteGroupon(row).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '删除团购规则成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n        import('@/vendor/Export2Excel').then(excel => {\n          const tHeader = ['商品ID', '名称', '首页主图', '折扣', '人数要求', '活动开始时间', '活动结束时间']\n          const filterVal = ['id', 'name', 'pic_url', 'discount', 'discountMember', 'addTime', 'expireTime']\n          excel.export_json_to_excel2(tHeader, this.list, filterVal, '商品信息')\n          this.downloadLoading = false\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/topic.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.title\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic.placeholder.filter_title')\" />\n      <el-input v-model=\"listQuery.subtitle\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic.placeholder.filter_subtitle')\" />\n      <el-select v-model=\"listQuery.sort\" class=\"filter-item\" :placeholder=\"$t('promotion_topic.placeholder.filter_sort')\">\n        <el-option v-for=\"item in options\" :key=\"item.value\" :label=\"item.label\" :value=\"item.value\" />\n      </el-select>\n      <el-button v-permission=\"['GET /admin/topic/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <div class=\"operator-container\">\n      <el-button v-permission=\"['POST /admin/topic/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button v-permission=\"['POST /admin/topic/batch-delete']\" class=\"filter-item\" type=\"danger\" icon=\"el-icon-delete\" @click=\"handleBatchDelete\">{{ $t('app.button.batch_delete') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row @selection-change=\"handleSelectionChange\">\n      <el-table-column type=\"selection\" width=\"55\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.title')\" prop=\"title\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.subtitle')\" min-width=\"200\" prop=\"subtitle\" />\n\n      <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_topic.table.pic_url')\">\n        <template slot-scope=\"scope\">\n          <el-image :src=\"thumbnail(scope.row.picUrl)\" :preview-src-list=\"toPreview(scope.row, scope.row.picUrl)\" style=\"width: 40px; height: 40px\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.content')\" prop=\"content\">\n        <template slot-scope=\"scope\">\n          <el-dialog :visible.sync=\"contentDialogVisible\" :title=\"$t('promotion_topic.dialog.content_detail')\">\n            <div v-html=\"contentDetail\" />\n          </el-dialog>\n          <el-button type=\"primary\" size=\"mini\" @click=\"showContent(scope.row.content)\">{{ $t('app.button.view') }}</el-button>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.price')\" prop=\"price\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.read_count')\" prop=\"readCount\" />\n\n      <el-table-column align=\"center\" :label=\"$t('promotion_topic.table.actions')\" min-width=\"100\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/topic/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/topic/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n\n  </div>\n</template>\n\n<style>\n.el-dialog {\n  width: 800px;\n}\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listTopic, deleteTopic, batchDeleteTopic } from '@/api/topic'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport _ from 'lodash'\nimport { thumbnail, toPreview } from '@/utils/index'\n\nexport default {\n  name: 'Topic',\n  components: { BackToTop, Pagination },\n  data() {\n    return {\n      thumbnail,\n      toPreview,\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        title: undefined,\n        subtitle: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      options: [{\n        value: 'id',\n        label: '按序号排序'\n      }, {\n        value: 'add_time',\n        label: '按时间排序'\n      }, {\n        value: 'price',\n        label: '按价格排序'\n      }],\n      multipleSelection: [],\n      contentDetail: '',\n      contentDialogVisible: false,\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listTopic(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleCreate() {\n      this.$router.push({ path: '/promotion/topic-create' })\n    },\n    handleUpdate(row) {\n      this.$router.push({ path: '/promotion/topic-edit', query: { id: row.id }})\n    },\n    handleDelete(row) {\n      deleteTopic(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除专题成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleSelectionChange(val) {\n      this.multipleSelection = val\n    },\n    showContent(content) {\n      this.contentDetail = content\n      this.contentDialogVisible = true\n    },\n    handleBatchDelete() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      batchDeleteTopic({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量删除专题成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '专题ID',\n          '专题标题',\n          '专题子标题',\n          '专题内容',\n          '专题图片',\n          '商品低价',\n          '阅读量',\n          '专题商品'\n        ]\n        const filterVal = [\n          'id',\n          'title',\n          'subtitle',\n          'content',\n          'picUrl',\n          'price',\n          'readCount',\n          'goods'\n        ]\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '专题信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/topicCreate.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <el-form ref=\"topic\" :rules=\"rules\" :model=\"topic\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 800px; margin-left:50px;\">\n      <el-form-item :label=\"$t('promotion_topic_edit.form.title')\" prop=\"title\">\n        <el-input v-model=\"topic.title\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.subtitle')\" prop=\"subtitle\">\n        <el-input v-model=\"topic.subtitle\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.pic_url')\" prop=\"picUrl\">\n        <el-upload\n          :headers=\"headers\"\n          :action=\"uploadPath\"\n          :show-file-list=\"false\"\n          :on-success=\"uploadPicUrl\"\n          class=\"avatar-uploader\"\n          accept=\".jpg,.jpeg,.png,.gif\">\n          <img v-if=\"topic.picUrl\" :src=\"topic.picUrl\" class=\"avatar\">\n          <i v-else class=\"el-icon-plus avatar-uploader-icon\"/>\n        </el-upload>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.content')\" prop=\"content\">\n        <editor :init=\"editorInit\" v-model=\"topic.content\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.price')\" prop=\"price\">\n        <el-input v-model=\"topic.price\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.read_count')\" prop=\"readCount\">\n        <el-input v-model=\"topic.readCount\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.goods')\" prop=\"goods\">\n        <el-button style=\"float:right;\" size=\"mini\" type=\"primary\" @click=\"handleCreate()\">{{ $t('promotion_topic_edit.button.goods_create') }}</el-button>\n\n        <!-- 查询结果 -->\n        <el-table :data=\"goodsList\" border fit highlight-current-row>\n\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_id')\" prop=\"id\" />\n          <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_topic_edit.table.goods_pic_url')\">\n            <template slot-scope=\"scope\">\n              <img :src=\"scope.row.picUrl\" width=\"60\">\n            </template>\n          </el-table-column>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_name')\" prop=\"name\" />\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_brief')\" prop=\"brief\" />\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_actions')\" class-name=\"small-padding fixed-width\">\n            <template slot-scope=\"scope\">\n              <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-form-item>\n\n    </el-form>\n    <div slot=\"footer\" class=\"dialog-footer\">\n      <el-button @click=\"handleCancel\">{{ $t('app.button.cancel') }}</el-button>\n      <el-button type=\"primary\" @click=\"handleConfirm\">{{ $t('app.button.confirm') }}</el-button>\n    </div>\n\n    <el-dialog :visible.sync=\"addVisiable\" :title=\"$t('promotion_topic_edit.dialog.add_goods')\">\n      <div class=\"search\">\n        <el-input v-model=\"listQuery.goodsSn\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic_edit.placeholder.search_goods_sn')\"/>\n        <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic_edit.placeholder.search_name')\"/>\n        <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n        <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row @selection-change=\"handleSelectionChange\">\n          <el-table-column type=\"selection\" width=\"55\"/>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.search_goods_id')\" prop=\"id\" />\n          <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_topic_edit.table.search_goods_pic_url')\">\n            <template slot-scope=\"scope\">\n              <img :src=\"scope.row.picUrl\" width=\"40\">\n            </template>\n          </el-table-column>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.search_goods_name')\" prop=\"name\" />\n        </el-table>\n        <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n      </div>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"addVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"confirmAdd\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.el-dialog {\n  width: 800px;\n}\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { createTopic } from '@/api/topic'\nimport { listGoods } from '@/api/goods'\nimport { createStorage, uploadPath } from '@/api/storage'\nimport BackToTop from '@/components/BackToTop'\nimport Editor from '@tinymce/tinymce-vue'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport { getToken } from '@/utils/auth'\n\nexport default {\n  name: 'TopicEdit',\n  components: { BackToTop, Editor, Pagination },\n  data() {\n    return {\n      uploadPath,\n      id: 0,\n      topic: {\n        goods: []\n      },\n      goodsList: [],\n      addVisiable: false,\n      list: [],\n      total: 0,\n      listLoading: false,\n      listQuery: {\n        page: 1,\n        limit: 5,\n        id: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      selectedlist: [],\n      rules: {\n        title: [\n          { required: true, message: '专题标题不能为空', trigger: 'blur' }\n        ],\n        subtitle: [\n          { required: true, message: '专题子标题不能为空', trigger: 'blur' }\n        ],\n        content: [\n          { required: true, message: '专题内容不能为空', trigger: 'blur' }\n        ],\n        price: [\n          { required: true, message: '专题低价不能为空', trigger: 'blur' }\n        ]\n      },\n      editorInit: {\n        language: 'zh_CN',\n        convert_urls: false,\n        height: 500,\n        plugins: [\n          'advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'\n        ],\n        toolbar: [\n          'searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample',\n          'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'\n        ],\n        images_upload_handler: function(blobInfo, success, failure) {\n          const formData = new FormData()\n          formData.append('file', blobInfo.blob())\n          createStorage(formData)\n            .then(res => {\n              success(res.data.data.url)\n            })\n            .catch(() => {\n              failure('上传失败，请重新上传')\n            })\n        }\n      }\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listGoods(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleSelectionChange(val) {\n      this.selectedlist = val\n    },\n    uploadPicUrl: function(response) {\n      this.topic.picUrl = response.data.url\n    },\n    handleCreate() {\n      this.listQuery = {\n        page: 1,\n        limit: 5,\n        id: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      }\n      this.list = []\n      this.total = 0\n      this.selectedlist = []\n      this.addVisiable = true\n    },\n    confirmAdd() {\n      const newGoodsIds = []\n      const newGoodsList = []\n      this.selectedlist.forEach(item => {\n        const id = item.id\n        let found = false\n        this.topic.goods.forEach(goodsId => {\n          if (id === goodsId) {\n            found = true\n          }\n        })\n        if (!found) {\n          newGoodsIds.push(id)\n          newGoodsList.push(item)\n        }\n      })\n\n      if (newGoodsIds.length > 0) {\n        this.topic.goods = this.topic.goods.concat(newGoodsIds)\n        this.goodsList = this.goodsList.concat(newGoodsList)\n      }\n      this.addVisiable = false\n    },\n    handleDelete(row) {\n      for (var index = 0; index < this.topic.goods.length; index++) {\n        if (row.id === this.topic.goods[index]) {\n          this.topic.goods.splice(index, 1)\n        }\n      }\n      for (var index2 = 0; index2 < this.goodsList.length; index2++) {\n        if (row.id === this.goodsList[index2].id) {\n          this.goodsList.splice(index2, 1)\n        }\n      }\n    },\n    handleCancel() {\n      this.$router.push({ path: '/promotion/topic' })\n    },\n    handleConfirm() {\n      this.$refs['topic'].validate(valid => {\n        if (valid) {\n          createTopic(this.topic).then(response => {\n            this.$router.push({ path: '/promotion/topic' })\n          })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/promotion/topicEdit.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <el-form ref=\"topic\" :rules=\"rules\" :model=\"topic\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 800px; margin-left:50px;\">\n      <el-form-item :label=\"$t('promotion_topic_edit.form.title')\" prop=\"title\">\n        <el-input v-model=\"topic.title\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.subtitle')\" prop=\"subtitle\">\n        <el-input v-model=\"topic.subtitle\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.pic_url')\" prop=\"picUrl\">\n        <el-upload\n          :headers=\"headers\"\n          :action=\"uploadPath\"\n          :show-file-list=\"false\"\n          :on-success=\"uploadPicUrl\"\n          class=\"avatar-uploader\"\n          accept=\".jpg,.jpeg,.png,.gif\">\n          <img v-if=\"topic.picUrl\" :src=\"topic.picUrl\" class=\"avatar\">\n          <i v-else class=\"el-icon-plus avatar-uploader-icon\"/>\n        </el-upload>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.content')\" prop=\"content\">\n        <editor :init=\"editorInit\" v-model=\"topic.content\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.price')\" prop=\"price\">\n        <el-input v-model=\"topic.price\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.read_count')\" prop=\"readCount\">\n        <el-input v-model=\"topic.readCount\"/>\n      </el-form-item>\n      <el-form-item :label=\"$t('promotion_topic_edit.form.goods')\" prop=\"goods\">\n        <el-button style=\"float:right;\" size=\"mini\" type=\"primary\" @click=\"handleCreate()\">{{ $t('promotion_topic_edit.button.goods_create') }}</el-button>\n\n        <!-- 查询结果 -->\n        <el-table :data=\"goodsList\" border fit highlight-current-row>\n\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_id')\" prop=\"id\" />\n          <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_topic_edit.table.goods_pic_url')\">\n            <template slot-scope=\"scope\">\n              <img :src=\"scope.row.picUrl\" width=\"60\">\n            </template>\n          </el-table-column>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_name')\" prop=\"name\" />\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_brief')\" prop=\"brief\" />\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.goods_actions')\" class-name=\"small-padding fixed-width\">\n            <template slot-scope=\"scope\">\n              <el-button type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n            </template>\n          </el-table-column>\n        </el-table>\n      </el-form-item>\n\n    </el-form>\n    <div slot=\"footer\" class=\"dialog-footer\">\n      <el-button @click=\"handleCancel\">{{ $t('app.button.cancel') }}</el-button>\n      <el-button type=\"primary\" @click=\"handleConfirm\">{{ $t('app.button.confirm') }}</el-button>\n    </div>\n\n    <el-dialog :visible.sync=\"addVisiable\" :title=\"$t('promotion_topic_edit.dialog.add_goods')\">\n      <div class=\"search\">\n        <el-input v-model=\"listQuery.goodsSn\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic_edit.placeholder.search_goods_sn')\"/>\n        <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('promotion_topic_edit.placeholder.search_name')\"/>\n        <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n        <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row @selection-change=\"handleSelectionChange\">\n          <el-table-column type=\"selection\" width=\"55\"/>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.search_goods_id')\" prop=\"id\" />\n          <el-table-column align=\"center\" property=\"picUrl\" :label=\"$t('promotion_topic_edit.table.search_goods_pic_url')\">\n            <template slot-scope=\"scope\">\n              <img :src=\"scope.row.picUrl\" width=\"40\">\n            </template>\n          </el-table-column>\n          <el-table-column align=\"center\" :label=\"$t('promotion_topic_edit.table.search_goods_name')\" prop=\"name\" />\n        </el-table>\n        <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n      </div>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"addVisiable = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"confirmAdd\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.el-dialog {\n  width: 800px;\n}\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { readTopic, updateTopic } from '@/api/topic'\nimport { listGoods } from '@/api/goods'\nimport { createStorage, uploadPath } from '@/api/storage'\nimport BackToTop from '@/components/BackToTop'\nimport Editor from '@tinymce/tinymce-vue'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport { getToken } from '@/utils/auth'\n\nexport default {\n  name: 'TopicEdit',\n  components: { BackToTop, Editor, Pagination },\n  data() {\n    return {\n      uploadPath,\n      id: 0,\n      topic: {},\n      goodsList: [],\n      addVisiable: false,\n      list: [],\n      total: 0,\n      listLoading: false,\n      listQuery: {\n        page: 1,\n        limit: 5,\n        id: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      selectedlist: [],\n      rules: {\n        title: [\n          { required: true, message: '专题标题不能为空', trigger: 'blur' }\n        ],\n        subtitle: [\n          { required: true, message: '专题子标题不能为空', trigger: 'blur' }\n        ],\n        content: [\n          { required: true, message: '专题内容不能为空', trigger: 'blur' }\n        ],\n        price: [\n          { required: true, message: '专题低价不能为空', trigger: 'blur' }\n        ]\n      },\n      editorInit: {\n        language: 'zh_CN',\n        convert_urls: false,\n        height: 500,\n        plugins: [\n          'advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'\n        ],\n        toolbar: [\n          'searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample',\n          'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'\n        ],\n        images_upload_handler: function(blobInfo, success, failure) {\n          const formData = new FormData()\n          formData.append('file', blobInfo.blob())\n          createStorage(formData)\n            .then(res => {\n              success(res.data.data.url)\n            })\n            .catch(() => {\n              failure('上传失败，请重新上传')\n            })\n        }\n      }\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    if (this.$route.query.id == null) {\n      return\n    }\n\n    this.id = this.$route.query.id\n    this.getTopic()\n  },\n  methods: {\n    getTopic() {\n      this.listLoading = true\n      readTopic({ id: this.id })\n        .then(response => {\n          this.topic = response.data.data.topic\n          this.goodsList = response.data.data.goodsList\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.topic = {}\n          this.goodsList = []\n          this.listLoading = false\n        })\n    },\n    getList() {\n      this.listLoading = true\n      listGoods(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleSelectionChange(val) {\n      this.selectedlist = val\n    },\n    uploadPicUrl: function(response) {\n      this.topic.picUrl = response.data.url\n    },\n    handleCreate() {\n      this.listQuery = {\n        page: 1,\n        limit: 5,\n        id: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      }\n      this.list = []\n      this.total = 0\n      this.selectedlist = []\n      this.addVisiable = true\n    },\n    confirmAdd() {\n      const newGoodsIds = []\n      const newGoodsList = []\n      this.selectedlist.forEach(item => {\n        const id = item.id\n        let found = false\n        this.topic.goods.forEach(goodsId => {\n          if (id === goodsId) {\n            found = true\n          }\n        })\n        if (!found) {\n          newGoodsIds.push(id)\n          newGoodsList.push(item)\n        }\n      })\n\n      if (newGoodsIds.length > 0) {\n        this.topic.goods = this.topic.goods.concat(newGoodsIds)\n        this.goodsList = this.goodsList.concat(newGoodsList)\n      }\n      this.addVisiable = false\n    },\n    handleDelete(row) {\n      for (var index = 0; index < this.topic.goods.length; index++) {\n        if (row.id === this.topic.goods[index]) {\n          this.topic.goods.splice(index, 1)\n        }\n      }\n      for (var index2 = 0; index2 < this.goodsList.length; index2++) {\n        if (row.id === this.goodsList[index2].id) {\n          this.goodsList.splice(index2, 1)\n        }\n      }\n    },\n    handleCancel() {\n      this.$router.push({ path: '/promotion/topic' })\n    },\n    handleConfirm() {\n      this.$refs['topic'].validate(valid => {\n        if (valid) {\n          updateTopic(this.topic).then(response => {\n            this.$router.push({ path: '/promotion/topic' })\n          })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/redirect/index.vue",
    "content": "<script>\nexport default {\n  created() {\n    const { params, query } = this.$route\n    const { path } = params\n    this.$router.replace({ path: '/' + path, query })\n  },\n  render: function(h) {\n    return h() // avoid warning message\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/stat/goods.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <ve-line :extend=\"chartExtend\" :data=\"chartData\" :settings=\"chartSettings\"/>\n  </div>\n</template>\n\n<script>\nimport { statGoods } from '@/api/stat'\nimport VeLine from 'v-charts/lib/line'\n\nexport default {\n  components: { VeLine },\n  data() {\n    return {\n      chartData: {},\n      chartSettings: {},\n      chartExtend: {}\n    }\n  },\n  created() {\n    statGoods().then(response => {\n      this.chartData = response.data.data\n      this.chartSettings = {\n        labelMap: {\n          'orders': '订单量',\n          'products': '下单货品数量',\n          'amount': '下单货品总额'\n        }\n      }\n      this.chartExtend = {\n        xAxis: { boundaryGap: true }\n      }\n    })\n  }\n\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/stat/order.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <ve-line :extend=\"chartExtend\" :data=\"chartData\" :settings=\"chartSettings\"/>\n  </div>\n</template>\n\n<script>\nimport { statOrder } from '@/api/stat'\nimport VeLine from 'v-charts/lib/line'\nexport default {\n  components: { VeLine },\n  data() {\n    return {\n      chartData: {},\n      chartSettings: {},\n      chartExtend: {}\n    }\n  },\n  created() {\n    statOrder().then(response => {\n      this.chartData = response.data.data\n      this.chartSettings = {\n        labelMap: {\n          'orders': '订单量',\n          'customers': '下单用户',\n          'amount': '订单总额',\n          'pcr': '客单价'\n        }\n      }\n      this.chartExtend = {\n        xAxis: { boundaryGap: true }\n      }\n    })\n  }\n\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/stat/user.vue",
    "content": "<template>\n  <div class=\"app-container\">\n    <ve-histogram :extend=\"chartExtend\" :data=\"chartData\" :settings=\"chartSettings\"/>\n  </div>\n</template>\n\n<script>\nimport { statUser } from '@/api/stat'\nimport VeHistogram from 'v-charts/lib/histogram'\n\nexport default {\n  components: { VeHistogram },\n  data() {\n    return {\n      chartData: {},\n      chartSettings: {},\n      chartExtend: {}\n    }\n  },\n  created() {\n    statUser().then(response => {\n      this.chartData = response.data.data\n      this.chartSettings = {\n        labelMap: {\n          'users': '用户增长数'\n        }\n      }\n      this.chartExtend = {\n        xAxis: { boundaryGap: true },\n        series: {\n          label: { show: true, position: 'top' }\n        }\n      }\n    })\n  }\n\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/sys/admin.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.username\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_admin.placeholder.filter_username')\" />\n      <el-button v-permission=\"['GET /admin/admin/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/admin/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" :label=\"$t('sys_admin.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_admin.table.username')\" prop=\"username\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_admin.table.avatar')\" prop=\"avatar\">\n        <template slot-scope=\"scope\">\n          <img v-if=\"scope.row.avatar\" :src=\"scope.row.avatar\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('sys_admin.table.role_ids')\" prop=\"roleIds\">\n        <template slot-scope=\"scope\">\n          <el-tag v-for=\"roleId in scope.row.roleIds\" :key=\"roleId\" type=\"primary\" style=\"margin-right: 20px;\"> {{ formatRole(roleId) }} </el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('sys_admin.table.actions')\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/admin/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/admin/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('sys_admin.form.username')\" prop=\"username\">\n          <el-input v-model=\"dataForm.username\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('sys_admin.form.password')\" prop=\"password\">\n          <el-input v-model=\"dataForm.password\" type=\"password\" auto-complete=\"off\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('sys_admin.form.avatar')\" prop=\"avatar\">\n          <el-upload\n            :headers=\"headers\"\n            :action=\"uploadPath\"\n            :show-file-list=\"false\"\n            :on-success=\"uploadAvatar\"\n            class=\"avatar-uploader\"\n            accept=\".jpg,.jpeg,.png,.gif\"\n          >\n            <img v-if=\"dataForm.avatar\" :src=\"dataForm.avatar\" class=\"avatar\">\n            <i v-else class=\"el-icon-plus avatar-uploader-icon\" />\n          </el-upload>\n        </el-form-item>\n        <el-form-item :label=\"$t('sys_admin.form.role_ids')\" prop=\"roleIds\">\n          <el-select v-model=\"dataForm.roleIds\" multiple :placeholder=\"$t('sys_admin.placeholder.role_ids')\">\n            <el-option\n              v-for=\"item in roleOptions\"\n              :key=\"item.value\"\n              :label=\"item.label\"\n              :value=\"item.value\"\n            />\n          </el-select>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<style>\n.avatar-uploader .el-upload {\n  border: 1px dashed #d9d9d9;\n  border-radius: 6px;\n  cursor: pointer;\n  position: relative;\n  overflow: hidden;\n}\n.avatar-uploader .el-upload:hover {\n  border-color: #20a0ff;\n}\n.avatar-uploader-icon {\n  font-size: 28px;\n  color: #8c939d;\n  width: 120px;\n  height: 120px;\n  line-height: 120px;\n  text-align: center;\n}\n.avatar {\n  width: 145px;\n  height: 145px;\n  display: block;\n}\n</style>\n\n<script>\nimport { listAdmin, createAdmin, updateAdmin, deleteAdmin } from '@/api/admin'\nimport { roleOptions } from '@/api/role'\nimport { uploadPath } from '@/api/storage'\nimport { getToken } from '@/utils/auth'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Admin',\n  components: { Pagination },\n  data() {\n    return {\n      uploadPath,\n      list: null,\n      total: 0,\n      roleOptions: null,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        username: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        username: undefined,\n        password: undefined,\n        avatar: undefined,\n        roleIds: []\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        username: [\n          { required: true, message: '管理员名称不能为空', trigger: 'blur' }\n        ],\n        password: [{ required: true, message: '密码不能为空', trigger: 'blur' }]\n      },\n      downloadLoading: false\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.getList()\n\n    roleOptions()\n      .then(response => {\n        this.roleOptions = response.data.data.list\n      })\n  },\n  methods: {\n    formatRole(roleId) {\n      for (let i = 0; i < this.roleOptions.length; i++) {\n        if (roleId === this.roleOptions[i].value) {\n          return this.roleOptions[i].label\n        }\n      }\n      return ''\n    },\n    getList() {\n      this.listLoading = true\n      listAdmin(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        username: undefined,\n        password: undefined,\n        avatar: undefined,\n        roleIds: []\n      }\n    },\n    uploadAvatar: function(response) {\n      this.dataForm.avatar = response.data.url\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createAdmin(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '添加管理员成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateAdmin(this.dataForm)\n            .then(() => {\n              for (const v of this.list) {\n                if (v.id === this.dataForm.id) {\n                  const index = this.list.indexOf(v)\n                  this.list.splice(index, 1, this.dataForm)\n                  break\n                }\n              }\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新管理员成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteAdmin(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除管理员成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['管理员ID', '管理员名称', '管理员头像']\n        const filterVal = ['id', 'username', 'avatar']\n        excel.export_json_to_excel2(\n          tHeader,\n          this.list,\n          filterVal,\n          '管理员信息'\n        )\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/sys/log.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_log.placeholder.filter_name')\"/>\n      <el-button v-permission=\"['GET /admin/log/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.admin')\" prop=\"admin\" />\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.ip')\" prop=\"ip\" />\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.add_time')\" prop=\"addTime\" />\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.type')\" prop=\"type\">\n        <template slot-scope=\"scope\">\n          <el-tag>{{ scope.row.type | typeFilter }}</el-tag>\n        </template>\n      </el-table-column>\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.action')\" prop=\"action\" />\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.status')\" prop=\"status\">\n        <template slot-scope=\"scope\">\n          <el-tag :type=\"scope.row.status ? 'success' : 'error' \">{{ $t(scope.row.status ? 'sys_log.value.status_success' : 'sys_log.value.status_error') }}</el-tag>\n        </template>\n      </el-table-column>\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.result')\" prop=\"result\" />\n      <el-table-column align=\"center\" :label=\"$t('sys_log.table.comment')\" prop=\"comment\" />\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listLog } from '@/api/log'\nimport Pagination from '@/components/Pagination'\n\nconst typeMap = {\n  0: '一般操作',\n  1: '安全操作',\n  2: '订单操作',\n  3: '其他操作'\n}\n\nexport default {\n  name: 'Log',\n  components: { Pagination },\n  filters: {\n    typeFilter(type) {\n      return typeMap[type]\n    }\n  },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      rules: {\n        name: [\n          { required: true, message: '角色名称不能为空', trigger: 'blur' }\n        ]\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listLog(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/sys/notice.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.title\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_notice.placeholder.filter_title')\" />\n      <el-input v-model=\"listQuery.content\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_notice.placeholder.filter_content')\" />\n      <el-button v-permission=\"['GET /admin/notice/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <div class=\"operator-container\">\n      <el-button v-permission=\"['POST /admin/notice/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button v-permission=\"['GET /admin/notice/batch-delete']\" class=\"filter-item\" type=\"danger\" icon=\"el-icon-delete\" @click=\"handleBatchDelete\">{{ $t('app.button.batch_delete') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row @selection-change=\"handleSelectionChange\">\n      <el-table-column type=\"selection\" width=\"55\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_notice.table.title')\" prop=\"title\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_notice.table.content')\" prop=\"content\">\n        <template slot-scope=\"scope\">\n          <el-dialog :visible.sync=\"contentDialogVisible\" :title=\"$t('sys_notice.dialog.content_detail')\">\n            <div v-html=\"contentDetail\" />\n          </el-dialog>\n          <el-button type=\"primary\" size=\"mini\" @click=\"showContent(scope.row.content)\">{{ $t('app.button.view') }}</el-button>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('sys_notice.table.add_time')\" prop=\"addTime\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_notice.table.admin_id')\" prop=\"adminId\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_notice.table.actions')\" min-width=\"100\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/notice/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/notice/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\">\n        <el-form-item :label=\"$t('sys_notice.form.title')\" prop=\"title\">\n          <el-input v-model=\"dataForm.title\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('sys_notice.form.content')\" prop=\"content\">\n          <editor v-model=\"dataForm.content\" :init=\"editorInit\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n    <el-tooltip placement=\"top\" :content=\"$t('app.tooltip.back_to_top')\">\n      <back-to-top :visibility-height=\"100\" />\n    </el-tooltip>\n\n  </div>\n</template>\n\n<script>\nimport { listNotice, createNotice, updateNotice, deleteNotice, batchDeleteNotice } from '@/api/notice'\nimport BackToTop from '@/components/BackToTop'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\nimport _ from 'lodash'\nimport Editor from '@tinymce/tinymce-vue'\nimport { createStorage } from '@/api/storage'\nimport { getToken } from '@/utils/auth'\n\nexport default {\n  name: 'Notice',\n  components: { BackToTop, Pagination, Editor },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        title: undefined,\n        content: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      multipleSelection: [],\n      contentDetail: '',\n      contentDialogVisible: false,\n      dataForm: {\n        id: undefined,\n        title: undefined,\n        content: undefined\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [\n          { required: true, message: '通知标题不能为空', trigger: 'blur' }\n        ]\n      },\n      editorInit: {\n        language: 'zh_CN',\n        height: 200,\n        convert_urls: false,\n        plugins: ['advlist anchor autolink autosave code codesample colorpicker colorpicker contextmenu directionality emoticons fullscreen hr image imagetools importcss insertdatetime link lists media nonbreaking noneditable pagebreak paste preview print save searchreplace spellchecker tabfocus table template textcolor textpattern visualblocks visualchars wordcount'],\n        toolbar: ['searchreplace bold italic underline strikethrough alignleft aligncenter alignright outdent indent  blockquote undo redo removeformat subscript superscript code codesample', 'hr bullist numlist link image charmap preview anchor pagebreak insertdatetime media table emoticons forecolor backcolor fullscreen'],\n        images_upload_handler: function(blobInfo, success, failure) {\n          const formData = new FormData()\n          formData.append('file', blobInfo.blob())\n          createStorage(formData).then(res => {\n            success(res.data.data.url)\n          }).catch(() => {\n            failure('上传失败，请重新上传')\n          })\n        }\n      },\n      downloadLoading: false\n    }\n  },\n  computed: {\n    headers() {\n      return {\n        'X-Litemall-Admin-Token': getToken()\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listNotice(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        title: undefined,\n        content: undefined\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createNotice(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '创建成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateNotice(this.dataForm)\n            .then(() => {\n              for (const v of this.list) {\n                if (v.id === this.dataForm.id) {\n                  const index = this.list.indexOf(v)\n                  this.list.splice(index, 1, this.dataForm)\n                  break\n                }\n              }\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新广告成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteNotice(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除通知成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleSelectionChange(val) {\n      this.multipleSelection = val\n    },\n    showContent(content) {\n      this.contentDetail = content\n      this.contentDialogVisible = true\n    },\n    handleBatchDelete() {\n      if (this.multipleSelection.length === 0) {\n        this.$message.error('请选择至少一条记录')\n        return\n      }\n      const ids = []\n      _.forEach(this.multipleSelection, function(item) {\n        ids.push(item.id)\n      })\n      batchDeleteNotice({ ids: ids })\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '批量删除通知成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = [\n          '通知ID',\n          '通知标题',\n          '管理员ID',\n          '添加时间',\n          '更新时间'\n        ]\n        const filterVal = [\n          'id',\n          'title',\n          'content',\n          'adminId',\n          'addTime',\n          'updateTime'\n        ]\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '通知')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/sys/os.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.key\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_os.placeholder.filter_key')\" />\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_os.placeholder.filter_name')\" />\n      <el-button v-permission=\"['GET /admin/storage/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/storage/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.key')\" prop=\"key\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.type')\" prop=\"type\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.size')\" prop=\"size\" />\n\n      <el-table-column align=\"center\" property=\"url\" :label=\"$t('sys_os.table.url')\">\n        <template slot-scope=\"scope\">\n          <img :src=\"scope.row.url\" width=\"40\">\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.url_link')\" prop=\"url\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_os.table.actions')\" width=\"200\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/storage/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/storage/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加对话框 -->\n    <el-dialog :visible.sync=\"createDialogVisible\" :title=\"$t('sys_os.dialog.create')\">\n      <el-upload ref=\"upload\" :show-file-list=\"false\" :limit=\"1\" :http-request=\"handleUpload\" action=\"#\" list-type=\"picture\">\n        <el-button type=\"primary\">{{ $t('sys_os.button.upload') }}</el-button>\n      </el-upload>\n    </el-dialog>\n\n    <!-- 修改对话框 -->\n    <el-dialog :visible.sync=\"updateDialogVisible\" :title=\"$t('sys_os.dialog.update')\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('sys_os.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"updateDialogVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<script>\nimport { listStorage, createStorage, updateStorage, deleteStorage } from '@/api/storage'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Storage',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        key: undefined,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      createDialogVisible: false,\n      dataForm: {\n        id: undefined,\n        name: ''\n      },\n      updateDialogVisible: false,\n      rules: {\n        name: [{ required: true, message: '对象名称不能为空', trigger: 'blur' }]\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listStorage(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: ''\n      }\n    },\n    handleCreate() {\n      this.createDialogVisible = true\n    },\n    handleUpload(item) {\n      this.$refs.upload.clearFiles()\n\n      const formData = new FormData()\n      formData.append('file', item.file)\n      createStorage(formData).then(response => {\n        this.list.unshift(response.data.data)\n        this.createDialogVisible = false\n        this.$notify.success({\n          title: '成功',\n          message: '上传成功'\n        })\n      }).catch(() => {\n        this.$message.error('上传失败，请重新上传')\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.updateDialogVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate((valid) => {\n        if (valid) {\n          updateStorage(this.dataForm).then(() => {\n            for (const v of this.list) {\n              if (v.id === this.dataForm.id) {\n                const index = this.list.indexOf(v)\n                this.list.splice(index, 1, this.dataForm)\n                break\n              }\n            }\n            this.updateDialogVisible = false\n            this.$notify.success({\n              title: '成功',\n              message: '更新成功'\n            })\n          }).catch(response => {\n            this.$notify.error({\n              title: '失败',\n              message: response.data.errmsg\n            })\n          })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteStorage(row).then(response => {\n        this.$notify.success({\n          title: '成功',\n          message: '删除成功'\n        })\n        this.getList()\n      }).catch(response => {\n        this.$notify.error({\n          title: '失败',\n          message: response.data.errmsg\n        })\n      })\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['ID', '对象KEY', '对象名称', '对象类型', '对象大小', '访问链接']\n        const filterVal = ['id', 'key', 'name', 'type', 'size', 'url']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '对象存储信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/sys/role.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('sys_role.placeholder.filter_name')\" />\n      <el-button v-permission=\"['GET /admin/role/list']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button v-permission=\"['POST /admin/role/create']\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-edit\" @click=\"handleCreate\">{{ $t('app.button.create') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" :label=\"$t('sys_role.table.name')\" prop=\"name\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_role.table.desc')\" prop=\"desc\" />\n\n      <el-table-column align=\"center\" :label=\"$t('sys_role.table.actions')\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button v-permission=\"['POST /admin/role/update']\" type=\"primary\" size=\"mini\" @click=\"handleUpdate(scope.row)\">{{ $t('app.button.edit') }}</el-button>\n          <el-button v-permission=\"['POST /admin/role/delete']\" type=\"danger\" size=\"mini\" @click=\"handleDelete(scope.row)\">{{ $t('app.button.delete') }}</el-button>\n          <el-button v-permission=\"['GET /admin/role/permissions']\" type=\"primary\" size=\"mini\" @click=\"handlePermission(scope.row)\">{{ $t('app.button.permission') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n    <!-- 添加或修改对话框 -->\n    <el-dialog :title=\"textMap[dialogStatus]\" :visible.sync=\"dialogFormVisible\">\n      <el-form ref=\"dataForm\" :rules=\"rules\" :model=\"dataForm\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('sys_role.form.name')\" prop=\"name\">\n          <el-input v-model=\"dataForm.name\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('sys_role.form.desc')\" prop=\"desc\">\n          <el-input v-model=\"dataForm.desc\" />\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"dialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button v-if=\"dialogStatus=='create'\" type=\"primary\" @click=\"createData\">{{ $t('app.button.confirm') }}</el-button>\n        <el-button v-else type=\"primary\" @click=\"updateData\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n    <!-- 权限配置对话框 -->\n    <el-dialog :visible.sync=\"permissionDialogFormVisible\" :title=\"$t('sys_role.dialog.permission')\">\n      <el-tree\n        ref=\"tree\"\n        :data=\"systemPermissions\"\n        :default-checked-keys=\"assignedPermissions\"\n        show-checkbox\n        node-key=\"id\"\n        highlight-current\n      >\n        <span slot-scope=\"{ node, data }\" class=\"custom-tree-node\">\n          <span>{{ data.label }}</span>\n          <el-tag v-if=\"data.api\" type=\"success\" size=\"mini\">{{ data.api }}</el-tag>\n        </span>\n      </el-tree>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"permissionDialogFormVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"updatePermission\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n\n  </div>\n</template>\n\n<script>\nimport { listRole, createRole, updateRole, deleteRole, getPermission, updatePermission } from '@/api/role'\nimport Pagination from '@/components/Pagination'\nexport default {\n  name: 'Role',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        name: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      dataForm: {\n        id: undefined,\n        name: undefined,\n        desc: undefined\n      },\n      dialogFormVisible: false,\n      dialogStatus: '',\n      textMap: {\n        update: '编辑',\n        create: '创建'\n      },\n      rules: {\n        name: [\n          { required: true, message: '角色名称不能为空', trigger: 'blur' }\n        ]\n      },\n      permissionDialogFormVisible: false,\n      systemPermissions: null,\n      assignedPermissions: null,\n      permissionForm: {\n        roleId: undefined,\n        permissions: []\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listRole(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        name: undefined,\n        desc: undefined\n      }\n    },\n    handleCreate() {\n      this.resetForm()\n      this.dialogStatus = 'create'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    createData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          createRole(this.dataForm)\n            .then(response => {\n              this.list.unshift(response.data.data)\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '添加角色成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleUpdate(row) {\n      this.dataForm = Object.assign({}, row)\n      this.dialogStatus = 'update'\n      this.dialogFormVisible = true\n      this.$nextTick(() => {\n        this.$refs['dataForm'].clearValidate()\n      })\n    },\n    updateData() {\n      this.$refs['dataForm'].validate(valid => {\n        if (valid) {\n          updateRole(this.dataForm)\n            .then(() => {\n              for (const v of this.list) {\n                if (v.id === this.dataForm.id) {\n                  const index = this.list.indexOf(v)\n                  this.list.splice(index, 1, this.dataForm)\n                  break\n                }\n              }\n              this.dialogFormVisible = false\n              this.$notify.success({\n                title: '成功',\n                message: '更新管理员成功'\n              })\n            })\n            .catch(response => {\n              this.$notify.error({\n                title: '失败',\n                message: response.data.errmsg\n              })\n            })\n        }\n      })\n    },\n    handleDelete(row) {\n      deleteRole(row)\n        .then(response => {\n          this.$notify.success({\n            title: '成功',\n            message: '删除管理员成功'\n          })\n          this.getList()\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    },\n    handlePermission(row) {\n      this.permissionDialogFormVisible = true\n      this.permissionForm.roleId = row.id\n      getPermission({ roleId: row.id })\n        .then(response => {\n          this.systemPermissions = response.data.data.systemPermissions\n          this.assignedPermissions = response.data.data.assignedPermissions\n          var _curPermissions = response.data.data.curPermissions\n          if (_curPermissions) {\n            var _map = {}\n            _curPermissions.forEach(r => {\n              _map[r] = true\n            })\n\n            this.systemPermissions.forEach(i => {\n              i.children.forEach(j => {\n                j.children.forEach(k => {\n                  if (_map[k.id]) {\n                    k.disabled = false\n                  } else {\n                    k.disabled = true\n                  }\n                })\n              })\n            })\n          }\n        })\n    },\n    updatePermission() {\n      this.permissionForm.permissions = this.$refs.tree.getCheckedKeys(true)\n      updatePermission(this.permissionForm)\n        .then(response => {\n          this.permissionDialogFormVisible = false\n          this.$notify.success({\n            title: '成功',\n            message: '授权成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/address.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_address.placeholder.filter_user_id')\"/>\n      <el-input v-model=\"listQuery.name\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_address.placeholder.filter_name')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('user_address.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_address.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_address.table.name')\" prop=\"name\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_address.table.tel')\" prop=\"tel\" />\n\n      <el-table-column align=\"center\" min-width=\"300px\" :label=\"$t('user_address.table.address_region')\">\n        <template slot-scope=\"scope\">\n          {{ scope.row.province + scope.row.city + scope.row.county }}\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" min-width=\"300px\" :label=\"$t('user_address.table.address_detail')\" prop=\"addressDetail\" />\n\n      <el-table-column align=\"center\" min-width=\"80px\" :label=\"$t('user_address.table.is_default')\" prop=\"isDefault\">\n        <template slot-scope=\"scope\">\n          {{ scope.row.isDefault ? '是' : '否' }}\n        </template>\n      </el-table-column>\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listAddress } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'UserAddress',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        name: undefined,\n        userId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listAddress(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['地址ID', '用户ID', '收货人', '手机号', '省', '市', '区', '地址', '是否默认']\n        const filterVal = ['id', 'userId', 'name', 'tel', 'province', 'city', 'county', 'addressDetail', 'isDefault']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '用户地址信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/collect.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_collect.placeholder.filter_user_id')\"/>\n      <el-input v-model=\"listQuery.valueId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_collect.placeholder.filter_value_id')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('user_collect.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_collect.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_collect.table.value_id')\" prop=\"valueId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_collect.table.add_time')\" prop=\"addTime\" />\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listCollect } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Collect',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        userId: undefined,\n        valueId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listCollect(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    resetForm() {\n      this.dataForm = {\n        id: undefined,\n        userId: '',\n        valueId: '',\n        addTime: undefined\n      }\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['用户ID', '商品ID', '添加时间']\n        const filterVal = ['userId', 'valueId', 'addTime']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '用户收藏信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/feedback.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.username\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_feedback.placeholder.filter_username')\"/>\n      <el-input v-model=\"listQuery.id\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_feedback.placeholder.filter_id')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.id')\" prop=\"id\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.username')\" prop=\"username\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.mobile')\" prop=\"mobile\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.feed_type')\" prop=\"feedType\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.content')\" prop=\"content\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.pic_urls')\" prop=\"picUrls\">\n        <template slot-scope=\"scope\">\n          <el-image v-for=\"item in scope.row.picUrls\" :key=\"item\" :src=\"item\" :preview-src-list=\"scope.row.picUrls\" :lazy=\"true\" style=\"width: 40px; height: 40px; margin-right: 5px;\"/>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('user_feedback.table.add_time')\" prop=\"addTime\" />\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listFeedback } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'Feedback',\n  components: { Pagination },\n  data() {\n    return {\n      list: [],\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        username: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listFeedback(this.listQuery).then(response => {\n        this.list = response.data.data.list\n        this.total = response.data.data.total\n        this.listLoading = false\n      }).catch(() => {\n        this.list = []\n        this.total = 0\n        this.listLoading = false\n      })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['反馈ID', '用户名称', '反馈内容', '反馈图片列表', '反馈时间']\n        const filterVal = ['id', 'username', 'content', 'picUrls', 'addTime']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '意见反馈信息')\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/footprint.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_footprint.placeholder.filter_user_id')\"/>\n      <el-input v-model=\"listQuery.goodsId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_footprint.placeholder.filter_goods_id')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('user_footprint.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_footprint.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_footprint.table.goods_id')\" prop=\"goodsId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_footprint.table.add_time')\" prop=\"addTime\" />\n\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listFootprint } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'FootPrint',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        userId: undefined,\n        goodsId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listFootprint(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['用户ID', '商品ID', '添加时间']\n        const filterVal = ['userId', 'goodsId', 'addTime']\n        excel.export_json_to_excel2(\n          tHeader,\n          this.list,\n          filterVal,\n          '用户收藏信息'\n        )\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/history.vue",
    "content": "<template>\n  <div class=\"app-container calendar-list-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_history.placeholder.filter_user_id')\"/>\n      <el-input v-model=\"listQuery.keyword\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_history.placeholder.filter_keyword')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('user_history.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_history.table.user_id')\" prop=\"userId\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_history.table.keyword')\" prop=\"keyword\" />\n\n      <el-table-column align=\"center\" min-width=\"100px\" :label=\"$t('user_history.table.add_time')\" prop=\"addTime\" />\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n\n  </div>\n</template>\n\n<script>\nimport { listHistory } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'History',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        userId: undefined,\n        keyword: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      listHistory(this.listQuery)\n        .then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        })\n        .catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['用户ID', '搜索历史关键字', '添加时间']\n        const filterVal = ['userId', 'keyword', 'addTime']\n        excel.export_json_to_excel2(\n          tHeader,\n          this.list,\n          filterVal,\n          '用户搜索历史信息'\n        )\n        this.downloadLoading = false\n      })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/src/views/user/user.vue",
    "content": "<template>\n  <div class=\"app-container\">\n\n    <!-- 查询和其他操作 -->\n    <div class=\"filter-container\">\n      <el-input v-model=\"listQuery.username\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_user.placeholder.filter_username')\"/>\n      <el-input v-model=\"listQuery.userId\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_user.placeholder.filter_user_id')\"/>\n      <el-input v-model=\"listQuery.mobile\" clearable class=\"filter-item\" style=\"width: 200px;\" :placeholder=\"$t('user_user.placeholder.filter_mobile')\"/>\n      <el-button class=\"filter-item\" type=\"primary\" icon=\"el-icon-search\" @click=\"handleFilter\">{{ $t('app.button.search') }}</el-button>\n      <el-button :loading=\"downloadLoading\" class=\"filter-item\" type=\"primary\" icon=\"el-icon-download\" @click=\"handleDownload\">{{ $t('app.button.download') }}</el-button>\n    </div>\n\n    <!-- 查询结果 -->\n    <el-table v-loading=\"listLoading\" :data=\"list\" :element-loading-text=\"$t('app.message.list_loading')\" border fit highlight-current-row>\n      <el-table-column align=\"center\" width=\"100px\" :label=\"$t('user_user.table.id')\" prop=\"id\" sortable />\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.nickname')\" prop=\"nickname\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.avatar')\" width=\"80\">\n        <template slot-scope=\"scope\">\n          <el-avatar :src=\"scope.row.avatar\" />\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.mobile')\" prop=\"mobile\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.gender')\" prop=\"gender\">\n        <template slot-scope=\"scope\">\n          <el-tag >{{ genderDic[scope.row.gender] }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.birthday')\" prop=\"birthday\" />\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.user_level')\" prop=\"userLevel\">\n        <template slot-scope=\"scope\">\n          <el-tag >{{ levelDic[scope.row.userLevel] }}</el-tag>\n        </template>\n      </el-table-column>\n\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.status')\" prop=\"status\">\n        <template slot-scope=\"scope\">\n          <el-tag>{{ statusDic[scope.row.status] }}</el-tag>\n        </template>\n      </el-table-column>\n      <el-table-column align=\"center\" :label=\"$t('user_user.table.actions')\" width=\"250\" class-name=\"small-padding fixed-width\">\n        <template slot-scope=\"scope\">\n          <el-button type=\"primary\" size=\"mini\" @click=\"handleDetail(scope.row)\">{{ $t('app.button.detail') }}</el-button>\n        </template>\n      </el-table-column>\n    </el-table>\n\n    <pagination v-show=\"total>0\" :total=\"total\" :page.sync=\"listQuery.page\" :limit.sync=\"listQuery.limit\" @pagination=\"getList\" />\n    <!-- 用户编辑对话框 -->\n    <el-dialog :visible.sync=\"userDialogVisible\" :title=\"$t('user_user.dialog.edit')\">\n      <el-form ref=\"userDetail\" :model=\"userDetail\" status-icon label-position=\"left\" label-width=\"100px\" style=\"width: 400px; margin-left:50px;\">\n        <el-form-item :label=\"$t('user_user.form.username')\" prop=\"username\">\n          <el-input v-model=\"userDetail.username\" :disabled=\"true\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('user_user.form.nickname')\" prop=\"nickname\">\n          <el-input v-model=\"userDetail.nickname\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('user_user.form.mobile')\" prop=\"mobile\">\n          <el-input v-model=\"userDetail.mobile\" />\n        </el-form-item>\n        <el-form-item :label=\"$t('user_user.form.gender')\" prop=\"gender\">\n          <el-select v-model=\"userDetail.gender\" :placeholder=\"$t('user_user.placeholder.gender')\"><el-option v-for=\"(item, index) in genderDic\" :key=\"index\" :label=\"item\" :value=\"index\" /></el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('user_user.form.user_level')\" prop=\"userLevel\">\n          <el-select v-model=\"userDetail.userLevel\" :placeholder=\"$t('user_user.placeholder.user_level')\"><el-option v-for=\"(item, index) in levelDic\" :key=\"index\" :label=\"item\" :value=\"index\" /></el-select>\n        </el-form-item>\n        <el-form-item :label=\"$t('user_user.form.status')\" prop=\"status\">\n          <el-select v-model=\"userDetail.status\" :placeholder=\"$t('user_user.placeholder.status')\"><el-option v-for=\"(item, index) in statusDic\" :key=\"index\" :label=\"item\" :value=\"index\" /></el-select>\n        </el-form-item>\n      </el-form>\n      <div slot=\"footer\" class=\"dialog-footer\">\n        <el-button @click=\"userDialogVisible = false\">{{ $t('app.button.cancel') }}</el-button>\n        <el-button type=\"primary\" @click=\"handleUserUpdate\">{{ $t('app.button.confirm') }}</el-button>\n      </div>\n    </el-dialog>\n  </div>\n</template>\n\n<script>\nimport { fetchList ,userDetail ,updateUser } from '@/api/user'\nimport Pagination from '@/components/Pagination' // Secondary package based on el-pagination\n\nexport default {\n  name: 'User',\n  components: { Pagination },\n  data() {\n    return {\n      list: null,\n      total: 0,\n      listLoading: true,\n      listQuery: {\n        page: 1,\n        limit: 20,\n        username: undefined,\n        mobile: undefined,\n        userId: undefined,\n        sort: 'add_time',\n        order: 'desc'\n      },\n      downloadLoading: false,\n      genderDic: ['未知', '男', '女'],\n      levelDic: ['普通用户', 'VIP用户', '高级VIP用户'],\n      statusDic: ['可用', '禁用', '注销'],\n      userDialogVisible: false,\n      userDetail:{\n      }\n    }\n  },\n  created() {\n    this.getList()\n  },\n  methods: {\n    getList() {\n      this.listLoading = true\n      if(this.listQuery.userId){\n        userDetail(this.listQuery.userId).then(response => {\n          this.list = [];\n          if(response.data.data){\n            this.list.push(response.data.data)\n            this.total = 1\n            this.listLoading = false\n          }else{\n            this.list = []\n            this.total = 0\n            this.listLoading = false\n          }\n        }).catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n      }else{\n        fetchList(this.listQuery).then(response => {\n          this.list = response.data.data.list\n          this.total = response.data.data.total\n          this.listLoading = false\n        }).catch(() => {\n          this.list = []\n          this.total = 0\n          this.listLoading = false\n        })\n      }\n    },\n    handleFilter() {\n      this.listQuery.page = 1\n      this.getList()\n    },\n    handleDownload() {\n      this.downloadLoading = true\n      import('@/vendor/Export2Excel').then(excel => {\n        const tHeader = ['用户名', '手机号码', '性别', '生日', '状态']\n        const filterVal = ['username', 'mobile', 'gender', 'birthday', 'status']\n        excel.export_json_to_excel2(tHeader, this.list, filterVal, '用户信息')\n        this.downloadLoading = false\n      })\n    },\n    handleDetail(row) {\n      this.userDetail = row\n      this.userDialogVisible = true\n    },\n    handleUserUpdate(){\n     updateUser(this.userDetail)\n        .then((response) => {\n          this.userDialogVisible = false\n          this.$notify.success({\n            title: '成功',\n            message: '更新用户成功'\n          })\n        })\n        .catch(response => {\n          this.$notify.error({\n            title: '失败',\n            message: response.data.errmsg\n          })\n        })\n    }\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-admin/vue.config.js",
    "content": "'use strict'\nconst path = require('path')\n\nfunction resolve(dir) {\n  return path.join(__dirname, dir)\n}\n\nconst name = 'litemall' // page title\n\n// If your port is set to 80,\n// use administrator privileges to execute the command line.\n// For example, Mac: sudo npm run\n// You can change the port by the following method:\n// port = 9527 npm run dev OR npm run dev --port = 9527\nconst port = process.env.port || process.env.npm_config_port || 9527 // dev port\n\n// All configuration item explanations can be find in https://cli.vuejs.org/config/\nmodule.exports = {\n  /**\n   * You will need to set publicPath if you plan to deploy your site under a sub path,\n   * for example GitHub Pages. If you plan to deploy your site to https://foo.github.io/bar/,\n   * then publicPath should be set to \"/bar/\".\n   * In most cases please use '/' !!!\n   * Detail: https://cli.vuejs.org/config/#publicpath\n   */\n  publicPath: './',\n  outputDir: 'dist',\n  assetsDir: 'static',\n  lintOnSave: process.env.NODE_ENV === 'development',\n  productionSourceMap: false,\n  devServer: {\n    proxy: {\n      '/admin': {\n        target: 'http://localhost:8080'\n      },\n    },\n    port: port,\n    open: true,\n    overlay: {\n      warnings: false,\n      errors: true\n    }\n  },\n  configureWebpack: {\n    // provide the app's title in webpack's name field, so that\n    // it can be accessed in index.html to inject the correct title.\n    name: name,\n    resolve: {\n      alias: {\n        '@': resolve('src')\n      }\n    }\n  },\n  chainWebpack(config) {\n    // it can improve the speed of the first screen, it is recommended to turn on preload\n    // config.plugins.delete('preload')\n\n    // when there are many pages, it will cause too many meaningless requests\n    config.plugins.delete('prefetch') //\n\n    // set svg-sprite-loader\n    config.module\n      .rule('svg')\n      .exclude.add(resolve('src/icons'))\n      .end()\n    config.module\n      .rule('icons')\n      .test(/\\.svg$/)\n      .include.add(resolve('src/icons'))\n      .end()\n      .use('svg-sprite-loader')\n      .loader('svg-sprite-loader')\n      .options({\n        symbolId: 'icon-[name]'\n      })\n      .end()\n\n    // set preserveWhitespace\n    config.module\n      .rule('vue')\n      .use('vue-loader')\n      .loader('vue-loader')\n      .tap(options => {\n        options.compilerOptions.preserveWhitespace = true\n        return options\n      })\n      .end()\n\n    config\n      .when(process.env.NODE_ENV !== 'development',\n        config => {\n          config\n            .plugin('ScriptExtHtmlWebpackPlugin')\n            .after('html')\n            .use('script-ext-html-webpack-plugin', [{\n            // `runtime` must same as runtimeChunk name. default is `runtime`\n              inline: /runtime\\..*\\.js$/\n            }])\n            .end()\n          config\n            .optimization.splitChunks({\n              chunks: 'all',\n              cacheGroups: {\n                libs: {\n                  name: 'chunk-libs',\n                  test: /[\\\\/]node_modules[\\\\/]/,\n                  priority: 10,\n                  chunks: 'initial' // only package third parties that are initially dependent\n                },\n                elementUI: {\n                  name: 'chunk-elementUI', // split elementUI into a single package\n                  priority: 20, // the weight needs to be larger than libs and app or it will be packaged into libs or app\n                  test: /[\\\\/]node_modules[\\\\/]_?element-ui(.*)/ // in order to adapt to cnpm\n                },\n                commons: {\n                  name: 'chunk-commons',\n                  test: resolve('src/components'), // can customize your rules\n                  minChunks: 3, //  minimum common number\n                  priority: 5,\n                  reuseExistingChunk: true\n                }\n              }\n            })\n          config.optimization.runtimeChunk('single')\n        }\n      )\n  }\n}\n"
  },
  {
    "path": "litemall-admin-api/.gitignore",
    "content": "\n/target/\n/litemall-admin-api.iml\n"
  },
  {
    "path": "litemall-admin-api/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-admin-api</artifactId>\n    <packaging>jar</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>\n    </properties>\n    <dependencies>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-core</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-db</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.github.binarywang</groupId>\n            <artifactId>weixin-java-miniapp</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>io.springfox</groupId>\n            <artifactId>springfox-swagger-ui</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>io.springfox</groupId>\n            <artifactId>springfox-swagger2</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.apache.shiro</groupId>\n            <artifactId>shiro-spring-boot-web-starter</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.github.penggle</groupId>\n            <artifactId>kaptcha</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.github.xiaoymin</groupId>\n            <artifactId>swagger-bootstrap-ui</artifactId>\n            <version>1.9.6</version>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>repackage</id>\n                        <configuration>\n                            <executable>true</executable>\n                            <classifier>exec</classifier>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n</project>"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/Application.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall.db\", \"org.linlinjava.litemall.core\",\n        \"org.linlinjava.litemall.admin\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\n@EnableTransactionManagement\n@EnableScheduling\npublic class Application {\n\n    public static void main(String[] args) {\n        SpringApplication.run(Application.class, args);\n    }\n\n}"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/annotation/RequiresPermissionsDesc.java",
    "content": "package org.linlinjava.litemall.admin.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n@Target({ElementType.TYPE, ElementType.METHOD})\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface RequiresPermissionsDesc {\n    String[] menu();\n\n    String button();\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/config/AdminSwagger2Configuration.java",
    "content": "package org.linlinjava.litemall.admin.config;\n\nimport com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\nimport springfox.documentation.builders.ApiInfoBuilder;\nimport springfox.documentation.builders.PathSelectors;\nimport springfox.documentation.builders.RequestHandlerSelectors;\nimport springfox.documentation.service.ApiInfo;\nimport springfox.documentation.spi.DocumentationType;\nimport springfox.documentation.spring.web.plugins.Docket;\nimport springfox.documentation.swagger2.annotations.EnableSwagger2;\n\n/**\n * swagger在线文档配置<br>\n * 项目启动后可通过地址：http://host:ip/swagger-ui.html 查看在线文档\n *\n * @author enilu\n * @version 2018-07-24\n */\n\n@Configuration\n@EnableSwagger2\n@EnableSwaggerBootstrapUI\npublic class AdminSwagger2Configuration {\n    @Bean\n    public Docket adminDocket() {\n\n        return new Docket(DocumentationType.SWAGGER_2)\n                .groupName(\"admin\")\n                .apiInfo(adminApiInfo())\n                .select()\n                .apis(RequestHandlerSelectors.basePackage(\"org.linlinjava.litemall.admin.web\"))\n                .paths(PathSelectors.any())\n                .build();\n    }\n\n    private ApiInfo adminApiInfo() {\n        return new ApiInfoBuilder()\n                .title(\"litemall-admin API\")\n                .description(\"litemall管理后台API\")\n                .termsOfServiceUrl(\"https://github.com/linlinjava/litemall\")\n                .contact(\"https://github.com/linlinjava/litemall\")\n                .version(\"1.0\")\n                .build();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/config/KaptchaConfig.java",
    "content": "package org.linlinjava.litemall.admin.config;\n\nimport com.google.code.kaptcha.Producer;\nimport com.google.code.kaptcha.impl.DefaultKaptcha;\nimport com.google.code.kaptcha.util.Config;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport java.util.Properties;\n\n@Configuration\npublic class KaptchaConfig {\n\n    @Bean\n    public Producer kaptchaProducer() {\n        Properties properties = new Properties();\n        properties.setProperty(\"kaptcha.image.width\", \"100\");\n        properties.setProperty(\"kaptcha.image.height\", \"40\");\n        properties.setProperty(\"kaptcha.textproducer.font.size\", \"32\");\n        properties.setProperty(\"kaptcha.textproducer.font.color\", \"0,0,0\");\n        properties.setProperty(\"kaptcha.textproducer.char.string\", \"0123456789ABCDEFGHIJKLMNOPQRSTUVWXYAZ\");\n        properties.setProperty(\"kaptcha.textproducer.char.length\", \"4\");\n        properties.setProperty(\"kaptcha.noise.impl\", \"com.google.code.kaptcha.impl.NoNoise\");\n\n        DefaultKaptcha kaptcha = new DefaultKaptcha();\n        Config config = new Config(properties);\n        kaptcha.setConfig(config);\n        return kaptcha;\n    }\n\n}"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/config/ShiroConfig.java",
    "content": "package org.linlinjava.litemall.admin.config;\n\nimport org.apache.shiro.mgt.SecurityManager;\nimport org.apache.shiro.realm.Realm;\nimport org.apache.shiro.session.mgt.SessionManager;\nimport org.apache.shiro.spring.security.interceptor.AuthorizationAttributeSourceAdvisor;\nimport org.apache.shiro.spring.web.ShiroFilterFactoryBean;\nimport org.apache.shiro.web.mgt.DefaultWebSecurityManager;\nimport org.linlinjava.litemall.admin.shiro.AdminAuthorizingRealm;\nimport org.linlinjava.litemall.admin.shiro.AdminWebSessionManager;\nimport org.springframework.aop.framework.autoproxy.DefaultAdvisorAutoProxyCreator;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.DependsOn;\n\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n@Configuration\npublic class ShiroConfig {\n\n    @Bean\n    public Realm realm() {\n        return new AdminAuthorizingRealm();\n    }\n\n    @Bean\n    public ShiroFilterFactoryBean shiroFilterFactoryBean(SecurityManager securityManager) {\n        ShiroFilterFactoryBean shiroFilterFactoryBean = new ShiroFilterFactoryBean();\n        shiroFilterFactoryBean.setSecurityManager(securityManager);\n        Map<String, String> filterChainDefinitionMap = new LinkedHashMap<String, String>();\n        filterChainDefinitionMap.put(\"/admin/auth/kaptcha\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/auth/login\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/auth/401\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/auth/index\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/auth/403\", \"anon\");\n        filterChainDefinitionMap.put(\"/admin/index/*\", \"anon\");\n\n        filterChainDefinitionMap.put(\"/admin/**\", \"authc\");\n        shiroFilterFactoryBean.setLoginUrl(\"/admin/auth/401\");\n        shiroFilterFactoryBean.setSuccessUrl(\"/admin/auth/index\");\n        shiroFilterFactoryBean.setUnauthorizedUrl(\"/admin/auth/403\");\n        shiroFilterFactoryBean.setFilterChainDefinitionMap(filterChainDefinitionMap);\n        return shiroFilterFactoryBean;\n    }\n\n    @Bean\n    public SessionManager sessionManager() {\n\n        return new AdminWebSessionManager();\n    }\n\n    @Bean\n    public DefaultWebSecurityManager defaultWebSecurityManager() {\n        DefaultWebSecurityManager securityManager = new DefaultWebSecurityManager();\n        securityManager.setRealm(realm());\n        securityManager.setSessionManager(sessionManager());\n        return securityManager;\n    }\n\n    @Bean\n    public AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor(SecurityManager securityManager) {\n        AuthorizationAttributeSourceAdvisor authorizationAttributeSourceAdvisor =\n                new AuthorizationAttributeSourceAdvisor();\n        authorizationAttributeSourceAdvisor.setSecurityManager(securityManager);\n        return authorizationAttributeSourceAdvisor;\n    }\n\n    @Bean\n    @DependsOn(\"lifecycleBeanPostProcessor\")\n    public static DefaultAdvisorAutoProxyCreator defaultAdvisorAutoProxyCreator() {\n        DefaultAdvisorAutoProxyCreator creator = new DefaultAdvisorAutoProxyCreator();\n        creator.setProxyTargetClass(true);\n        return creator;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/config/ShiroExceptionHandler.java",
    "content": "package org.linlinjava.litemall.admin.config;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authc.AuthenticationException;\nimport org.apache.shiro.authz.AuthorizationException;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.ResponseBody;\n\n@ControllerAdvice\n@Order(value = Ordered.HIGHEST_PRECEDENCE)\npublic class ShiroExceptionHandler {\n\n    private final Log logger = LogFactory.getLog(ShiroExceptionHandler.class);\n\n    @ExceptionHandler(AuthenticationException.class)\n    @ResponseBody\n    public Object unauthenticatedHandler(AuthenticationException e) {\n        logger.warn(e.getMessage(), e);\n        return ResponseUtil.unlogin();\n    }\n\n    @ExceptionHandler(AuthorizationException.class)\n    @ResponseBody\n    public Object unauthorizedHandler(AuthorizationException e) {\n        logger.warn(e.getMessage(), e);\n        return ResponseUtil.unauthz();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/dto/GoodsAllinone.java",
    "content": "package org.linlinjava.litemall.admin.dto;\n\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsAttribute;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProduct;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsSpecification;\n\npublic class GoodsAllinone {\n    LitemallGoods goods;\n    LitemallGoodsSpecification[] specifications;\n    LitemallGoodsAttribute[] attributes;\n    LitemallGoodsProduct[] products;\n\n    public LitemallGoods getGoods() {\n        return goods;\n    }\n\n    public void setGoods(LitemallGoods goods) {\n        this.goods = goods;\n    }\n\n    public LitemallGoodsProduct[] getProducts() {\n        return products;\n    }\n\n    public void setProducts(LitemallGoodsProduct[] products) {\n        this.products = products;\n    }\n\n    public LitemallGoodsSpecification[] getSpecifications() {\n        return specifications;\n    }\n\n    public void setSpecifications(LitemallGoodsSpecification[] specifications) {\n        this.specifications = specifications;\n    }\n\n    public LitemallGoodsAttribute[] getAttributes() {\n        return attributes;\n    }\n\n    public void setAttributes(LitemallGoodsAttribute[] attributes) {\n        this.attributes = attributes;\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/CouponJob.java",
    "content": "package org.linlinjava.litemall.admin.job;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.service.LitemallCouponService;\nimport org.linlinjava.litemall.db.service.LitemallCouponUserService;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.linlinjava.litemall.db.util.CouponUserConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\nimport java.util.List;\n\n/**\n * 检测优惠券过期情况\n */\n@Component\npublic class CouponJob {\n    private final Log logger = LogFactory.getLog(CouponJob.class);\n\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n\n    /**\n     * 每隔一个小时检查\n     * TODO\n     * 注意，因为是相隔一个小时检查，因此导致优惠券真正超时时间可能比设定时间延迟1个小时\n     */\n    @Scheduled(fixedDelay = 60 * 60 * 1000)\n    public void checkCouponExpired() {\n        logger.info(\"系统开启任务检查优惠券是否已经过期\");\n\n        List<LitemallCoupon> couponList = couponService.queryExpired();\n        for (LitemallCoupon coupon : couponList) {\n            coupon.setStatus(CouponConstant.STATUS_EXPIRED);\n            couponService.updateById(coupon);\n        }\n\n        List<LitemallCouponUser> couponUserList = couponUserService.queryExpired();\n        for (LitemallCouponUser couponUser : couponUserList) {\n            couponUser.setStatus(CouponUserConstant.STATUS_EXPIRED);\n            couponUserService.update(couponUser);\n        }\n\n        logger.info(\"系统结束任务检查优惠券是否已经过期\");\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/DbJob.java",
    "content": "package org.linlinjava.litemall.admin.job;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.db.util.DbUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.env.Environment;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.time.LocalDate;\n\n/**\n * 数据库定时备份任务\n * 在backup文件夹中备份最近七日的数据库文件\n */\n@Component\npublic class DbJob {\n    private final Log logger = LogFactory.getLog(DbJob.class);\n\n    @Autowired\n    private Environment environment;\n\n    /*\n     * 定时时间是每天凌晨5点。\n     */\n    @Scheduled(cron = \"0 0 5 * * ?\")\n    public void backup() throws IOException {\n        logger.info(\"系统开启定时任务数据库备份\");\n\n        String user = environment.getProperty(\"spring.datasource.druid.username\");\n        String password = environment.getProperty(\"spring.datasource.druid.password\");\n        String url = environment.getProperty(\"spring.datasource.druid.url\");\n        int index1 = url.indexOf(\"3306/\");\n        int index2 = url.indexOf(\"?\");\n        String db = url.substring(index1+5, index2);\n\n        LocalDate localDate = LocalDate.now();\n        String fileName = localDate.toString() + \".sql\";\n        File file = new File(\"backup\", fileName);\n        file.getParentFile().mkdirs();\n        file.createNewFile();\n\n        // 备份今天数据库\n        DbUtil.backup(file, user, password, db);\n        // 删除七天前数据库备份文件\n        LocalDate before = localDate.minusDays(7);\n        String fileBeforeName = before.toString()+\".sql\";\n        File fileBefore = new File(\"backup\", fileBeforeName);\n        if (fileBefore.exists()) {\n            fileBefore.delete();\n        }\n\n        logger.info(\"系统结束定时任务数据库备份\");\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/job/OrderJob.java",
    "content": "package org.linlinjava.litemall.admin.job;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.scheduling.annotation.Scheduled;\nimport org.springframework.stereotype.Component;\nimport org.springframework.transaction.annotation.Transactional;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n/**\n * 检测订单状态\n */\n@Component\npublic class OrderJob {\n    private final Log logger = LogFactory.getLog(OrderJob.class);\n\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private LitemallGrouponService grouponService;\n    @Autowired\n    private LitemallGrouponRulesService rulesService;\n\n    /**\n     * 自动确认订单\n     * <p>\n     * 定时检查订单未确认情况，如果超时 LITEMALL_ORDER_UNCONFIRM 天则自动确认订单\n     * 定时时间是每天凌晨3点。\n     * <p>\n     * TODO\n     * 注意，因为是相隔一天检查，因此导致订单真正超时时间是 [LITEMALL_ORDER_UNCONFIRM, 1 + LITEMALL_ORDER_UNCONFIRM]\n     */\n    @Scheduled(cron = \"0 0 3 * * ?\")\n    public void checkOrderUnconfirm() {\n        logger.info(\"系统开启定时任务检查订单是否已经超期自动确认收货\");\n\n        List<LitemallOrder> orderList = orderService.queryUnconfirm(SystemConfig.getOrderUnconfirm());\n        for (LitemallOrder order : orderList) {\n\n            // 设置订单已取消状态\n            order.setOrderStatus(OrderUtil.STATUS_AUTO_CONFIRM);\n            order.setConfirmTime(LocalDateTime.now());\n            if (orderService.updateWithOptimisticLocker(order) == 0) {\n                logger.info(\"订单 ID=\" + order.getId() + \" 数据已经更新，放弃自动确认收货\");\n            } else {\n                logger.info(\"订单 ID=\" + order.getId() + \" 已经超期自动确认收货\");\n            }\n        }\n\n        logger.info(\"系统结束定时任务检查订单是否已经超期自动确认收货\");\n    }\n\n    /**\n     * 可评价订单商品超期\n     * <p>\n     * 定时检查订单商品评价情况，如果确认商品超时 LITEMALL_ORDER_COMMENT 天则取消可评价状态\n     * 定时时间是每天凌晨4点。\n     * <p>\n     * TODO\n     * 注意，因为是相隔一天检查，因此导致订单真正超时时间是 [LITEMALL_ORDER_COMMENT, 1 + LITEMALL_ORDER_COMMENT]\n     */\n    @Scheduled(cron = \"0 0 4 * * ?\")\n    public void checkOrderComment() {\n        logger.info(\"系统开启任务检查订单是否已经超期未评价\");\n\n        List<LitemallOrder> orderList = orderService.queryComment(SystemConfig.getOrderComment());\n        for (LitemallOrder order : orderList) {\n            order.setComments((short) 0);\n            orderService.updateWithOptimisticLocker(order);\n\n            List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(order.getId());\n            for (LitemallOrderGoods orderGoods : orderGoodsList) {\n                orderGoods.setComment(-1);\n                orderGoodsService.updateById(orderGoods);\n            }\n        }\n\n        logger.info(\"系统结束任务检查订单是否已经超期未评价\");\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminGoodsService.java",
    "content": "package org.linlinjava.litemall.admin.service;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.admin.dto.GoodsAllinone;\nimport org.linlinjava.litemall.admin.vo.CatVo;\nimport org.linlinjava.litemall.core.qcode.QCodeService;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.util.StringUtils;\n\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.GOODS_NAME_EXIST;\n\n@Service\npublic class AdminGoodsService {\n    private final Log logger = LogFactory.getLog(AdminGoodsService.class);\n\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallGoodsSpecificationService specificationService;\n    @Autowired\n    private LitemallGoodsAttributeService attributeService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private LitemallCategoryService categoryService;\n    @Autowired\n    private LitemallBrandService brandService;\n    @Autowired\n    private LitemallCartService cartService;\n    @Autowired\n    private QCodeService qCodeService;\n\n    public Object list(Integer goodsId, String goodsSn, String name,\n                       Integer page, Integer limit, String sort, String order) {\n        List<LitemallGoods> goodsList = goodsService.querySelective(goodsId, goodsSn, name, page, limit, sort, order);\n        return ResponseUtil.okList(goodsList);\n    }\n\n    private Object validate(GoodsAllinone goodsAllinone) {\n        LitemallGoods goods = goodsAllinone.getGoods();\n        String name = goods.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n        String goodsSn = goods.getGoodsSn();\n        if (StringUtils.isEmpty(goodsSn)) {\n            return ResponseUtil.badArgument();\n        }\n        // 品牌商可以不设置，如果设置则需要验证品牌商存在\n        Integer brandId = goods.getBrandId();\n        if (brandId != null && brandId != 0) {\n            if (brandService.findById(brandId) == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n        }\n        // 分类可以不设置，如果设置则需要验证分类存在\n        Integer categoryId = goods.getCategoryId();\n        if (categoryId != null && categoryId != 0) {\n            if (categoryService.findById(categoryId) == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n        }\n\n        LitemallGoodsAttribute[] attributes = goodsAllinone.getAttributes();\n        for (LitemallGoodsAttribute attribute : attributes) {\n            String attr = attribute.getAttribute();\n            if (StringUtils.isEmpty(attr)) {\n                return ResponseUtil.badArgument();\n            }\n            String value = attribute.getValue();\n            if (StringUtils.isEmpty(value)) {\n                return ResponseUtil.badArgument();\n            }\n        }\n\n        LitemallGoodsSpecification[] specifications = goodsAllinone.getSpecifications();\n        for (LitemallGoodsSpecification specification : specifications) {\n            String spec = specification.getSpecification();\n            if (StringUtils.isEmpty(spec)) {\n                return ResponseUtil.badArgument();\n            }\n            String value = specification.getValue();\n            if (StringUtils.isEmpty(value)) {\n                return ResponseUtil.badArgument();\n            }\n        }\n\n        LitemallGoodsProduct[] products = goodsAllinone.getProducts();\n        for (LitemallGoodsProduct product : products) {\n            Integer number = product.getNumber();\n            if (number == null || number < 0) {\n                return ResponseUtil.badArgument();\n            }\n\n            BigDecimal price = product.getPrice();\n            if (price == null) {\n                return ResponseUtil.badArgument();\n            }\n\n            String[] productSpecifications = product.getSpecifications();\n            if (productSpecifications.length == 0) {\n                return ResponseUtil.badArgument();\n            }\n        }\n\n        return null;\n    }\n\n    /**\n     * 编辑商品\n     *\n     * NOTE：\n     * 由于商品涉及到四个表，特别是litemall_goods_product表依赖litemall_goods_specification表，\n     * 这导致允许所有字段都是可编辑会带来一些问题，因此这里商品编辑功能是受限制：\n     * （1）litemall_goods表可以编辑字段；\n     * （2）litemall_goods_specification表只能编辑pic_url字段，其他操作不支持；\n     * （3）litemall_goods_product表只能编辑price, number和url字段，其他操作不支持；\n     * （4）litemall_goods_attribute表支持编辑、添加和删除操作。\n     *\n     * NOTE2:\n     * 前后端这里使用了一个小技巧：\n     * 如果前端传来的update_time字段是空，则说明前端已经更新了某个记录，则这个记录会更新；\n     * 否则说明这个记录没有编辑过，无需更新该记录。\n     *\n     * NOTE3:\n     * （1）购物车缓存了一些商品信息，因此需要及时更新。\n     * 目前这些字段是goods_sn, goods_name, price, pic_url。\n     * （2）但是订单里面的商品信息则是不会更新。\n     * 如果订单是未支付订单，此时仍然以旧的价格支付。\n     */\n    @Transactional\n    public Object update(GoodsAllinone goodsAllinone) {\n        Object error = validate(goodsAllinone);\n        if (error != null) {\n            return error;\n        }\n\n        LitemallGoods goods = goodsAllinone.getGoods();\n        LitemallGoodsAttribute[] attributes = goodsAllinone.getAttributes();\n        LitemallGoodsSpecification[] specifications = goodsAllinone.getSpecifications();\n        LitemallGoodsProduct[] products = goodsAllinone.getProducts();\n\n        //将生成的分享图片地址写入数据库\n        String url = qCodeService.createGoodShareImage(goods.getId().toString(), goods.getPicUrl(), goods.getName());\n        goods.setShareUrl(url);\n\n        // 商品表里面有一个字段retailPrice记录当前商品的最低价\n        BigDecimal retailPrice = new BigDecimal(Integer.MAX_VALUE);\n        for (LitemallGoodsProduct product : products) {\n            BigDecimal productPrice = product.getPrice();\n            if(retailPrice.compareTo(productPrice) == 1){\n                retailPrice = productPrice;\n            }\n        }\n        goods.setRetailPrice(retailPrice);\n        \n        // 商品基本信息表litemall_goods\n        if (goodsService.updateById(goods) == 0) {\n            throw new RuntimeException(\"更新数据失败\");\n        }\n\n        Integer gid = goods.getId();\n\n        // 商品规格表litemall_goods_specification\n        for (LitemallGoodsSpecification specification : specifications) {\n            // 目前只支持更新规格表的图片字段\n            if(specification.getUpdateTime() == null){\n                specification.setSpecification(null);\n                specification.setValue(null);\n                specificationService.updateById(specification);\n            }\n        }\n\n        // 商品货品表litemall_product\n        for (LitemallGoodsProduct product : products) {\n            if(product.getUpdateTime() == null) {\n                productService.updateById(product);\n            }\n        }\n\n        // 商品参数表litemall_goods_attribute\n        for (LitemallGoodsAttribute attribute : attributes) {\n            if (attribute.getId() == null || attribute.getId().equals(0)){\n                attribute.setGoodsId(goods.getId());\n                attributeService.add(attribute);\n            }\n            else if(attribute.getDeleted()){\n                attributeService.deleteById(attribute.getId());\n            }\n            else if(attribute.getUpdateTime() == null){\n                attributeService.updateById(attribute);\n            }\n        }\n\n        // 这里需要注意的是购物车litemall_cart有些字段是拷贝商品的一些字段，因此需要及时更新\n        // 目前这些字段是goods_sn, goods_name, price, pic_url\n        for (LitemallGoodsProduct product : products) {\n            cartService.updateProduct(product.getId(), goods.getGoodsSn(), goods.getName(), product.getPrice(), product.getUrl());\n        }\n\n        return ResponseUtil.ok();\n    }\n\n    @Transactional\n    public Object delete(LitemallGoods goods) {\n        Integer id = goods.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        Integer gid = goods.getId();\n        goodsService.deleteById(gid);\n        specificationService.deleteByGid(gid);\n        attributeService.deleteByGid(gid);\n        productService.deleteByGid(gid);\n        return ResponseUtil.ok();\n    }\n\n    @Transactional\n    public Object create(GoodsAllinone goodsAllinone) {\n        Object error = validate(goodsAllinone);\n        if (error != null) {\n            return error;\n        }\n\n        LitemallGoods goods = goodsAllinone.getGoods();\n        LitemallGoodsAttribute[] attributes = goodsAllinone.getAttributes();\n        LitemallGoodsSpecification[] specifications = goodsAllinone.getSpecifications();\n        LitemallGoodsProduct[] products = goodsAllinone.getProducts();\n\n        String name = goods.getName();\n        if (goodsService.checkExistByName(name)) {\n            return ResponseUtil.fail(GOODS_NAME_EXIST, \"商品名已经存在\");\n        }\n\n        // 商品表里面有一个字段retailPrice记录当前商品的最低价\n        BigDecimal retailPrice = new BigDecimal(Integer.MAX_VALUE);\n        for (LitemallGoodsProduct product : products) {\n            BigDecimal productPrice = product.getPrice();\n            if(retailPrice.compareTo(productPrice) == 1){\n                retailPrice = productPrice;\n            }\n        }\n        goods.setRetailPrice(retailPrice);\n\n        // 商品基本信息表litemall_goods\n        goodsService.add(goods);\n\n        //将生成的分享图片地址写入数据库\n        String url = qCodeService.createGoodShareImage(goods.getId().toString(), goods.getPicUrl(), goods.getName());\n        if (!StringUtils.isEmpty(url)) {\n            goods.setShareUrl(url);\n            if (goodsService.updateById(goods) == 0) {\n                throw new RuntimeException(\"更新数据失败\");\n            }\n        }\n\n        // 商品规格表litemall_goods_specification\n        for (LitemallGoodsSpecification specification : specifications) {\n            specification.setGoodsId(goods.getId());\n            specificationService.add(specification);\n        }\n\n        // 商品参数表litemall_goods_attribute\n        for (LitemallGoodsAttribute attribute : attributes) {\n            attribute.setGoodsId(goods.getId());\n            attributeService.add(attribute);\n        }\n\n        // 商品货品表litemall_product\n        for (LitemallGoodsProduct product : products) {\n            product.setGoodsId(goods.getId());\n            productService.add(product);\n        }\n        return ResponseUtil.ok();\n    }\n\n    public Object list2() {\n        // http://element-cn.eleme.io/#/zh-CN/component/cascader\n        // 管理员设置“所属分类”\n        List<LitemallCategory> l1CatList = categoryService.queryL1();\n        List<CatVo> categoryList = new ArrayList<>(l1CatList.size());\n\n        for (LitemallCategory l1 : l1CatList) {\n            CatVo l1CatVo = new CatVo();\n            l1CatVo.setValue(l1.getId());\n            l1CatVo.setLabel(l1.getName());\n\n            List<LitemallCategory> l2CatList = categoryService.queryByPid(l1.getId());\n            List<CatVo> children = new ArrayList<>(l2CatList.size());\n            for (LitemallCategory l2 : l2CatList) {\n                CatVo l2CatVo = new CatVo();\n                l2CatVo.setValue(l2.getId());\n                l2CatVo.setLabel(l2.getName());\n                children.add(l2CatVo);\n            }\n            l1CatVo.setChildren(children);\n\n            categoryList.add(l1CatVo);\n        }\n\n        // http://element-cn.eleme.io/#/zh-CN/component/select\n        // 管理员设置“所属品牌商”\n        List<LitemallBrand> list = brandService.all();\n        List<Map<String, Object>> brandList = new ArrayList<>(l1CatList.size());\n        for (LitemallBrand brand : list) {\n            Map<String, Object> b = new HashMap<>(2);\n            b.put(\"value\", brand.getId());\n            b.put(\"label\", brand.getName());\n            brandList.add(b);\n        }\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"categoryList\", categoryList);\n        data.put(\"brandList\", brandList);\n        return ResponseUtil.ok(data);\n    }\n\n    public Object detail(Integer id) {\n        LitemallGoods goods = goodsService.findById(id);\n        List<LitemallGoodsProduct> products = productService.queryByGid(id);\n        List<LitemallGoodsSpecification> specifications = specificationService.queryByGid(id);\n        List<LitemallGoodsAttribute> attributes = attributeService.queryByGid(id);\n\n        Integer categoryId = goods.getCategoryId();\n        LitemallCategory category = categoryService.findById(categoryId);\n        Integer[] categoryIds = new Integer[]{};\n        if (category != null) {\n            Integer parentCategoryId = category.getPid();\n            categoryIds = new Integer[]{parentCategoryId, categoryId};\n        }\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"goods\", goods);\n        data.put(\"specifications\", specifications);\n        data.put(\"products\", products);\n        data.put(\"attributes\", attributes);\n        data.put(\"categoryIds\", categoryIds);\n\n        return ResponseUtil.ok(data);\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/AdminOrderService.java",
    "content": "package org.linlinjava.litemall.admin.service;\n\nimport com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;\nimport com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;\nimport com.github.binarywang.wxpay.bean.result.WxPayRefundResult;\nimport com.github.binarywang.wxpay.exception.WxPayException;\nimport com.github.binarywang.wxpay.service.WxPayService;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.NotifyType;\nimport org.linlinjava.litemall.core.util.DateTimeUtil;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.CouponUserConstant;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.util.StringUtils;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.*;\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.ORDER_PAY_FAILED;\n\n@Service\n\npublic class AdminOrderService {\n    private final Log logger = LogFactory.getLog(AdminOrderService.class);\n\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private LitemallUserService userService;\n    @Autowired\n    private LitemallCommentService commentService;\n    @Autowired\n    private WxPayService wxPayService;\n    @Autowired\n    private NotifyService notifyService;\n    @Autowired\n    private LogHelper logHelper;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n\n    public Object list(String nickname, String consignee, String orderSn, LocalDateTime start, LocalDateTime end, List<Short> orderStatusArray,\n                       Integer page, Integer limit, String sort, String order) {\n        Map<String, Object> data = (Map)orderService.queryVoSelective(nickname, consignee, orderSn, start, end, orderStatusArray, page, limit, sort, order);\n        return ResponseUtil.ok(data);\n    }\n\n    public Object detail(Integer id) {\n        LitemallOrder order = orderService.findById(id);\n        List<LitemallOrderGoods> orderGoods = orderGoodsService.queryByOid(id);\n        UserVo user = userService.findUserVoById(order.getUserId());\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"order\", order);\n        data.put(\"orderGoods\", orderGoods);\n        data.put(\"user\", user);\n\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 订单退款\n     * <p>\n     * 1. 检测当前订单是否能够退款;\n     * 2. 微信退款操作;\n     * 3. 设置订单退款确认状态；\n     * 4. 订单商品库存回库。\n     * <p>\n     * TODO\n     * 虽然接入了微信退款API，但是从安全角度考虑，建议开发者删除这里微信退款代码，采用以下两步走步骤：\n     * 1. 管理员登录微信官方支付平台点击退款操作进行退款\n     * 2. 管理员登录litemall管理后台点击退款操作进行订单状态修改和商品库存回库\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单退款操作结果\n     */\n    @Transactional\n    public Object refund(String body) {\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        String refundMoney = JacksonUtil.parseString(body, \"refundMoney\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (StringUtils.isEmpty(refundMoney)) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        if (order.getActualPrice().compareTo(new BigDecimal(refundMoney)) != 0) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 如果订单不是退款状态，则不能退款\n        if (!order.getOrderStatus().equals(OrderUtil.STATUS_REFUND)) {\n            return ResponseUtil.fail(ORDER_CONFIRM_NOT_ALLOWED, \"订单不能确认收货\");\n        }\n\n        // 微信退款\n        WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest();\n        wxPayRefundRequest.setOutTradeNo(order.getOrderSn());\n        wxPayRefundRequest.setOutRefundNo(\"refund_\" + order.getOrderSn());\n        // 元转成分\n        Integer totalFee = order.getActualPrice().multiply(new BigDecimal(100)).intValue();\n        wxPayRefundRequest.setTotalFee(totalFee);\n        wxPayRefundRequest.setRefundFee(totalFee);\n\n        WxPayRefundResult wxPayRefundResult;\n        try {\n            wxPayRefundResult = wxPayService.refund(wxPayRefundRequest);\n        } catch (WxPayException e) {\n            logger.error(e.getMessage(), e);\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n        if (!wxPayRefundResult.getReturnCode().equals(\"SUCCESS\")) {\n            logger.warn(\"refund fail: \" + wxPayRefundResult.getReturnMsg());\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n        if (!wxPayRefundResult.getResultCode().equals(\"SUCCESS\")) {\n            logger.warn(\"refund fail: \" + wxPayRefundResult.getReturnMsg());\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n\n        LocalDateTime now = LocalDateTime.now();\n        // 设置订单取消状态\n        order.setOrderStatus(OrderUtil.STATUS_REFUND_CONFIRM);\n        order.setEndTime(now);\n        // 记录订单退款相关信息\n        order.setRefundAmount(order.getActualPrice());\n        order.setRefundType(\"微信退款接口\");\n        order.setRefundContent(wxPayRefundResult.getRefundId());\n        order.setRefundTime(now);\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            throw new RuntimeException(\"更新数据已失效\");\n        }\n\n        // 商品货品数量增加\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);\n        for (LitemallOrderGoods orderGoods : orderGoodsList) {\n            Integer productId = orderGoods.getProductId();\n            Short number = orderGoods.getNumber();\n            if (productService.addStock(productId, number) == 0) {\n                throw new RuntimeException(\"商品货品库存增加失败\");\n            }\n        }\n\n        // 返还优惠券\n        List<LitemallCouponUser> couponUsers = couponUserService.findByOid(orderId);\n        for (LitemallCouponUser couponUser: couponUsers) {\n            // 优惠券状态设置为可使用\n            couponUser.setStatus(CouponUserConstant.STATUS_USABLE);\n            couponUser.setUpdateTime(LocalDateTime.now());\n            couponUserService.update(couponUser);\n        }\n\n        //TODO 发送邮件和短信通知，这里采用异步发送\n        // 退款成功通知用户, 例如“您申请的订单退款 [ 单号:{1} ] 已成功，请耐心等待到账。”\n        // 注意订单号只发后6位\n        notifyService.notifySmsTemplate(order.getMobile(), NotifyType.REFUND,\n                new String[]{order.getOrderSn().substring(8, 14)});\n\n        logHelper.logOrderSucceed(\"退款\", \"订单编号 \" + order.getOrderSn());\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 发货\n     * 1. 检测当前订单是否能够发货\n     * 2. 设置订单发货状态\n     *\n     * @param body 订单信息，{ orderId：xxx, shipSn: xxx, shipChannel: xxx }\n     * @return 订单操作结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    public Object ship(String body) {\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        String shipSn = JacksonUtil.parseString(body, \"shipSn\");\n        String shipChannel = JacksonUtil.parseString(body, \"shipChannel\");\n        if (orderId == null || shipSn == null || shipChannel == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 如果订单不是已付款状态，则不能发货\n        if (!order.getOrderStatus().equals(OrderUtil.STATUS_PAY)) {\n            return ResponseUtil.fail(ORDER_CONFIRM_NOT_ALLOWED, \"订单不能确认收货\");\n        }\n\n        order.setOrderStatus(OrderUtil.STATUS_SHIP);\n        order.setShipSn(shipSn);\n        order.setShipChannel(shipChannel);\n        order.setShipTime(LocalDateTime.now());\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return ResponseUtil.updatedDateExpired();\n        }\n\n        //TODO 发送邮件和短信通知，这里采用异步发送\n        // 发货会发送通知短信给用户:          *\n        // \"您的订单已经发货，快递公司 {1}，快递单 {2} ，请注意查收\"\n        notifyService.notifySmsTemplate(order.getMobile(), NotifyType.SHIP, new String[]{shipChannel, shipSn});\n\n        logHelper.logOrderSucceed(\"发货\", \"订单编号 \" + order.getOrderSn());\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 删除订单\n     * 1. 检测当前订单是否能够删除\n     * 2. 删除订单\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    public Object delete(String body) {\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        LitemallOrder order = orderService.findById(orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 如果订单不是关闭状态(已取消、系统取消、已退款、用户已确认、系统已确认)，则不能删除\n        Short status = order.getOrderStatus();\n        if (!status.equals(OrderUtil.STATUS_CANCEL) && !status.equals(OrderUtil.STATUS_AUTO_CANCEL) &&\n                !status.equals(OrderUtil.STATUS_CONFIRM) &&!status.equals(OrderUtil.STATUS_AUTO_CONFIRM) &&\n                !status.equals(OrderUtil.STATUS_REFUND_CONFIRM)) {\n            return ResponseUtil.fail(ORDER_DELETE_FAILED, \"订单不能删除\");\n        }\n        // 删除订单\n        orderService.deleteById(orderId);\n        // 删除订单商品\n        orderGoodsService.deleteByOrderId(orderId);\n        logHelper.logOrderSucceed(\"删除\", \"订单编号 \" + order.getOrderSn());\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 回复订单商品\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    public Object reply(String body) {\n        Integer commentId = JacksonUtil.parseInteger(body, \"commentId\");\n        if (commentId == null || commentId == 0) {\n            return ResponseUtil.badArgument();\n        }\n        // 目前只支持回复一次\n        LitemallComment comment = commentService.findById(commentId);\n        if(comment == null){\n            return ResponseUtil.badArgument();\n        }\n        if (!StringUtils.isEmpty(comment.getAdminContent())) {\n            return ResponseUtil.fail(ORDER_REPLY_EXIST, \"订单商品已回复！\");\n        }\n        String content = JacksonUtil.parseString(body, \"content\");\n        if (StringUtils.isEmpty(content)) {\n            return ResponseUtil.badArgument();\n        }\n        // 更新评价回复\n        comment.setAdminContent(content);\n        commentService.updateById(comment);\n\n        return ResponseUtil.ok();\n    }\n\n    public Object pay(String body) {\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        String newMoney = JacksonUtil.parseString(body, \"newMoney\");\n\n        if (orderId == null || StringUtils.isEmpty(newMoney)) {\n            return ResponseUtil.badArgument();\n        }\n        BigDecimal actualPrice = new BigDecimal(newMoney);\n\n        LitemallOrder order = orderService.findById(orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (!order.getOrderStatus().equals(OrderUtil.STATUS_CREATE)) {\n            return ResponseUtil.fail(ORDER_PAY_FAILED, \"当前订单状态不支持线下收款\");\n        }\n\n        order.setActualPrice(actualPrice);\n        order.setOrderStatus(OrderUtil.STATUS_PAY);\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return WxPayNotifyResponse.fail(\"更新数据已失效\");\n        }\n\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/service/LogHelper.java",
    "content": "package org.linlinjava.litemall.admin.service;\n\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.core.util.IpUtil;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallLog;\nimport org.linlinjava.litemall.db.service.LitemallLogService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Component;\nimport org.springframework.web.context.request.RequestContextHolder;\nimport org.springframework.web.context.request.ServletRequestAttributes;\n\nimport javax.servlet.http.HttpServletRequest;\n\n/**\n * 这里的日志类型设计成四种（当然开发者需要可以自己扩展）\n * 一般日志：用户觉得需要查看的一般操作日志，建议是默认的日志级别\n * 安全日志：用户安全相关的操作日志，例如登录、删除管理员\n * 订单日志：用户交易相关的操作日志，例如订单发货、退款\n * 其他日志：如果以上三种不合适，可以选择其他日志，建议是优先级最低的日志级别\n * <p>\n * 当然可能很多操作是不需要记录到数据库的，例如编辑商品、编辑广告品之类。\n */\n@Component\npublic class LogHelper {\n    public static final  Integer LOG_TYPE_GENERAL = 0;\n    public static final  Integer LOG_TYPE_AUTH = 1;\n    public static final  Integer LOG_TYPE_ORDER = 2;\n    public static final  Integer LOG_TYPE_OTHER = 3;\n\n    @Autowired\n    private LitemallLogService logService;\n\n    public void logGeneralSucceed(String action) {\n        logAdmin(LOG_TYPE_GENERAL, action, true, \"\", \"\");\n    }\n\n    public void logGeneralSucceed(String action, String result) {\n        logAdmin(LOG_TYPE_GENERAL, action, true, result, \"\");\n    }\n\n    public void logGeneralFail(String action, String error) {\n        logAdmin(LOG_TYPE_GENERAL, action, false, error, \"\");\n    }\n\n    public void logAuthSucceed(String action) {\n        logAdmin(LOG_TYPE_AUTH, action, true, \"\", \"\");\n    }\n\n    public void logAuthSucceed(String action, String result) {\n        logAdmin(LOG_TYPE_AUTH, action, true, result, \"\");\n    }\n\n    public void logAuthFail(String action, String error) {\n        logAdmin(LOG_TYPE_AUTH, action, false, error, \"\");\n    }\n\n    public void logOrderSucceed(String action) {\n        logAdmin(LOG_TYPE_ORDER, action, true, \"\", \"\");\n    }\n\n    public void logOrderSucceed(String action, String result) {\n        logAdmin(LOG_TYPE_ORDER, action, true, result, \"\");\n    }\n\n    public void logOrderFail(String action, String error) {\n        logAdmin(LOG_TYPE_ORDER, action, false, error, \"\");\n    }\n\n    public void logOtherSucceed(String action) {\n        logAdmin(LOG_TYPE_OTHER, action, true, \"\", \"\");\n    }\n\n    public void logOtherSucceed(String action, String result) {\n        logAdmin(LOG_TYPE_OTHER, action, true, result, \"\");\n    }\n\n\n    public void logOtherFail(String action, String error) {\n        logAdmin(LOG_TYPE_OTHER, action, false, error, \"\");\n    }\n\n    public void logAdmin(Integer type, String action, Boolean succeed, String result, String comment) {\n        LitemallLog log = new LitemallLog();\n\n        Subject currentUser = SecurityUtils.getSubject();\n        if (currentUser != null) {\n            LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n            if (admin != null) {\n                log.setAdmin(admin.getUsername());\n            } else {\n                log.setAdmin(\"匿名用户\");\n            }\n        } else {\n            log.setAdmin(\"匿名用户\");\n        }\n\n        HttpServletRequest request =\n                ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();\n        if (request != null) {\n            log.setIp(IpUtil.getIpAddr(request));\n        }\n\n        log.setType(type);\n        log.setAction(action);\n        log.setStatus(succeed);\n        log.setResult(result);\n        log.setComment(comment);\n        logService.add(log);\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminAuthorizingRealm.java",
    "content": "package org.linlinjava.litemall.admin.shiro;\n\n\nimport org.apache.shiro.authc.*;\nimport org.apache.shiro.authz.AuthorizationException;\nimport org.apache.shiro.authz.AuthorizationInfo;\nimport org.apache.shiro.authz.SimpleAuthorizationInfo;\nimport org.apache.shiro.realm.AuthorizingRealm;\nimport org.apache.shiro.subject.PrincipalCollection;\nimport org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.linlinjava.litemall.db.service.LitemallPermissionService;\nimport org.linlinjava.litemall.db.service.LitemallRoleService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Lazy;\nimport org.springframework.util.Assert;\nimport org.springframework.util.StringUtils;\n\nimport java.util.List;\nimport java.util.Set;\n\n/**\n * 下面三个Autowired注解需要配合Lazy注解使用，否则会导致这三个service相关的事务失效。\n * https://gitee.com/linlinjava/litemall/issues/I3I94X#note_4809495\n */\npublic class AdminAuthorizingRealm extends AuthorizingRealm {\n\n    @Autowired\n    @Lazy\n    private LitemallAdminService adminService;\n    @Autowired\n    @Lazy\n    private LitemallRoleService roleService;\n    @Autowired\n    @Lazy\n    private LitemallPermissionService permissionService;\n\n    @Override\n    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {\n        if (principals == null) {\n            throw new AuthorizationException(\"PrincipalCollection method argument cannot be null.\");\n        }\n\n        LitemallAdmin admin = (LitemallAdmin) getAvailablePrincipal(principals);\n        Integer[] roleIds = admin.getRoleIds();\n        Set<String> roles = roleService.queryByIds(roleIds);\n        Set<String> permissions = permissionService.queryByRoleIds(roleIds);\n        SimpleAuthorizationInfo info = new SimpleAuthorizationInfo();\n        info.setRoles(roles);\n        info.setStringPermissions(permissions);\n        return info;\n    }\n\n    @Override\n    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {\n\n        UsernamePasswordToken upToken = (UsernamePasswordToken) token;\n        String username = upToken.getUsername();\n        String password = new String(upToken.getPassword());\n\n        if (StringUtils.isEmpty(username)) {\n            throw new AccountException(\"用户名不能为空\");\n        }\n        if (StringUtils.isEmpty(password)) {\n            throw new AccountException(\"密码不能为空\");\n        }\n\n        List<LitemallAdmin> adminList = adminService.findAdmin(username);\n        Assert.state(adminList.size() < 2, \"同一个用户名存在两个账户\");\n        if (adminList.size() == 0) {\n            throw new UnknownAccountException(\"找不到用户（\" + username + \"）的帐号信息\");\n        }\n        LitemallAdmin admin = adminList.get(0);\n\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        if (!encoder.matches(password, admin.getPassword())) {\n            throw new UnknownAccountException(\"找不到用户（\" + username + \"）的帐号信息\");\n        }\n\n        return new SimpleAuthenticationInfo(admin, password, getName());\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/shiro/AdminWebSessionManager.java",
    "content": "package org.linlinjava.litemall.admin.shiro;\n\nimport com.alibaba.druid.util.StringUtils;\nimport org.apache.shiro.web.servlet.ShiroHttpServletRequest;\nimport org.apache.shiro.web.session.mgt.DefaultWebSessionManager;\nimport org.apache.shiro.web.util.WebUtils;\n\nimport javax.servlet.ServletRequest;\nimport javax.servlet.ServletResponse;\nimport java.io.Serializable;\n\npublic class AdminWebSessionManager extends DefaultWebSessionManager {\n\n    public static final String LOGIN_TOKEN_KEY = \"X-Litemall-Admin-Token\";\n    private static final String REFERENCED_SESSION_ID_SOURCE = \"Stateless request\";\n\n\n    public AdminWebSessionManager() {\n        super();\n        setGlobalSessionTimeout(MILLIS_PER_HOUR * 6);\n//        setSessionIdCookieEnabled(false);\n        setSessionIdUrlRewritingEnabled(false);\n    }\n\n    @Override\n    protected Serializable getSessionId(ServletRequest request, ServletResponse response) {\n        String id = WebUtils.toHttp(request).getHeader(LOGIN_TOKEN_KEY);\n        if (!StringUtils.isEmpty(id)) {\n            request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_SOURCE, REFERENCED_SESSION_ID_SOURCE);\n            request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID, id);\n            request.setAttribute(ShiroHttpServletRequest.REFERENCED_SESSION_ID_IS_VALID, Boolean.TRUE);\n            // 参考 https://blog.csdn.net/narutots/article/details/120363843\n            request.setAttribute(ShiroHttpServletRequest.SESSION_ID_URL_REWRITING_ENABLED, this.isSessionIdUrlRewritingEnabled());\n            return id;\n        } else {\n            return super.getSessionId(request, response);\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/task/AdminTaskStartupRunner.java",
    "content": "package org.linlinjava.litemall.admin.task;\n\nimport org.linlinjava.litemall.core.task.TaskService;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.service.LitemallGrouponRulesService;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.ApplicationArguments;\nimport org.springframework.boot.ApplicationRunner;\nimport org.springframework.stereotype.Component;\n\nimport java.time.LocalDateTime;\nimport java.time.temporal.ChronoUnit;\nimport java.util.List;\n\n@Component\npublic class AdminTaskStartupRunner implements ApplicationRunner {\n\n    @Autowired\n    private LitemallGrouponRulesService rulesService;\n    @Autowired\n    private TaskService taskService;\n\n    @Override\n    public void run(ApplicationArguments args) throws Exception {\n        List<LitemallGrouponRules> grouponRulesList = rulesService.queryByStatus(GrouponConstant.RULE_STATUS_ON);\n        for(LitemallGrouponRules grouponRules : grouponRulesList){\n            LocalDateTime now = LocalDateTime.now();\n            LocalDateTime expire =  grouponRules.getExpireTime();\n            if(expire.isBefore(now)) {\n                // 已经过期，则加入延迟队列\n                taskService.addTask(new GrouponRuleExpiredTask(grouponRules.getId(), 0));\n            }\n            else{\n                // 还没过期，则加入延迟队列\n                long delay = ChronoUnit.MILLIS.between(now, expire);\n                taskService.addTask(new GrouponRuleExpiredTask(grouponRules.getId(), delay));\n            }\n        }\n    }\n}"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/task/GrouponRuleExpiredTask.java",
    "content": "package org.linlinjava.litemall.admin.task;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.task.Task;\nimport org.linlinjava.litemall.core.util.BeanUtil;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.linlinjava.litemall.db.util.OrderUtil;\n\nimport java.util.List;\n\npublic class GrouponRuleExpiredTask extends Task {\n    private final Log logger = LogFactory.getLog(GrouponRuleExpiredTask.class);\n    private int grouponRuleId = -1;\n\n    public GrouponRuleExpiredTask(Integer grouponRuleId, long delayInMilliseconds){\n        super(\"GrouponRuleExpiredTask-\" + grouponRuleId, delayInMilliseconds);\n        this.grouponRuleId = grouponRuleId;\n    }\n\n    @Override\n    public void run() {\n        logger.info(\"系统开始处理延时任务---团购规则过期---\" + this.grouponRuleId);\n\n        LitemallOrderService orderService = BeanUtil.getBean(LitemallOrderService.class);\n        LitemallGrouponService grouponService = BeanUtil.getBean(LitemallGrouponService.class);\n        LitemallGrouponRulesService grouponRulesService = BeanUtil.getBean(LitemallGrouponRulesService.class);\n\n        LitemallGrouponRules grouponRules = grouponRulesService.findById(grouponRuleId);\n        if(grouponRules == null){\n            return;\n        }\n        if(!grouponRules.getStatus().equals(GrouponConstant.RULE_STATUS_ON)){\n            return;\n        }\n\n        // 团购活动取消\n        grouponRules.setStatus(GrouponConstant.RULE_STATUS_DOWN_EXPIRE);\n        grouponRulesService.updateById(grouponRules);\n\n        List<LitemallGroupon> grouponList = grouponService.queryByRuleId(grouponRuleId);\n        // 用户团购处理\n        for(LitemallGroupon groupon : grouponList){\n            Short status = groupon.getStatus();\n            LitemallOrder order = orderService.findById(groupon.getOrderId());\n            if(status.equals(GrouponConstant.STATUS_NONE)){\n                groupon.setStatus(GrouponConstant.STATUS_FAIL);\n                grouponService.updateById(groupon);\n            }\n            else if(status.equals(GrouponConstant.STATUS_ON)){\n                // 如果团购进行中\n                // (1) 团购设置团购失败等待退款状态\n                groupon.setStatus(GrouponConstant.STATUS_FAIL);\n                grouponService.updateById(groupon);\n                // (2) 团购订单申请退款\n                if(OrderUtil.isPayStatus(order)) {\n                    order.setOrderStatus(OrderUtil.STATUS_REFUND);\n                    orderService.updateWithOptimisticLocker(order);\n                }\n            }\n        }\n        logger.info(\"系统结束处理延时任务---团购规则过期---\" + this.grouponRuleId);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/AdminResponseCode.java",
    "content": "package org.linlinjava.litemall.admin.util;\n\npublic class AdminResponseCode {\n    public static final Integer ADMIN_INVALID_NAME = 601;\n    public static final Integer ADMIN_INVALID_PASSWORD = 602;\n    public static final Integer ADMIN_NAME_EXIST = 602;\n    public static final Integer ADMIN_ALTER_NOT_ALLOWED = 603;\n    public static final Integer ADMIN_DELETE_NOT_ALLOWED = 604;\n    public static final Integer ADMIN_INVALID_ACCOUNT = 605;\n    public static final Integer ADMIN_INVALID_KAPTCHA = 606;\n    public static final Integer ADMIN_INVALID_KAPTCHA_REQUIRED = 607;\n    public static final Integer GOODS_UPDATE_NOT_ALLOWED = 610;\n    public static final Integer GOODS_NAME_EXIST = 611;\n    public static final Integer ORDER_CONFIRM_NOT_ALLOWED = 620;\n    public static final Integer ORDER_REFUND_FAILED = 621;\n    public static final Integer ORDER_REPLY_EXIST = 622;\n    public static final Integer ORDER_DELETE_FAILED = 623;\n    public static final Integer ORDER_PAY_FAILED = 624;public static final Integer USER_INVALID_NAME = 630;\n    public static final Integer USER_INVALID_PASSWORD = 631;\n    public static final Integer USER_INVALID_MOBILE = 632;\n    public static final Integer USER_NAME_EXIST = 633;\n    public static final Integer USER_MOBILE_EXIST = 634;\n    public static final Integer ROLE_NAME_EXIST = 640;\n    public static final Integer ROLE_SUPER_SUPERMISSION = 641;\n    public static final Integer ROLE_USER_EXIST = 642;\n    public static final Integer GROUPON_GOODS_UNKNOWN = 650;\n    public static final Integer GROUPON_GOODS_EXISTED = 651;\n    public static final Integer GROUPON_GOODS_OFFLINE = 652;\n    public static final Integer NOTICE_UPDATE_NOT_ALLOWED = 660;\n    public static final Integer AFTERSALE_NOT_ALLOWED = 670;\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/Permission.java",
    "content": "package org.linlinjava.litemall.admin.util;\n\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\n\npublic class Permission {\n    private RequiresPermissions requiresPermissions;\n    private RequiresPermissionsDesc requiresPermissionsDesc;\n    private String api;\n\n    public RequiresPermissions getRequiresPermissions() {\n        return requiresPermissions;\n    }\n\n    public RequiresPermissionsDesc getRequiresPermissionsDesc() {\n        return requiresPermissionsDesc;\n    }\n\n    public void setRequiresPermissions(RequiresPermissions requiresPermissions) {\n        this.requiresPermissions = requiresPermissions;\n    }\n\n    public void setRequiresPermissionsDesc(RequiresPermissionsDesc requiresPermissionsDesc) {\n        this.requiresPermissionsDesc = requiresPermissionsDesc;\n    }\n\n    public String getApi() {\n        return api;\n    }\n\n    public void setApi(String api) {\n        this.api = api;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/util/PermissionUtil.java",
    "content": "package org.linlinjava.litemall.admin.util;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.commons.lang3.reflect.MethodUtils;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.vo.PermVo;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.core.annotation.AnnotationUtils;\nimport org.springframework.stereotype.Controller;\nimport org.springframework.util.ClassUtils;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\n\nimport java.lang.reflect.Method;\nimport java.util.*;\n\npublic class PermissionUtil {\n\n    public static List<PermVo> listPermVo(List<Permission> permissions) {\n        List<PermVo> root = new ArrayList<>();\n        for (Permission permission : permissions) {\n            RequiresPermissions requiresPermissions = permission.getRequiresPermissions();\n            RequiresPermissionsDesc requiresPermissionsDesc = permission.getRequiresPermissionsDesc();\n            String api = permission.getApi();\n\n            String[] menus = requiresPermissionsDesc.menu();\n            if (menus.length != 2) {\n                throw new RuntimeException(\"目前只支持两级菜单\");\n            }\n            String menu1 = menus[0];\n            PermVo perm1 = null;\n            for (PermVo permVo : root) {\n                if (permVo.getLabel().equals(menu1)) {\n                    perm1 = permVo;\n                    break;\n                }\n            }\n            if (perm1 == null) {\n                perm1 = new PermVo();\n                perm1.setId(menu1);\n                perm1.setLabel(menu1);\n                perm1.setChildren(new ArrayList<>());\n                root.add(perm1);\n            }\n            String menu2 = menus[1];\n            PermVo perm2 = null;\n            for (PermVo permVo : perm1.getChildren()) {\n                if (permVo.getLabel().equals(menu2)) {\n                    perm2 = permVo;\n                    break;\n                }\n            }\n            if (perm2 == null) {\n                perm2 = new PermVo();\n                perm2.setId(menu2);\n                perm2.setLabel(menu2);\n                perm2.setChildren(new ArrayList<>());\n                perm1.getChildren().add(perm2);\n            }\n\n            String button = requiresPermissionsDesc.button();\n            PermVo leftPerm = null;\n            for (PermVo permVo : perm2.getChildren()) {\n                if (permVo.getLabel().equals(button)) {\n                    leftPerm = permVo;\n                    break;\n                }\n            }\n            if (leftPerm == null) {\n                leftPerm = new PermVo();\n                leftPerm.setId(requiresPermissions.value()[0]);\n                leftPerm.setLabel(requiresPermissionsDesc.button());\n                leftPerm.setApi(api);\n                perm2.getChildren().add(leftPerm);\n            } else {\n                // TODO\n                // 目前限制Controller里面每个方法的RequiresPermissionsDesc注解是唯一的\n                // 如果允许相同，可能会造成内部权限不一致。\n                throw new RuntimeException(\"权限已经存在，不能添加新权限\");\n            }\n\n        }\n        return root;\n    }\n\n    public static List<Permission> listPermission(ApplicationContext context, String basicPackage) {\n        Map<String, Object> map = context.getBeansWithAnnotation(Controller.class);\n        List<Permission> permissions = new ArrayList<>();\n        for (Map.Entry<String, Object> entry : map.entrySet()) {\n            Object bean = entry.getValue();\n            if (!StringUtils.contains(ClassUtils.getPackageName(bean.getClass()), basicPackage)) {\n                continue;\n            }\n\n            Class<?> clz = bean.getClass();\n            Class controllerClz = clz.getSuperclass();\n            RequestMapping clazzRequestMapping = AnnotationUtils.findAnnotation(controllerClz, RequestMapping.class);\n            List<Method> methods = MethodUtils.getMethodsListWithAnnotation(controllerClz, RequiresPermissions.class);\n            for (Method method : methods) {\n                RequiresPermissions requiresPermissions = AnnotationUtils.getAnnotation(method,\n                        RequiresPermissions.class);\n                RequiresPermissionsDesc requiresPermissionsDesc = AnnotationUtils.getAnnotation(method,\n                        RequiresPermissionsDesc.class);\n\n                if (requiresPermissions == null || requiresPermissionsDesc == null) {\n                    continue;\n                }\n\n                String api = \"\";\n                if (clazzRequestMapping != null) {\n                    api = clazzRequestMapping.value()[0];\n                }\n\n                PostMapping postMapping = AnnotationUtils.getAnnotation(method, PostMapping.class);\n                if (postMapping != null) {\n                    api = \"POST \" + api + postMapping.value()[0];\n\n                    Permission permission = new Permission();\n                    permission.setRequiresPermissions(requiresPermissions);\n                    permission.setRequiresPermissionsDesc(requiresPermissionsDesc);\n                    permission.setApi(api);\n                    permissions.add(permission);\n                    continue;\n                }\n                GetMapping getMapping = AnnotationUtils.getAnnotation(method, GetMapping.class);\n                if (getMapping != null) {\n                    api = \"GET \" + api + getMapping.value()[0];\n                    Permission permission = new Permission();\n                    permission.setRequiresPermissions(requiresPermissions);\n                    permission.setRequiresPermissionsDesc(requiresPermissionsDesc);\n                    permission.setApi(api);\n                    permissions.add(permission);\n                    continue;\n                }\n                // TODO\n                // 这里只支持GetMapping注解或者PostMapping注解，应该进一步提供灵活性\n                throw new RuntimeException(\"目前权限管理应该在method的前面使用GetMapping注解或者PostMapping注解\");\n            }\n        }\n        return permissions;\n    }\n\n    public static Set<String> listPermissionString(List<Permission> permissions) {\n        Set<String> permissionsString = new HashSet<>();\n        for (Permission permission : permissions) {\n            permissionsString.add(permission.getRequiresPermissions().value()[0]);\n        }\n        return permissionsString;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/vo/CatVo.java",
    "content": "package org.linlinjava.litemall.admin.vo;\n\nimport java.util.List;\n\npublic class CatVo {\n    private Integer value = null;\n    private String label = null;\n    private List children = null;\n\n    public Integer getValue() {\n        return value;\n    }\n\n    public void setValue(Integer value) {\n        this.value = value;\n    }\n\n    public String getLabel() {\n        return label;\n    }\n\n    public void setLabel(String label) {\n        this.label = label;\n    }\n\n    public List getChildren() {\n        return children;\n    }\n\n    public void setChildren(List children) {\n        this.children = children;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/vo/CategoryVo.java",
    "content": "package org.linlinjava.litemall.admin.vo;\n\nimport java.util.List;\n\npublic class CategoryVo {\n    private Integer id;\n    private String name;\n    private String keywords;\n    private String desc;\n    private String iconUrl;\n    private String picUrl;\n    private String level;\n    private Integer pid;\n    private List<CategoryVo> children;\n\n    public List<CategoryVo> getChildren() {\n        return children;\n    }\n\n    public void setChildren(List<CategoryVo> children) {\n        this.children = children;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getKeywords() {\n        return keywords;\n    }\n\n    public void setKeywords(String keywords) {\n        this.keywords = keywords;\n    }\n\n    public String getDesc() {\n        return desc;\n    }\n\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    public String getIconUrl() {\n        return iconUrl;\n    }\n\n    public void setIconUrl(String iconUrl) {\n        this.iconUrl = iconUrl;\n    }\n\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    public String getLevel() {\n        return level;\n    }\n\n    public void setLevel(String level) {\n        this.level = level;\n    }\n\n    public Integer getPid() {\n        return pid;\n    }\n\n    public void setPid(Integer pid) {\n        this.pid = pid;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/vo/PermVo.java",
    "content": "package org.linlinjava.litemall.admin.vo;\n\nimport java.util.List;\n\npublic class PermVo {\n    private String id;\n    private String label;\n    private String api;\n    private List<PermVo> children;\n\n    public String getId() {\n        return id;\n    }\n\n    public void setId(String id) {\n        this.id = id;\n    }\n\n    public String getLabel() {\n        return label;\n    }\n\n    public void setLabel(String label) {\n        this.label = label;\n    }\n\n    public void setApi(String api) {\n        this.api = api;\n    }\n\n    public String getApi() {\n        return api;\n    }\n\n    public List<PermVo> getChildren() {\n        return children;\n    }\n\n    public void setChildren(List<PermVo> children) {\n        this.children = children;\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/vo/RegionVo.java",
    "content": "package org.linlinjava.litemall.admin.vo;\n\nimport java.util.List;\n\npublic class RegionVo {\n    private Integer id;\n    private String name;\n    private Byte type;\n    private Integer code;\n\n    private List<RegionVo> children;\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public List<RegionVo> getChildren() {\n        return children;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public Byte getType() {\n        return type;\n    }\n\n    public void setType(Byte type) {\n        this.type = type;\n    }\n\n    public Integer getCode() {\n        return code;\n    }\n\n    public void setCode(Integer code) {\n        this.code = code;\n    }\n\n    public void setChildren(List<RegionVo> children) {\n        this.children = children;\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/vo/StatVo.java",
    "content": "package org.linlinjava.litemall.admin.vo;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\nimport java.util.Map;\n\npublic class StatVo {\n    private String[] columns = new String[0];\n    private List<Map> rows = new ArrayList<>();\n\n    public String[] getColumns() {\n        return columns;\n    }\n\n    public void setColumns(String[] columns) {\n        this.columns = columns;\n    }\n\n    public List<Map> getRows() {\n        return rows;\n    }\n\n    public void setRows(List<Map> rows) {\n        this.rows = rows;\n    }\n\n    public void add(Map... r) {\n        rows.addAll(Arrays.asList(r));\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAd;\nimport org.linlinjava.litemall.db.service.LitemallAdService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/ad\")\n@Validated\npublic class AdminAdController {\n    private final Log logger = LogFactory.getLog(AdminAdController.class);\n\n    @Autowired\n    private LitemallAdService adService;\n\n    @RequiresPermissions(\"admin:ad:list\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"广告管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name, String content,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallAd> adList = adService.querySelective(name, content, page, limit, sort, order);\n        return ResponseUtil.okList(adList);\n    }\n\n    private Object validate(LitemallAd ad) {\n        String name = ad.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n        String content = ad.getContent();\n        if (StringUtils.isEmpty(content)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:ad:create\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"广告管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallAd ad) {\n        Object error = validate(ad);\n        if (error != null) {\n            return error;\n        }\n        adService.add(ad);\n        return ResponseUtil.ok(ad);\n    }\n\n    @RequiresPermissions(\"admin:ad:read\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"广告管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallAd ad = adService.findById(id);\n        return ResponseUtil.ok(ad);\n    }\n\n    @RequiresPermissions(\"admin:ad:update\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"广告管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallAd ad) {\n        Object error = validate(ad);\n        if (error != null) {\n            return error;\n        }\n        if (adService.updateById(ad) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok(ad);\n    }\n\n    @RequiresPermissions(\"admin:ad:delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"广告管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallAd ad) {\n        Integer id = ad.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        adService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAddressController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAddress;\nimport org.linlinjava.litemall.db.service.LitemallAddressService;\nimport org.linlinjava.litemall.db.service.LitemallRegionService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/address\")\n@Validated\npublic class AdminAddressController {\n    private final Log logger = LogFactory.getLog(AdminAddressController.class);\n\n    @Autowired\n    private LitemallAddressService addressService;\n    @Autowired\n    private LitemallRegionService regionService;\n\n    @RequiresPermissions(\"admin:address:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"收货地址\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(Integer userId, String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n\n        List<LitemallAddress> addressList = addressService.querySelective(userId, name, page, limit, sort, order);\n        return ResponseUtil.okList(addressList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAdminController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.service.LogHelper;\nimport org.linlinjava.litemall.core.util.RegexUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.*;\n\n@RestController\n@RequestMapping(\"/admin/admin\")\n@Validated\npublic class AdminAdminController {\n    private final Log logger = LogFactory.getLog(AdminAdminController.class);\n\n    @Autowired\n    private LitemallAdminService adminService;\n    @Autowired\n    private LogHelper logHelper;\n\n    @RequiresPermissions(\"admin:admin:list\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"管理员管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String username,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallAdmin> adminList = adminService.querySelective(username, page, limit, sort, order);\n        return ResponseUtil.okList(adminList);\n    }\n\n    private Object validate(LitemallAdmin admin) {\n        String name = admin.getUsername();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n        if (!RegexUtil.isUsername(name)) {\n            return ResponseUtil.fail(ADMIN_INVALID_NAME, \"管理员名称不符合规定\");\n        }\n        String password = admin.getPassword();\n        if (StringUtils.isEmpty(password) || password.length() < 6) {\n            return ResponseUtil.fail(ADMIN_INVALID_PASSWORD, \"管理员密码长度不能小于6\");\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:admin:create\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"管理员管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallAdmin admin) {\n        Object error = validate(admin);\n        if (error != null) {\n            return error;\n        }\n\n        String username = admin.getUsername();\n        List<LitemallAdmin> adminList = adminService.findAdmin(username);\n        if (adminList.size() > 0) {\n            return ResponseUtil.fail(ADMIN_NAME_EXIST, \"管理员已经存在\");\n        }\n\n        String rawPassword = admin.getPassword();\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        String encodedPassword = encoder.encode(rawPassword);\n        admin.setPassword(encodedPassword);\n        adminService.add(admin);\n        logHelper.logAuthSucceed(\"添加管理员\", username);\n        return ResponseUtil.ok(admin);\n    }\n\n    @RequiresPermissions(\"admin:admin:read\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"管理员管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallAdmin admin = adminService.findById(id);\n        return ResponseUtil.ok(admin);\n    }\n\n    @RequiresPermissions(\"admin:admin:update\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"管理员管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallAdmin admin) {\n        Object error = validate(admin);\n        if (error != null) {\n            return error;\n        }\n\n        Integer anotherAdminId = admin.getId();\n        if (anotherAdminId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 不允许管理员通过编辑接口修改密码\n        admin.setPassword(null);\n\n        if (adminService.updateById(admin) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        logHelper.logAuthSucceed(\"编辑管理员\", admin.getUsername());\n        return ResponseUtil.ok(admin);\n    }\n\n    @RequiresPermissions(\"admin:admin:delete\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"管理员管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallAdmin admin) {\n        Integer anotherAdminId = admin.getId();\n        if (anotherAdminId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 管理员不能删除自身账号\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin currentAdmin = (LitemallAdmin) currentUser.getPrincipal();\n        if (currentAdmin.getId().equals(anotherAdminId)) {\n            return ResponseUtil.fail(ADMIN_DELETE_NOT_ALLOWED, \"管理员不能删除自己账号\");\n        }\n\n        adminService.deleteById(anotherAdminId);\n        logHelper.logAuthSucceed(\"删除管理员\", admin.getUsername());\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAftersaleController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport com.github.binarywang.wxpay.bean.request.WxPayRefundRequest;\nimport com.github.binarywang.wxpay.bean.result.WxPayRefundResult;\nimport com.github.binarywang.wxpay.exception.WxPayException;\nimport com.github.binarywang.wxpay.service.WxPayService;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.service.LogHelper;\nimport org.linlinjava.litemall.admin.util.AdminResponseCode;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.NotifyType;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAftersale;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProduct;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoods;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.AftersaleConstant;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.ORDER_REFUND_FAILED;\n\n@RestController\n@RequestMapping(\"/admin/aftersale\")\n@Validated\npublic class AdminAftersaleController {\n    private final Log logger = LogFactory.getLog(AdminAftersaleController.class);\n\n    @Autowired\n    private LitemallAftersaleService aftersaleService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n    @Autowired\n    private LitemallGoodsProductService goodsProductService;\n    @Autowired\n    private LogHelper logHelper;\n    @Autowired\n    private WxPayService wxPayService;\n    @Autowired\n    private NotifyService notifyService;\n\n    @RequiresPermissions(\"admin:aftersale:list\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(Integer orderId, String aftersaleSn, Short status,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallAftersale> aftersaleList = aftersaleService.querySelective(orderId, aftersaleSn, status, page, limit, sort, order);\n        return ResponseUtil.okList(aftersaleList);\n    }\n\n    @RequiresPermissions(\"admin:aftersale:recept\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"审核通过\")\n    @PostMapping(\"/recept\")\n    public Object recept(@RequestBody LitemallAftersale aftersale) {\n        Integer id = aftersale.getId();\n        LitemallAftersale aftersaleOne = aftersaleService.findById(id);\n        if(aftersaleOne == null){\n            return ResponseUtil.fail(AdminResponseCode.AFTERSALE_NOT_ALLOWED, \"售后不存在\");\n        }\n        Short status = aftersaleOne.getStatus();\n        if(!status.equals(AftersaleConstant.STATUS_REQUEST)){\n            return ResponseUtil.fail(AdminResponseCode.AFTERSALE_NOT_ALLOWED, \"售后不能进行审核通过操作\");\n        }\n        aftersaleOne.setStatus(AftersaleConstant.STATUS_RECEPT);\n        aftersaleOne.setHandleTime(LocalDateTime.now());\n        aftersaleService.updateById(aftersaleOne);\n\n        // 订单也要更新售后状态\n        orderService.updateAftersaleStatus(aftersaleOne.getOrderId(), AftersaleConstant.STATUS_RECEPT);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:aftersale:batch-recept\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"批量通过\")\n    @PostMapping(\"/batch-recept\")\n    public Object batchRecept(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        // NOTE\n        // 批量操作中，如果一部分数据项失败，应该如何处理\n        // 这里采用忽略失败，继续处理其他项。\n        // 当然开发者可以采取其他处理方式，具体情况具体分析，例如利用事务回滚所有操作然后返回用户失败信息\n        for(Integer id : ids) {\n            LitemallAftersale aftersale = aftersaleService.findById(id);\n            if(aftersale == null){\n                continue;\n            }\n            Short status = aftersale.getStatus();\n            if(!status.equals(AftersaleConstant.STATUS_REQUEST)){\n                continue;\n            }\n            aftersale.setStatus(AftersaleConstant.STATUS_RECEPT);\n            aftersale.setHandleTime(LocalDateTime.now());\n            aftersaleService.updateById(aftersale);\n\n            // 订单也要更新售后状态\n            orderService.updateAftersaleStatus(aftersale.getOrderId(), AftersaleConstant.STATUS_RECEPT);\n        }\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:aftersale:reject\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"审核拒绝\")\n    @PostMapping(\"/reject\")\n    public Object reject(@RequestBody LitemallAftersale aftersale) {\n        Integer id = aftersale.getId();\n        LitemallAftersale aftersaleOne = aftersaleService.findById(id);\n        if(aftersaleOne == null){\n            return ResponseUtil.badArgumentValue();\n        }\n        Short status = aftersaleOne.getStatus();\n        if(!status.equals(AftersaleConstant.STATUS_REQUEST)){\n            return ResponseUtil.fail(AdminResponseCode.AFTERSALE_NOT_ALLOWED, \"售后不能进行审核拒绝操作\");\n        }\n        aftersaleOne.setStatus(AftersaleConstant.STATUS_REJECT);\n        aftersaleOne.setHandleTime(LocalDateTime.now());\n        aftersaleService.updateById(aftersaleOne);\n\n        // 订单也要更新售后状态\n        orderService.updateAftersaleStatus(aftersaleOne.getOrderId(), AftersaleConstant.STATUS_REJECT);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:aftersale:batch-reject\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"批量拒绝\")\n    @PostMapping(\"/batch-reject\")\n    public Object batchReject(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        for(Integer id : ids) {\n            LitemallAftersale aftersale = aftersaleService.findById(id);\n            if(aftersale == null){\n                continue;\n            }\n            Short status = aftersale.getStatus();\n            if(!status.equals(AftersaleConstant.STATUS_REQUEST)){\n                continue;\n            }\n            aftersale.setStatus(AftersaleConstant.STATUS_REJECT);\n            aftersale.setHandleTime(LocalDateTime.now());\n            aftersaleService.updateById(aftersale);\n\n            // 订单也要更新售后状态\n            orderService.updateAftersaleStatus(aftersale.getOrderId(), AftersaleConstant.STATUS_REJECT);\n        }\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:aftersale:refund\")\n    @RequiresPermissionsDesc(menu = {\"商城管理\", \"售后管理\"}, button = \"退款\")\n    @PostMapping(\"/refund\")\n    public Object refund(@RequestBody LitemallAftersale aftersale) {\n        Integer id = aftersale.getId();\n        LitemallAftersale aftersaleOne = aftersaleService.findById(id);\n        if(aftersaleOne == null){\n            return ResponseUtil.badArgumentValue();\n        }\n        if(!aftersaleOne.getStatus().equals(AftersaleConstant.STATUS_RECEPT)){\n            return ResponseUtil.fail(AdminResponseCode.AFTERSALE_NOT_ALLOWED, \"售后不能进行退款操作\");\n        }\n        Integer orderId = aftersaleOne.getOrderId();\n        LitemallOrder order = orderService.findById(orderId);\n\n        // 微信退款\n        WxPayRefundRequest wxPayRefundRequest = new WxPayRefundRequest();\n        wxPayRefundRequest.setOutTradeNo(order.getOrderSn());\n        wxPayRefundRequest.setOutRefundNo(\"refund_\" + order.getOrderSn());\n        // 元转成分\n        Integer totalFee = aftersaleOne.getAmount().multiply(new BigDecimal(100)).intValue();\n        wxPayRefundRequest.setTotalFee(order.getActualPrice().multiply(new BigDecimal(100)).intValue());\n        wxPayRefundRequest.setRefundFee(totalFee);\n\n        WxPayRefundResult wxPayRefundResult;\n        try {\n            wxPayRefundResult = wxPayService.refund(wxPayRefundRequest);\n        } catch (WxPayException e) {\n            logger.error(e.getMessage(), e);\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n        if (!wxPayRefundResult.getReturnCode().equals(\"SUCCESS\")) {\n            logger.warn(\"refund fail: \" + wxPayRefundResult.getReturnMsg());\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n        if (!wxPayRefundResult.getResultCode().equals(\"SUCCESS\")) {\n            logger.warn(\"refund fail: \" + wxPayRefundResult.getReturnMsg());\n            return ResponseUtil.fail(ORDER_REFUND_FAILED, \"订单退款失败\");\n        }\n\n        aftersaleOne.setStatus(AftersaleConstant.STATUS_REFUND);\n        aftersaleOne.setHandleTime(LocalDateTime.now());\n        aftersaleService.updateById(aftersaleOne);\n\n        orderService.updateAftersaleStatus(orderId, AftersaleConstant.STATUS_REFUND);\n\n        // NOTE\n        // 如果是“退货退款”类型的售后，这里退款说明用户的货已经退回，则需要商品货品数量增加\n        // 开发者也可以删除一下代码，在其他地方增加商品货品入库操作\n        if(aftersale.getType().equals(AftersaleConstant.TYPE_GOODS_REQUIRED)) {\n            List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);\n            for (LitemallOrderGoods orderGoods : orderGoodsList) {\n                Integer productId = orderGoods.getProductId();\n                Short number = orderGoods.getNumber();\n                goodsProductService.addStock(productId, number);\n            }\n        }\n\n        // 发送短信通知，这里采用异步发送\n        // 退款成功通知用户, 例如“您申请的订单退款 [ 单号:{1} ] 已成功，请耐心等待到账。”\n        // TODO 注意订单号只发后6位\n        notifyService.notifySmsTemplate(order.getMobile(), NotifyType.REFUND,\n                new String[]{order.getOrderSn().substring(8, 14)});\n\n        logHelper.logOrderSucceed(\"退款\", \"订单编号 \" + order.getOrderSn() + \" 售后编号 \" + aftersale.getAftersaleSn());\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminAuthController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport com.google.code.kaptcha.Producer;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authc.AuthenticationException;\nimport org.apache.shiro.authc.LockedAccountException;\nimport org.apache.shiro.authc.UnknownAccountException;\nimport org.apache.shiro.authc.UsernamePasswordToken;\nimport org.apache.shiro.authz.annotation.RequiresAuthentication;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.admin.service.LogHelper;\nimport org.linlinjava.litemall.admin.util.Permission;\nimport org.linlinjava.litemall.admin.util.PermissionUtil;\nimport org.linlinjava.litemall.core.util.IpUtil;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.linlinjava.litemall.db.service.LitemallPermissionService;\nimport org.linlinjava.litemall.db.service.LitemallRoleService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.imageio.ImageIO;\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpSession;\nimport java.awt.image.BufferedImage;\nimport java.io.ByteArrayOutputStream;\nimport java.io.IOException;\nimport java.time.LocalDateTime;\nimport java.util.*;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.*;\n\n@RestController\n@RequestMapping(\"/admin/auth\")\n@Validated\npublic class AdminAuthController {\n    private final Log logger = LogFactory.getLog(AdminAuthController.class);\n\n    @Autowired\n    private LitemallAdminService adminService;\n    @Autowired\n    private LitemallRoleService roleService;\n    @Autowired\n    private LitemallPermissionService permissionService;\n    @Autowired\n    private LogHelper logHelper;\n\n    @Autowired\n    private Producer kaptchaProducer;\n\n    @GetMapping(\"/kaptcha\")\n    public Object kaptcha(HttpServletRequest request) {\n        String kaptcha = doKaptcha(request);\n        if (kaptcha != null) {\n            return ResponseUtil.ok(kaptcha);\n        }\n        return ResponseUtil.fail();\n    }\n\n    private String doKaptcha(HttpServletRequest request) {\n        // 生成验证码\n        String text = kaptchaProducer.createText();\n        BufferedImage image = kaptchaProducer.createImage(text);\n        HttpSession session = request.getSession();\n        session.setAttribute(\"kaptcha\", text);\n\n        try {\n            ByteArrayOutputStream outputStream = new ByteArrayOutputStream();\n            ImageIO.write(image, \"jpeg\", outputStream);\n            String base64 = Base64.getEncoder().encodeToString(outputStream.toByteArray());\n            return \"data:image/jpeg;base64,\" + base64.replaceAll(\"\\r\\n\", \"\");\n        } catch (IOException e) {\n            return null;\n        }\n    }\n\n    /*\n     *  { username : value, password : value }\n     */\n    @PostMapping(\"/login\")\n    public Object login(@RequestBody String body, HttpServletRequest request) {\n        String username = JacksonUtil.parseString(body, \"username\");\n        String password = JacksonUtil.parseString(body, \"password\");\n//        String code = JacksonUtil.parseString(body, \"code\");\n\n        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password)) {\n            return ResponseUtil.badArgument();\n        }\n//        if (StringUtils.isEmpty(code)) {\n//            return ResponseUtil.fail(ADMIN_INVALID_KAPTCHA_REQUIRED, \"验证码不能空\");\n//        }\n\n//        HttpSession session = request.getSession();\n//        String kaptcha = (String)session.getAttribute(\"kaptcha\");\n//        if (Objects.requireNonNull(code).compareToIgnoreCase(kaptcha) != 0) {\n//            return ResponseUtil.fail(ADMIN_INVALID_KAPTCHA, \"验证码不正确\", doKaptcha(request));\n//        }\n\n        Subject currentUser = SecurityUtils.getSubject();\n        try {\n            currentUser.login(new UsernamePasswordToken(username, password));\n        } catch (UnknownAccountException uae) {\n            logHelper.logAuthFail(\"登录\", \"用户帐号或密码不正确\");\n            return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, \"用户帐号或密码不正确\", doKaptcha(request));\n        } catch (LockedAccountException lae) {\n            logHelper.logAuthFail(\"登录\", \"用户帐号已锁定不可用\");\n            return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, \"用户帐号已锁定不可用\");\n\n        } catch (AuthenticationException ae) {\n            logHelper.logAuthFail(\"登录\", \"认证失败\");\n            return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, \"认证失败\");\n        }\n\n        currentUser = SecurityUtils.getSubject();\n        LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n        admin.setLastLoginIp(IpUtil.getIpAddr(request));\n        admin.setLastLoginTime(LocalDateTime.now());\n        adminService.updateById(admin);\n\n        logHelper.logAuthSucceed(\"登录\");\n\n        // userInfo\n        Map<String, Object> adminInfo = new HashMap<String, Object>();\n        adminInfo.put(\"nickName\", admin.getUsername());\n        adminInfo.put(\"avatar\", admin.getAvatar());\n\n        Map<Object, Object> result = new HashMap<Object, Object>();\n        result.put(\"token\", currentUser.getSession().getId());\n        result.put(\"adminInfo\", adminInfo);\n        return ResponseUtil.ok(result);\n    }\n\n    /*\n     *\n     */\n    @RequiresAuthentication\n    @PostMapping(\"/logout\")\n    public Object logout() {\n        Subject currentUser = SecurityUtils.getSubject();\n\n        logHelper.logAuthSucceed(\"退出\");\n        currentUser.logout();\n        return ResponseUtil.ok();\n    }\n\n\n    @RequiresAuthentication\n    @GetMapping(\"/info\")\n    public Object info() {\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"name\", admin.getUsername());\n        data.put(\"avatar\", admin.getAvatar());\n\n        Integer[] roleIds = admin.getRoleIds();\n        Set<String> roles = roleService.queryByIds(roleIds);\n        Set<String> permissions = permissionService.queryByRoleIds(roleIds);\n        data.put(\"roles\", roles);\n        // NOTE\n        // 这里需要转换perms结构，因为对于前端而已API形式的权限更容易理解\n        data.put(\"perms\", toApi(permissions));\n        return ResponseUtil.ok(data);\n    }\n\n    @Autowired\n    private ApplicationContext context;\n    private HashMap<String, String> systemPermissionsMap = null;\n\n    private Collection<String> toApi(Set<String> permissions) {\n        if (systemPermissionsMap == null) {\n            systemPermissionsMap = new HashMap<>();\n            final String basicPackage = \"org.linlinjava.litemall.admin\";\n            List<Permission> systemPermissions = PermissionUtil.listPermission(context, basicPackage);\n            for (Permission permission : systemPermissions) {\n                String perm = permission.getRequiresPermissions().value()[0];\n                String api = permission.getApi();\n                systemPermissionsMap.put(perm, api);\n            }\n        }\n\n        Collection<String> apis = new HashSet<>();\n        for (String perm : permissions) {\n            String api = systemPermissionsMap.get(perm);\n            apis.add(api);\n\n            if (perm.equals(\"*\")) {\n                apis.clear();\n                apis.add(\"*\");\n                return apis;\n                //                return systemPermissionsMap.values();\n\n            }\n        }\n        return apis;\n    }\n\n    @GetMapping(\"/401\")\n    public Object page401() {\n        return ResponseUtil.unlogin();\n    }\n\n    @GetMapping(\"/index\")\n    public Object pageIndex() {\n        return ResponseUtil.ok();\n    }\n\n    @GetMapping(\"/403\")\n    public Object page403() {\n        return ResponseUtil.unauthz();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminBrandController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallBrand;\nimport org.linlinjava.litemall.db.service.LitemallBrandService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.math.BigDecimal;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/brand\")\n@Validated\npublic class AdminBrandController {\n    private final Log logger = LogFactory.getLog(AdminBrandController.class);\n\n    @Autowired\n    private LitemallBrandService brandService;\n\n    @RequiresPermissions(\"admin:brand:list\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"品牌管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String id, String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallBrand> brandList = brandService.querySelective(id, name, page, limit, sort, order);\n        return ResponseUtil.okList(brandList);\n    }\n\n    private Object validate(LitemallBrand brand) {\n        String name = brand.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n\n        String desc = brand.getDesc();\n        if (StringUtils.isEmpty(desc)) {\n            return ResponseUtil.badArgument();\n        }\n\n        BigDecimal price = brand.getFloorPrice();\n        if (price == null) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:brand:create\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"品牌管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallBrand brand) {\n        Object error = validate(brand);\n        if (error != null) {\n            return error;\n        }\n        brandService.add(brand);\n        return ResponseUtil.ok(brand);\n    }\n\n    @RequiresPermissions(\"admin:brand:read\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"品牌管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallBrand brand = brandService.findById(id);\n        return ResponseUtil.ok(brand);\n    }\n\n    @RequiresPermissions(\"admin:brand:update\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"品牌管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallBrand brand) {\n        Object error = validate(brand);\n        if (error != null) {\n            return error;\n        }\n        if (brandService.updateById(brand) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok(brand);\n    }\n\n    @RequiresPermissions(\"admin:brand:delete\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"品牌管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallBrand brand) {\n        Integer id = brand.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        brandService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCategoryController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.vo.CategoryVo;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallCategory;\nimport org.linlinjava.litemall.db.service.LitemallCategoryService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/category\")\n@Validated\npublic class AdminCategoryController {\n    private final Log logger = LogFactory.getLog(AdminCategoryController.class);\n\n    @Autowired\n    private LitemallCategoryService categoryService;\n\n    @RequiresPermissions(\"admin:category:list\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"类目管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list() {\n        List<CategoryVo> categoryVoList = new ArrayList<>();\n\n        List<LitemallCategory> categoryList = categoryService.queryByPid(0);\n        for (LitemallCategory category : categoryList) {\n            CategoryVo categoryVO = new CategoryVo();\n            categoryVO.setId(category.getId());\n            categoryVO.setDesc(category.getDesc());\n            categoryVO.setIconUrl(category.getIconUrl());\n            categoryVO.setPicUrl(category.getPicUrl());\n            categoryVO.setKeywords(category.getKeywords());\n            categoryVO.setName(category.getName());\n            categoryVO.setLevel(category.getLevel());\n\n            List<CategoryVo> children = new ArrayList<>();\n            List<LitemallCategory> subCategoryList = categoryService.queryByPid(category.getId());\n            for (LitemallCategory subCategory : subCategoryList) {\n                CategoryVo subCategoryVo = new CategoryVo();\n                subCategoryVo.setId(subCategory.getId());\n                subCategoryVo.setDesc(subCategory.getDesc());\n                subCategoryVo.setIconUrl(subCategory.getIconUrl());\n                subCategoryVo.setPicUrl(subCategory.getPicUrl());\n                subCategoryVo.setKeywords(subCategory.getKeywords());\n                subCategoryVo.setName(subCategory.getName());\n                subCategoryVo.setLevel(subCategory.getLevel());\n                subCategoryVo.setPid(subCategory.getPid());\n\n                children.add(subCategoryVo);\n            }\n\n            categoryVO.setChildren(children);\n            categoryVoList.add(categoryVO);\n        }\n\n        return ResponseUtil.okList(categoryVoList);\n    }\n\n    private Object validate(LitemallCategory category) {\n        String name = category.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n\n        String level = category.getLevel();\n        if (StringUtils.isEmpty(level)) {\n            return ResponseUtil.badArgument();\n        }\n        if (!level.equals(\"L1\") && !level.equals(\"L2\")) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        Integer pid = category.getPid();\n        if (level.equals(\"L2\") && (pid == null)) {\n            return ResponseUtil.badArgument();\n        }\n\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:category:create\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"类目管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallCategory category) {\n        Object error = validate(category);\n        if (error != null) {\n            return error;\n        }\n        categoryService.add(category);\n        return ResponseUtil.ok(category);\n    }\n\n    @RequiresPermissions(\"admin:category:read\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"类目管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallCategory category = categoryService.findById(id);\n        return ResponseUtil.ok(category);\n    }\n\n    @RequiresPermissions(\"admin:category:update\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"类目管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallCategory category) {\n        Object error = validate(category);\n        if (error != null) {\n            return error;\n        }\n\n        if (categoryService.updateById(category) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:category:delete\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"类目管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallCategory category) {\n        Integer id = category.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        categoryService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:category:list\")\n    @GetMapping(\"/l1\")\n    public Object catL1() {\n        // 所有一级分类目录\n        List<LitemallCategory> l1CatList = categoryService.queryL1();\n        List<Map<String, Object>> data = new ArrayList<>(l1CatList.size());\n        for (LitemallCategory category : l1CatList) {\n            Map<String, Object> d = new HashMap<>(2);\n            d.put(\"value\", category.getId());\n            d.put(\"label\", category.getName());\n            data.add(d);\n        }\n        return ResponseUtil.okList(data);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCollectController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallCollect;\nimport org.linlinjava.litemall.db.service.LitemallCollectService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/collect\")\n@Validated\npublic class AdminCollectController {\n    private final Log logger = LogFactory.getLog(AdminCollectController.class);\n\n    @Autowired\n    private LitemallCollectService collectService;\n\n\n    @RequiresPermissions(\"admin:collect:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"用户收藏\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String userId, String valueId,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallCollect> collectList = collectService.querySelective(userId, valueId, page, limit, sort, order);\n        return ResponseUtil.okList(collectList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCommentController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallComment;\nimport org.linlinjava.litemall.db.service.LitemallCommentService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/comment\")\n@Validated\npublic class AdminCommentController {\n    private final Log logger = LogFactory.getLog(AdminCommentController.class);\n\n    @Autowired\n    private LitemallCommentService commentService;\n\n    @RequiresPermissions(\"admin:comment:list\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"评论管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String userId, String valueId,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallComment> commentList = commentService.querySelective(userId, valueId, page, limit, sort, order);\n        return ResponseUtil.okList(commentList);\n    }\n\n    @RequiresPermissions(\"admin:comment:delete\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"评论管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallComment comment) {\n        Integer id = comment.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        commentService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminConfigController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.service.LitemallSystemConfigService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/config\")\n@Validated\npublic class AdminConfigController {\n    private final Log logger = LogFactory.getLog(AdminConfigController.class);\n\n    @Autowired\n    private LitemallSystemConfigService systemConfigService;\n\n    @RequiresPermissions(\"admin:config:mall:list\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"商场配置\"}, button = \"详情\")\n    @GetMapping(\"/mall\")\n    public Object listMall() {\n        Map<String, String> data = systemConfigService.listMail();\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:config:mall:updateConfigs\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"商场配置\"}, button = \"编辑\")\n    @PostMapping(\"/mall\")\n    public Object updateMall(@RequestBody String body) {\n        Map<String, String> data = JacksonUtil.toMap(body);\n        systemConfigService.updateConfig(data);\n        SystemConfig.updateConfigs(data);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:config:express:list\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"运费配置\"}, button = \"详情\")\n    @GetMapping(\"/express\")\n    public Object listExpress() {\n        Map<String, String> data = systemConfigService.listExpress();\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:config:express:updateConfigs\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"运费配置\"}, button = \"编辑\")\n    @PostMapping(\"/express\")\n    public Object updateExpress(@RequestBody String body) {\n        Map<String, String> data = JacksonUtil.toMap(body);\n        systemConfigService.updateConfig(data);\n        SystemConfig.updateConfigs(data);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:config:order:list\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"订单配置\"}, button = \"详情\")\n    @GetMapping(\"/order\")\n    public Object lisOrder() {\n        Map<String, String> data = systemConfigService.listOrder();\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:config:order:updateConfigs\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"订单配置\"}, button = \"编辑\")\n    @PostMapping(\"/order\")\n    public Object updateOrder(@RequestBody String body) {\n        Map<String, String> data = JacksonUtil.toMap(body);\n        systemConfigService.updateConfig(data);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:config:wx:list\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"小程序配置\"}, button = \"详情\")\n    @GetMapping(\"/wx\")\n    public Object listWx() {\n        Map<String, String> data = systemConfigService.listWx();\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:config:wx:updateConfigs\")\n    @RequiresPermissionsDesc(menu = {\"配置管理\", \"小程序配置\"}, button = \"编辑\")\n    @PostMapping(\"/wx\")\n    public Object updateWx(@RequestBody String body) {\n        Map<String, String> data = JacksonUtil.toMap(body);\n        systemConfigService.updateConfig(data);\n        SystemConfig.updateConfigs(data);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminCouponController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.service.LitemallCouponService;\nimport org.linlinjava.litemall.db.service.LitemallCouponUserService;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/coupon\")\n@Validated\npublic class AdminCouponController {\n    private final Log logger = LogFactory.getLog(AdminCouponController.class);\n\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n\n    @RequiresPermissions(\"admin:coupon:list\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name, Short type, Short status,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallCoupon> couponList = couponService.querySelective(name, type, status, page, limit, sort, order);\n        return ResponseUtil.okList(couponList);\n    }\n\n    @RequiresPermissions(\"admin:coupon:listuser\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"查询用户\")\n    @GetMapping(\"/listuser\")\n    public Object listuser(Integer userId, Integer couponId, Short status,\n                           @RequestParam(defaultValue = \"1\") Integer page,\n                           @RequestParam(defaultValue = \"10\") Integer limit,\n                           @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                           @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallCouponUser> couponList = couponUserService.queryList(userId, couponId, status, page,\n                limit, sort, order);\n        return ResponseUtil.okList(couponList);\n    }\n\n    private Object validate(LitemallCoupon coupon) {\n        String name = coupon.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:coupon:create\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallCoupon coupon) {\n        Object error = validate(coupon);\n        if (error != null) {\n            return error;\n        }\n\n        // 如果是兑换码类型，则这里需要生存一个兑换码\n        if (coupon.getType().equals(CouponConstant.TYPE_CODE)) {\n            String code = couponService.generateCode();\n            coupon.setCode(code);\n        }\n\n        couponService.add(coupon);\n        return ResponseUtil.ok(coupon);\n    }\n\n    @RequiresPermissions(\"admin:coupon:read\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallCoupon coupon = couponService.findById(id);\n        return ResponseUtil.ok(coupon);\n    }\n\n    @RequiresPermissions(\"admin:coupon:update\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallCoupon coupon) {\n        Object error = validate(coupon);\n        if (error != null) {\n            return error;\n        }\n        if (couponService.updateById(coupon) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok(coupon);\n    }\n\n    @RequiresPermissions(\"admin:coupon:delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"优惠券管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallCoupon coupon) {\n        couponService.deleteById(coupon.getId());\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminDashbordController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.service.LitemallGoodsProductService;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallOrderService;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/dashboard\")\n@Validated\npublic class AdminDashbordController {\n    private final Log logger = LogFactory.getLog(AdminDashbordController.class);\n\n    @Autowired\n    private LitemallUserService userService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private LitemallOrderService orderService;\n\n    @GetMapping(\"\")\n    public Object info() {\n        int userTotal = userService.count();\n        int goodsTotal = goodsService.count();\n        int productTotal = productService.count();\n        int orderTotal = orderService.count();\n        Map<String, Integer> data = new HashMap<>();\n        data.put(\"userTotal\", userTotal);\n        data.put(\"goodsTotal\", goodsTotal);\n        data.put(\"productTotal\", productTotal);\n        data.put(\"orderTotal\", orderTotal);\n\n        return ResponseUtil.ok(data);\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFeedbackController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallFeedback;\nimport org.linlinjava.litemall.db.service.LitemallFeedbackService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n/**\n * @author Yogeek\n * @date 2018/8/26 1:11\n */\n@RestController\n@RequestMapping(\"/admin/feedback\")\n@Validated\npublic class AdminFeedbackController {\n    private final Log logger = LogFactory.getLog(AdminFeedbackController.class);\n\n    @Autowired\n    private LitemallFeedbackService feedbackService;\n\n    @RequiresPermissions(\"admin:feedback:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"意见反馈\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(Integer userId, String username,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallFeedback> feedbackList = feedbackService.querySelective(userId, username, page, limit, sort,\n                order);\n        return ResponseUtil.okList(feedbackList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminFootprintController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallFootprint;\nimport org.linlinjava.litemall.db.service.LitemallFootprintService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/footprint\")\n@Validated\npublic class AdminFootprintController {\n    private final Log logger = LogFactory.getLog(AdminFootprintController.class);\n\n    @Autowired\n    private LitemallFootprintService footprintService;\n\n    @RequiresPermissions(\"admin:footprint:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"用户足迹\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String userId, String goodsId,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallFootprint> footprintList = footprintService.querySelective(userId, goodsId, page, limit, sort,\n                order);\n        return ResponseUtil.okList(footprintList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGoodsController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.dto.GoodsAllinone;\nimport org.linlinjava.litemall.admin.service.AdminGoodsService;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\n\n@RestController\n@RequestMapping(\"/admin/goods\")\n@Validated\npublic class AdminGoodsController {\n    private final Log logger = LogFactory.getLog(AdminGoodsController.class);\n\n    @Autowired\n    private AdminGoodsService adminGoodsService;\n\n    /**\n     * 查询商品\n     *\n     * @param goodsId\n     * @param goodsSn\n     * @param name\n     * @param page\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    @RequiresPermissions(\"admin:goods:list\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"商品管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(Integer goodsId, String goodsSn, String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        return adminGoodsService.list(goodsId, goodsSn, name, page, limit, sort, order);\n    }\n\n    @GetMapping(\"/catAndBrand\")\n    public Object list2() {\n        return adminGoodsService.list2();\n    }\n\n    /**\n     * 编辑商品\n     *\n     * @param goodsAllinone\n     * @return\n     */\n    @RequiresPermissions(\"admin:goods:update\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"商品管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody GoodsAllinone goodsAllinone) {\n        return adminGoodsService.update(goodsAllinone);\n    }\n\n    /**\n     * 删除商品\n     *\n     * @param goods\n     * @return\n     */\n    @RequiresPermissions(\"admin:goods:delete\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"商品管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallGoods goods) {\n        return adminGoodsService.delete(goods);\n    }\n\n    /**\n     * 添加商品\n     *\n     * @param goodsAllinone\n     * @return\n     */\n    @RequiresPermissions(\"admin:goods:create\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"商品管理\"}, button = \"上架\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody GoodsAllinone goodsAllinone) {\n        return adminGoodsService.create(goodsAllinone);\n    }\n\n    /**\n     * 商品详情\n     *\n     * @param id\n     * @return\n     */\n    @RequiresPermissions(\"admin:goods:read\")\n    @RequiresPermissionsDesc(menu = {\"商品管理\", \"商品管理\"}, button = \"详情\")\n    @GetMapping(\"/detail\")\n    public Object detail(@NotNull Integer id) {\n        return adminGoodsService.detail(id);\n\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminGrouponController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.task.GrouponRuleExpiredTask;\nimport org.linlinjava.litemall.admin.util.AdminResponseCode;\nimport org.linlinjava.litemall.core.task.TaskService;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallGrouponRulesService;\nimport org.linlinjava.litemall.db.service.LitemallGrouponService;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.math.BigDecimal;\nimport java.time.Duration;\nimport java.time.LocalDateTime;\nimport java.time.temporal.ChronoUnit;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/groupon\")\n@Validated\npublic class AdminGrouponController {\n    private final Log logger = LogFactory.getLog(AdminGrouponController.class);\n\n    @Autowired\n    private LitemallGrouponRulesService rulesService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallGrouponService grouponService;\n    @Autowired\n    private TaskService taskService;\n\n    @RequiresPermissions(\"admin:groupon:read\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"团购管理\"}, button = \"详情\")\n    @GetMapping(\"/listRecord\")\n    public Object listRecord(String grouponRuleId,\n                             @RequestParam(defaultValue = \"1\") Integer page,\n                             @RequestParam(defaultValue = \"10\") Integer limit,\n                             @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                             @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallGroupon> grouponList = grouponService.querySelective(grouponRuleId, page, limit, sort, order);\n\n        List<Map<String, Object>> groupons = new ArrayList<>();\n        for (LitemallGroupon groupon : grouponList) {\n            try {\n                Map<String, Object> recordData = new HashMap<>();\n                List<LitemallGroupon> subGrouponList = grouponService.queryJoinRecord(groupon.getId());\n                LitemallGrouponRules rules = rulesService.findById(groupon.getRulesId());\n                LitemallGoods goods = goodsService.findById(rules.getGoodsId());\n\n                recordData.put(\"groupon\", groupon);\n                recordData.put(\"subGroupons\", subGrouponList);\n                recordData.put(\"rules\", rules);\n                recordData.put(\"goods\", goods);\n\n                groupons.add(recordData);\n            } catch (Exception e) {\n                logger.error(e.getMessage(), e);\n            }\n        }\n\n        return ResponseUtil.okList(groupons, grouponList);\n    }\n\n    @RequiresPermissions(\"admin:groupon:list\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"团购管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String goodsId,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallGrouponRules> rulesList = rulesService.querySelective(goodsId, page, limit, sort, order);\n        return ResponseUtil.okList(rulesList);\n    }\n\n    private Object validate(LitemallGrouponRules grouponRules) {\n        Integer goodsId = grouponRules.getGoodsId();\n        if (goodsId == null) {\n            return ResponseUtil.badArgument();\n        }\n        BigDecimal discount = grouponRules.getDiscount();\n        if (discount == null) {\n            return ResponseUtil.badArgument();\n        }\n        Integer discountMember = grouponRules.getDiscountMember();\n        if (discountMember == null) {\n            return ResponseUtil.badArgument();\n        }\n        LocalDateTime expireTime = grouponRules.getExpireTime();\n        if (expireTime == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:groupon:update\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"团购管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallGrouponRules grouponRules) {\n        Object error = validate(grouponRules);\n        if (error != null) {\n            return error;\n        }\n\n        LitemallGrouponRules rules = rulesService.findById(grouponRules.getId());\n        if(rules == null){\n            return ResponseUtil.badArgumentValue();\n        }\n        if(!rules.getStatus().equals(GrouponConstant.RULE_STATUS_ON)){\n            return ResponseUtil.fail(AdminResponseCode.GROUPON_GOODS_OFFLINE, \"团购已经下线\");\n        }\n\n        Integer goodsId = grouponRules.getGoodsId();\n        LitemallGoods goods = goodsService.findById(goodsId);\n        if (goods == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        grouponRules.setGoodsName(goods.getName());\n        grouponRules.setPicUrl(goods.getPicUrl());\n\n        if (rulesService.updateById(grouponRules) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:groupon:create\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"团购管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallGrouponRules grouponRules) {\n        Object error = validate(grouponRules);\n        if (error != null) {\n            return error;\n        }\n\n        Integer goodsId = grouponRules.getGoodsId();\n        LitemallGoods goods = goodsService.findById(goodsId);\n        if (goods == null) {\n            return ResponseUtil.fail(AdminResponseCode.GROUPON_GOODS_UNKNOWN, \"团购商品不存在\");\n        }\n        if(rulesService.countByGoodsId(goodsId) > 0){\n            return ResponseUtil.fail(AdminResponseCode.GROUPON_GOODS_EXISTED, \"团购商品已经存在\");\n        }\n\n        grouponRules.setGoodsName(goods.getName());\n        grouponRules.setPicUrl(goods.getPicUrl());\n        grouponRules.setStatus(GrouponConstant.RULE_STATUS_ON);\n        rulesService.createRules(grouponRules);\n\n        LocalDateTime now = LocalDateTime.now();\n        LocalDateTime expire = grouponRules.getExpireTime();\n        long delay = ChronoUnit.MILLIS.between(now, expire);\n        // 团购过期任务\n        taskService.addTask(new GrouponRuleExpiredTask(grouponRules.getId(), delay));\n\n        return ResponseUtil.ok(grouponRules);\n    }\n\n    @RequiresPermissions(\"admin:groupon:delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"团购管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallGrouponRules grouponRules) {\n        Integer id = grouponRules.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        rulesService.delete(id);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminHistoryController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistory;\nimport org.linlinjava.litemall.db.service.LitemallSearchHistoryService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/history\")\npublic class AdminHistoryController {\n    private final Log logger = LogFactory.getLog(AdminHistoryController.class);\n\n    @Autowired\n    private LitemallSearchHistoryService searchHistoryService;\n\n    @RequiresPermissions(\"admin:history:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"搜索历史\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String userId, String keyword,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallSearchHistory> historyList = searchHistoryService.querySelective(userId, keyword, page, limit,\n                sort, order);\n        return ResponseUtil.okList(historyList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIndexController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.*;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n@RestController\n@RequestMapping(\"/admin/index\")\npublic class AdminIndexController {\n    private final Log logger = LogFactory.getLog(AdminIndexController.class);\n\n    @RequestMapping(\"/index\")\n    public Object index() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresGuest\n    @RequestMapping(\"/guest\")\n    public Object guest() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresAuthentication\n    @RequestMapping(\"/authn\")\n    public Object authn() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresUser\n    @RequestMapping(\"/user\")\n    public Object user() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresRoles(\"admin\")\n    @RequestMapping(\"/admin\")\n    public Object admin() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresRoles(\"admin2\")\n    @RequestMapping(\"/admin2\")\n    public Object admin2() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresPermissions(\"index:permission:read\")\n    @RequiresPermissionsDesc(menu = {\"其他\", \"权限测试\"}, button = \"权限读\")\n    @GetMapping(\"/read\")\n    public Object read() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n    @RequiresPermissions(\"index:permission:write\")\n    @RequiresPermissionsDesc(menu = {\"其他\", \"权限测试\"}, button = \"权限写\")\n    @PostMapping(\"/write\")\n    public Object write() {\n        return ResponseUtil.ok(\"hello world, this is admin service\");\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminIssueController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallIssue;\nimport org.linlinjava.litemall.db.service.LitemallIssueService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/issue\")\n@Validated\npublic class AdminIssueController {\n    private final Log logger = LogFactory.getLog(AdminIssueController.class);\n\n    @Autowired\n    private LitemallIssueService issueService;\n\n    @RequiresPermissions(\"admin:issue:list\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"通用问题\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String question,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallIssue> issueList = issueService.querySelective(question, page, limit, sort, order);\n        return ResponseUtil.okList(issueList);\n    }\n\n    private Object validate(LitemallIssue issue) {\n        String question = issue.getQuestion();\n        if (StringUtils.isEmpty(question)) {\n            return ResponseUtil.badArgument();\n        }\n        String answer = issue.getAnswer();\n        if (StringUtils.isEmpty(answer)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:issue:create\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"通用问题\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallIssue issue) {\n        Object error = validate(issue);\n        if (error != null) {\n            return error;\n        }\n        issueService.add(issue);\n        return ResponseUtil.ok(issue);\n    }\n\n    @RequiresPermissions(\"admin:issue:read\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallIssue issue = issueService.findById(id);\n        return ResponseUtil.ok(issue);\n    }\n\n    @RequiresPermissions(\"admin:issue:update\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"通用问题\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallIssue issue) {\n        Object error = validate(issue);\n        if (error != null) {\n            return error;\n        }\n        if (issueService.updateById(issue) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok(issue);\n    }\n\n    @RequiresPermissions(\"admin:issue:delete\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"通用问题\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallIssue issue) {\n        Integer id = issue.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        issueService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminKeywordController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallKeyword;\nimport org.linlinjava.litemall.db.service.LitemallKeywordService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/keyword\")\n@Validated\npublic class AdminKeywordController {\n    private final Log logger = LogFactory.getLog(AdminKeywordController.class);\n\n    @Autowired\n    private LitemallKeywordService keywordService;\n\n    @RequiresPermissions(\"admin:keyword:list\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"关键词\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String keyword, String url,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallKeyword> keywordList = keywordService.querySelective(keyword, url, page, limit, sort, order);\n        return ResponseUtil.okList(keywordList);\n    }\n\n    private Object validate(LitemallKeyword keywords) {\n        String keyword = keywords.getKeyword();\n        if (StringUtils.isEmpty(keyword)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:keyword:create\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"关键词\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallKeyword keyword) {\n        Object error = validate(keyword);\n        if (error != null) {\n            return error;\n        }\n        keywordService.add(keyword);\n        return ResponseUtil.ok(keyword);\n    }\n\n    @RequiresPermissions(\"admin:keyword:read\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"关键词\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallKeyword keyword = keywordService.findById(id);\n        return ResponseUtil.ok(keyword);\n    }\n\n    @RequiresPermissions(\"admin:keyword:update\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"关键词\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallKeyword keyword) {\n        Object error = validate(keyword);\n        if (error != null) {\n            return error;\n        }\n        if (keywordService.updateById(keyword) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok(keyword);\n    }\n\n    @RequiresPermissions(\"admin:keyword:delete\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"关键词\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallKeyword keyword) {\n        Integer id = keyword.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n        keywordService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminLogController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallLog;\nimport org.linlinjava.litemall.db.service.LitemallLogService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/log\")\n@Validated\npublic class AdminLogController {\n    private final Log logger = LogFactory.getLog(AdminLogController.class);\n\n    @Autowired\n    private LitemallLogService logService;\n\n    @RequiresPermissions(\"admin:log:list\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"操作日志\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallLog> logList = logService.querySelective(name, page, limit, sort, order);\n        return ResponseUtil.okList(logList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminNoticeController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.linlinjava.litemall.db.service.LitemallNoticeAdminService;\nimport org.linlinjava.litemall.db.service.LitemallNoticeService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.NOTICE_UPDATE_NOT_ALLOWED;\n\n@RestController\n@RequestMapping(\"/admin/notice\")\n@Validated\npublic class AdminNoticeController {\n    private final Log logger = LogFactory.getLog(AdminNoticeController.class);\n\n    @Autowired\n    private LitemallNoticeService noticeService;\n    @Autowired\n    private LitemallAdminService adminService;\n    @Autowired\n    private LitemallNoticeAdminService noticeAdminService;\n\n    @RequiresPermissions(\"admin:notice:list\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"通知管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String title, String content,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallNotice> noticeList = noticeService.querySelective(title, content, page, limit, sort, order);\n        return ResponseUtil.okList(noticeList);\n    }\n\n    private Object validate(LitemallNotice notice) {\n        String title = notice.getTitle();\n        if (StringUtils.isEmpty(title)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    private Integer getAdminId(){\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n        return admin.getId();\n    }\n\n    @RequiresPermissions(\"admin:notice:create\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"通知管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallNotice notice) {\n        Object error = validate(notice);\n        if (error != null) {\n            return error;\n        }\n        // 1. 添加通知记录\n        notice.setAdminId(getAdminId());\n        noticeService.add(notice);\n        // 2. 添加管理员通知记录\n        List<LitemallAdmin> adminList = adminService.all();\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        noticeAdmin.setNoticeId(notice.getId());\n        noticeAdmin.setNoticeTitle(notice.getTitle());\n        for(LitemallAdmin admin : adminList){\n            noticeAdmin.setAdminId(admin.getId());\n            noticeAdminService.add(noticeAdmin);\n        }\n        return ResponseUtil.ok(notice);\n    }\n\n    @RequiresPermissions(\"admin:notice:read\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"通知管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallNotice notice = noticeService.findById(id);\n        List<LitemallNoticeAdmin> noticeAdminList = noticeAdminService.queryByNoticeId(id);\n        Map<String, Object> data = new HashMap<>(2);\n        data.put(\"notice\", notice);\n        data.put(\"noticeAdminList\", noticeAdminList);\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:notice:update\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"通知管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallNotice notice) {\n        Object error = validate(notice);\n        if (error != null) {\n            return error;\n        }\n        LitemallNotice originalNotice = noticeService.findById(notice.getId());\n        if (originalNotice == null) {\n            return ResponseUtil.badArgument();\n        }\n        // 如果通知已经有人阅读过，则不支持编辑\n        if(noticeAdminService.countReadByNoticeId(notice.getId()) > 0){\n            return ResponseUtil.fail(NOTICE_UPDATE_NOT_ALLOWED, \"通知已被阅读，不能重新编辑\");\n        }\n        // 1. 更新通知记录\n        notice.setAdminId(getAdminId());\n        noticeService.updateById(notice);\n        // 2. 更新管理员通知记录\n        if(!originalNotice.getTitle().equals(notice.getTitle())){\n            LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n            noticeAdmin.setNoticeTitle(notice.getTitle());\n            noticeAdminService.updateByNoticeId(noticeAdmin, notice.getId());\n        }\n        return ResponseUtil.ok(notice);\n    }\n\n    @RequiresPermissions(\"admin:notice:delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"通知管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallNotice notice) {\n        // 1. 删除通知管理员记录\n        noticeAdminService.deleteByNoticeId(notice.getId());\n        // 2. 删除通知记录\n        noticeService.deleteById(notice.getId());\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:notice:batch-delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"通知管理\"}, button = \"批量删除\")\n    @PostMapping(\"/batch-delete\")\n    public Object batchDelete(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        // 1. 删除通知管理员记录\n        noticeAdminService.deleteByNoticeIds(ids);\n        // 2. 删除通知记录\n        noticeService.deleteByIds(ids);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminOrderController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.service.AdminOrderService;\nimport org.linlinjava.litemall.core.express.ExpressService;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.format.annotation.DateTimeFormat;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/order\")\n@Validated\npublic class AdminOrderController {\n    private final Log logger = LogFactory.getLog(AdminOrderController.class);\n\n    @Autowired\n    private AdminOrderService adminOrderService;\n    @Autowired\n    private ExpressService expressService;\n\n    /**\n     * 查询订单\n     *\n     * @param orderSn\n     * @param orderStatusArray\n     * @param page\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    @RequiresPermissions(\"admin:order:list\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String nickname, String consignee, String orderSn,\n                       @RequestParam(required = false) @DateTimeFormat(pattern = \"yyyy-MM-dd HH:mm:ss\") LocalDateTime start,\n                       @RequestParam(required = false) @DateTimeFormat(pattern = \"yyyy-MM-dd HH:mm:ss\") LocalDateTime end,\n                       @RequestParam(required = false) List<Short> orderStatusArray,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n         return adminOrderService.list(nickname, consignee, orderSn, start, end, orderStatusArray, page, limit, sort, order);\n    }\n\n    /**\n     * 查询物流公司\n     *\n     * @return\n     */\n    @GetMapping(\"/channel\")\n    public Object channel() {\n        return ResponseUtil.ok(expressService.getVendors());\n    }\n\n    /**\n     * 订单详情\n     *\n     * @param id\n     * @return\n     */\n    @RequiresPermissions(\"admin:order:read\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"详情\")\n    @GetMapping(\"/detail\")\n    public Object detail(@NotNull Integer id) {\n        return adminOrderService.detail(id);\n    }\n\n    /**\n     * 订单退款\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单退款操作结果\n     */\n    @RequiresPermissions(\"admin:order:refund\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"订单退款\")\n    @PostMapping(\"/refund\")\n    public Object refund(@RequestBody String body) {\n        return adminOrderService.refund(body);\n    }\n\n    /**\n     * 发货\n     *\n     * @param body 订单信息，{ orderId：xxx, shipSn: xxx, shipChannel: xxx }\n     * @return 订单操作结果\n     */\n    @RequiresPermissions(\"admin:order:ship\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"订单发货\")\n    @PostMapping(\"/ship\")\n    public Object ship(@RequestBody String body) {\n        return adminOrderService.ship(body);\n    }\n\n    @RequiresPermissions(\"admin:order:pay\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"订单收款\")\n    @PostMapping(\"/pay\")\n    public Object pay(@RequestBody String body) {\n        return adminOrderService.pay(body);\n    }\n\n    /**\n     * 删除订单\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    @RequiresPermissions(\"admin:order:delete\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"订单删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody String body) {\n        return adminOrderService.delete(body);\n    }\n\n    /**\n     * 回复订单商品\n     *\n     * @param body 订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    @RequiresPermissions(\"admin:order:reply\")\n    @RequiresPermissionsDesc(menu = {\"商场管理\", \"订单管理\"}, button = \"订单商品回复\")\n    @PostMapping(\"/reply\")\n    public Object reply(@RequestBody String body) {\n        return adminOrderService.reply(body);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminProfileController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport io.swagger.models.auth.In;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authz.annotation.RequiresAuthentication;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallIssue;\nimport org.linlinjava.litemall.db.domain.LitemallNotice;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeAdmin;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.linlinjava.litemall.db.service.LitemallNoticeAdminService;\nimport org.linlinjava.litemall.db.service.LitemallNoticeService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.ADMIN_INVALID_ACCOUNT;\n\n@RestController\n@RequestMapping(\"/admin/profile\")\n@Validated\npublic class AdminProfileController {\n    private final Log logger = LogFactory.getLog(AdminProfileController.class);\n\n    @Autowired\n    private LitemallAdminService adminService;\n    @Autowired\n    private LitemallNoticeService noticeService;\n    @Autowired\n    private LitemallNoticeAdminService noticeAdminService;\n\n    @RequiresAuthentication\n    @PostMapping(\"/password\")\n    public Object create(@RequestBody String body) {\n        String oldPassword = JacksonUtil.parseString(body, \"oldPassword\");\n        String newPassword = JacksonUtil.parseString(body, \"newPassword\");\n        if (StringUtils.isEmpty(oldPassword)) {\n            return ResponseUtil.badArgument();\n        }\n        if (StringUtils.isEmpty(newPassword)) {\n            return ResponseUtil.badArgument();\n        }\n\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        if (!encoder.matches(oldPassword, admin.getPassword())) {\n            return ResponseUtil.fail(ADMIN_INVALID_ACCOUNT, \"账号密码不对\");\n        }\n\n        String encodedNewPassword = encoder.encode(newPassword);\n        admin.setPassword(encodedNewPassword);\n\n        adminService.updateById(admin);\n        return ResponseUtil.ok();\n    }\n\n    private Integer getAdminId(){\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin admin = (LitemallAdmin) currentUser.getPrincipal();\n        return admin.getId();\n    }\n\n    @RequiresAuthentication\n    @GetMapping(\"/nnotice\")\n    public Object nNotice() {\n        int count = noticeAdminService.countUnread(getAdminId());\n        return ResponseUtil.ok(count);\n    }\n\n    @RequiresAuthentication\n    @GetMapping(\"/lsnotice\")\n    public Object lsNotice(String title, String type,\n                            @RequestParam(defaultValue = \"1\") Integer page,\n                            @RequestParam(defaultValue = \"10\") Integer limit,\n                            @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                            @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallNoticeAdmin> noticeList = noticeAdminService.querySelective(title, type, getAdminId(), page, limit, sort, order);\n        return ResponseUtil.okList(noticeList);\n    }\n\n    @RequiresAuthentication\n    @PostMapping(\"/catnotice\")\n    public Object catNotice(@RequestBody String body) {\n        Integer noticeId = JacksonUtil.parseInteger(body, \"noticeId\");\n        if(noticeId == null){\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallNoticeAdmin noticeAdmin = noticeAdminService.find(noticeId, getAdminId());\n        if(noticeAdmin == null){\n           return ResponseUtil.badArgumentValue();\n        }\n        // 更新通知记录中的时间\n        noticeAdmin.setReadTime(LocalDateTime.now());\n        noticeAdminService.update(noticeAdmin);\n\n        // 返回通知的相关信息\n        Map<String, Object> data = new HashMap<>();\n        LitemallNotice notice = noticeService.findById(noticeId);\n        data.put(\"title\", notice.getTitle());\n        data.put(\"content\", notice.getContent());\n        data.put(\"time\", notice.getUpdateTime());\n        Integer adminId = notice.getAdminId();\n        if(adminId.equals(0)){\n            data.put(\"admin\", \"系统\");\n        }\n        else{\n            LitemallAdmin admin = adminService.findById(notice.getAdminId());\n            data.put(\"admin\", admin.getUsername());\n            data.put(\"avatar\", admin.getAvatar());\n        }\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresAuthentication\n    @PostMapping(\"/bcatnotice\")\n    public Object bcatNotice(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        noticeAdminService.markReadByIds(ids, getAdminId());\n        return ResponseUtil.ok();\n    }\n\n    @RequiresAuthentication\n    @PostMapping(\"/rmnotice\")\n    public Object rmNotice(@RequestBody String body) {\n        Integer id = JacksonUtil.parseInteger(body, \"id\");\n        if(id == null){\n            return ResponseUtil.badArgument();\n        }\n        noticeAdminService.deleteById(id, getAdminId());\n        return ResponseUtil.ok();\n    }\n\n    @RequiresAuthentication\n    @PostMapping(\"/brmnotice\")\n    public Object brmNotice(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        noticeAdminService.deleteByIds(ids, getAdminId());\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRegionController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.admin.vo.RegionVo;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallRegion;\nimport org.linlinjava.litemall.db.service.LitemallRegionService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.stream.Collectors;\n\n@RestController\n@RequestMapping(\"/admin/region\")\n@Validated\npublic class AdminRegionController {\n    private final Log logger = LogFactory.getLog(AdminRegionController.class);\n\n    @Autowired\n    private LitemallRegionService regionService;\n\n    @GetMapping(\"/clist\")\n    public Object clist(@NotNull Integer id) {\n        List<LitemallRegion> regionList = regionService.queryByPid(id);\n        return ResponseUtil.okList(regionList);\n    }\n\n    @GetMapping(\"/list\")\n    public Object list() {\n        List<RegionVo> regionVoList = new ArrayList<>();\n\n        List<LitemallRegion> litemallRegions = regionService.getAll();\n        Map<Byte, List<LitemallRegion>> collect = litemallRegions.stream().collect(Collectors.groupingBy(LitemallRegion::getType));\n        byte provinceType = 1;\n        List<LitemallRegion> provinceList = collect.get(provinceType);\n        byte cityType = 2;\n        List<LitemallRegion> city = collect.get(cityType);\n        Map<Integer, List<LitemallRegion>> cityListMap = city.stream().collect(Collectors.groupingBy(LitemallRegion::getPid));\n        byte areaType = 3;\n        List<LitemallRegion> areas = collect.get(areaType);\n        Map<Integer, List<LitemallRegion>> areaListMap = areas.stream().collect(Collectors.groupingBy(LitemallRegion::getPid));\n\n        for (LitemallRegion province : provinceList) {\n            RegionVo provinceVO = new RegionVo();\n            provinceVO.setId(province.getId());\n            provinceVO.setName(province.getName());\n            provinceVO.setCode(province.getCode());\n            provinceVO.setType(province.getType());\n\n            List<LitemallRegion> cityList = cityListMap.get(province.getId());\n            List<RegionVo> cityVOList = new ArrayList<>();\n            for (LitemallRegion cityVo : cityList) {\n                RegionVo cityVO = new RegionVo();\n                cityVO.setId(cityVo.getId());\n                cityVO.setName(cityVo.getName());\n                cityVO.setCode(cityVo.getCode());\n                cityVO.setType(cityVo.getType());\n\n                List<LitemallRegion> areaList = areaListMap.get(cityVo.getId());\n                List<RegionVo> areaVOList = new ArrayList<>();\n                for (LitemallRegion area : areaList) {\n                    RegionVo areaVO = new RegionVo();\n                    areaVO.setId(area.getId());\n                    areaVO.setName(area.getName());\n                    areaVO.setCode(area.getCode());\n                    areaVO.setType(area.getType());\n                    areaVOList.add(areaVO);\n                }\n\n                cityVO.setChildren(areaVOList);\n                cityVOList.add(cityVO);\n            }\n            provinceVO.setChildren(cityVOList);\n            regionVoList.add(provinceVO);\n        }\n\n        return ResponseUtil.okList(regionVoList);\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminRoleController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport io.swagger.models.auth.In;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.SecurityUtils;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.apache.shiro.subject.Subject;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.util.AdminResponseCode;\nimport org.linlinjava.litemall.admin.util.Permission;\nimport org.linlinjava.litemall.admin.util.PermissionUtil;\nimport org.linlinjava.litemall.admin.vo.PermVo;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallPermission;\nimport org.linlinjava.litemall.db.domain.LitemallRole;\nimport org.linlinjava.litemall.db.service.LitemallAdminService;\nimport org.linlinjava.litemall.db.service.LitemallPermissionService;\nimport org.linlinjava.litemall.db.service.LitemallRoleService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.security.Security;\nimport java.util.*;\n\nimport static org.linlinjava.litemall.admin.util.AdminResponseCode.*;\n\n@RestController\n@RequestMapping(\"/admin/role\")\n@Validated\npublic class AdminRoleController {\n    private final Log logger = LogFactory.getLog(AdminRoleController.class);\n\n    @Autowired\n    private LitemallRoleService roleService;\n    @Autowired\n    private LitemallPermissionService permissionService;\n    @Autowired\n    private LitemallAdminService adminService;\n\n    @RequiresPermissions(\"admin:role:list\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"角色查询\")\n    @GetMapping(\"/list\")\n    public Object list(String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallRole> roleList = roleService.querySelective(name, page, limit, sort, order);\n        return ResponseUtil.okList(roleList);\n    }\n\n    @GetMapping(\"/options\")\n    public Object options() {\n        List<LitemallRole> roleList = roleService.queryAll();\n\n        List<Map<String, Object>> options = new ArrayList<>(roleList.size());\n        for (LitemallRole role : roleList) {\n            Map<String, Object> option = new HashMap<>(2);\n            option.put(\"value\", role.getId());\n            option.put(\"label\", role.getName());\n            options.add(option);\n        }\n\n        return ResponseUtil.okList(options);\n    }\n\n    @RequiresPermissions(\"admin:role:read\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"角色详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallRole role = roleService.findById(id);\n        return ResponseUtil.ok(role);\n    }\n\n\n    private Object validate(LitemallRole role) {\n        String name = role.getName();\n        if (StringUtils.isEmpty(name)) {\n            return ResponseUtil.badArgument();\n        }\n\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:role:create\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"角色添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallRole role) {\n        Object error = validate(role);\n        if (error != null) {\n            return error;\n        }\n\n        if (roleService.checkExist(role.getName())) {\n            return ResponseUtil.fail(ROLE_NAME_EXIST, \"角色已经存在\");\n        }\n\n        roleService.add(role);\n\n        return ResponseUtil.ok(role);\n    }\n\n    @RequiresPermissions(\"admin:role:update\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"角色编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallRole role) {\n        Object error = validate(role);\n        if (error != null) {\n            return error;\n        }\n\n        roleService.updateById(role);\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:role:delete\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"角色删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallRole role) {\n        Integer id = role.getId();\n        if (id == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 如果当前角色所对应管理员仍存在，则拒绝删除角色。\n        List<LitemallAdmin> adminList = adminService.all();\n        for (LitemallAdmin admin : adminList) {\n            Integer[] roleIds = admin.getRoleIds();\n            for (Integer roleId : roleIds) {\n                if (id.equals(roleId)) {\n                    return ResponseUtil.fail(ROLE_USER_EXIST, \"当前角色存在管理员，不能删除\");\n                }\n            }\n        }\n\n        roleService.deleteById(id);\n        return ResponseUtil.ok();\n    }\n\n\n    @Autowired\n    private ApplicationContext context;\n    private List<PermVo> systemPermissions = null;\n    private Set<String> systemPermissionsString = null;\n\n    private List<PermVo> getSystemPermissions() {\n        final String basicPackage = \"org.linlinjava.litemall.admin\";\n        if (systemPermissions == null) {\n            List<Permission> permissions = PermissionUtil.listPermission(context, basicPackage);\n            systemPermissions = PermissionUtil.listPermVo(permissions);\n            systemPermissionsString = PermissionUtil.listPermissionString(permissions);\n        }\n        return systemPermissions;\n    }\n\n    private Set<String> getAssignedPermissions(List<Integer> roleIds) {\n        // 这里需要注意的是，如果存在超级权限*，那么这里需要转化成当前所有系统权限。\n        // 之所以这么做，是因为前端不能识别超级权限，所以这里需要转换一下。\n        Set<String> assignedPermissions = null;\n        if (permissionService.checkSuperPermission(roleIds)) {\n            getSystemPermissions();\n            assignedPermissions = systemPermissionsString;\n        } else {\n            assignedPermissions = permissionService.queryByRoleId(roleIds);\n        }\n\n        return assignedPermissions;\n    }\n\n    /**\n     * 管理员的权限情况\n     *\n     * @return 系统所有权限列表、角色权限、管理员已分配权限\n     */\n    @RequiresPermissions(\"admin:role:permission:get\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"权限详情\")\n    @GetMapping(\"/permissions\")\n    public Object getPermissions(Integer roleId) {\n        List<PermVo> systemPermissions = getSystemPermissions();\n\n        // 这里需要注意的是，如果存在超级权限*，那么这里需要转化成当前所有系统权限。\n        // 之所以这么做，是因为前端不能识别超级权限，所以这里需要转换一下。\n        Set<String> assignedPermissions = null;\n        if (permissionService.checkSuperPermission(roleId)) {\n            getSystemPermissions();\n            assignedPermissions = systemPermissionsString;\n        } else {\n            assignedPermissions = permissionService.queryByRoleId(roleId);\n        }\n\n        Subject currentUser = SecurityUtils.getSubject();\n        LitemallAdmin currentAdmin = (LitemallAdmin) currentUser.getPrincipal();\n        Integer[] roles = currentAdmin.getRoleIds();\n        List<Integer> roleIds = Arrays.asList(roles);\n        Set<String> curPermissions = null;\n        if (!permissionService.checkSuperPermission(roleIds)) {\n            curPermissions = permissionService.queryByRoleId(roleIds);\n        }\n\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"systemPermissions\", systemPermissions);\n        data.put(\"assignedPermissions\", assignedPermissions);\n        data.put(\"curPermissions\", curPermissions);\n        return ResponseUtil.ok(data);\n    }\n\n\n    /**\n     * 更新管理员的权限\n     *\n     * @param body\n     * @return\n     */\n    @RequiresPermissions(\"admin:role:permission:update\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"角色管理\"}, button = \"权限变更\")\n    @PostMapping(\"/permissions\")\n    public Object updatePermissions(@RequestBody String body) {\n        Integer roleId = JacksonUtil.parseInteger(body, \"roleId\");\n        List<String> permissions = JacksonUtil.parseStringList(body, \"permissions\");\n        if (roleId == null || permissions == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 如果修改的角色是超级权限，则拒绝修改。\n        if (permissionService.checkSuperPermission(roleId)) {\n            return ResponseUtil.fail(AdminResponseCode.ROLE_SUPER_SUPERMISSION, \"当前角色的超级权限不能变更\");\n        }\n\n        // 先删除旧的权限，再更新新的权限\n        permissionService.deleteByRoleId(roleId);\n        for (String permission : permissions) {\n            LitemallPermission litemallPermission = new LitemallPermission();\n            litemallPermission.setRoleId(roleId);\n            litemallPermission.setPermission(permission);\n            permissionService.add(litemallPermission);\n        }\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStatController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.admin.vo.StatVo;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.service.StatService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/stat\")\n@Validated\npublic class AdminStatController {\n    private final Log logger = LogFactory.getLog(AdminStatController.class);\n\n    @Autowired\n    private StatService statService;\n\n    @RequiresPermissions(\"admin:stat:user\")\n    @RequiresPermissionsDesc(menu = {\"统计管理\", \"用户统计\"}, button = \"查询\")\n    @GetMapping(\"/user\")\n    public Object statUser() {\n        List<Map> rows = statService.statUser();\n        String[] columns = new String[]{\"day\", \"users\"};\n        StatVo statVo = new StatVo();\n        statVo.setColumns(columns);\n        statVo.setRows(rows);\n        return ResponseUtil.ok(statVo);\n    }\n\n    @RequiresPermissions(\"admin:stat:order\")\n    @RequiresPermissionsDesc(menu = {\"统计管理\", \"订单统计\"}, button = \"查询\")\n    @GetMapping(\"/order\")\n    public Object statOrder() {\n        List<Map> rows = statService.statOrder();\n        String[] columns = new String[]{\"day\", \"orders\", \"customers\", \"amount\", \"pcr\"};\n        StatVo statVo = new StatVo();\n        statVo.setColumns(columns);\n        statVo.setRows(rows);\n\n        return ResponseUtil.ok(statVo);\n    }\n\n    @RequiresPermissions(\"admin:stat:goods\")\n    @RequiresPermissionsDesc(menu = {\"统计管理\", \"商品统计\"}, button = \"查询\")\n    @GetMapping(\"/goods\")\n    public Object statGoods() {\n        List<Map> rows = statService.statGoods();\n        String[] columns = new String[]{\"day\", \"orders\", \"products\", \"amount\"};\n        StatVo statVo = new StatVo();\n        statVo.setColumns(columns);\n        statVo.setRows(rows);\n        return ResponseUtil.ok(statVo);\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminStorageController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.storage.StorageService;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.linlinjava.litemall.db.service.LitemallStorageService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport javax.validation.constraints.NotNull;\nimport java.io.IOException;\nimport java.util.List;\n\n@RestController\n@RequestMapping(\"/admin/storage\")\n@Validated\npublic class AdminStorageController {\n    private final Log logger = LogFactory.getLog(AdminStorageController.class);\n\n    @Autowired\n    private StorageService storageService;\n    @Autowired\n    private LitemallStorageService litemallStorageService;\n\n    @RequiresPermissions(\"admin:storage:list\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"对象存储\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String key, String name,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallStorage> storageList = litemallStorageService.querySelective(key, name, page, limit, sort, order);\n        return ResponseUtil.okList(storageList);\n    }\n\n    @RequiresPermissions(\"admin:storage:create\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"对象存储\"}, button = \"上传\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestParam(\"file\") MultipartFile file) throws IOException {\n        String originalFilename = file.getOriginalFilename();\n        LitemallStorage litemallStorage = storageService.store(file.getInputStream(), file.getSize(),\n                file.getContentType(), originalFilename);\n        return ResponseUtil.ok(litemallStorage);\n    }\n\n    @RequiresPermissions(\"admin:storage:read\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"对象存储\"}, button = \"详情\")\n    @PostMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallStorage storageInfo = litemallStorageService.findById(id);\n        if (storageInfo == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        return ResponseUtil.ok(storageInfo);\n    }\n\n    @RequiresPermissions(\"admin:storage:update\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"对象存储\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallStorage litemallStorage) {\n        if (litemallStorageService.update(litemallStorage) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok(litemallStorage);\n    }\n\n    @RequiresPermissions(\"admin:storage:delete\")\n    @RequiresPermissionsDesc(menu = {\"系统管理\", \"对象存储\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallStorage litemallStorage) {\n        String key = litemallStorage.getKey();\n        if (StringUtils.isEmpty(key)) {\n            return ResponseUtil.badArgument();\n        }\n        litemallStorageService.deleteByKey(key);\n        storageService.delete(key);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminTopicController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport io.swagger.models.auth.In;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallTopic;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallTopicService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/admin/topic\")\n@Validated\npublic class AdminTopicController {\n    private final Log logger = LogFactory.getLog(AdminTopicController.class);\n\n    @Autowired\n    private LitemallTopicService topicService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n\n    @RequiresPermissions(\"admin:topic:list\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String title, String subtitle,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort(accepts = {\"id\", \"add_time\", \"price\"}) @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallTopic> topicList = topicService.querySelective(title, subtitle, page, limit, sort, order);\n        return ResponseUtil.okList(topicList);\n    }\n\n    private Object validate(LitemallTopic topic) {\n        String title = topic.getTitle();\n        if (StringUtils.isEmpty(title)) {\n            return ResponseUtil.badArgument();\n        }\n        String content = topic.getContent();\n        if (StringUtils.isEmpty(content)) {\n            return ResponseUtil.badArgument();\n        }\n        BigDecimal price = topic.getPrice();\n        if (price == null) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    @RequiresPermissions(\"admin:topic:create\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"添加\")\n    @PostMapping(\"/create\")\n    public Object create(@RequestBody LitemallTopic topic) {\n        Object error = validate(topic);\n        if (error != null) {\n            return error;\n        }\n        topicService.add(topic);\n        return ResponseUtil.ok(topic);\n    }\n\n    @RequiresPermissions(\"admin:topic:read\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"详情\")\n    @GetMapping(\"/read\")\n    public Object read(@NotNull Integer id) {\n        LitemallTopic topic = topicService.findById(id);\n        Integer[] goodsIds = topic.getGoods();\n        List<LitemallGoods> goodsList = null;\n        if (goodsIds == null || goodsIds.length == 0) {\n            goodsList = new ArrayList<>();\n        } else {\n            goodsList = goodsService.queryByIds(goodsIds);\n        }\n        Map<String, Object> data = new HashMap<>(2);\n        data.put(\"topic\", topic);\n        data.put(\"goodsList\", goodsList);\n        return ResponseUtil.ok(data);\n    }\n\n    @RequiresPermissions(\"admin:topic:update\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object update(@RequestBody LitemallTopic topic) {\n        Object error = validate(topic);\n        if (error != null) {\n            return error;\n        }\n        if (topicService.updateById(topic) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok(topic);\n    }\n\n    @RequiresPermissions(\"admin:topic:delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"删除\")\n    @PostMapping(\"/delete\")\n    public Object delete(@RequestBody LitemallTopic topic) {\n        topicService.deleteById(topic.getId());\n        return ResponseUtil.ok();\n    }\n\n    @RequiresPermissions(\"admin:topic:batch-delete\")\n    @RequiresPermissionsDesc(menu = {\"推广管理\", \"专题管理\"}, button = \"批量删除\")\n    @PostMapping(\"/batch-delete\")\n    public Object batchDelete(@RequestBody String body) {\n        List<Integer> ids = JacksonUtil.parseIntegerList(body, \"ids\");\n        topicService.deleteByIds(ids);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/java/org/linlinjava/litemall/admin/web/AdminUserController.java",
    "content": "package org.linlinjava.litemall.admin.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.apache.shiro.authz.annotation.RequiresPermissions;\nimport org.linlinjava.litemall.admin.annotation.RequiresPermissionsDesc;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.List;\n\nimport javax.validation.constraints.NotNull;\n\n@RestController\n@RequestMapping(\"/admin/user\")\n@Validated\npublic class AdminUserController {\n    private final Log logger = LogFactory.getLog(AdminUserController.class);\n\n    @Autowired\n    private LitemallUserService userService;\n\n    @RequiresPermissions(\"admin:user:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"会员管理\"}, button = \"查询\")\n    @GetMapping(\"/list\")\n    public Object list(String username, String mobile,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallUser> userList = userService.querySelective(username, mobile, page, limit, sort, order);\n        return ResponseUtil.okList(userList);\n    }\n    @RequiresPermissions(\"admin:user:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"会员管理\"}, button = \"详情\")\n    @GetMapping(\"/detail\")\n    public Object userDetail(@NotNull Integer id) {\n    \tLitemallUser user=userService.findById(id);\n        return ResponseUtil.ok(user);\n    }\n    @RequiresPermissions(\"admin:user:list\")\n    @RequiresPermissionsDesc(menu = {\"用户管理\", \"会员管理\"}, button = \"编辑\")\n    @PostMapping(\"/update\")\n    public Object userUpdate(@RequestBody LitemallUser user) {\n        return ResponseUtil.ok(userService.updateById(user));\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/main/resources/application-admin.yml",
    "content": ""
  },
  {
    "path": "litemall-admin-api/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: db, core, admin\n  messages:\n    encoding: UTF-8\n\nserver:\n  port: 8083\n\nlogging:\n  level:\n    root:  ERROR\n    org.springframework:  ERROR\n    org.mybatis:  ERROR\n    org.linlinjava.litemall.admin:  DEBUG\n    org.linlinjava.litemall:  ERROR\n\nswagger:\n  production: false"
  },
  {
    "path": "litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/AdminConfigTest.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class AdminConfigTest {\n    @Autowired\n    private Environment environment;\n\n    @Test\n    public void test() {\n        // 测试获取application-core.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.express.appId\"));\n        // 测试获取application-db.yml配置信息\n        System.out.println(environment.getProperty(\"spring.datasource.druid.url\"));\n        // 测试获取application-admin.yml配置信息\n        // System.out.println(environment.getProperty(\"\"));\n        // 测试获取application.yml配置信息\n        System.out.println(environment.getProperty(\"logging.level.org.linlinjava.litemall.admin\"));\n    }\n\n}\n"
  },
  {
    "path": "litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/BcryptTest.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.junit.Assert;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\n\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class BcryptTest {\n\n    @Test\n    public void test() {\n        String rawPassword = \"aaaaaa\";\n        String encodedPassword = \"\";\n        BCryptPasswordEncoder bCryptPasswordEncoder = new BCryptPasswordEncoder();\n        encodedPassword = bCryptPasswordEncoder.encode(rawPassword);\n\n        System.out.println(\"rawPassword=\" + rawPassword + \" encodedPassword=\" + encodedPassword);\n\n        Assert.assertTrue(bCryptPasswordEncoder.matches(rawPassword, encodedPassword));\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/CreateShareImageTest.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.qcode.QCodeService;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class CreateShareImageTest {\n    @Autowired\n    QCodeService qCodeService;\n    @Autowired\n    LitemallGoodsService litemallGoodsService;\n\n    @Test\n    public void test() {\n        LitemallGoods good = litemallGoodsService.findById(1181010);\n        qCodeService.createGoodShareImage(good.getId().toString(), good.getPicUrl(), good.getName());\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/DbTest.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.io.File;\nimport java.io.IOException;\nimport java.time.LocalDate;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class DbTest {\n    @Autowired\n    private Environment environment;\n\n    @Test\n    public void test() {\n        String user = environment.getProperty(\"spring.datasource.druid.username\");\n        String password = environment.getProperty(\"spring.datasource.druid.password\");\n        String url = environment.getProperty(\"spring.datasource.druid.url\");\n        int index1 = url.indexOf(\"3306/\");\n        int index2 = url.indexOf(\"?\");\n        String db = url.substring(index1+5, index2);\n        System.out.println(user);\n        System.out.println(password);\n        System.out.println(db);\n    }\n\n    @Test\n    public void testFileCreate() throws IOException {\n        LocalDate localDate = LocalDate.now();\n        String fileName = localDate.toString() + \".sql\";\n        System.out.println(fileName);\n\n        File file = new File(\"backup\", fileName);\n        file.getParentFile().mkdirs();\n        file.createNewFile();\n    }\n\n    @Test\n    public void testFileDelete() throws IOException {\n        LocalDate localDate = LocalDate.now();\n        String fileName = localDate.toString() + \".sql\";\n        System.out.println(fileName);\n\n        File file = new File(\"backup\", fileName);\n        file.deleteOnExit();\n    }\n}\n"
  },
  {
    "path": "litemall-admin-api/src/test/java/org/linlinjava/litemall/admin/PermissionTest.java",
    "content": "package org.linlinjava.litemall.admin;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.admin.util.Permission;\nimport org.linlinjava.litemall.admin.util.PermissionUtil;\nimport org.linlinjava.litemall.admin.vo.PermVo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.util.List;\n\n@WebAppConfiguration\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class PermissionTest {\n\n    @Autowired\n    private ApplicationContext context;\n\n    @Test\n    public void test() {\n        final String basicPackage = \"org.linlinjava.litemall.admin\";\n        List<Permission> permissionList = PermissionUtil.listPermission(context, basicPackage);\n        List<PermVo> permVoList = PermissionUtil.listPermVo(permissionList);\n        permVoList.stream().forEach(System.out::println);\n    }\n}\n"
  },
  {
    "path": "litemall-all/.gitignore",
    "content": "\n/target/\n/litemall-all.iml\n"
  },
  {
    "path": "litemall-all/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-all</artifactId>\n    <packaging>jar</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-core</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-db</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-wx-api</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-admin-api</artifactId>\n        </dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>repackage</id>\n                        <configuration>\n                            <executable>true</executable>\n                            <classifier>exec</classifier>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n\n            <plugin>\n                <artifactId>maven-resources-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>copy-resources</id>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>copy-resources</goal>\n                        </goals>\n                        <configuration>\n                            <outputDirectory>${basedir}/target/classes/static</outputDirectory>\n                            <resources>\n                                <resource>\n                                    <directory>../litemall-admin/dist</directory>\n                                </resource>\n                            </resources>\n                        </configuration>\n                    </execution>\n                    <execution>\n                        <id>copy-resources-vue</id>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>copy-resources</goal>\n                        </goals>\n                        <configuration>\n                            <outputDirectory>${basedir}/target/classes/static/vue</outputDirectory>\n                            <resources>\n                                <resource>\n                                    <directory>../litemall-vue/dist</directory>\n                                </resource>\n                            </resources>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>"
  },
  {
    "path": "litemall-all/src/main/java/org/linlinjava/litemall/Application.java",
    "content": "package org.linlinjava.litemall;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\n@EnableTransactionManagement\n@EnableScheduling\npublic class Application {\n\n    public static void main(String[] args) throws Exception {\n        SpringApplication.run(Application.class, args);\n    }\n\n}"
  },
  {
    "path": "litemall-all/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: db, core, admin, wx\n  messages:\n    encoding: UTF-8\n  servlet:\n    multipart:\n      max-file-size: 20MB\n      max-request-size: 20MB\n\nserver:\n  port: 8080\n  compression:\n    enabled: true\n    min-response-size: 2048\n    mime-types: application/javascript,text/css,application/json,application/xml,text/html,text/xml,text/plain\n\nlogging:\n  config: classpath:logback-spring.xml\n\nswagger:\n  production: false"
  },
  {
    "path": "litemall-all/src/main/resources/logback-spring.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration debug=\"true\">\n    <contextName>logback</contextName>\n    <property name=\"log.path\" value=\"logs\" />\n\n    <appender name=\"console\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <filter class=\"ch.qos.logback.classic.filter.ThresholdFilter\">\n            <level>debug</level>\n        </filter>\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n\n            </pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"file\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${log.path}/log.log</file>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${log.path}/log-%d{yyyy-MM-dd}.log</fileNamePattern>\n        </rollingPolicy>\n\n        <encoder>\n            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n\n            </pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"error\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${log.path}/error.log</file>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.log</fileNamePattern>\n        </rollingPolicy>\n\n        <encoder>\n            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n\n            </pattern>\n        </encoder>\n        <!-- 此日志文件只记录ERROR级别的 -->\n        <filter class=\"ch.qos.logback.classic.filter.LevelFilter\">\n            <level>ERROR</level>\n            <onMatch>ACCEPT</onMatch>\n            <onMismatch>DENY</onMismatch>\n        </filter>\n    </appender>\n\n    <root level=\"ERROR\">\n        <appender-ref ref=\"console\" />\n        <appender-ref ref=\"file\" />\n        <appender-ref ref=\"error\" />\n    </root>\n    <logger name=\"org.mybatis\" level=\"ERROR\" />\n    <logger name=\"org.springframework\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.core\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.db\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.admin\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall.wx\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall\" level=\"DEBUG\" />\n</configuration>"
  },
  {
    "path": "litemall-all/src/test/java/org/linlinjava/litemall/allinone/AllinoneConfigTest.java",
    "content": "package org.linlinjava.litemall.allinone;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class AllinoneConfigTest {\n    @Autowired\n    private Environment environment;\n\n    @Test\n    public void test() {\n        // 测试获取application-core.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.express.appId\"));\n        // 测试获取application-db.yml配置信息\n        System.out.println(environment.getProperty(\"spring.datasource.druid.url\"));\n        // 测试获取application-wx.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.wx.app-id\"));\n        // 测试获取application-admin.yml配置信息\n//        System.out.println(environment.getProperty(\"\"));\n        // 测试获取application.yml配置信息\n        System.out.println(environment.getProperty(\"logging.level.org.linlinjava.litemall.wx\"));\n        System.out.println(environment.getProperty(\"logging.level.org.linlinjava.litemall.admin\"));\n        System.out.println(environment.getProperty(\"logging.level.org.linlinjava.litemall\"));\n    }\n\n}\n"
  },
  {
    "path": "litemall-all-war/.gitignore",
    "content": "\n/target/\n/litemall-all-war.iml\n"
  },
  {
    "path": "litemall-all-war/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-all-war</artifactId>\n    <packaging>war</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-core</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-db</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-wx-api</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-admin-api</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-tomcat</artifactId>\n            <scope>provided</scope>\n        </dependency>\n    </dependencies>\n\n    <build>\n        <finalName>litemall</finalName>\n        <plugins>\n            <plugin>\n                <artifactId>maven-resources-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>copy-resources</id>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>copy-resources</goal>\n                        </goals>\n                        <configuration>\n                            <outputDirectory>${basedir}/target/classes/static</outputDirectory>\n                            <resources>\n                                <resource>\n                                    <directory>../litemall-admin/dist</directory>\n                                </resource>\n                            </resources>\n                        </configuration>\n                    </execution>\n                    <execution>\n                        <id>copy-resources-vue</id>\n                        <phase>validate</phase>\n                        <goals>\n                            <goal>copy-resources</goal>\n                        </goals>\n                        <configuration>\n                            <outputDirectory>${basedir}/target/classes/static/vue</outputDirectory>\n                            <resources>\n                                <resource>\n                                    <directory>../litemall-vue/dist</directory>\n                                </resource>\n                            </resources>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>"
  },
  {
    "path": "litemall-all-war/src/main/java/org/linlinjava/litemall/Application.java",
    "content": "package org.linlinjava.litemall;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.boot.builder.SpringApplicationBuilder;\nimport org.springframework.boot.web.servlet.support.SpringBootServletInitializer;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\n@EnableTransactionManagement\n@EnableScheduling\npublic class Application extends SpringBootServletInitializer {\n\n    public static void main(String[] args) throws Exception {\n        SpringApplication.run(Application.class, args);\n    }\n\n    @Override\n    protected SpringApplicationBuilder configure(SpringApplicationBuilder builder) {\n        return builder.sources(Application.class);\n    }\n}"
  },
  {
    "path": "litemall-all-war/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: db, core, admin, wx\n  messages:\n    encoding: UTF-8\n  servlet:\n    multipart:\n      max-file-size: 20MB\n      max-request-size: 20MB\n\nlogging:\n  config: classpath:logback-spring.xml"
  },
  {
    "path": "litemall-all-war/src/main/resources/logback-spring.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<configuration debug=\"true\">\n    <contextName>logback</contextName>\n    <property name=\"log.path\" value=\"logs\" />\n\n    <appender name=\"console\" class=\"ch.qos.logback.core.ConsoleAppender\">\n        <filter class=\"ch.qos.logback.classic.filter.ThresholdFilter\">\n            <level>debug</level>\n        </filter>\n        <encoder>\n            <pattern>%d{HH:mm:ss.SSS} %contextName [%thread] %-5level %logger{36} - %msg%n\n            </pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"file\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${log.path}/log.log</file>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${log.path}/log-%d{yyyy-MM-dd}.log</fileNamePattern>\n        </rollingPolicy>\n\n        <encoder>\n            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n\n            </pattern>\n        </encoder>\n    </appender>\n\n    <appender name=\"error\" class=\"ch.qos.logback.core.rolling.RollingFileAppender\">\n        <file>${log.path}/error.log</file>\n        <rollingPolicy class=\"ch.qos.logback.core.rolling.TimeBasedRollingPolicy\">\n            <fileNamePattern>${log.path}/error-%d{yyyy-MM-dd}.log</fileNamePattern>\n        </rollingPolicy>\n\n        <encoder>\n            <pattern>%date %level [%thread] %logger{36} [%file : %line] %msg%n\n            </pattern>\n        </encoder>\n        <!-- 此日志文件只记录ERROR级别的 -->\n        <filter class=\"ch.qos.logback.classic.filter.LevelFilter\">\n            <level>ERROR</level>\n            <onMatch>ACCEPT</onMatch>\n            <onMismatch>DENY</onMismatch>\n        </filter>\n    </appender>\n\n    <root level=\"ERROR\">\n        <appender-ref ref=\"console\" />\n        <appender-ref ref=\"file\" />\n        <appender-ref ref=\"error\" />\n    </root>\n    <logger name=\"org.mybatis\" level=\"ERROR\" />\n    <logger name=\"org.springframework\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.core\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.db\" level=\"ERROR\" />\n    <logger name=\"org.linlinjava.litemall.admin\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall.wx\" level=\"DEBUG\" />\n    <logger name=\"org.linlinjava.litemall\" level=\"DEBUG\" />\n</configuration>"
  },
  {
    "path": "litemall-core/.gitignore",
    "content": "\n/target/\n/litemall-core.iml\n/storage/\n"
  },
  {
    "path": "litemall-core/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-core</artifactId>\n    <packaging>jar</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n\n    <dependencies>\n        <dependency>\n            <groupId>org.hibernate.validator</groupId>\n            <artifactId>hibernate-validator</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.aliyun</groupId>\n            <artifactId>aliyun-java-sdk-core</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-web</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-mail</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-json</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.github.qcloudsms</groupId>\n            <artifactId>qcloudsms</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.qcloud</groupId>\n            <artifactId>cos_api</artifactId>\n            <exclusions>\n                <exclusion>\n                    <artifactId>slf4j-log4j12</artifactId>\n                    <groupId>org.slf4j</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n\n        <dependency>\n            <groupId>com.aliyun.oss</groupId>\n            <artifactId>aliyun-sdk-oss</artifactId>\n            <exclusions>\n                <exclusion>\n                    <artifactId>commons-lang</artifactId>\n                    <groupId>commons-lang</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n\n        <dependency>\n            <groupId>com.qiniu</groupId>\n            <artifactId>qiniu-java-sdk</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.github.binarywang</groupId>\n            <artifactId>weixin-java-miniapp</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>com.github.binarywang</groupId>\n            <artifactId>weixin-java-pay</artifactId>\n        </dependency>\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-db</artifactId>\n        </dependency>\n    </dependencies>\n\n</project>"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/AsyncConfig.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.scheduling.annotation.EnableAsync;\n\n@Configuration\n@EnableAsync\npublic class AsyncConfig {\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/CorsConfig.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.web.cors.CorsConfiguration;\nimport org.springframework.web.cors.UrlBasedCorsConfigurationSource;\nimport org.springframework.web.filter.CorsFilter;\n\n@Configuration\npublic class CorsConfig {\n    // 当前跨域请求最大有效时长。这里默认30天\n    private long maxAge = 30 * 24 * 60 * 60;\n\n    private CorsConfiguration buildConfig() {\n        CorsConfiguration corsConfiguration = new CorsConfiguration();\n        corsConfiguration.addAllowedOrigin(\"*\"); // 1 设置访问源地址\n        corsConfiguration.addAllowedHeader(\"*\"); // 2 设置访问源请求头\n        corsConfiguration.addAllowedMethod(\"*\"); // 3 设置访问源请求方法\n        corsConfiguration.setMaxAge(maxAge);\n        corsConfiguration.setAllowCredentials(true);\n        return corsConfiguration;\n    }\n\n    @Bean\n    public CorsFilter corsFilter() {\n        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();\n        source.registerCorsConfiguration(\"/**\", buildConfig()); // 4 对接口配置跨域设置\n        return new CorsFilter(source);\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/GlobalExceptionHandler.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.hibernate.validator.internal.engine.path.PathImpl;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.converter.HttpMessageNotReadableException;\nimport org.springframework.web.bind.MissingServletRequestParameterException;\nimport org.springframework.web.bind.annotation.ControllerAdvice;\nimport org.springframework.web.bind.annotation.ExceptionHandler;\nimport org.springframework.web.bind.annotation.ResponseBody;\nimport org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;\n\nimport javax.validation.ConstraintViolation;\nimport javax.validation.ConstraintViolationException;\nimport javax.validation.ValidationException;\nimport java.util.Set;\n\n@ControllerAdvice\n@Order\npublic class GlobalExceptionHandler {\n\n    private Log logger = LogFactory.getLog(GlobalExceptionHandler.class);\n\n    @ExceptionHandler(IllegalArgumentException.class)\n    @ResponseBody\n    public Object badArgumentHandler(IllegalArgumentException e) {\n        logger.error(e.getMessage(), e);\n        return ResponseUtil.badArgumentValue();\n    }\n\n    @ExceptionHandler(MethodArgumentTypeMismatchException.class)\n    @ResponseBody\n    public Object badArgumentHandler(MethodArgumentTypeMismatchException e) {\n        logger.error(e.getMessage(), e);\n        return ResponseUtil.badArgumentValue();\n    }\n\n    @ExceptionHandler(MissingServletRequestParameterException.class)\n    @ResponseBody\n    public Object badArgumentHandler(MissingServletRequestParameterException e) {\n        logger.error(e.getMessage(), e);\n        return ResponseUtil.badArgumentValue();\n    }\n\n    @ExceptionHandler(HttpMessageNotReadableException.class)\n    @ResponseBody\n    public Object badArgumentHandler(HttpMessageNotReadableException e) {\n        logger.error(e.getMessage(), e);\n        return ResponseUtil.badArgumentValue();\n    }\n\n    @ExceptionHandler(ValidationException.class)\n    @ResponseBody\n    public Object badArgumentHandler(ValidationException e) {\n        logger.error(e.getMessage(), e);\n        if (e instanceof ConstraintViolationException) {\n            ConstraintViolationException exs = (ConstraintViolationException) e;\n            Set<ConstraintViolation<?>> violations = exs.getConstraintViolations();\n            for (ConstraintViolation<?> item : violations) {\n                String message = ((PathImpl) item.getPropertyPath()).getLeafNode().getName() + item.getMessage();\n                return ResponseUtil.fail(402, message);\n            }\n        }\n        return ResponseUtil.badArgumentValue();\n    }\n\n    @ExceptionHandler(Exception.class)\n    @ResponseBody\n    public Object seriousHandler(Exception e) {\n        logger.error(e.getMessage(), e);\n        return ResponseUtil.serious();\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/JacksonConfig.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport com.fasterxml.jackson.annotation.JsonInclude;\nimport com.fasterxml.jackson.databind.SerializationFeature;\nimport com.fasterxml.jackson.datatype.jsr310.deser.LocalDateDeserializer;\nimport com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer;\nimport com.fasterxml.jackson.datatype.jsr310.deser.LocalTimeDeserializer;\nimport com.fasterxml.jackson.datatype.jsr310.ser.LocalDateSerializer;\nimport com.fasterxml.jackson.datatype.jsr310.ser.LocalDateTimeSerializer;\nimport com.fasterxml.jackson.datatype.jsr310.ser.LocalTimeSerializer;\nimport org.springframework.boot.autoconfigure.jackson.Jackson2ObjectMapperBuilderCustomizer;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.core.Ordered;\nimport org.springframework.core.annotation.Order;\nimport org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.LocalTime;\nimport java.time.format.DateTimeFormatter;\n\n@Configuration\npublic class JacksonConfig {\n\n    @Bean\n    @Order(Ordered.HIGHEST_PRECEDENCE)\n    public Jackson2ObjectMapperBuilderCustomizer customJackson() {\n        return new Jackson2ObjectMapperBuilderCustomizer() {\n            @Override\n            public void customize(Jackson2ObjectMapperBuilder builder) {\n                builder.serializerByType(LocalDateTime.class,\n                        new LocalDateTimeSerializer(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\")));\n                builder.serializerByType(LocalDate.class,\n                        new LocalDateSerializer(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")));\n                builder.serializerByType(LocalTime.class,\n                        new LocalTimeSerializer(DateTimeFormatter.ofPattern(\"HH:mm:ss\")));\n                builder.deserializerByType(LocalDateTime.class,\n                        new LocalDateTimeDeserializer(DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\")));\n                builder.deserializerByType(LocalDate.class,\n                        new LocalDateDeserializer(DateTimeFormatter.ofPattern(\"yyyy-MM-dd\")));\n                builder.deserializerByType(LocalTime.class,\n                        new LocalTimeDeserializer(DateTimeFormatter.ofPattern(\"HH:mm:ss\")));\n                builder.serializationInclusion(JsonInclude.Include.NON_NULL);\n                builder.failOnUnknownProperties(false);\n                builder.featuresToDisable(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS);\n            }\n        };\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/ValidatorConfiguration.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport org.hibernate.validator.HibernateValidator;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\nimport javax.validation.Validation;\nimport javax.validation.Validator;\nimport javax.validation.ValidatorFactory;\n\n@Configuration\npublic class ValidatorConfiguration {\n    @Bean\n    public Validator validator() {\n        ValidatorFactory validatorFactory = Validation.byProvider(HibernateValidator.class)\n                .configure()\n                .addProperty(\"hibernate.validator.fail_fast\", \"true\")\n                .buildValidatorFactory();\n        Validator validator = validatorFactory.getValidator();\n\n        return validator;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/WxConfig.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport cn.binarywang.wx.miniapp.api.WxMaService;\nimport cn.binarywang.wx.miniapp.api.impl.WxMaServiceImpl;\nimport cn.binarywang.wx.miniapp.config.WxMaConfig;\nimport cn.binarywang.wx.miniapp.config.impl.WxMaDefaultConfigImpl;\nimport com.github.binarywang.wxpay.config.WxPayConfig;\nimport com.github.binarywang.wxpay.service.WxPayService;\nimport com.github.binarywang.wxpay.service.impl.WxPayServiceImpl;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\npublic class WxConfig {\n    @Autowired\n    private WxProperties properties;\n\n    @Bean\n    public WxMaConfig wxMaConfig() {\n        WxMaDefaultConfigImpl config = new WxMaDefaultConfigImpl();\n        config.setAppid(properties.getAppId());\n        config.setSecret(properties.getAppSecret());\n        config.setToken(properties.getToken());\n        config.setAesKey(properties.getAesKey());\n        return config;\n    }\n\n\n    @Bean\n    public WxMaService wxMaService(WxMaConfig maConfig) {\n        WxMaService service = new WxMaServiceImpl();\n        service.setWxMaConfig(maConfig);\n        return service;\n    }\n\n    @Bean\n    public WxPayConfig wxPayConfig() {\n        WxPayConfig payConfig = new WxPayConfig();\n        payConfig.setAppId(properties.getAppId());\n        payConfig.setMchId(properties.getMchId());\n        payConfig.setMchKey(properties.getMchKey());\n        payConfig.setNotifyUrl(properties.getNotifyUrl());\n        payConfig.setKeyPath(properties.getKeyPath());\n        payConfig.setTradeType(\"JSAPI\");\n        payConfig.setSignType(\"MD5\");\n        return payConfig;\n    }\n\n\n    @Bean\n    public WxPayService wxPayService(WxPayConfig payConfig) {\n        WxPayService wxPayService = new WxPayServiceImpl();\n        wxPayService.setConfig(payConfig);\n        return wxPayService;\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/config/WxProperties.java",
    "content": "package org.linlinjava.litemall.core.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@ConfigurationProperties(prefix = \"litemall.wx\")\npublic class WxProperties {\n\n    private String appId;\n\n    private String appSecret;\n\n    private String mchId;\n\n    private String mchKey;\n\n    private String notifyUrl;\n\n    private String keyPath;\n\n    private String token;\n\n    private String aesKey;\n\n    public String getToken() {\n        return token;\n    }\n\n    public void setToken(String token) {\n        this.token = token;\n    }\n\n    public String getAesKey() {\n        return aesKey;\n    }\n\n    public void setAesKey(String aesKey) {\n        this.aesKey = aesKey;\n    }\n\n    public String getNotifyUrl() {\n        return notifyUrl;\n    }\n\n    public void setNotifyUrl(String notifyUrl) {\n        this.notifyUrl = notifyUrl;\n    }\n\n    public String getMchKey() {\n        return mchKey;\n    }\n\n    public void setMchKey(String mchKey) {\n        this.mchKey = mchKey;\n    }\n\n    public String getAppId() {\n        return this.appId;\n    }\n\n    public void setAppId(String appId) {\n        this.appId = appId;\n    }\n\n    public String getAppSecret() {\n        return appSecret;\n    }\n\n    public void setAppSecret(String appSecret) {\n        this.appSecret = appSecret;\n    }\n\n    public String getMchId() {\n        return mchId;\n    }\n\n    public void setMchId(String mchId) {\n        this.mchId = mchId;\n    }\n\n    public String getKeyPath() {\n        return keyPath;\n    }\n\n    public void setKeyPath(String keyPath) {\n        this.keyPath = keyPath;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/express/ExpressService.java",
    "content": "package org.linlinjava.litemall.core.express;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.express.config.ExpressProperties;\nimport org.linlinjava.litemall.core.express.dao.ExpressInfo;\nimport org.linlinjava.litemall.core.util.HttpUtil;\nimport org.springframework.util.Base64Utils;\n\nimport java.net.URLEncoder;\nimport java.security.MessageDigest;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 物流查询服务\n * <p>\n * 快递鸟即时查询API http://www.kdniao.com/api-track\n */\npublic class ExpressService {\n\n    private final Log logger = LogFactory.getLog(ExpressService.class);\n    //请求url\n    private String ReqURL = \"http://api.kdniao.com/Ebusiness/EbusinessOrderHandle.aspx\";\n\n    private ExpressProperties properties;\n\n    public ExpressProperties getProperties() {\n        return properties;\n    }\n\n    public void setProperties(ExpressProperties properties) {\n        this.properties = properties;\n    }\n\n    /**\n     * 获取物流供应商名\n     *\n     * @param vendorCode\n     * @return\n     */\n    public String getVendorName(String vendorCode) {\n        for (Map<String, String> item : properties.getVendors()) {\n            if (item.get(\"code\").equals(vendorCode))\n                return item.get(\"name\");\n        }\n        return null;\n    }\n\n    public List<Map<String, String>> getVendors() {\n        return properties.getVendors();\n    }\n\n    /**\n     * 获取物流信息\n     *\n     * @param expCode\n     * @param expNo\n     * @return\n     */\n    public ExpressInfo getExpressInfo(String expCode, String expNo) {\n        if (!properties.isEnable()) {\n            return null;\n        }\n\n        try {\n            String result = getOrderTracesByJson(expCode, expNo);\n            ObjectMapper objMap = new ObjectMapper();\n            ExpressInfo ei = objMap.readValue(result, ExpressInfo.class);\n            ei.setShipperName(getVendorName(expCode));\n            return ei;\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        return null;\n    }\n\n    /**\n     * Json方式 查询订单物流轨迹\n     *\n     * @throws Exception\n     */\n    private String getOrderTracesByJson(String expCode, String expNo) throws Exception {\n        String requestData = \"{'OrderCode':'','ShipperCode':'\" + expCode + \"','LogisticCode':'\" + expNo + \"'}\";\n\n        Map<String, String> params = new HashMap<String, String>();\n        params.put(\"RequestData\", URLEncoder.encode(requestData, \"UTF-8\"));\n        params.put(\"EBusinessID\", properties.getAppId());\n        params.put(\"RequestType\", \"1002\");\n        String dataSign = encrypt(requestData, properties.getAppKey(), \"UTF-8\");\n        params.put(\"DataSign\", URLEncoder.encode(dataSign, \"UTF-8\"));\n        params.put(\"DataType\", \"2\");\n\n        String result = HttpUtil.sendPost(ReqURL, params);\n\n        //根据公司业务处理返回的信息......\n\n        return result;\n    }\n\n    /**\n     * MD5加密\n     *\n     * @param str     内容\n     * @param charset 编码方式\n     * @throws Exception\n     */\n    private String MD5(String str, String charset) throws Exception {\n        MessageDigest md = MessageDigest.getInstance(\"MD5\");\n        md.update(str.getBytes(charset));\n        byte[] result = md.digest();\n        StringBuilder sb = new StringBuilder(32);\n        for (int i = 0; i < result.length; i++) {\n            int val = result[i] & 0xff;\n            if (val <= 0xf) {\n                sb.append(\"0\");\n            }\n            sb.append(Integer.toHexString(val));\n        }\n        return sb.toString().toLowerCase();\n    }\n\n    /**\n     * Sign签名生成\n     *\n     * @param content  内容\n     * @param keyValue Appkey\n     * @param charset  编码方式\n     * @return DataSign签名\n     */\n    private String encrypt(String content, String keyValue, String charset) {\n        if (keyValue != null) {\n            content = content + keyValue;\n        }\n        byte[] src;\n        try {\n            src = MD5(content, charset).getBytes(charset);\n            return Base64Utils.encodeToString(src);\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        return null;\n    }\n\n\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/express/config/ExpressAutoConfiguration.java",
    "content": "package org.linlinjava.litemall.core.express.config;\n\nimport org.linlinjava.litemall.core.express.ExpressService;\nimport org.springframework.boot.context.properties.EnableConfigurationProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableConfigurationProperties(ExpressProperties.class)\npublic class ExpressAutoConfiguration {\n\n    private final ExpressProperties properties;\n\n    public ExpressAutoConfiguration(ExpressProperties properties) {\n        this.properties = properties;\n    }\n\n    @Bean\n    public ExpressService expressService() {\n        ExpressService expressService = new ExpressService();\n        expressService.setProperties(properties);\n        return expressService;\n    }\n\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/express/config/ExpressProperties.java",
    "content": "package org.linlinjava.litemall.core.express.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\n@ConfigurationProperties(prefix = \"litemall.express\")\npublic class ExpressProperties {\n    private boolean enable;\n    private String appId;\n    private String appKey;\n    private List<Map<String, String>> vendors = new ArrayList<>();\n\n    public boolean isEnable() {\n        return enable;\n    }\n\n    public void setEnable(boolean enable) {\n        this.enable = enable;\n    }\n\n    public List<Map<String, String>> getVendors() {\n        return vendors;\n    }\n\n    public void setVendors(List<Map<String, String>> vendors) {\n        this.vendors = vendors;\n    }\n\n    public String getAppKey() {\n        return appKey;\n    }\n\n    public void setAppKey(String appKey) {\n        this.appKey = appKey;\n    }\n\n    public String getAppId() {\n        return appId;\n    }\n\n    public void setAppId(String appId) {\n        this.appId = appId;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/express/dao/ExpressInfo.java",
    "content": "/**\n * Copyright 2018 bejson.com\n */\npackage org.linlinjava.litemall.core.express.dao;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\n\nimport java.util.List;\n\n/**\n * Auto-generated: 2018-07-19 22:27:22\n *\n * @author bejson.com (i@bejson.com)\n * @website http://www.bejson.com/java2pojo/\n */\npublic class ExpressInfo {\n\n    @JsonProperty(\"LogisticCode\")\n    private String LogisticCode;\n    @JsonProperty(\"ShipperCode\")\n    private String ShipperCode;\n    @JsonProperty(\"Traces\")\n    private List<Traces> Traces;\n    @JsonProperty(\"State\")\n    private String State;\n    @JsonProperty(\"EBusinessID\")\n    private String EBusinessID;\n    @JsonProperty(\"Success\")\n    private boolean Success;\n    @JsonProperty(\"Reason\")\n    private String Reason;\n\n    private String ShipperName;\n\n    public String getLogisticCode() {\n        return LogisticCode;\n    }\n\n    public void setLogisticCode(String LogisticCode) {\n        this.LogisticCode = LogisticCode;\n    }\n\n    public String getShipperCode() {\n        return ShipperCode;\n    }\n\n    public void setShipperCode(String ShipperCode) {\n        this.ShipperCode = ShipperCode;\n    }\n\n    public List<Traces> getTraces() {\n        return Traces;\n    }\n\n    public void setTraces(List<Traces> Traces) {\n        this.Traces = Traces;\n    }\n\n    public String getState() {\n        return State;\n    }\n\n    public void setState(String State) {\n        this.State = State;\n    }\n\n    public String getEBusinessID() {\n        return EBusinessID;\n    }\n\n    public void setEBusinessID(String EBusinessID) {\n        this.EBusinessID = EBusinessID;\n    }\n\n    public boolean getSuccess() {\n        return Success;\n    }\n\n    public void setSuccess(boolean Success) {\n        this.Success = Success;\n    }\n\n    public String getReason() {\n        return Reason;\n    }\n\n    public void setReason(String Reason) {\n        this.Reason = Reason;\n    }\n\n    public String getShipperName() {\n        return ShipperName;\n    }\n\n    public void setShipperName(String shipperName) {\n        ShipperName = shipperName;\n    }\n\n    @Override\n    public String toString() {\n        return \"ExpressInfo{\" +\n                \"LogisticCode='\" + LogisticCode + '\\'' +\n                \", ShipperCode='\" + ShipperCode + '\\'' +\n                \", Traces=\" + Traces +\n                \", State='\" + State + '\\'' +\n                \", EBusinessID='\" + EBusinessID + '\\'' +\n                \", Success=\" + Success +\n                \", Reason=\" + Reason +\n                \", ShipperName='\" + ShipperName + '\\'' +\n                '}';\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/express/dao/Traces.java",
    "content": "/**\n * Copyright 2018 bejson.com\n */\npackage org.linlinjava.litemall.core.express.dao;\n\nimport com.fasterxml.jackson.annotation.JsonProperty;\n\n/**\n * Auto-generated: 2018-07-19 22:27:22\n *\n * @author bejson.com (i@bejson.com)\n * @website http://www.bejson.com/java2pojo/\n */\npublic class Traces {\n\n    @JsonProperty(\"AcceptStation\")\n    private String AcceptStation;\n    @JsonProperty(\"AcceptTime\")\n    private String AcceptTime;\n\n    public String getAcceptStation() {\n        return AcceptStation;\n    }\n\n    public void setAcceptStation(String AcceptStation) {\n        this.AcceptStation = AcceptStation;\n    }\n\n    public String getAcceptTime() {\n        return AcceptTime;\n    }\n\n    public void setAcceptTime(String AcceptTime) {\n        this.AcceptTime = AcceptTime;\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/AliyunSmsSender.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\nimport com.aliyuncs.CommonRequest;\nimport com.aliyuncs.CommonResponse;\nimport com.aliyuncs.DefaultAcsClient;\nimport com.aliyuncs.IAcsClient;\nimport com.aliyuncs.exceptions.ClientException;\nimport com.aliyuncs.exceptions.ServerException;\nimport com.aliyuncs.http.MethodType;\nimport com.aliyuncs.profile.DefaultProfile;\nimport com.qcloud.cos.utils.Jackson;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/*\n * 阿里云短信服务\n */\npublic class AliyunSmsSender implements SmsSender {\n    private final Log logger = LogFactory.getLog(AliyunSmsSender.class);\n\n    private String regionId;\n    private String accessKeyId;\n    private String accessKeySecret;\n    private String sign;\n\n    private final String okCode = \"OK\";\n\n    public String getRegionId() {\n        return regionId;\n    }\n\n    public void setRegionId(String regionId) {\n        this.regionId = regionId;\n    }\n\n    public String getAccessKeyId() {\n        return accessKeyId;\n    }\n\n    public void setAccessKeyId(String accessKeyId) {\n        this.accessKeyId = accessKeyId;\n    }\n\n    public String getAccessKeySecret() {\n        return accessKeySecret;\n    }\n\n    public void setAccessKeySecret(String accessKeySecret) {\n        this.accessKeySecret = accessKeySecret;\n    }\n\n    public String getSign() {\n        return sign;\n    }\n\n    public void setSign(String sign) {\n        this.sign = sign;\n    }\n\n    @Override\n    public SmsResult send(String phone, String content) {\n        SmsResult smsResult = new SmsResult();\n        smsResult.setSuccessful(false);\n        return smsResult;\n    }\n\n    @Override\n    public SmsResult sendWithTemplate(String phone, String templateId, String[] params) {\n        DefaultProfile profile = DefaultProfile.getProfile(this.regionId, this.accessKeyId, this.accessKeySecret);\n        IAcsClient client = new DefaultAcsClient(profile);\n\n        CommonRequest request = new CommonRequest();\n        request.setMethod(MethodType.POST);\n        request.setDomain(\"dysmsapi.aliyuncs.com\");\n        request.setVersion(\"2017-05-25\");\n        request.setAction(\"SendSms\");\n        request.putQueryParameter(\"RegionId\", this.regionId);\n        request.putQueryParameter(\"PhoneNumbers\", phone);\n        request.putQueryParameter(\"SignName\", this.sign);\n        request.putQueryParameter(\"TemplateCode\", templateId);\n        /*\n          NOTE：阿里云短信和腾讯云短信这里存在不一致\n          腾讯云短信模板参数是数组，因此短信模板形式如 “短信参数{1}， 短信参数{2}”\n          阿里云短信模板参数是JSON，因此短信模板形式如“短信参数{param1}， 短信参数{param2}”\n          为了保持统一，我们假定阿里云短信里面的参数是code，code1，code2...\n\n          如果开发者在阿里云短信申请的模板参数是其他命名，请开发者自行调整这里的代码，或者直接写死。\n         */\n        String templateParam = \"{}\";\n        if(params.length == 1){\n            Map<String, String> data = new HashMap<>();\n            data.put(\"code\", params[0]);\n            templateParam = JacksonUtil.toJson(data);\n        }\n        else if(params.length > 1){\n            Map<String, String> data = new HashMap<>();\n            data.put(\"code\", params[0]);\n            for(int i = 1; i < params.length; i++){\n                data.put(\"code\" + i, params[i]);\n            }\n            templateParam = JacksonUtil.toJson(data);\n        }\n        request.putQueryParameter(\"TemplateParam\", templateParam);\n\n        try {\n            CommonResponse response = client.getCommonResponse(request);\n            SmsResult smsResult = new SmsResult();\n            smsResult.setResult(response);\n            String code =  Jackson.jsonNodeOf(response.getData()).get(\"Code\").asText();\n            if (response.getHttpResponse().isSuccess() && okCode.equals(code) ){\n                smsResult.setSuccessful(true);\n            }else {\n                smsResult.setSuccessful(false);\n                logger.error(\"短信发送失败：\"+response.getData());\n            }\n\n            return smsResult;\n        } catch (ServerException e) {\n            e.printStackTrace();\n        } catch (ClientException e) {\n            e.printStackTrace();\n        }\n\n        SmsResult smsResult = new SmsResult();\n        smsResult.setSuccessful(false);\n        return smsResult;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/NotifyService.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\nimport org.springframework.mail.MailSender;\nimport org.springframework.mail.SimpleMailMessage;\nimport org.springframework.scheduling.annotation.Async;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 商城通知服务类\n */\npublic class NotifyService {\n    private MailSender mailSender;\n    private String sendFrom;\n    private String sendTo;\n\n    private SmsSender smsSender;\n    private List<Map<String, String>> smsTemplate = new ArrayList<>();\n\n    private List<Map<String, String>> wxTemplate = new ArrayList<>();\n\n    public boolean isMailEnable() {\n        return mailSender != null;\n    }\n\n    public boolean isSmsEnable() {\n        return smsSender != null;\n    }\n\n    /**\n     * 短信消息通知\n     *\n     * @param phoneNumber 接收通知的电话号码\n     * @param message     短消息内容，这里短消息内容必须已经在短信平台审核通过\n     */\n    @Async\n    public void notifySms(String phoneNumber, String message) {\n        if (smsSender == null)\n            return;\n\n        smsSender.send(phoneNumber, message);\n    }\n\n    /**\n     * 短信模版消息通知\n     *\n     * @param phoneNumber 接收通知的电话号码\n     * @param notifyType  通知类别，通过该枚举值在配置文件中获取相应的模版ID\n     * @param params      通知模版内容里的参数，类似\"您的验证码为{1}\"中{1}的值\n     */\n    @Async\n    public void notifySmsTemplate(String phoneNumber, NotifyType notifyType, String[] params) {\n        if (smsSender == null) {\n            return;\n        }\n\n        String templateIdStr = getTemplateId(notifyType, smsTemplate);\n        if (templateIdStr == null) {\n            return;\n        }\n\n        smsSender.sendWithTemplate(phoneNumber, templateIdStr, params);\n    }\n\n    /**\n     * 以同步的方式发送短信模版消息通知\n     *\n     * @param phoneNumber 接收通知的电话号码\n     * @param notifyType  通知类别，通过该枚举值在配置文件中获取相应的模版ID\n     * @param params      通知模版内容里的参数，类似\"您的验证码为{1}\"中{1}的值\n     * @return\n     */\n    public SmsResult notifySmsTemplateSync(String phoneNumber, NotifyType notifyType, String[] params) {\n        if (smsSender == null)\n            return null;\n\n        return smsSender.sendWithTemplate(phoneNumber, getTemplateId(notifyType, smsTemplate), params);\n    }\n\n    /**\n     * 邮件消息通知,\n     * 接收者在spring.mail.sendto中指定\n     *\n     * @param subject 邮件标题\n     * @param content 邮件内容\n     */\n    @Async\n    public void notifyMail(String subject, String content) {\n        if (mailSender == null)\n            return;\n\n        SimpleMailMessage message = new SimpleMailMessage();\n        message.setFrom(sendFrom);\n        message.setTo(sendTo);\n        message.setSubject(subject);\n        message.setText(content);\n        mailSender.send(message);\n    }\n\n    private String getTemplateId(NotifyType notifyType, List<Map<String, String>> values) {\n        for (Map<String, String> item : values) {\n            String notifyTypeStr = notifyType.getType();\n\n            if (item.get(\"name\").equals(notifyTypeStr))\n                return item.get(\"templateId\");\n        }\n        return null;\n    }\n\n    public void setMailSender(MailSender mailSender) {\n        this.mailSender = mailSender;\n    }\n\n    public void setSendFrom(String sendFrom) {\n        this.sendFrom = sendFrom;\n    }\n\n    public void setSendTo(String sendTo) {\n        this.sendTo = sendTo;\n    }\n\n    public void setSmsSender(SmsSender smsSender) {\n        this.smsSender = smsSender;\n    }\n\n    public void setSmsTemplate(List<Map<String, String>> smsTemplate) {\n        this.smsTemplate = smsTemplate;\n    }\n\n    public void setWxTemplate(List<Map<String, String>> wxTemplate) {\n        this.wxTemplate = wxTemplate;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/NotifyType.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\npublic enum NotifyType {\n    PAY_SUCCEED(\"paySucceed\"),\n    SHIP(\"ship\"),\n    REFUND(\"refund\"),\n    CAPTCHA(\"captcha\");\n\n    private String type;\n\n    NotifyType(String type) {\n        this.type = type;\n    }\n\n    public String getType() {\n        return this.type;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/SmsResult.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\n/**\n * 发送短信的返回结果\n */\npublic class SmsResult {\n    private boolean successful;\n    private Object result;\n\n    /**\n     * 短信是否发送成功\n     *\n     * @return\n     */\n    public boolean isSuccessful() {\n        return successful;\n    }\n\n    public void setSuccessful(boolean successful) {\n        this.successful = successful;\n    }\n\n    public Object getResult() {\n        return result;\n    }\n\n    public void setResult(Object result) {\n        this.result = result;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/SmsSender.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\npublic interface SmsSender {\n\n    /**\n     * 发送短信息\n     *\n     * @param phone   接收通知的电话号码\n     * @param content 短消息内容\n     */\n    SmsResult send(String phone, String content);\n\n\n    /**\n     * 通过短信模版发送短信息\n     *  @param phone      接收通知的电话号码\n     * @param templateId 通知模板ID\n     * @param params     通知模版内容里的参数，类似\"您的验证码为{1}\"中{1}的值\n     */\n    SmsResult sendWithTemplate(String phone, String templateId, String[] params);\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/TencentSmsSender.java",
    "content": "package org.linlinjava.litemall.core.notify;\n\nimport com.github.qcloudsms.SmsSingleSender;\nimport com.github.qcloudsms.SmsSingleSenderResult;\nimport com.github.qcloudsms.httpclient.HTTPException;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport java.io.IOException;\n\n/*\n * 腾讯云短信服务\n */\npublic class TencentSmsSender implements SmsSender {\n    private final Log logger = LogFactory.getLog(TencentSmsSender.class);\n\n    private SmsSingleSender sender;\n    private String sign;\n\n    public SmsSingleSender getSender() {\n        return sender;\n    }\n\n    public void setSender(SmsSingleSender sender) {\n        this.sender = sender;\n    }\n\n    @Override\n    public SmsResult send(String phone, String content) {\n        try {\n            SmsSingleSenderResult result = sender.send(0, \"86\", phone, content, \"\", \"\");\n            logger.debug(result);\n\n            SmsResult smsResult = new SmsResult();\n            smsResult.setSuccessful(true);\n            smsResult.setResult(result);\n            return smsResult;\n        } catch (HTTPException | IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        SmsResult smsResult = new SmsResult();\n        smsResult.setSuccessful(false);\n        return smsResult;\n    }\n\n    @Override\n    public SmsResult sendWithTemplate(String phone, String templateId, String[] params) {\n        try {\n            SmsSingleSenderResult result = sender.sendWithParam(\"86\", phone, Integer.parseInt(templateId), params, this.sign, \"\", \"\");\n            logger.debug(result);\n\n            SmsResult smsResult = new SmsResult();\n            smsResult.setSuccessful(true);\n            smsResult.setResult(result);\n            return smsResult;\n        } catch (HTTPException | IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        SmsResult smsResult = new SmsResult();\n        smsResult.setSuccessful(false);\n        return smsResult;\n    }\n\n    public void setSign(String sign) {\n        this.sign = sign;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/config/NotifyAutoConfiguration.java",
    "content": "package org.linlinjava.litemall.core.notify.config;\n\nimport com.github.qcloudsms.SmsSingleSender;\nimport org.linlinjava.litemall.core.notify.AliyunSmsSender;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.TencentSmsSender;\nimport org.springframework.boot.context.properties.EnableConfigurationProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.mail.javamail.JavaMailSender;\nimport org.springframework.mail.javamail.JavaMailSenderImpl;\n\nimport java.util.Properties;\n\n@Configuration\n@EnableConfigurationProperties(NotifyProperties.class)\npublic class NotifyAutoConfiguration {\n\n    private final NotifyProperties properties;\n\n    public NotifyAutoConfiguration(NotifyProperties properties) {\n        this.properties = properties;\n    }\n\n    @Bean\n    public NotifyService notifyService() {\n        NotifyService notifyService = new NotifyService();\n\n        NotifyProperties.Mail mailConfig = properties.getMail();\n        if (mailConfig.isEnable()) {\n            notifyService.setMailSender(mailSender());\n            notifyService.setSendFrom(mailConfig.getSendfrom());\n            notifyService.setSendTo(mailConfig.getSendto());\n        }\n\n        NotifyProperties.Sms smsConfig = properties.getSms();\n        if (smsConfig.isEnable()) {\n            if(smsConfig.getActive().equals(\"tencent\")) {\n                notifyService.setSmsSender(tencentSmsSender());\n            }\n            else if(smsConfig.getActive().equals(\"aliyun\")) {\n                notifyService.setSmsSender(aliyunSmsSender());\n            }\n\n            notifyService.setSmsTemplate(smsConfig.getTemplate());\n        }\n\n        return notifyService;\n    }\n\n    public JavaMailSender mailSender() {\n        NotifyProperties.Mail mailConfig = properties.getMail();\n        JavaMailSenderImpl mailSender = new JavaMailSenderImpl();\n        mailSender.setHost(mailConfig.getHost());\n        mailSender.setUsername(mailConfig.getUsername());\n        mailSender.setPassword(mailConfig.getPassword());\n        mailSender.setPort(mailConfig.getPort());\n        Properties properties = new Properties();\n        properties.put(\"mail.smtp.auth\",true);\n        properties.put(\"mail.smtp.timeout\",5000);\n        properties.put(\"mail.smtp.starttls.enable\",true);\n        properties.put(\"mail.smtp.socketFactory.fallback\", \"false\");\n        //阿里云 必须加入配置 outlook配置又不需要 视情况而定.发送不成功多数是这里的配置问题\n        properties.put(\"mail.smtp.socketFactory.class\", \"javax.net.ssl.SSLSocketFactory\");\n        properties.put(\"mail.smtp.socketFactory.port\", mailConfig.getPort());\n        properties.put(\"debug\", true);\n        mailSender.setJavaMailProperties(properties);\n        return mailSender;\n    }\n\n    public TencentSmsSender tencentSmsSender() {\n        NotifyProperties.Sms smsConfig = properties.getSms();\n        TencentSmsSender smsSender = new TencentSmsSender();\n        NotifyProperties.Sms.Tencent tencent = smsConfig.getTencent();\n        smsSender.setSender(new SmsSingleSender(tencent.getAppid(), tencent.getAppkey()));\n        smsSender.setSign(smsConfig.getSign());\n        return smsSender;\n    }\n\n    public AliyunSmsSender aliyunSmsSender() {\n        NotifyProperties.Sms smsConfig = properties.getSms();\n        AliyunSmsSender smsSender = new AliyunSmsSender();\n        NotifyProperties.Sms.Aliyun aliyun = smsConfig.getAliyun();\n        smsSender.setSign(smsConfig.getSign());\n        smsSender.setRegionId(aliyun.getRegionId());\n        smsSender.setAccessKeyId(aliyun.getAccessKeyId());\n        smsSender.setAccessKeySecret(aliyun.getAccessKeySecret());\n        return smsSender;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/notify/config/NotifyProperties.java",
    "content": "package org.linlinjava.litemall.core.notify.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\n\nimport java.util.ArrayList;\nimport java.util.List;\nimport java.util.Map;\n\n@ConfigurationProperties(prefix = \"litemall.notify\")\npublic class NotifyProperties {\n    private Mail mail;\n    private Sms sms;\n\n    public Mail getMail() {\n        return mail;\n    }\n\n    public void setMail(Mail mail) {\n        this.mail = mail;\n    }\n\n    public Sms getSms() {\n        return sms;\n    }\n\n    public void setSms(Sms sms) {\n        this.sms = sms;\n    }\n\n    public static class Mail {\n        private boolean enable;\n        private String host;\n        private String username;\n        private String password;\n        private String sendfrom;\n        private String sendto;\n        private Integer port;\n        public boolean isEnable() {\n            return enable;\n        }\n\n        public void setEnable(boolean enable) {\n            this.enable = enable;\n        }\n\n        public String getHost() {\n            return host;\n        }\n\n        public void setHost(String host) {\n            this.host = host;\n        }\n\n        public String getUsername() {\n            return username;\n        }\n\n        public void setUsername(String username) {\n            this.username = username;\n        }\n\n        public String getPassword() {\n            return password;\n        }\n\n        public void setPassword(String password) {\n            this.password = password;\n        }\n\n        public String getSendfrom() {\n            return sendfrom;\n        }\n\n        public void setSendfrom(String sendfrom) {\n            this.sendfrom = sendfrom;\n        }\n\n        public String getSendto() {\n            return sendto;\n        }\n\n        public void setSendto(String sendto) {\n            this.sendto = sendto;\n        }\n\n        public Integer getPort() {\n            return port;\n        }\n\n        public void setPort(Integer port) {\n            this.port = port;\n        }\n    }\n\n    public static class Sms {\n        private boolean enable;\n        private String active;\n        private String sign;\n        private Tencent tencent;\n        private Aliyun aliyun;\n        private List<Map<String, String>> template = new ArrayList<>();\n\n        public boolean isEnable() {\n            return enable;\n        }\n\n        public void setEnable(boolean enable) {\n            this.enable = enable;\n        }\n\n        public List<Map<String, String>> getTemplate() {\n            return template;\n        }\n\n        public void setTemplate(List<Map<String, String>> template) {\n            this.template = template;\n        }\n\n        public String getActive() {\n            return active;\n        }\n\n        public void setActive(String active) {\n            this.active = active;\n        }\n\n        public String getSign() {\n            return sign;\n        }\n\n        public void setSign(String sign) {\n            this.sign = sign;\n        }\n\n        public Tencent getTencent() {\n            return tencent;\n        }\n\n        public void setTencent(Tencent tencent) {\n            this.tencent = tencent;\n        }\n\n        public Aliyun getAliyun() {\n            return aliyun;\n        }\n\n        public void setAliyun(Aliyun aliyun) {\n            this.aliyun = aliyun;\n        }\n\n        public static class Tencent {\n            private int appid;\n            private String appkey;\n\n            public int getAppid() {\n                return appid;\n            }\n\n            public void setAppid(int appid) {\n                this.appid = appid;\n            }\n\n            public String getAppkey() {\n                return appkey;\n            }\n\n            public void setAppkey(String appkey) {\n                this.appkey = appkey;\n            }\n        }\n\n        public static class Aliyun {\n            private String regionId;\n            private String accessKeyId;\n            private String accessKeySecret;\n\n            public String getRegionId() {\n                return regionId;\n            }\n\n            public void setRegionId(String regionId) {\n                this.regionId = regionId;\n            }\n\n            public String getAccessKeyId() {\n                return accessKeyId;\n            }\n\n            public void setAccessKeyId(String accessKeyId) {\n                this.accessKeyId = accessKeyId;\n            }\n\n            public String getAccessKeySecret() {\n                return accessKeySecret;\n            }\n\n            public void setAccessKeySecret(String accessKeySecret) {\n                this.accessKeySecret = accessKeySecret;\n            }\n        }\n    }\n\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/qcode/QCodeService.java",
    "content": "package org.linlinjava.litemall.core.qcode;\n\nimport cn.binarywang.wx.miniapp.api.WxMaService;\nimport me.chanjar.weixin.common.error.WxErrorException;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.storage.StorageService;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.io.ClassPathResource;\nimport org.springframework.stereotype.Service;\n\nimport javax.imageio.ImageIO;\nimport java.awt.*;\nimport java.awt.image.BufferedImage;\nimport java.io.*;\nimport java.net.URL;\n\n@Service\npublic class QCodeService {\n    private final Log logger = LogFactory.getLog(QCodeService.class);\n    @Autowired\n    WxMaService wxMaService;\n\n    @Autowired\n    private StorageService storageService;\n\n\n    public String createGrouponShareImage(String goodName, String goodPicUrl, LitemallGroupon groupon) {\n        try {\n            //创建该商品的二维码\n            File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(\"groupon,\" + groupon.getId(), \"pages\" +\n                    \"/index/index\");\n            FileInputStream inputStream = new FileInputStream(file);\n            //将商品图片，商品名字,商城名字画到模版图中\n            byte[] imageData = drawPicture(inputStream, goodPicUrl, goodName);\n            ByteArrayInputStream inputStream2 = new ByteArrayInputStream(imageData);\n            //存储分享图\n            LitemallStorage storageInfo = storageService.store(inputStream2, imageData.length, \"image/jpeg\",\n                    getKeyName(groupon.getId().toString()));\n\n            return storageInfo.getUrl();\n        } catch (WxErrorException e) {\n            logger.error(e.getMessage(), e);\n        } catch (FileNotFoundException e) {\n            logger.error(e.getMessage(), e);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        return \"\";\n    }\n\n\n    /**\n     * 创建商品分享图\n     *\n     * @param goodId\n     * @param goodPicUrl\n     * @param goodName\n     */\n    public String createGoodShareImage(String goodId, String goodPicUrl, String goodName) {\n        if (!SystemConfig.isAutoCreateShareImage())\n            return \"\";\n\n        try {\n            //创建该商品的二维码\n            File file = wxMaService.getQrcodeService().createWxaCodeUnlimit(\"goods,\" + goodId, \"pages/index/index\");\n            FileInputStream inputStream = new FileInputStream(file);\n            //将商品图片，商品名字,商城名字画到模版图中\n            byte[] imageData = drawPicture(inputStream, goodPicUrl, goodName);\n            ByteArrayInputStream inputStream2 = new ByteArrayInputStream(imageData);\n            //存储分享图\n            LitemallStorage litemallStorage = storageService.store(inputStream2, imageData.length, \"image/jpeg\",\n                    getKeyName(goodId));\n\n            return litemallStorage.getUrl();\n        } catch (WxErrorException e) {\n            logger.error(e.getMessage(), e);\n        } catch (FileNotFoundException e) {\n            logger.error(e.getMessage(), e);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        return \"\";\n    }\n\n    private String getKeyName(String goodId) {\n        return \"GOOD_QCODE_\" + goodId + \".jpg\";\n    }\n\n    /**\n     * 将商品图片，商品名字画到模版图中\n     *\n     * @param qrCodeImg  二维码图片\n     * @param goodPicUrl 商品图片地址\n     * @param goodName   商品名称\n     * @return\n     * @throws IOException\n     */\n    private byte[] drawPicture(InputStream qrCodeImg, String goodPicUrl, String goodName) throws IOException {\n        //底图\n        ClassPathResource redResource = new ClassPathResource(\"back.png\");\n        BufferedImage red = ImageIO.read(redResource.getInputStream());\n\n\n        //商品图片\n        URL goodPic = new URL(goodPicUrl);\n        BufferedImage goodImage = ImageIO.read(goodPic);\n\n        //小程序二维码\n        BufferedImage qrCodeImage = ImageIO.read(qrCodeImg);\n\n        // --- 画图 ---\n\n        //底层空白 bufferedImage\n        BufferedImage baseImage = new BufferedImage(red.getWidth(), red.getHeight(), BufferedImage.TYPE_4BYTE_ABGR_PRE);\n\n        //画上图片\n        drawImgInImg(baseImage, red, 0, 0, red.getWidth(), red.getHeight());\n\n        //画上商品图片\n        drawImgInImg(baseImage, goodImage, 71, 69, 660, 660);\n\n        //画上小程序二维码\n        drawImgInImg(baseImage, qrCodeImage, 448, 767, 300, 300);\n\n        //写上商品名称\n        drawTextInImg(baseImage, goodName, 65, 867);\n\n        //写上商城名称\n        //        drawTextInImgCenter(baseImage, shopName, 98);\n\n\n        //转jpg\n        BufferedImage result = new BufferedImage(baseImage.getWidth(), baseImage\n                .getHeight(), BufferedImage.TYPE_3BYTE_BGR);\n        result.getGraphics().drawImage(baseImage, 0, 0, null);\n        ByteArrayOutputStream bs = new ByteArrayOutputStream();\n        ImageIO.write(result, \"jpg\", bs);\n\n        //最终byte数组\n        return bs.toByteArray();\n    }\n\n    private void drawTextInImgCenter(BufferedImage baseImage, String textToWrite, int y) {\n        Graphics2D g2D = (Graphics2D) baseImage.getGraphics();\n        g2D.setColor(new Color(167, 136, 69));\n\n        String fontName = \"Microsoft YaHei\";\n\n        Font f = new Font(fontName, Font.PLAIN, 28);\n        g2D.setFont(f);\n        g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n\n        // 计算文字长度，计算居中的x点坐标\n        FontMetrics fm = g2D.getFontMetrics(f);\n        int textWidth = fm.stringWidth(textToWrite);\n        int widthX = (baseImage.getWidth() - textWidth) / 2;\n        // 表示这段文字在图片上的位置(x,y) .第一个是你设置的内容。\n\n        g2D.drawString(textToWrite, widthX, y);\n        // 释放对象\n        g2D.dispose();\n    }\n\n    private void drawTextInImg(BufferedImage baseImage, String textToWrite, int x, int y) {\n        Graphics2D g2D = (Graphics2D) baseImage.getGraphics();\n        g2D.setColor(new Color(167, 136, 69));\n\n        //TODO 注意，这里的字体必须安装在服务器上\n        g2D.setFont(new Font(\"Microsoft YaHei\", Font.PLAIN, 28));\n        g2D.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);\n\n        g2D.drawString(textToWrite, x, y);\n        g2D.dispose();\n    }\n\n    private void drawImgInImg(BufferedImage baseImage, BufferedImage imageToWrite, int x, int y, int width,\n                              int heigth) {\n        Graphics2D g2D = (Graphics2D) baseImage.getGraphics();\n        g2D.drawImage(imageToWrite, x, y, width, heigth, null);\n        g2D.dispose();\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/AliyunStorage.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\nimport com.aliyun.oss.OSSClient;\nimport com.aliyun.oss.model.ObjectMetadata;\nimport com.aliyun.oss.model.PutObjectRequest;\nimport com.aliyun.oss.model.PutObjectResult;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.UrlResource;\n\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.nio.file.Path;\nimport java.util.stream.Stream;\n\n/**\n * @author Yogeek\n * @date 2018/7/16 16:10\n * @decrpt 阿里云对象存储服务\n */\npublic class AliyunStorage implements Storage {\n\n    private final Log logger = LogFactory.getLog(AliyunStorage.class);\n\n    private String endpoint;\n    private String accessKeyId;\n    private String accessKeySecret;\n    private String bucketName;\n\n    public String getEndpoint() {\n        return endpoint;\n    }\n\n    public void setEndpoint(String endpoint) {\n        this.endpoint = endpoint;\n    }\n\n    public String getAccessKeyId() {\n        return accessKeyId;\n    }\n\n    public void setAccessKeyId(String accessKeyId) {\n        this.accessKeyId = accessKeyId;\n    }\n\n    public String getAccessKeySecret() {\n        return accessKeySecret;\n    }\n\n    public void setAccessKeySecret(String accessKeySecret) {\n        this.accessKeySecret = accessKeySecret;\n    }\n\n    public String getBucketName() {\n        return bucketName;\n    }\n\n    public void setBucketName(String bucketName) {\n        this.bucketName = bucketName;\n    }\n\n    /**\n     * 获取阿里云OSS客户端对象\n     *\n     * @return ossClient\n     */\n    private OSSClient getOSSClient() {\n        return new OSSClient(endpoint, accessKeyId, accessKeySecret);\n    }\n\n    private String getBaseUrl() {\n        return \"https://\" + bucketName + \".\" + endpoint + \"/\";\n    }\n\n    /**\n     * 阿里云OSS对象存储简单上传实现\n     */\n    @Override\n    public void store(InputStream inputStream, long contentLength, String contentType, String keyName) {\n        try {\n            // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20M以下的文件使用该接口\n            ObjectMetadata objectMetadata = new ObjectMetadata();\n            objectMetadata.setContentLength(contentLength);\n            objectMetadata.setContentType(contentType);\n            // 对象键（Key）是对象在存储桶中的唯一标识。\n            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, inputStream, objectMetadata);\n            PutObjectResult putObjectResult = getOSSClient().putObject(putObjectRequest);\n        } catch (Exception ex) {\n            logger.error(ex.getMessage(), ex);\n        }\n\n    }\n\n    @Override\n    public Stream<Path> loadAll() {\n        return null;\n    }\n\n    @Override\n    public Path load(String keyName) {\n        return null;\n    }\n\n    @Override\n    public Resource loadAsResource(String keyName) {\n        try {\n            URL url = new URL(getBaseUrl() + keyName);\n            Resource resource = new UrlResource(url);\n            if (resource.exists() || resource.isReadable()) {\n                return resource;\n            } else {\n                return null;\n            }\n        } catch (MalformedURLException e) {\n            logger.error(e.getMessage(), e);\n            return null;\n        }\n    }\n\n    @Override\n    public void delete(String keyName) {\n        try {\n            getOSSClient().deleteObject(bucketName, keyName);\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n\n    }\n\n    @Override\n    public String generateUrl(String keyName) {\n        return getBaseUrl() + keyName;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/LocalStorage.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.UrlResource;\n\nimport java.io.IOException;\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.nio.file.Files;\nimport java.nio.file.Path;\nimport java.nio.file.Paths;\nimport java.nio.file.StandardCopyOption;\nimport java.util.stream.Stream;\n\n/**\n * 服务器本地对象存储服务\n */\npublic class LocalStorage implements Storage {\n\n\n    private final Log logger = LogFactory.getLog(LocalStorage.class);\n\n    private String storagePath;\n    private String address;\n\n    private Path rootLocation;\n\n    public String getStoragePath() {\n        return storagePath;\n    }\n\n    public void setStoragePath(String storagePath) {\n        this.storagePath = storagePath;\n\n        this.rootLocation = Paths.get(storagePath);\n        try {\n            Files.createDirectories(rootLocation);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    @Override\n    public void store(InputStream inputStream, long contentLength, String contentType, String keyName) {\n        try {\n            Files.copy(inputStream, rootLocation.resolve(keyName), StandardCopyOption.REPLACE_EXISTING);\n        } catch (IOException e) {\n            throw new RuntimeException(\"Failed to store file \" + keyName, e);\n        }\n    }\n\n    @Override\n    public Stream<Path> loadAll() {\n        try {\n            return Files.walk(rootLocation, 1)\n                    .filter(path -> !path.equals(rootLocation))\n                    .map(path -> rootLocation.relativize(path));\n        } catch (IOException e) {\n            throw new RuntimeException(\"Failed to read stored files\", e);\n        }\n\n    }\n\n    @Override\n    public Path load(String filename) {\n        return rootLocation.resolve(filename);\n    }\n\n    @Override\n    public Resource loadAsResource(String filename) {\n        try {\n            Path file = load(filename);\n            Resource resource = new UrlResource(file.toUri());\n            if (resource.exists() || resource.isReadable()) {\n                return resource;\n            } else {\n                return null;\n            }\n        } catch (MalformedURLException e) {\n            logger.error(e.getMessage(), e);\n            return null;\n        }\n    }\n\n    @Override\n    public void delete(String filename) {\n        Path file = load(filename);\n        try {\n            Files.delete(file);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n    }\n\n    @Override\n    public String generateUrl(String keyName) {\n\n        return address + keyName;\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/QiniuStorage.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\nimport com.qiniu.common.QiniuException;\nimport com.qiniu.storage.BucketManager;\nimport com.qiniu.storage.Configuration;\nimport com.qiniu.storage.UploadManager;\nimport com.qiniu.util.Auth;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.UrlResource;\n\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.nio.file.Path;\nimport java.util.stream.Stream;\n\npublic class QiniuStorage implements Storage {\n\n    private final Log logger = LogFactory.getLog(QiniuStorage.class);\n\n    private String endpoint;\n    private String accessKey;\n    private String secretKey;\n    private String bucketName;\n    private Auth auth;\n    private UploadManager uploadManager;\n    private BucketManager bucketManager;\n\n    public String getEndpoint() {\n        return endpoint;\n    }\n\n    public void setEndpoint(String endpoint) {\n        this.endpoint = endpoint;\n    }\n\n    public String getAccessKey() {\n        return accessKey;\n    }\n\n    public void setAccessKey(String accessKey) {\n        this.accessKey = accessKey;\n    }\n\n    public String getSecretKey() {\n        return secretKey;\n    }\n\n    public void setSecretKey(String secretKey) {\n        this.secretKey = secretKey;\n    }\n\n    public String getBucketName() {\n        return bucketName;\n    }\n\n    public void setBucketName(String bucketName) {\n        this.bucketName = bucketName;\n    }\n\n    /**\n     * 七牛云OSS对象存储简单上传实现\n     */\n    @Override\n    public void store(InputStream inputStream, long contentLength, String contentType, String keyName) {\n        if (uploadManager == null) {\n            if (auth == null) {\n                auth = Auth.create(accessKey, secretKey);\n            }\n            uploadManager = new UploadManager(new Configuration());\n        }\n\n        try {\n            String upToken = auth.uploadToken(bucketName);\n            uploadManager.put(inputStream, keyName, upToken, null, contentType);\n        } catch (QiniuException ex) {\n            logger.error(ex.getMessage(), ex);\n        }\n    }\n\n    @Override\n    public Stream<Path> loadAll() {\n        return null;\n    }\n\n    @Override\n    public Path load(String keyName) {\n        return null;\n    }\n\n    @Override\n    public Resource loadAsResource(String keyName) {\n        try {\n            URL url = new URL(generateUrl(keyName));\n            Resource resource = new UrlResource(url);\n            if (resource.exists() || resource.isReadable()) {\n                return resource;\n            }\n        } catch (MalformedURLException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    @Override\n    public void delete(String keyName) {\n        if (bucketManager == null) {\n            if (auth == null) {\n                auth = Auth.create(accessKey, secretKey);\n            }\n            bucketManager = new BucketManager(auth, new Configuration());\n        }\n        try {\n            bucketManager.delete(bucketName, keyName);\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n    }\n\n    @Override\n    public String generateUrl(String keyName) {\n        return endpoint + \"/\" + keyName;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/Storage.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\nimport org.springframework.core.io.Resource;\n\nimport java.io.InputStream;\nimport java.nio.file.Path;\nimport java.util.stream.Stream;\n\n/**\n * 对象存储接口\n */\npublic interface Storage {\n\n    /**\n     * 存储一个文件对象\n     *\n     * @param inputStream   文件输入流\n     * @param contentLength 文件长度\n     * @param contentType   文件类型\n     * @param keyName       文件名\n     */\n    void store(InputStream inputStream, long contentLength, String contentType, String keyName);\n\n    Stream<Path> loadAll();\n\n    Path load(String keyName);\n\n    Resource loadAsResource(String keyName);\n\n    void delete(String keyName);\n\n    String generateUrl(String keyName);\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/StorageService.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\nimport org.linlinjava.litemall.core.util.CharUtil;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.linlinjava.litemall.db.service.LitemallStorageService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.io.Resource;\n\nimport java.io.InputStream;\nimport java.nio.file.Path;\nimport java.util.stream.Stream;\n\n/**\n * 提供存储服务类，所有存储服务均由该类对外提供\n */\npublic class StorageService {\n    private String active;\n    private Storage storage;\n    @Autowired\n    private LitemallStorageService litemallStorageService;\n\n    public String getActive() {\n        return active;\n    }\n\n    public void setActive(String active) {\n        this.active = active;\n    }\n\n    public Storage getStorage() {\n        return storage;\n    }\n\n    public void setStorage(Storage storage) {\n        this.storage = storage;\n    }\n\n    /**\n     * 存储一个文件对象\n     *\n     * @param inputStream   文件输入流\n     * @param contentLength 文件长度\n     * @param contentType   文件类型\n     * @param fileName      文件索引名\n     */\n    public LitemallStorage store(InputStream inputStream, long contentLength, String contentType, String fileName) {\n        String key = generateKey(fileName);\n        storage.store(inputStream, contentLength, contentType, key);\n\n        String url = generateUrl(key);\n        LitemallStorage storageInfo = new LitemallStorage();\n        storageInfo.setName(fileName);\n        storageInfo.setSize((int) contentLength);\n        storageInfo.setType(contentType);\n        storageInfo.setKey(key);\n        storageInfo.setUrl(url);\n        litemallStorageService.add(storageInfo);\n\n        return storageInfo;\n    }\n\n    private String generateKey(String originalFilename) {\n        int index = originalFilename.lastIndexOf('.');\n        String suffix = originalFilename.substring(index);\n\n        String key = null;\n        LitemallStorage storageInfo = null;\n\n        do {\n            key = CharUtil.getRandomString(20) + suffix;\n            storageInfo = litemallStorageService.findByKey(key);\n        }\n        while (storageInfo != null);\n\n        return key;\n    }\n\n    public Stream<Path> loadAll() {\n        return storage.loadAll();\n    }\n\n    public Path load(String keyName) {\n        return storage.load(keyName);\n    }\n\n    public Resource loadAsResource(String keyName) {\n        return storage.loadAsResource(keyName);\n    }\n\n    public void delete(String keyName) {\n        storage.delete(keyName);\n    }\n\n    private String generateUrl(String keyName) {\n        return storage.generateUrl(keyName);\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/TencentStorage.java",
    "content": "package org.linlinjava.litemall.core.storage;\n\nimport com.qcloud.cos.COSClient;\nimport com.qcloud.cos.ClientConfig;\nimport com.qcloud.cos.auth.BasicCOSCredentials;\nimport com.qcloud.cos.auth.COSCredentials;\nimport com.qcloud.cos.model.ObjectMetadata;\nimport com.qcloud.cos.model.PutObjectRequest;\nimport com.qcloud.cos.region.Region;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.core.io.Resource;\nimport org.springframework.core.io.UrlResource;\n\nimport java.io.InputStream;\nimport java.net.MalformedURLException;\nimport java.net.URL;\nimport java.nio.file.Path;\nimport java.util.stream.Stream;\n\n/**\n * 腾讯对象存储服务\n */\npublic class TencentStorage implements Storage {\n\n    private final Log logger = LogFactory.getLog(TencentStorage.class);\n\n    private String secretId;\n    private String secretKey;\n    private String region;\n    private String bucketName;\n\n    private COSClient cosClient;\n\n    public String getSecretId() {\n        return secretId;\n    }\n\n    public void setSecretId(String secretId) {\n        this.secretId = secretId;\n    }\n\n    public String getSecretKey() {\n        return secretKey;\n    }\n\n    public void setSecretKey(String secretKey) {\n        this.secretKey = secretKey;\n    }\n\n    public String getRegion() {\n        return region;\n    }\n\n    public void setRegion(String region) {\n        this.region = region;\n    }\n\n    public String getBucketName() {\n        return bucketName;\n    }\n\n    public void setBucketName(String bucketName) {\n        this.bucketName = bucketName;\n    }\n\n    private COSClient getCOSClient() {\n        if (cosClient == null) {\n            // 1 初始化用户身份信息(secretId, secretKey)\n            COSCredentials cred = new BasicCOSCredentials(secretId, secretKey);\n            // 2 设置bucket的区域, COS地域的简称请参照 https://cloud.tencent.com/document/product/436/6224\n            ClientConfig clientConfig = new ClientConfig(new Region(region));\n            cosClient = new COSClient(cred, clientConfig);\n        }\n\n        return cosClient;\n    }\n\n    private String getBaseUrl() {\n        return \"https://\" + bucketName + \".cos.\" + region + \".myqcloud.com/\";\n    }\n\n    @Override\n    public void store(InputStream inputStream, long contentLength, String contentType, String keyName) {\n        try {\n            // 简单文件上传, 最大支持 5 GB, 适用于小文件上传, 建议 20M以下的文件使用该接口\n            ObjectMetadata objectMetadata = new ObjectMetadata();\n            objectMetadata.setContentLength(contentLength);\n            objectMetadata.setContentType(contentType);\n            // 对象键（Key）是对象在存储桶中的唯一标识。例如，在对象的访问域名 `bucket1-1250000000.cos.ap-guangzhou.myqcloud.com/doc1/pic1.jpg`\n            // 中，对象键为 doc1/pic1.jpg, 详情参考 [对象键](https://cloud.tencent.com/document/product/436/13324)\n            PutObjectRequest putObjectRequest = new PutObjectRequest(bucketName, keyName, inputStream, objectMetadata);\n            getCOSClient().putObject(putObjectRequest);\n        } catch (Exception ex) {\n            logger.error(ex.getMessage(), ex);\n        }\n    }\n\n    @Override\n    public Stream<Path> loadAll() {\n        return null;\n    }\n\n    @Override\n    public Path load(String keyName) {\n        return null;\n    }\n\n    @Override\n    public Resource loadAsResource(String keyName) {\n        try {\n            URL url = new URL(getBaseUrl() + keyName);\n            Resource resource = new UrlResource(url);\n            if (resource.exists() || resource.isReadable()) {\n                return resource;\n            }\n        } catch (MalformedURLException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    @Override\n    public void delete(String keyName) {\n        try {\n            getCOSClient().deleteObject(bucketName, keyName);\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n\n    }\n\n    @Override\n    public String generateUrl(String keyName) {\n        return getBaseUrl() + keyName;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/config/StorageAutoConfiguration.java",
    "content": "package org.linlinjava.litemall.core.storage.config;\n\nimport org.linlinjava.litemall.core.storage.*;\nimport org.springframework.boot.context.properties.EnableConfigurationProperties;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\n\n@Configuration\n@EnableConfigurationProperties(StorageProperties.class)\npublic class StorageAutoConfiguration {\n\n    private final StorageProperties properties;\n\n    public StorageAutoConfiguration(StorageProperties properties) {\n        this.properties = properties;\n    }\n\n    @Bean\n    public StorageService storageService() {\n        StorageService storageService = new StorageService();\n        String active = this.properties.getActive();\n        storageService.setActive(active);\n        if (active.equals(\"local\")) {\n            storageService.setStorage(localStorage());\n        } else if (active.equals(\"aliyun\")) {\n            storageService.setStorage(aliyunStorage());\n        } else if (active.equals(\"tencent\")) {\n            storageService.setStorage(tencentStorage());\n        } else if (active.equals(\"qiniu\")) {\n            storageService.setStorage(qiniuStorage());\n        } else {\n            throw new RuntimeException(\"当前存储模式 \" + active + \" 不支持\");\n        }\n\n        return storageService;\n    }\n\n    @Bean\n    public LocalStorage localStorage() {\n        LocalStorage localStorage = new LocalStorage();\n        StorageProperties.Local local = this.properties.getLocal();\n        localStorage.setAddress(local.getAddress());\n        localStorage.setStoragePath(local.getStoragePath());\n        return localStorage;\n    }\n\n    @Bean\n    public AliyunStorage aliyunStorage() {\n        AliyunStorage aliyunStorage = new AliyunStorage();\n        StorageProperties.Aliyun aliyun = this.properties.getAliyun();\n        aliyunStorage.setAccessKeyId(aliyun.getAccessKeyId());\n        aliyunStorage.setAccessKeySecret(aliyun.getAccessKeySecret());\n        aliyunStorage.setBucketName(aliyun.getBucketName());\n        aliyunStorage.setEndpoint(aliyun.getEndpoint());\n        return aliyunStorage;\n    }\n\n    @Bean\n    public TencentStorage tencentStorage() {\n        TencentStorage tencentStorage = new TencentStorage();\n        StorageProperties.Tencent tencent = this.properties.getTencent();\n        tencentStorage.setSecretId(tencent.getSecretId());\n        tencentStorage.setSecretKey(tencent.getSecretKey());\n        tencentStorage.setBucketName(tencent.getBucketName());\n        tencentStorage.setRegion(tencent.getRegion());\n        return tencentStorage;\n    }\n\n    @Bean\n    public QiniuStorage qiniuStorage() {\n        QiniuStorage qiniuStorage = new QiniuStorage();\n        StorageProperties.Qiniu qiniu = this.properties.getQiniu();\n        qiniuStorage.setAccessKey(qiniu.getAccessKey());\n        qiniuStorage.setSecretKey(qiniu.getSecretKey());\n        qiniuStorage.setBucketName(qiniu.getBucketName());\n        qiniuStorage.setEndpoint(qiniu.getEndpoint());\n        return qiniuStorage;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/storage/config/StorageProperties.java",
    "content": "package org.linlinjava.litemall.core.storage.config;\n\nimport org.springframework.boot.context.properties.ConfigurationProperties;\n\n@ConfigurationProperties(prefix = \"litemall.storage\")\npublic class StorageProperties {\n    private String active;\n    private Local local;\n    private Aliyun aliyun;\n    private Tencent tencent;\n    private Qiniu qiniu;\n\n    public String getActive() {\n        return active;\n    }\n\n    public void setActive(String active) {\n        this.active = active;\n    }\n\n    public Local getLocal() {\n        return local;\n    }\n\n    public void setLocal(Local local) {\n        this.local = local;\n    }\n\n    public Aliyun getAliyun() {\n        return aliyun;\n    }\n\n    public void setAliyun(Aliyun aliyun) {\n        this.aliyun = aliyun;\n    }\n\n    public Tencent getTencent() {\n        return tencent;\n    }\n\n    public void setTencent(Tencent tencent) {\n        this.tencent = tencent;\n    }\n\n    public Qiniu getQiniu() {\n        return qiniu;\n    }\n\n    public void setQiniu(Qiniu qiniu) {\n        this.qiniu = qiniu;\n    }\n\n    public static class Local {\n        private String address;\n        private String storagePath;\n\n        public String getAddress() {\n            return address;\n        }\n\n        public void setAddress(String address) {\n            this.address = address;\n        }\n\n        public String getStoragePath() {\n            return storagePath;\n        }\n\n        public void setStoragePath(String storagePath) {\n            this.storagePath = storagePath;\n        }\n    }\n\n    public static class Tencent {\n        private String secretId;\n        private String secretKey;\n        private String region;\n        private String bucketName;\n\n        public String getSecretId() {\n            return secretId;\n        }\n\n        public void setSecretId(String secretId) {\n            this.secretId = secretId;\n        }\n\n        public String getSecretKey() {\n            return secretKey;\n        }\n\n        public void setSecretKey(String secretKey) {\n            this.secretKey = secretKey;\n        }\n\n        public String getRegion() {\n            return region;\n        }\n\n        public void setRegion(String region) {\n            this.region = region;\n        }\n\n        public String getBucketName() {\n            return bucketName;\n        }\n\n        public void setBucketName(String bucketName) {\n            this.bucketName = bucketName;\n        }\n    }\n\n    public static class Aliyun {\n        private String endpoint;\n        private String accessKeyId;\n        private String accessKeySecret;\n        private String bucketName;\n\n        public String getEndpoint() {\n            return endpoint;\n        }\n\n        public void setEndpoint(String endpoint) {\n            this.endpoint = endpoint;\n        }\n\n        public String getAccessKeyId() {\n            return accessKeyId;\n        }\n\n        public void setAccessKeyId(String accessKeyId) {\n            this.accessKeyId = accessKeyId;\n        }\n\n        public String getAccessKeySecret() {\n            return accessKeySecret;\n        }\n\n        public void setAccessKeySecret(String accessKeySecret) {\n            this.accessKeySecret = accessKeySecret;\n        }\n\n        public String getBucketName() {\n            return bucketName;\n        }\n\n        public void setBucketName(String bucketName) {\n            this.bucketName = bucketName;\n        }\n    }\n\n    public static class Qiniu {\n        private String endpoint;\n        private String accessKey;\n        private String secretKey;\n        private String bucketName;\n\n        public String getEndpoint() {\n            return endpoint;\n        }\n\n        public void setEndpoint(String endpoint) {\n            this.endpoint = endpoint;\n        }\n\n        public String getAccessKey() {\n            return accessKey;\n        }\n\n        public void setAccessKey(String accessKey) {\n            this.accessKey = accessKey;\n        }\n\n        public String getSecretKey() {\n            return secretKey;\n        }\n\n        public void setSecretKey(String secretKey) {\n            this.secretKey = secretKey;\n        }\n\n        public String getBucketName() {\n            return bucketName;\n        }\n\n        public void setBucketName(String bucketName) {\n            this.bucketName = bucketName;\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemConfig.java",
    "content": "package org.linlinjava.litemall.core.system;\n\nimport java.math.BigDecimal;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * 系统设置\n */\npublic class SystemConfig {\n    // 小程序相关配置\n    public final static String LITEMALL_WX_INDEX_NEW = \"litemall_wx_index_new\";\n    public final static String LITEMALL_WX_INDEX_HOT = \"litemall_wx_index_hot\";\n    public final static String LITEMALL_WX_INDEX_BRAND = \"litemall_wx_index_brand\";\n    public final static String LITEMALL_WX_INDEX_TOPIC = \"litemall_wx_index_topic\";\n    public final static String LITEMALL_WX_INDEX_CATLOG_LIST = \"litemall_wx_catlog_list\";\n    public final static String LITEMALL_WX_INDEX_CATLOG_GOODS = \"litemall_wx_catlog_goods\";\n    public final static String LITEMALL_WX_SHARE = \"litemall_wx_share\";\n    // 运费相关配置\n    public final static String LITEMALL_EXPRESS_FREIGHT_VALUE = \"litemall_express_freight_value\";\n    public final static String LITEMALL_EXPRESS_FREIGHT_MIN = \"litemall_express_freight_min\";\n    // 订单相关配置\n    public final static String LITEMALL_ORDER_UNPAID = \"litemall_order_unpaid\";\n    public final static String LITEMALL_ORDER_UNCONFIRM = \"litemall_order_unconfirm\";\n    public final static String LITEMALL_ORDER_COMMENT = \"litemall_order_comment\";\n    // 商场相关配置\n    public final static String LITEMALL_MALL_NAME = \"litemall_mall_name\";\n    public final static String LITEMALL_MALL_ADDRESS = \"litemall_mall_address\";\n    public final static String LITEMALL_MALL_PHONE = \"litemall_mall_phone\";\n    public final static String LITEMALL_MALL_QQ = \"litemall_mall_qq\";\n    public final static String LITEMALL_MALL_LONGITUDE = \"litemall_mall_longitude\";\n    public final static String LITEMALL_MALL_Latitude = \"litemall_mall_latitude\";\n\n    //所有的配置均保存在该 HashMap 中\n    private static Map<String, String> SYSTEM_CONFIGS = new HashMap<>();\n\n    private static String getConfig(String keyName) {\n        return SYSTEM_CONFIGS.get(keyName);\n    }\n\n    private static Integer getConfigInt(String keyName) {\n        return Integer.parseInt(SYSTEM_CONFIGS.get(keyName));\n    }\n\n    private static Boolean getConfigBoolean(String keyName) {\n        return Boolean.valueOf(SYSTEM_CONFIGS.get(keyName));\n    }\n\n    private static BigDecimal getConfigBigDec(String keyName) {\n        return new BigDecimal(SYSTEM_CONFIGS.get(keyName));\n    }\n\n    public static Integer getNewLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_NEW);\n    }\n\n    public static Integer getHotLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_HOT);\n    }\n\n    public static Integer getBrandLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_BRAND);\n    }\n\n    public static Integer getTopicLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_TOPIC);\n    }\n\n    public static Integer getCatlogListLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_CATLOG_LIST);\n    }\n\n    public static Integer getCatlogMoreLimit() {\n        return getConfigInt(LITEMALL_WX_INDEX_CATLOG_GOODS);\n    }\n\n    public static boolean isAutoCreateShareImage() {\n        return getConfigBoolean(LITEMALL_WX_SHARE);\n    }\n\n    public static BigDecimal getFreight() {\n        return getConfigBigDec(LITEMALL_EXPRESS_FREIGHT_VALUE);\n    }\n\n    public static BigDecimal getFreightLimit() {\n        return getConfigBigDec(LITEMALL_EXPRESS_FREIGHT_MIN);\n    }\n\n    public static Integer getOrderUnpaid() {\n        return getConfigInt(LITEMALL_ORDER_UNPAID);\n    }\n\n    public static Integer getOrderUnconfirm() {\n        return getConfigInt(LITEMALL_ORDER_UNCONFIRM);\n    }\n\n    public static Integer getOrderComment() {\n        return getConfigInt(LITEMALL_ORDER_COMMENT);\n    }\n\n    public static String getMallName() {\n        return getConfig(LITEMALL_MALL_NAME);\n    }\n\n    public static String getMallAddress() {\n        return getConfig(LITEMALL_MALL_ADDRESS);\n    }\n\n    public static String getMallPhone() {\n        return getConfig(LITEMALL_MALL_PHONE);\n    }\n\n    public static String getMallQQ() {\n        return getConfig(LITEMALL_MALL_QQ);\n    }\n\n    public static String getMallLongitude() {\n        return getConfig(LITEMALL_MALL_LONGITUDE);\n    }\n\n    public static String getMallLatitude() {\n        return getConfig(LITEMALL_MALL_Latitude);\n    }\n\n    public static void setConfigs(Map<String, String> configs) {\n        SYSTEM_CONFIGS = configs;\n    }\n\n    public static void updateConfigs(Map<String, String> data) {\n        for (Map.Entry<String, String> entry : data.entrySet()) {\n            SYSTEM_CONFIGS.put(entry.getKey(), entry.getValue());\n        }\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/system/SystemInistService.java",
    "content": "package org.linlinjava.litemall.core.system;\n\nimport org.linlinjava.litemall.core.util.SystemInfoPrinter;\nimport org.linlinjava.litemall.db.service.LitemallSystemConfigService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.env.Environment;\nimport org.springframework.stereotype.Component;\n\nimport javax.annotation.PostConstruct;\nimport java.util.HashMap;\nimport java.util.LinkedHashMap;\nimport java.util.Map;\n\n/**\n * 系统启动服务，用于设置系统配置信息、检查系统状态及打印系统信息\n */\n@Component\nclass SystemInistService {\n    private SystemInistService systemInistService;\n\n\n    @Autowired\n    private Environment environment;\n\n    @PostConstruct\n    private void inist() {\n        systemInistService = this;\n        initConfigs();\n        SystemInfoPrinter.printInfo(\"Litemall 初始化信息\", getSystemInfo());\n    }\n\n\n    private final static Map<String, String> DEFAULT_CONFIGS = new HashMap<>();\n\n    static {\n        // 小程序相关配置默认值\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_NEW, \"6\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_HOT, \"6\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_BRAND, \"4\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_TOPIC, \"4\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_CATLOG_LIST, \"4\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_INDEX_CATLOG_GOODS, \"4\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_WX_SHARE, \"false\");\n        // 运费相关配置默认值\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_EXPRESS_FREIGHT_VALUE, \"8\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_EXPRESS_FREIGHT_MIN, \"88\");\n        // 订单相关配置默认值\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_UNPAID, \"30\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_UNCONFIRM, \"7\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_ORDER_COMMENT, \"7\");\n        // 商城相关配置默认值\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_NAME, \"litemall\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_ADDRESS, \"上海\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_Latitude, \"31.201900\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_LONGITUDE, \"121.587839\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_PHONE, \"021-xxxx-xxxx\");\n        DEFAULT_CONFIGS.put(SystemConfig.LITEMALL_MALL_QQ, \"705144434\");\n    }\n\n    @Autowired\n    private LitemallSystemConfigService litemallSystemConfigService;\n\n    private void initConfigs() {\n        // 1. 读取数据库全部配置信息\n        Map<String, String> configs = litemallSystemConfigService.queryAll();\n\n        // 2. 分析DEFAULT_CONFIGS\n        for (Map.Entry<String, String> entry : DEFAULT_CONFIGS.entrySet()) {\n            if (configs.containsKey(entry.getKey())) {\n                continue;\n            }\n\n            configs.put(entry.getKey(), entry.getValue());\n            litemallSystemConfigService.addConfig(entry.getKey(), entry.getValue());\n        }\n\n        SystemConfig.setConfigs(configs);\n    }\n\n    private Map<String, String> getSystemInfo() {\n\n        Map<String, String> infos = new LinkedHashMap<>();\n\n        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 0, \"系统信息\");\n        // 测试获取application-db.yml配置信息\n        infos.put(\"服务器端口\", environment.getProperty(\"server.port\"));\n        infos.put(\"数据库USER\", environment.getProperty(\"spring.datasource.druid.username\"));\n        infos.put(\"数据库地址\", environment.getProperty(\"spring.datasource.druid.url\"));\n        infos.put(\"调试级别\", environment.getProperty(\"logging.level.org.linlinjava.litemall.wx\"));\n\n        // 测试获取application-core.yml配置信息\n        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 1, \"模块状态\");\n        infos.put(\"邮件\", environment.getProperty(\"litemall.notify.mail.enable\"));\n        infos.put(\"短信\", environment.getProperty(\"litemall.notify.sms.enable\"));\n        infos.put(\"模版消息\", environment.getProperty(\"litemall.notify.wx.enable\"));\n        infos.put(\"快递信息\", environment.getProperty(\"litemall.express.enable\"));\n        infos.put(\"快递鸟ID\", environment.getProperty(\"litemall.express.appId\"));\n        infos.put(\"对象存储\", environment.getProperty(\"litemall.storage.active\"));\n        infos.put(\"本地对象存储路径\", environment.getProperty(\"litemall.storage.local.storagePath\"));\n        infos.put(\"本地对象访问地址\", environment.getProperty(\"litemall.storage.local.address\"));\n        infos.put(\"本地对象访问端口\", environment.getProperty(\"litemall.storage.local.port\"));\n\n        // 微信相关信息\n        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 2, \"微信相关\");\n        infos.put(\"微信APP KEY\", environment.getProperty(\"litemall.wx.app-id\"));\n        infos.put(\"微信APP-SECRET\", environment.getProperty(\"litemall.wx.app-secret\"));\n        infos.put(\"微信支付MCH-ID\", environment.getProperty(\"litemall.wx.mch-id\"));\n        infos.put(\"微信支付MCH-KEY\", environment.getProperty(\"litemall.wx.mch-key\"));\n        infos.put(\"微信支付通知地址\", environment.getProperty(\"litemall.wx.notify-url\"));\n\n        //测试获取System表配置信息\n        infos.put(SystemInfoPrinter.CREATE_PART_COPPER + 3, \"系统设置\");\n        infos.put(\"自动创建朋友圈分享图\", Boolean.toString(SystemConfig.isAutoCreateShareImage()));\n        infos.put(\"商场名称\", SystemConfig.getMallName());\n        infos.put(\"首页显示记录数：NEW,HOT,BRAND,TOPIC,CatlogList,CatlogMore\",\n                SystemConfig.getNewLimit() + \",\" + SystemConfig.getHotLimit() + \",\" + SystemConfig.getBrandLimit() +\n                        \",\" + SystemConfig.getTopicLimit() + \",\" + SystemConfig.getCatlogListLimit() + \",\" + SystemConfig.getCatlogMoreLimit());\n\n        return infos;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/task/Task.java",
    "content": "package org.linlinjava.litemall.core.task;\n\nimport com.google.common.primitives.Ints;\n\nimport java.time.LocalDateTime;\nimport java.util.concurrent.Delayed;\nimport java.util.concurrent.TimeUnit;\n\npublic abstract class Task implements Delayed, Runnable{\n    private String id = \"\";\n    private long start = 0;\n\n    public Task(String id, long delayInMilliseconds){\n        this.id = id;\n        this.start = System.currentTimeMillis() + delayInMilliseconds;\n    }\n\n    public String getId() {\n        return id;\n    }\n\n    @Override\n    public long getDelay(TimeUnit unit) {\n        long diff = this.start - System.currentTimeMillis();\n        return unit.convert(diff, TimeUnit.MILLISECONDS);\n    }\n\n    @Override\n    public int compareTo(Delayed o) {\n        return Ints.saturatedCast(this.start - ((Task) o).start);\n    }\n\n    @Override\n    public boolean equals(Object o) {\n        if (this == o) return true;\n        if (o == null) return false;\n        if (!(o instanceof Task)) {\n            return false;\n        }\n        Task t = (Task)o;\n        return this.id.equals(t.getId());\n    }\n\n    @Override\n    public int hashCode() {\n        return this.id.hashCode();\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/task/TaskService.java",
    "content": "package org.linlinjava.litemall.core.task;\n\nimport org.springframework.stereotype.Component;\nimport javax.annotation.PostConstruct;\nimport java.util.concurrent.DelayQueue;\nimport java.util.concurrent.Executors;\n\n@Component\npublic class TaskService {\n    private TaskService taskService;\n    private DelayQueue<Task> delayQueue =  new DelayQueue<Task>();\n\n    @PostConstruct\n    private void init() {\n        taskService = this;\n\n        Executors.newSingleThreadExecutor().execute(new Runnable() {\n            @Override\n            public void run() {\n                while (true) {\n                    try {\n                        Task task = delayQueue.take();\n                        task.run();\n                    } catch (Exception e) {\n                        e.printStackTrace();\n                    }\n                }\n            }\n        });\n    }\n\n    public void addTask(Task task){\n        if(delayQueue.contains(task)){\n            return;\n        }\n        delayQueue.add(task);\n    }\n\n    public void removeTask(Task task){\n        delayQueue.remove(task);\n    }\n\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/BeanUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport org.springframework.beans.BeansException;\nimport org.springframework.context.ApplicationContext;\nimport org.springframework.context.ApplicationContextAware;\nimport org.springframework.stereotype.Component;\n\n@Component\npublic class BeanUtil implements ApplicationContextAware {\n    protected static ApplicationContext context;\n\n    @Override\n    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {\n        context = applicationContext;\n    }\n\n    public static Object getBean(String name) {\n        return context.getBean(name);\n    }\n\n    public static <T> T getBean(Class<T> c){\n        return context.getBean(c);\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/CharUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport java.util.Random;\n\npublic class CharUtil {\n\n    public static String getRandomString(Integer num) {\n        String base = \"abcdefghijklmnopqrstuvwxyz0123456789\";\n        Random random = new Random();\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < num; i++) {\n            int number = random.nextInt(base.length());\n            sb.append(base.charAt(number));\n        }\n        return sb.toString();\n    }\n\n    public static String getRandomNum(Integer num) {\n        String base = \"0123456789\";\n        Random random = new Random();\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < num; i++) {\n            int number = random.nextInt(base.length());\n            sb.append(base.charAt(number));\n        }\n        return sb.toString();\n    }\n\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/DateTimeUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\n\n/**\n * 日期格式化工具类\n */\npublic class DateTimeUtil {\n\n    /**\n     * 格式 yyyy年MM月dd日 HH:mm:ss\n     *\n     * @param dateTime\n     * @return\n     */\n    public static String getDateTimeDisplayString(LocalDateTime dateTime) {\n        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern(\"yyyy年MM月dd日 HH:mm:ss\");\n        String strDate2 = dtf2.format(dateTime);\n\n        return strDate2;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/HttpUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport java.io.BufferedReader;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.io.OutputStreamWriter;\nimport java.net.HttpURLConnection;\nimport java.net.URL;\nimport java.util.Map;\n\n/**\n * 向指定 URL 发送POST方法的请求\n *\n * @return 远程资源的响应结果\n */\npublic class HttpUtil {\n\n    private static final Log logger = LogFactory.getLog(HttpUtil.class);\n\n    /**\n     * 向指定 URL 发送POST方法的请求\n     *\n     * @param url    发送请求的 URL\n     * @param params 请求的参数集合\n     * @return 远程资源的响应结果\n     */\n    @SuppressWarnings(\"unused\")\n    public static String sendPost(String url, Map<String, String> params) {\n        OutputStreamWriter out = null;\n        BufferedReader in = null;\n        StringBuilder result = new StringBuilder();\n        try {\n            URL realUrl = new URL(url);\n            HttpURLConnection conn = (HttpURLConnection) realUrl.openConnection();\n            // 发送POST请求必须设置如下两行\n            conn.setDoOutput(true);\n            conn.setDoInput(true);\n            // POST方法\n            conn.setRequestMethod(\"POST\");\n            // 设置通用的请求属性\n            conn.setRequestProperty(\"accept\", \"*/*\");\n            conn.setRequestProperty(\"connection\", \"Keep-Alive\");\n            conn.setRequestProperty(\"user-agent\",\n                    \"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1;SV1)\");\n            conn.setRequestProperty(\"Content-Type\", \"application/x-www-form-urlencoded\");\n            conn.connect();\n            // 获取URLConnection对象对应的输出流\n            out = new OutputStreamWriter(conn.getOutputStream(), \"UTF-8\");\n            // 发送请求参数\n            if (params != null) {\n                StringBuilder param = new StringBuilder();\n                for (Map.Entry<String, String> entry : params.entrySet()) {\n                    if (param.length() > 0) {\n                        param.append(\"&\");\n                    }\n                    param.append(entry.getKey());\n                    param.append(\"=\");\n                    param.append(entry.getValue());\n\n                }\n\n                out.write(param.toString());\n            }\n            // flush输出流的缓冲\n            out.flush();\n            // 定义BufferedReader输入流来读取URL的响应\n            in = new BufferedReader(\n                    new InputStreamReader(conn.getInputStream(), \"UTF-8\"));\n            String line;\n            while ((line = in.readLine()) != null) {\n                result.append(line);\n            }\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n        //使用finally块来关闭输出流、输入流\n        finally {\n            try {\n                if (out != null) {\n                    out.close();\n                }\n                if (in != null) {\n                    in.close();\n                }\n            } catch (IOException ex) {\n                logger.error(ex.getMessage(), ex);\n            }\n        }\n        return result.toString();\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/IpUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.net.InetAddress;\nimport java.net.UnknownHostException;\n\n/**\n * IP地址相关工具类\n */\npublic class IpUtil {\n\n    private static final Log logger = LogFactory.getLog(IpUtil.class);\n\n    public static String getIpAddr(HttpServletRequest request) {\n        String ipAddress;\n        try {\n            ipAddress = request.getHeader(\"x-forwarded-for\");\n            if (ipAddress == null || ipAddress.length() == 0 || \"unknown\".equalsIgnoreCase(ipAddress)) {\n                ipAddress = request.getHeader(\"Proxy-Client-IP\");\n            }\n            if (ipAddress == null || ipAddress.length() == 0 || \"unknown\".equalsIgnoreCase(ipAddress)) {\n                ipAddress = request.getHeader(\"WL-Proxy-Client-IP\");\n            }\n            if (ipAddress == null || ipAddress.length() == 0 || \"unknown\".equalsIgnoreCase(ipAddress)) {\n                ipAddress = request.getRemoteAddr();\n                if (ipAddress.equals(\"127.0.0.1\")) {\n                    // 根据网卡取本机配置的IP\n                    InetAddress inet = null;\n                    try {\n                        inet = InetAddress.getLocalHost();\n                    } catch (UnknownHostException e) {\n                        logger.error(e.getMessage(), e);\n                    }\n                    ipAddress = inet.getHostAddress();\n                }\n            }\n            // 对于通过多个代理的情况，第一个IP为客户端真实IP,多个IP按照','分割\n            if (ipAddress != null && ipAddress.length() > 15) { // \"***.***.***.***\".length()\n                // = 15\n                if (ipAddress.indexOf(\",\") > 0) {\n                    ipAddress = ipAddress.substring(0, ipAddress.indexOf(\",\"));\n                }\n            }\n        } catch (Exception e) {\n            ipAddress = \"\";\n        }\n\n        return ipAddress;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/JacksonUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.core.type.TypeReference;\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport java.io.IOException;\nimport java.util.List;\nimport java.util.Map;\n\npublic class JacksonUtil {\n\n    private static final Log logger = LogFactory.getLog(JacksonUtil.class);\n\n    public static String parseString(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n            if (leaf != null)\n                return leaf.asText();\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n\n    public static List<String> parseStringList(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n\n            if (leaf != null)\n                return mapper.convertValue(leaf, new TypeReference<List<String>>() {\n                });\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static Integer parseInteger(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n            if (leaf != null)\n                return leaf.asInt();\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static List<Integer> parseIntegerList(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n\n            if (leaf != null)\n                return mapper.convertValue(leaf, new TypeReference<List<Integer>>() {\n                });\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n\n    public static Boolean parseBoolean(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n            if (leaf != null)\n                return leaf.asBoolean();\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static Short parseShort(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n            if (leaf != null) {\n                Integer value = leaf.asInt();\n                return value.shortValue();\n            }\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static Byte parseByte(String body, String field) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            JsonNode leaf = node.get(field);\n            if (leaf != null) {\n                Integer value = leaf.asInt();\n                return value.byteValue();\n            }\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static <T> T parseObject(String body, String field, Class<T> clazz) {\n        ObjectMapper mapper = new ObjectMapper();\n        JsonNode node;\n        try {\n            node = mapper.readTree(body);\n            node = node.get(field);\n            return mapper.treeToValue(node, clazz);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static Object toNode(String json) {\n        if (json == null) {\n            return null;\n        }\n        ObjectMapper mapper = new ObjectMapper();\n        try {\n\n            return mapper.readTree(json);\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n\n        return null;\n    }\n\n    public static Map<String, String> toMap(String data) {\n        ObjectMapper objectMapper = new ObjectMapper();\n        try {\n            return objectMapper.readValue(data, new TypeReference<Map<String, String>>() {\n            });\n        } catch (IOException e) {\n            logger.error(e.getMessage(), e);\n        }\n        return null;\n    }\n\n    public static String toJson(Object data) {\n        ObjectMapper objectMapper = new ObjectMapper();\n        try {\n            return objectMapper.writeValueAsString(data);\n        } catch (JsonProcessingException e) {\n            e.printStackTrace();\n        }\n        return null;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/RegexUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport java.util.ArrayList;\nimport java.util.Collections;\nimport java.util.List;\nimport java.util.regex.Matcher;\nimport java.util.regex.Pattern;\n\n/**\n * RegexUtil类的代码是来自[AndroidUtilCode](https://github.com/Blankj/AndroidUtilCode)的RegexUtils类和RegexConstants类\n * https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/util/RegexUtils.java\n * https://github.com/Blankj/AndroidUtilCode/blob/master/utilcode/src/main/java/com/blankj/utilcode/constant\n * /RegexConstants.java\n */\npublic class RegexUtil {\n\n    /**\n     * Regex of simple mobile.\n     */\n    public static final String REGEX_MOBILE_SIMPLE = \"^[1]\\\\d{10}$\";\n    /**\n     * Regex of exact mobile.\n     * <p>china mobile: 134(0-8), 135, 136, 137, 138, 139, 147, 150, 151, 152, 157, 158, 159, 178, 182, 183, 184,\n     * 187, 188, 198</p>\n     * <p>china unicom: 130, 131, 132, 145, 155, 156, 166, 171, 175, 176, 185, 186</p>\n     * <p>china telecom: 133, 153, 173, 177, 180, 181, 189, 199</p>\n     * <p>global star: 1349</p>\n     * <p>virtual operator: 170</p>\n     */\n    public static final String REGEX_MOBILE_EXACT = \"^((13[0-9])|(14[5,7])|(15[0-3,5-9])|(16[6])|(17[0,1,3,5-8])|\" +\n            \"(18[0-9])|(19[8,9]))\\\\d{8}$\";\n    /**\n     * Regex of telephone number.\n     */\n    public static final String REGEX_TEL = \"^0\\\\d{2,3}[- ]?\\\\d{7,8}\";\n    /**\n     * Regex of id card number which length is 15.\n     */\n    public static final String REGEX_ID_CARD15 = \"^[1-9]\\\\d{7}((0\\\\d)|(1[0-2]))(([0|1|2]\\\\d)|3[0-1])\\\\d{3}$\";\n    /**\n     * Regex of id card number which length is 18.\n     */\n    public static final String REGEX_ID_CARD18 = \"^[1-9]\\\\d{5}[1-9]\\\\d{3}((0\\\\d)|(1[0-2]))(([0|1|2]\\\\d)|3[0-1])\\\\d{3}\" +\n            \"([0-9Xx])$\";\n    /**\n     * Regex of email.\n     */\n    public static final String REGEX_EMAIL = \"^\\\\w+([-+.]\\\\w+)*@\\\\w+([-.]\\\\w+)*\\\\.\\\\w+([-.]\\\\w+)*$\";\n    /**\n     * Regex of url.\n     */\n    public static final String REGEX_URL = \"[a-zA-z]+://[^\\\\s]*\";\n    /**\n     * Regex of Chinese character.\n     */\n    public static final String REGEX_ZH = \"^[\\\\u4e00-\\\\u9fa5]+$\";\n    /**\n     * Regex of username.\n     * <p>scope for \"a-z\", \"A-Z\", \"0-9\", \"_\", \"Chinese character\"</p>\n     * <p>can't end with \"_\"</p>\n     * <p>length is between 6 to 20</p>\n     */\n    public static final String REGEX_USERNAME = \"^[\\\\w\\\\u4e00-\\\\u9fa5]{6,20}(?<!_)$\";\n    /**\n     * Regex of date which pattern is \"yyyy-MM-dd\".\n     */\n    public static final String REGEX_DATE = \"^(?:(?!0000)[0-9]{4}-(?:(?:0[1-9]|1[0-2])-(?:0[1-9]|1[0-9]|2[0-8])|\" +\n            \"(?:0[13-9]|1[0-2])-(?:29|30)|(?:0[13578]|1[02])-31)|(?:[0-9]{2}(?:0[48]|[2468][048]|[13579][26])|\" +\n            \"(?:0[48]|[2468][048]|[13579][26])00)-02-29)$\";\n    /**\n     * Regex of ip address.\n     */\n    public static final String REGEX_IP = \"((2[0-4]\\\\d|25[0-5]|[01]?\\\\d\\\\d?)\\\\.){3}(2[0-4]\\\\d|25[0-5]|[01]?\\\\d\\\\d?)\";\n\n    ///////////////////////////////////////////////////////////////////////////\n    // The following come from http://tool.oschina.net/regex\n    ///////////////////////////////////////////////////////////////////////////\n\n    /**\n     * Regex of double-byte characters.\n     */\n    public static final String REGEX_DOUBLE_BYTE_CHAR = \"[^\\\\x00-\\\\xff]\";\n    /**\n     * Regex of blank line.\n     */\n    public static final String REGEX_BLANK_LINE = \"\\\\n\\\\s*\\\\r\";\n    /**\n     * Regex of QQ number.\n     */\n    public static final String REGEX_QQ_NUM = \"[1-9][0-9]{4,}\";\n    /**\n     * Regex of postal code in China.\n     */\n    public static final String REGEX_CHINA_POSTAL_CODE = \"[1-9]\\\\d{5}(?!\\\\d)\";\n    /**\n     * Regex of positive integer.\n     */\n    public static final String REGEX_POSITIVE_INTEGER = \"^[1-9]\\\\d*$\";\n    /**\n     * Regex of negative integer.\n     */\n    public static final String REGEX_NEGATIVE_INTEGER = \"^-[1-9]\\\\d*$\";\n    /**\n     * Regex of integer.\n     */\n    public static final String REGEX_INTEGER = \"^-?[1-9]\\\\d*$\";\n    /**\n     * Regex of non-negative integer.\n     */\n    public static final String REGEX_NOT_NEGATIVE_INTEGER = \"^[1-9]\\\\d*|0$\";\n    /**\n     * Regex of non-positive integer.\n     */\n    public static final String REGEX_NOT_POSITIVE_INTEGER = \"^-[1-9]\\\\d*|0$\";\n    /**\n     * Regex of positive float.\n     */\n    public static final String REGEX_POSITIVE_FLOAT = \"^[1-9]\\\\d*\\\\.\\\\d*|0\\\\.\\\\d*[1-9]\\\\d*$\";\n    /**\n     * Regex of negative float.\n     */\n    public static final String REGEX_NEGATIVE_FLOAT = \"^-[1-9]\\\\d*\\\\.\\\\d*|-0\\\\.\\\\d*[1-9]\\\\d*$\";\n\n    private RegexUtil() {\n        throw new UnsupportedOperationException(\"u can't instantiate me...\");\n    }\n\n    ///////////////////////////////////////////////////////////////////////////\n    // If u want more please visit http://toutiao.com/i6231678548520731137\n    ///////////////////////////////////////////////////////////////////////////\n\n    /**\n     * Return whether input matches regex of simple mobile.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isMobileSimple(final CharSequence input) {\n        return isMatch(REGEX_MOBILE_SIMPLE, input);\n    }\n\n    /**\n     * Return whether input matches regex of exact mobile.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isMobileExact(final CharSequence input) {\n        return isMatch(REGEX_MOBILE_EXACT, input);\n    }\n\n    /**\n     * Return whether input matches regex of telephone number.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isTel(final CharSequence input) {\n        return isMatch(REGEX_TEL, input);\n    }\n\n    /**\n     * Return whether input matches regex of id card number which length is 15.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isIDCard15(final CharSequence input) {\n        return isMatch(REGEX_ID_CARD15, input);\n    }\n\n    /**\n     * Return whether input matches regex of id card number which length is 18.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isIDCard18(final CharSequence input) {\n        return isMatch(REGEX_ID_CARD18, input);\n    }\n\n    /**\n     * Return whether input matches regex of email.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isEmail(final CharSequence input) {\n        return isMatch(REGEX_EMAIL, input);\n    }\n\n    /**\n     * Return whether input matches regex of url.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isURL(final CharSequence input) {\n        return isMatch(REGEX_URL, input);\n    }\n\n    /**\n     * Return whether input matches regex of Chinese character.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isZh(final CharSequence input) {\n        return isMatch(REGEX_ZH, input);\n    }\n\n    /**\n     * Return whether input matches regex of username.\n     * <p>scope for \"a-z\", \"A-Z\", \"0-9\", \"_\", \"Chinese character\"</p>\n     * <p>can't end with \"_\"</p>\n     * <p>length is between 6 to 20</p>.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isUsername(final CharSequence input) {\n        return isMatch(REGEX_USERNAME, input);\n    }\n\n    /**\n     * Return whether input matches regex of date which pattern is \"yyyy-MM-dd\".\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isDate(final CharSequence input) {\n        return isMatch(REGEX_DATE, input);\n    }\n\n    /**\n     * Return whether input matches regex of ip address.\n     *\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isIP(final CharSequence input) {\n        return isMatch(REGEX_IP, input);\n    }\n\n    /**\n     * Return whether input matches the regex.\n     *\n     * @param regex The regex.\n     * @param input The input.\n     * @return {@code true}: yes<br>{@code false}: no\n     */\n    public static boolean isMatch(final String regex, final CharSequence input) {\n        return input != null && input.length() > 0 && Pattern.matches(regex, input);\n    }\n\n    /**\n     * Return the list of input matches the regex.\n     *\n     * @param regex The regex.\n     * @param input The input.\n     * @return the list of input matches the regex\n     */\n    public static List<String> getMatches(final String regex, final CharSequence input) {\n        if (input == null)\n            return Collections.emptyList();\n        List<String> matches = new ArrayList<>();\n        Pattern pattern = Pattern.compile(regex);\n        Matcher matcher = pattern.matcher(input);\n        while (matcher.find()) {\n            matches.add(matcher.group());\n        }\n        return matches;\n    }\n\n    /**\n     * Splits input around matches of the regex.\n     *\n     * @param input The input.\n     * @param regex The regex.\n     * @return the array of strings computed by splitting input around matches of regex\n     */\n    public static String[] getSplits(final String input, final String regex) {\n        if (input == null)\n            return new String[0];\n        return input.split(regex);\n    }\n\n    /**\n     * Replace the first subsequence of the input sequence that matches the\n     * regex with the given replacement string.\n     *\n     * @param input       The input.\n     * @param regex       The regex.\n     * @param replacement The replacement string.\n     * @return the string constructed by replacing the first matching\n     * subsequence by the replacement string, substituting captured\n     * subsequences as needed\n     */\n    public static String getReplaceFirst(final String input,\n                                         final String regex,\n                                         final String replacement) {\n        if (input == null)\n            return \"\";\n        return Pattern.compile(regex).matcher(input).replaceFirst(replacement);\n    }\n\n    /**\n     * Replace every subsequence of the input sequence that matches the\n     * pattern with the given replacement string.\n     *\n     * @param input       The input.\n     * @param regex       The regex.\n     * @param replacement The replacement string.\n     * @return the string constructed by replacing each matching subsequence\n     * by the replacement string, substituting captured subsequences\n     * as needed\n     */\n    public static String getReplaceAll(final String input,\n                                       final String regex,\n                                       final String replacement) {\n        if (input == null)\n            return \"\";\n        return Pattern.compile(regex).matcher(input).replaceAll(replacement);\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/ResponseUtil.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport com.github.pagehelper.Page;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 响应操作结果\n * <pre>\n *  {\n *      errno： 错误码，\n *      errmsg：错误消息，\n *      data：  响应数据\n *  }\n * </pre>\n *\n * <p>\n * 错误码：\n * <ul>\n * <li> 0，成功；\n * <li> 4xx，前端错误，说明前端开发者需要重新了解后端接口使用规范：\n * <ul>\n * <li> 401，参数错误，即前端没有传递后端需要的参数；\n * <li> 402，参数值错误，即前端传递的参数值不符合后端接收范围。\n * </ul>\n * <li> 5xx，后端错误，除501外，说明后端开发者应该继续优化代码，尽量避免返回后端错误码：\n * <ul>\n * <li> 501，验证失败，即后端要求用户登录；\n * <li> 502，系统内部错误，即没有合适命名的后端内部错误；\n * <li> 503，业务不支持，即后端虽然定义了接口，但是还没有实现功能；\n * <li> 504，更新数据失效，即后端采用了乐观锁更新，而并发更新时存在数据更新失效；\n * <li> 505，更新数据失败，即后端数据库更新失败（正常情况应该更新成功）。\n * </ul>\n * <li> 6xx，小商城后端业务错误码，\n * 具体见litemall-admin-api模块的AdminResponseCode。\n * <li> 7xx，管理后台后端业务错误码，\n * 具体见litemall-wx-api模块的WxResponseCode。\n * </ul>\n */\npublic class ResponseUtil {\n    public static Object ok() {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        obj.put(\"errno\", 0);\n        obj.put(\"errmsg\", \"成功\");\n        return obj;\n    }\n\n    public static Object ok(Object data) {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        obj.put(\"errno\", 0);\n        obj.put(\"errmsg\", \"成功\");\n        obj.put(\"data\", data);\n        return obj;\n    }\n\n    public static Object okList(List list) {\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"list\", list);\n\n        if (list instanceof Page) {\n            Page page = (Page) list;\n            data.put(\"total\", page.getTotal());\n            data.put(\"page\", page.getPageNum());\n            data.put(\"limit\", page.getPageSize());\n            data.put(\"pages\", page.getPages());\n        } else {\n            data.put(\"total\", list.size());\n            data.put(\"page\", 1);\n            data.put(\"limit\", list.size());\n            data.put(\"pages\", 1);\n        }\n\n        return ok(data);\n    }\n\n    public static Object okList(List list, List pagedList) {\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"list\", list);\n\n        if (pagedList instanceof Page) {\n            Page page = (Page) pagedList;\n            data.put(\"total\", page.getTotal());\n            data.put(\"page\", page.getPageNum());\n            data.put(\"limit\", page.getPageSize());\n            data.put(\"pages\", page.getPages());\n        } else {\n            data.put(\"total\", pagedList.size());\n            data.put(\"page\", 1);\n            data.put(\"limit\", pagedList.size());\n            data.put(\"pages\", 1);\n        }\n\n        return ok(data);\n    }\n\n    public static Object fail() {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        obj.put(\"errno\", -1);\n        obj.put(\"errmsg\", \"错误\");\n        return obj;\n    }\n\n    public static Object fail(int errno, String errmsg) {\n        Map<String, Object> obj = new HashMap<String, Object>();\n        obj.put(\"errno\", errno);\n        obj.put(\"errmsg\", errmsg);\n        return obj;\n    }\n\n    public static Object fail(int errno, String errmsg, String data) {\n        Map<String, Object> obj = new HashMap<String, Object>(3);\n        obj.put(\"errno\", errno);\n        obj.put(\"errmsg\", errmsg);\n        obj.put(\"data\", data);\n        return obj;\n    }\n\n    public static Object badArgument() {\n        return fail(401, \"参数不对\");\n    }\n\n    public static Object badArgumentValue() {\n        return fail(402, \"参数值不对\");\n    }\n\n    public static Object unlogin() {\n        return fail(501, \"请登录\");\n    }\n\n    public static Object serious() {\n        return fail(502, \"系统内部错误\");\n    }\n\n    public static Object unsupport() {\n        return fail(503, \"业务不支持\");\n    }\n\n    public static Object updatedDateExpired() {\n        return fail(504, \"更新数据已经失效\");\n    }\n\n    public static Object updatedDataFailed() {\n        return fail(505, \"更新数据失败\");\n    }\n\n    public static Object unauthz() {\n        return fail(506, \"无操作权限\");\n    }\n}\n\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/SystemInfoPrinter.java",
    "content": "package org.linlinjava.litemall.core.util;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport java.util.Map;\n\npublic class SystemInfoPrinter {\n\n    private static final Log logger = LogFactory.getLog(SystemInfoPrinter.class);\n    public static final String CREATE_PART_COPPER = \"XOXOXOXOX\";\n\n    private static int maxSize = 0;\n\n    public static void printInfo(String title, Map<String, String> infos) {\n        setMaxSize(infos);\n\n        printHeader(title);\n\n        for (Map.Entry<String, String> entry : infos.entrySet()) {\n            printLine(entry.getKey(), entry.getValue());\n        }\n\n        printEnd();\n    }\n\n    private static void setMaxSize(Map<String, String> infos) {\n        for (Map.Entry<String, String> entry : infos.entrySet()) {\n            if (entry.getValue() == null)\n                continue;\n\n            int size = entry.getKey().length() + entry.getValue().length();\n\n            if (size > maxSize)\n                maxSize = size;\n        }\n\n        maxSize = maxSize + 30;\n    }\n\n    private static void printHeader(String title) {\n        logger.info(getLineCopper());\n        logger.info(\"\");\n        logger.info(\"              \" + title);\n        logger.info(\"\");\n    }\n\n    private static void printEnd() {\n        logger.info(\"  \");\n        logger.info(getLineCopper());\n    }\n\n    private static String getLineCopper() {\n        StringBuilder sb = new StringBuilder();\n        for (int i = 0; i < maxSize; i++) {\n            sb.append(\"=\");\n        }\n\n        return sb.toString();\n    }\n\n    private static void printLine(String head, String line) {\n        if (line == null)\n            return;\n\n        if (head.startsWith(CREATE_PART_COPPER)) {\n            logger.info(\"\");\n            logger.info(\"    [[  \" + line + \"  ]]\");\n            logger.info(\"\");\n        } else {\n            logger.info(\"    \" + head + \"        ->        \" + line);\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/bcrypt/BCrypt.java",
    "content": "package org.linlinjava.litemall.core.util.bcrypt;\n// Copyright (c) 2006 Damien Miller <djm@mindrot.org>\n//\n// Permission to use, copy, modify, and distribute this software for any\n// purpose with or without fee is hereby granted, provided that the above\n// copyright notice and this permission notice appear in all copies.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\n// WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\n// MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\n// ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\n// WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\n// ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\n// OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\n\nimport java.io.ByteArrayOutputStream;\nimport java.io.UnsupportedEncodingException;\nimport java.security.SecureRandom;\n\n/**\n * BCrypt implements OpenBSD-style Blowfish password hashing using the scheme described in\n * \"A Future-Adaptable Password Scheme\" by Niels Provos and David Mazieres.\n * <p>\n * This password hashing system tries to thwart off-line password cracking using a\n * computationally-intensive hashing algorithm, based on Bruce Schneier's Blowfish cipher.\n * The work factor of the algorithm is parameterised, so it can be increased as computers\n * get faster.\n * <p>\n * Usage is really simple. To hash a password for the first time, call the hashpw method\n * with a random salt, like this:\n * <p>\n * <code>\n * String pw_hash = BCrypt.hashpw(plain_password, BCrypt.gensalt()); <br>\n * </code>\n * <p>\n * To check whether a plaintext password matches one that has been hashed previously, use\n * the checkpw method:\n * <p>\n * <code>\n * if (BCrypt.checkpw(candidate_password, stored_hash))<br>\n * &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"It matches\");<br>\n * else<br>\n * &nbsp;&nbsp;&nbsp;&nbsp;System.out.println(\"It does not match\");<br>\n * </code>\n * <p>\n * The gensalt() method takes an optional parameter (log_rounds) that determines the\n * computational complexity of the hashing:\n * <p>\n * <code>\n * String strong_salt = BCrypt.gensalt(10)<br>\n * String stronger_salt = BCrypt.gensalt(12)<br>\n * </code>\n * <p>\n * The amount of work increases exponentially (2**log_rounds), so each increment is twice\n * as much work. The default log_rounds is 10, and the valid range is 4 to 31.\n *\n * @author Damien Miller\n */\npublic class BCrypt {\n    // BCrypt parameters\n\n    static final int MIN_LOG_ROUNDS = 4;\n    static final int MAX_LOG_ROUNDS = 31;\n    private static final int GENSALT_DEFAULT_LOG2_ROUNDS = 10;\n    private static final int BCRYPT_SALT_LEN = 16;\n    // Blowfish parameters\n    private static final int BLOWFISH_NUM_ROUNDS = 16;\n    // Initial contents of key schedule\n    private static final int P_orig[] = {0x243f6a88, 0x85a308d3, 0x13198a2e, 0x03707344,\n            0xa4093822, 0x299f31d0, 0x082efa98, 0xec4e6c89, 0x452821e6, 0x38d01377,\n            0xbe5466cf, 0x34e90c6c, 0xc0ac29b7, 0xc97c50dd, 0x3f84d5b5, 0xb5470917,\n            0x9216d5d9, 0x8979fb1b};\n    private static final int S_orig[] = {0xd1310ba6, 0x98dfb5ac, 0x2ffd72db, 0xd01adfb7,\n            0xb8e1afed, 0x6a267e96, 0xba7c9045, 0xf12c7f99, 0x24a19947, 0xb3916cf7,\n            0x0801f2e2, 0x858efc16, 0x636920d8, 0x71574e69, 0xa458fea3, 0xf4933d7e,\n            0x0d95748f, 0x728eb658, 0x718bcd58, 0x82154aee, 0x7b54a41d, 0xc25a59b5,\n            0x9c30d539, 0x2af26013, 0xc5d1b023, 0x286085f0, 0xca417918, 0xb8db38ef,\n            0x8e79dcb0, 0x603a180e, 0x6c9e0e8b, 0xb01e8a3e, 0xd71577c1, 0xbd314b27,\n            0x78af2fda, 0x55605c60, 0xe65525f3, 0xaa55ab94, 0x57489862, 0x63e81440,\n            0x55ca396a, 0x2aab10b6, 0xb4cc5c34, 0x1141e8ce, 0xa15486af, 0x7c72e993,\n            0xb3ee1411, 0x636fbc2a, 0x2ba9c55d, 0x741831f6, 0xce5c3e16, 0x9b87931e,\n            0xafd6ba33, 0x6c24cf5c, 0x7a325381, 0x28958677, 0x3b8f4898, 0x6b4bb9af,\n            0xc4bfe81b, 0x66282193, 0x61d809cc, 0xfb21a991, 0x487cac60, 0x5dec8032,\n            0xef845d5d, 0xe98575b1, 0xdc262302, 0xeb651b88, 0x23893e81, 0xd396acc5,\n            0x0f6d6ff3, 0x83f44239, 0x2e0b4482, 0xa4842004, 0x69c8f04a, 0x9e1f9b5e,\n            0x21c66842, 0xf6e96c9a, 0x670c9c61, 0xabd388f0, 0x6a51a0d2, 0xd8542f68,\n            0x960fa728, 0xab5133a3, 0x6eef0b6c, 0x137a3be4, 0xba3bf050, 0x7efb2a98,\n            0xa1f1651d, 0x39af0176, 0x66ca593e, 0x82430e88, 0x8cee8619, 0x456f9fb4,\n            0x7d84a5c3, 0x3b8b5ebe, 0xe06f75d8, 0x85c12073, 0x401a449f, 0x56c16aa6,\n            0x4ed3aa62, 0x363f7706, 0x1bfedf72, 0x429b023d, 0x37d0d724, 0xd00a1248,\n            0xdb0fead3, 0x49f1c09b, 0x075372c9, 0x80991b7b, 0x25d479d8, 0xf6e8def7,\n            0xe3fe501a, 0xb6794c3b, 0x976ce0bd, 0x04c006ba, 0xc1a94fb6, 0x409f60c4,\n            0x5e5c9ec2, 0x196a2463, 0x68fb6faf, 0x3e6c53b5, 0x1339b2eb, 0x3b52ec6f,\n            0x6dfc511f, 0x9b30952c, 0xcc814544, 0xaf5ebd09, 0xbee3d004, 0xde334afd,\n            0x660f2807, 0x192e4bb3, 0xc0cba857, 0x45c8740f, 0xd20b5f39, 0xb9d3fbdb,\n            0x5579c0bd, 0x1a60320a, 0xd6a100c6, 0x402c7279, 0x679f25fe, 0xfb1fa3cc,\n            0x8ea5e9f8, 0xdb3222f8, 0x3c7516df, 0xfd616b15, 0x2f501ec8, 0xad0552ab,\n            0x323db5fa, 0xfd238760, 0x53317b48, 0x3e00df82, 0x9e5c57bb, 0xca6f8ca0,\n            0x1a87562e, 0xdf1769db, 0xd542a8f6, 0x287effc3, 0xac6732c6, 0x8c4f5573,\n            0x695b27b0, 0xbbca58c8, 0xe1ffa35d, 0xb8f011a0, 0x10fa3d98, 0xfd2183b8,\n            0x4afcb56c, 0x2dd1d35b, 0x9a53e479, 0xb6f84565, 0xd28e49bc, 0x4bfb9790,\n            0xe1ddf2da, 0xa4cb7e33, 0x62fb1341, 0xcee4c6e8, 0xef20cada, 0x36774c01,\n            0xd07e9efe, 0x2bf11fb4, 0x95dbda4d, 0xae909198, 0xeaad8e71, 0x6b93d5a0,\n            0xd08ed1d0, 0xafc725e0, 0x8e3c5b2f, 0x8e7594b7, 0x8ff6e2fb, 0xf2122b64,\n            0x8888b812, 0x900df01c, 0x4fad5ea0, 0x688fc31c, 0xd1cff191, 0xb3a8c1ad,\n            0x2f2f2218, 0xbe0e1777, 0xea752dfe, 0x8b021fa1, 0xe5a0cc0f, 0xb56f74e8,\n            0x18acf3d6, 0xce89e299, 0xb4a84fe0, 0xfd13e0b7, 0x7cc43b81, 0xd2ada8d9,\n            0x165fa266, 0x80957705, 0x93cc7314, 0x211a1477, 0xe6ad2065, 0x77b5fa86,\n            0xc75442f5, 0xfb9d35cf, 0xebcdaf0c, 0x7b3e89a0, 0xd6411bd3, 0xae1e7e49,\n            0x00250e2d, 0x2071b35e, 0x226800bb, 0x57b8e0af, 0x2464369b, 0xf009b91e,\n            0x5563911d, 0x59dfa6aa, 0x78c14389, 0xd95a537f, 0x207d5ba2, 0x02e5b9c5,\n            0x83260376, 0x6295cfa9, 0x11c81968, 0x4e734a41, 0xb3472dca, 0x7b14a94a,\n            0x1b510052, 0x9a532915, 0xd60f573f, 0xbc9bc6e4, 0x2b60a476, 0x81e67400,\n            0x08ba6fb5, 0x571be91f, 0xf296ec6b, 0x2a0dd915, 0xb6636521, 0xe7b9f9b6,\n            0xff34052e, 0xc5855664, 0x53b02d5d, 0xa99f8fa1, 0x08ba4799, 0x6e85076a,\n            0x4b7a70e9, 0xb5b32944, 0xdb75092e, 0xc4192623, 0xad6ea6b0, 0x49a7df7d,\n            0x9cee60b8, 0x8fedb266, 0xecaa8c71, 0x699a17ff, 0x5664526c, 0xc2b19ee1,\n            0x193602a5, 0x75094c29, 0xa0591340, 0xe4183a3e, 0x3f54989a, 0x5b429d65,\n            0x6b8fe4d6, 0x99f73fd6, 0xa1d29c07, 0xefe830f5, 0x4d2d38e6, 0xf0255dc1,\n            0x4cdd2086, 0x8470eb26, 0x6382e9c6, 0x021ecc5e, 0x09686b3f, 0x3ebaefc9,\n            0x3c971814, 0x6b6a70a1, 0x687f3584, 0x52a0e286, 0xb79c5305, 0xaa500737,\n            0x3e07841c, 0x7fdeae5c, 0x8e7d44ec, 0x5716f2b8, 0xb03ada37, 0xf0500c0d,\n            0xf01c1f04, 0x0200b3ff, 0xae0cf51a, 0x3cb574b2, 0x25837a58, 0xdc0921bd,\n            0xd19113f9, 0x7ca92ff6, 0x94324773, 0x22f54701, 0x3ae5e581, 0x37c2dadc,\n            0xc8b57634, 0x9af3dda7, 0xa9446146, 0x0fd0030e, 0xecc8c73e, 0xa4751e41,\n            0xe238cd99, 0x3bea0e2f, 0x3280bba1, 0x183eb331, 0x4e548b38, 0x4f6db908,\n            0x6f420d03, 0xf60a04bf, 0x2cb81290, 0x24977c79, 0x5679b072, 0xbcaf89af,\n            0xde9a771f, 0xd9930810, 0xb38bae12, 0xdccf3f2e, 0x5512721f, 0x2e6b7124,\n            0x501adde6, 0x9f84cd87, 0x7a584718, 0x7408da17, 0xbc9f9abc, 0xe94b7d8c,\n            0xec7aec3a, 0xdb851dfa, 0x63094366, 0xc464c3d2, 0xef1c1847, 0x3215d908,\n            0xdd433b37, 0x24c2ba16, 0x12a14d43, 0x2a65c451, 0x50940002, 0x133ae4dd,\n            0x71dff89e, 0x10314e55, 0x81ac77d6, 0x5f11199b, 0x043556f1, 0xd7a3c76b,\n            0x3c11183b, 0x5924a509, 0xf28fe6ed, 0x97f1fbfa, 0x9ebabf2c, 0x1e153c6e,\n            0x86e34570, 0xeae96fb1, 0x860e5e0a, 0x5a3e2ab3, 0x771fe71c, 0x4e3d06fa,\n            0x2965dcb9, 0x99e71d0f, 0x803e89d6, 0x5266c825, 0x2e4cc978, 0x9c10b36a,\n            0xc6150eba, 0x94e2ea78, 0xa5fc3c53, 0x1e0a2df4, 0xf2f74ea7, 0x361d2b3d,\n            0x1939260f, 0x19c27960, 0x5223a708, 0xf71312b6, 0xebadfe6e, 0xeac31f66,\n            0xe3bc4595, 0xa67bc883, 0xb17f37d1, 0x018cff28, 0xc332ddef, 0xbe6c5aa5,\n            0x65582185, 0x68ab9802, 0xeecea50f, 0xdb2f953b, 0x2aef7dad, 0x5b6e2f84,\n            0x1521b628, 0x29076170, 0xecdd4775, 0x619f1510, 0x13cca830, 0xeb61bd96,\n            0x0334fe1e, 0xaa0363cf, 0xb5735c90, 0x4c70a239, 0xd59e9e0b, 0xcbaade14,\n            0xeecc86bc, 0x60622ca7, 0x9cab5cab, 0xb2f3846e, 0x648b1eaf, 0x19bdf0ca,\n            0xa02369b9, 0x655abb50, 0x40685a32, 0x3c2ab4b3, 0x319ee9d5, 0xc021b8f7,\n            0x9b540b19, 0x875fa099, 0x95f7997e, 0x623d7da8, 0xf837889a, 0x97e32d77,\n            0x11ed935f, 0x16681281, 0x0e358829, 0xc7e61fd6, 0x96dedfa1, 0x7858ba99,\n            0x57f584a5, 0x1b227263, 0x9b83c3ff, 0x1ac24696, 0xcdb30aeb, 0x532e3054,\n            0x8fd948e4, 0x6dbc3128, 0x58ebf2ef, 0x34c6ffea, 0xfe28ed61, 0xee7c3c73,\n            0x5d4a14d9, 0xe864b7e3, 0x42105d14, 0x203e13e0, 0x45eee2b6, 0xa3aaabea,\n            0xdb6c4f15, 0xfacb4fd0, 0xc742f442, 0xef6abbb5, 0x654f3b1d, 0x41cd2105,\n            0xd81e799e, 0x86854dc7, 0xe44b476a, 0x3d816250, 0xcf62a1f2, 0x5b8d2646,\n            0xfc8883a0, 0xc1c7b6a3, 0x7f1524c3, 0x69cb7492, 0x47848a0b, 0x5692b285,\n            0x095bbf00, 0xad19489d, 0x1462b174, 0x23820e00, 0x58428d2a, 0x0c55f5ea,\n            0x1dadf43e, 0x233f7061, 0x3372f092, 0x8d937e41, 0xd65fecf1, 0x6c223bdb,\n            0x7cde3759, 0xcbee7460, 0x4085f2a7, 0xce77326e, 0xa6078084, 0x19f8509e,\n            0xe8efd855, 0x61d99735, 0xa969a7aa, 0xc50c06c2, 0x5a04abfc, 0x800bcadc,\n            0x9e447a2e, 0xc3453484, 0xfdd56705, 0x0e1e9ec9, 0xdb73dbd3, 0x105588cd,\n            0x675fda79, 0xe3674340, 0xc5c43465, 0x713e38d8, 0x3d28f89e, 0xf16dff20,\n            0x153e21e7, 0x8fb03d4a, 0xe6e39f2b, 0xdb83adf7, 0xe93d5a68, 0x948140f7,\n            0xf64c261c, 0x94692934, 0x411520f7, 0x7602d4f7, 0xbcf46b2e, 0xd4a20068,\n            0xd4082471, 0x3320f46a, 0x43b7d4b7, 0x500061af, 0x1e39f62e, 0x97244546,\n            0x14214f74, 0xbf8b8840, 0x4d95fc1d, 0x96b591af, 0x70f4ddd3, 0x66a02f45,\n            0xbfbc09ec, 0x03bd9785, 0x7fac6dd0, 0x31cb8504, 0x96eb27b3, 0x55fd3941,\n            0xda2547e6, 0xabca0a9a, 0x28507825, 0x530429f4, 0x0a2c86da, 0xe9b66dfb,\n            0x68dc1462, 0xd7486900, 0x680ec0a4, 0x27a18dee, 0x4f3ffea2, 0xe887ad8c,\n            0xb58ce006, 0x7af4d6b6, 0xaace1e7c, 0xd3375fec, 0xce78a399, 0x406b2a42,\n            0x20fe9e35, 0xd9f385b9, 0xee39d7ab, 0x3b124e8b, 0x1dc9faf7, 0x4b6d1856,\n            0x26a36631, 0xeae397b2, 0x3a6efa74, 0xdd5b4332, 0x6841e7f7, 0xca7820fb,\n            0xfb0af54e, 0xd8feb397, 0x454056ac, 0xba489527, 0x55533a3a, 0x20838d87,\n            0xfe6ba9b7, 0xd096954b, 0x55a867bc, 0xa1159a58, 0xcca92963, 0x99e1db33,\n            0xa62a4a56, 0x3f3125f9, 0x5ef47e1c, 0x9029317c, 0xfdf8e802, 0x04272f70,\n            0x80bb155c, 0x05282ce3, 0x95c11548, 0xe4c66d22, 0x48c1133f, 0xc70f86dc,\n            0x07f9c9ee, 0x41041f0f, 0x404779a4, 0x5d886e17, 0x325f51eb, 0xd59bc0d1,\n            0xf2bcc18f, 0x41113564, 0x257b7834, 0x602a9c60, 0xdff8e8a3, 0x1f636c1b,\n            0x0e12b4c2, 0x02e1329e, 0xaf664fd1, 0xcad18115, 0x6b2395e0, 0x333e92e1,\n            0x3b240b62, 0xeebeb922, 0x85b2a20e, 0xe6ba0d99, 0xde720c8c, 0x2da2f728,\n            0xd0127845, 0x95b794fd, 0x647d0862, 0xe7ccf5f0, 0x5449a36f, 0x877d48fa,\n            0xc39dfd27, 0xf33e8d1e, 0x0a476341, 0x992eff74, 0x3a6f6eab, 0xf4f8fd37,\n            0xa812dc60, 0xa1ebddf8, 0x991be14c, 0xdb6e6b0d, 0xc67b5510, 0x6d672c37,\n            0x2765d43b, 0xdcd0e804, 0xf1290dc7, 0xcc00ffa3, 0xb5390f92, 0x690fed0b,\n            0x667b9ffb, 0xcedb7d9c, 0xa091cf0b, 0xd9155ea3, 0xbb132f88, 0x515bad24,\n            0x7b9479bf, 0x763bd6eb, 0x37392eb3, 0xcc115979, 0x8026e297, 0xf42e312d,\n            0x6842ada7, 0xc66a2b3b, 0x12754ccc, 0x782ef11c, 0x6a124237, 0xb79251e7,\n            0x06a1bbe6, 0x4bfb6350, 0x1a6b1018, 0x11caedfa, 0x3d25bdd8, 0xe2e1c3c9,\n            0x44421659, 0x0a121386, 0xd90cec6e, 0xd5abea2a, 0x64af674e, 0xda86a85f,\n            0xbebfe988, 0x64e4c3fe, 0x9dbc8057, 0xf0f7c086, 0x60787bf8, 0x6003604d,\n            0xd1fd8346, 0xf6381fb0, 0x7745ae04, 0xd736fccc, 0x83426b33, 0xf01eab71,\n            0xb0804187, 0x3c005e5f, 0x77a057be, 0xbde8ae24, 0x55464299, 0xbf582e61,\n            0x4e58f48f, 0xf2ddfda2, 0xf474ef38, 0x8789bdc2, 0x5366f9c3, 0xc8b38e74,\n            0xb475f255, 0x46fcd9b9, 0x7aeb2661, 0x8b1ddf84, 0x846a0e79, 0x915f95e2,\n            0x466e598e, 0x20b45770, 0x8cd55591, 0xc902de4c, 0xb90bace1, 0xbb8205d0,\n            0x11a86248, 0x7574a99e, 0xb77f19b6, 0xe0a9dc09, 0x662d09a1, 0xc4324633,\n            0xe85a1f02, 0x09f0be8c, 0x4a99a025, 0x1d6efe10, 0x1ab93d1d, 0x0ba5a4df,\n            0xa186f20f, 0x2868f169, 0xdcb7da83, 0x573906fe, 0xa1e2ce9b, 0x4fcd7f52,\n            0x50115e01, 0xa70683fa, 0xa002b5c4, 0x0de6d027, 0x9af88c27, 0x773f8641,\n            0xc3604c06, 0x61a806b5, 0xf0177a28, 0xc0f586e0, 0x006058aa, 0x30dc7d62,\n            0x11e69ed7, 0x2338ea63, 0x53c2dd94, 0xc2c21634, 0xbbcbee56, 0x90bcb6de,\n            0xebfc7da1, 0xce591d76, 0x6f05e409, 0x4b7c0188, 0x39720a3d, 0x7c927c24,\n            0x86e3725f, 0x724d9db9, 0x1ac15bb4, 0xd39eb8fc, 0xed545578, 0x08fca5b5,\n            0xd83d7cd3, 0x4dad0fc4, 0x1e50ef5e, 0xb161e6f8, 0xa28514d9, 0x6c51133c,\n            0x6fd5c7e7, 0x56e14ec4, 0x362abfce, 0xddc6c837, 0xd79a3234, 0x92638212,\n            0x670efa8e, 0x406000e0, 0x3a39ce37, 0xd3faf5cf, 0xabc27737, 0x5ac52d1b,\n            0x5cb0679e, 0x4fa33742, 0xd3822740, 0x99bc9bbe, 0xd5118e9d, 0xbf0f7315,\n            0xd62d1c7e, 0xc700c47b, 0xb78c1b6b, 0x21a19045, 0xb26eb1be, 0x6a366eb4,\n            0x5748ab2f, 0xbc946e79, 0xc6a376d2, 0x6549c2c8, 0x530ff8ee, 0x468dde7d,\n            0xd5730a1d, 0x4cd04dc6, 0x2939bbdb, 0xa9ba4650, 0xac9526e8, 0xbe5ee304,\n            0xa1fad5f0, 0x6a2d519a, 0x63ef8ce2, 0x9a86ee22, 0xc089c2b8, 0x43242ef6,\n            0xa51e03aa, 0x9cf2d0a4, 0x83c061ba, 0x9be96a4d, 0x8fe51550, 0xba645bd6,\n            0x2826a2f9, 0xa73a3ae1, 0x4ba99586, 0xef5562e9, 0xc72fefd3, 0xf752f7da,\n            0x3f046f69, 0x77fa0a59, 0x80e4a915, 0x87b08601, 0x9b09e6ad, 0x3b3ee593,\n            0xe990fd5a, 0x9e34d797, 0x2cf0b7d9, 0x022b8b51, 0x96d5ac3a, 0x017da67d,\n            0xd1cf3ed6, 0x7c7d2d28, 0x1f9f25cf, 0xadf2b89b, 0x5ad6b472, 0x5a88f54c,\n            0xe029ac71, 0xe019a5e6, 0x47b0acfd, 0xed93fa9b, 0xe8d3c48d, 0x283b57cc,\n            0xf8d56629, 0x79132e28, 0x785f0191, 0xed756055, 0xf7960e44, 0xe3d35e8c,\n            0x15056dd4, 0x88f46dba, 0x03a16125, 0x0564f0bd, 0xc3eb9e15, 0x3c9057a2,\n            0x97271aec, 0xa93a072a, 0x1b3f6d9b, 0x1e6321f5, 0xf59c66fb, 0x26dcf319,\n            0x7533d928, 0xb155fdf5, 0x03563482, 0x8aba3cbb, 0x28517711, 0xc20ad9f8,\n            0xabcc5167, 0xccad925f, 0x4de81751, 0x3830dc8e, 0x379d5862, 0x9320f991,\n            0xea7a90c2, 0xfb3e7bce, 0x5121ce64, 0x774fbe32, 0xa8b6e37e, 0xc3293d46,\n            0x48de5369, 0x6413e680, 0xa2ae0810, 0xdd6db224, 0x69852dfd, 0x09072166,\n            0xb39a460a, 0x6445c0dd, 0x586cdecf, 0x1c20c8ae, 0x5bbef7dd, 0x1b588d40,\n            0xccd2017f, 0x6bb4e3bb, 0xdda26a7e, 0x3a59ff45, 0x3e350a44, 0xbcb4cdd5,\n            0x72eacea8, 0xfa6484bb, 0x8d6612ae, 0xbf3c6f47, 0xd29be463, 0x542f5d9e,\n            0xaec2771b, 0xf64e6370, 0x740e0d8d, 0xe75b1357, 0xf8721671, 0xaf537d5d,\n            0x4040cb08, 0x4eb4e2cc, 0x34d2466a, 0x0115af84, 0xe1b00428, 0x95983a1d,\n            0x06b89fb4, 0xce6ea048, 0x6f3f3b82, 0x3520ab82, 0x011a1d4b, 0x277227f8,\n            0x611560b1, 0xe7933fdc, 0xbb3a792b, 0x344525bd, 0xa08839e1, 0x51ce794b,\n            0x2f32c9b7, 0xa01fbac9, 0xe01cc87e, 0xbcc7d1f6, 0xcf0111c3, 0xa1e8aac7,\n            0x1a908749, 0xd44fbd9a, 0xd0dadecb, 0xd50ada38, 0x0339c32a, 0xc6913667,\n            0x8df9317c, 0xe0b12b4f, 0xf79e59b7, 0x43f5bb3a, 0xf2d519ff, 0x27d9459c,\n            0xbf97222c, 0x15e6fc2a, 0x0f91fc71, 0x9b941525, 0xfae59361, 0xceb69ceb,\n            0xc2a86459, 0x12baa8d1, 0xb6c1075e, 0xe3056a0c, 0x10d25065, 0xcb03a442,\n            0xe0ec6e0e, 0x1698db3b, 0x4c98a0be, 0x3278e964, 0x9f1f9532, 0xe0d392df,\n            0xd3a0342b, 0x8971f21e, 0x1b0a7441, 0x4ba3348c, 0xc5be7120, 0xc37632d8,\n            0xdf359f8d, 0x9b992f2e, 0xe60b6f47, 0x0fe3f11d, 0xe54cda54, 0x1edad891,\n            0xce6279cf, 0xcd3e7e6f, 0x1618b166, 0xfd2c1d05, 0x848fd2c5, 0xf6fb2299,\n            0xf523f357, 0xa6327623, 0x93a83531, 0x56cccd02, 0xacf08162, 0x5a75ebb5,\n            0x6e163697, 0x88d273cc, 0xde966292, 0x81b949d0, 0x4c50901b, 0x71c65614,\n            0xe6c6c7bd, 0x327a140a, 0x45e1d006, 0xc3f27b9a, 0xc9aa53fd, 0x62a80f00,\n            0xbb25bfe2, 0x35bdd2f6, 0x71126905, 0xb2040222, 0xb6cbcf7c, 0xcd769c2b,\n            0x53113ec0, 0x1640e3d3, 0x38abbd60, 0x2547adf0, 0xba38209c, 0xf746ce76,\n            0x77afa1c5, 0x20756060, 0x85cbfe4e, 0x8ae88dd8, 0x7aaaf9b0, 0x4cf9aa7e,\n            0x1948c25c, 0x02fb8a8c, 0x01c36ae4, 0xd6ebe1f9, 0x90d4f869, 0xa65cdea0,\n            0x3f09252d, 0xc208e69f, 0xb74e6132, 0xce77e25b, 0x578fdfe3, 0x3ac372e6};\n    // bcrypt IV: \"OrpheanBeholderScryDoubt\"\n    static private final int bf_crypt_ciphertext[] = {0x4f727068, 0x65616e42,\n            0x65686f6c, 0x64657253, 0x63727944, 0x6f756274};\n    // Table for Base64 encoding\n    static private final char base64_code[] = {'.', '/', 'A', 'B', 'C', 'D', 'E', 'F',\n            'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U',\n            'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',\n            'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y',\n            'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9'};\n    // Table for Base64 decoding\n    static private final byte index_64[] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,\n            -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, 1, 54, 55,\n            56, 57, 58, 59, 60, 61, 62, 63, -1, -1, -1, -1, -1, -1, -1, 2, 3, 4, 5, 6, 7,\n            8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27,\n            -1, -1, -1, -1, -1, -1, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,\n            41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, -1, -1, -1, -1, -1};\n    // Expanded Blowfish key\n    private int P[];\n    private int S[];\n\n    /**\n     * Encode a byte array using bcrypt's slightly-modified base64 encoding scheme. Note\n     * that this is <strong>not</strong> compatible with the standard MIME-base64\n     * encoding.\n     *\n     * @param d   the byte array to encode\n     * @param len the number of bytes to encode\n     * @param rs  the destination buffer for the base64-encoded string\n     * @throws IllegalArgumentException if the length is invalid\n     */\n    static void encode_base64(byte d[], int len, StringBuilder rs)\n            throws IllegalArgumentException {\n        int off = 0;\n        int c1, c2;\n\n        if (len <= 0 || len > d.length) {\n            throw new IllegalArgumentException(\"Invalid len\");\n        }\n\n        while (off < len) {\n            c1 = d[off++] & 0xff;\n            rs.append(base64_code[(c1 >> 2) & 0x3f]);\n            c1 = (c1 & 0x03) << 4;\n            if (off >= len) {\n                rs.append(base64_code[c1 & 0x3f]);\n                break;\n            }\n            c2 = d[off++] & 0xff;\n            c1 |= (c2 >> 4) & 0x0f;\n            rs.append(base64_code[c1 & 0x3f]);\n            c1 = (c2 & 0x0f) << 2;\n            if (off >= len) {\n                rs.append(base64_code[c1 & 0x3f]);\n                break;\n            }\n            c2 = d[off++] & 0xff;\n            c1 |= (c2 >> 6) & 0x03;\n            rs.append(base64_code[c1 & 0x3f]);\n            rs.append(base64_code[c2 & 0x3f]);\n        }\n    }\n\n    /**\n     * Look up the 3 bits base64-encoded by the specified character, range-checking\n     * against conversion table\n     *\n     * @param x the base64-encoded value\n     * @return the decoded value of x\n     */\n    private static byte char64(char x) {\n        if (x > index_64.length) {\n            return -1;\n        }\n        return index_64[x];\n    }\n\n    /**\n     * Decode a string encoded using bcrypt's base64 scheme to a byte array. Note that\n     * this is *not* compatible with the standard MIME-base64 encoding.\n     *\n     * @param s       the string to decode\n     * @param maxolen the maximum number of bytes to decode\n     * @return an array containing the decoded bytes\n     * @throws IllegalArgumentException if maxolen is invalid\n     */\n    static byte[] decode_base64(String s, int maxolen) throws IllegalArgumentException {\n        ByteArrayOutputStream out = new ByteArrayOutputStream(maxolen);\n        int off = 0, slen = s.length(), olen = 0;\n        byte c1, c2, c3, c4, o;\n\n        if (maxolen <= 0) {\n            throw new IllegalArgumentException(\"Invalid maxolen\");\n        }\n\n        while (off < slen - 1 && olen < maxolen) {\n            c1 = char64(s.charAt(off++));\n            c2 = char64(s.charAt(off++));\n            if (c1 == -1 || c2 == -1) {\n                break;\n            }\n            o = (byte) (c1 << 2);\n            o |= (c2 & 0x30) >> 4;\n            out.write(o);\n            if (++olen >= maxolen || off >= slen) {\n                break;\n            }\n            c3 = char64(s.charAt(off++));\n            if (c3 == -1) {\n                break;\n            }\n            o = (byte) ((c2 & 0x0f) << 4);\n            o |= (c3 & 0x3c) >> 2;\n            out.write(o);\n            if (++olen >= maxolen || off >= slen) {\n                break;\n            }\n            c4 = char64(s.charAt(off++));\n            o = (byte) ((c3 & 0x03) << 6);\n            o |= c4;\n            out.write(o);\n            ++olen;\n        }\n\n        return out.toByteArray();\n    }\n\n    /**\n     * Cycically extract a word of key material\n     *\n     * @param data the string to extract the data from\n     * @param offp a \"pointer\" (as a one-entry array) to the current offset into data\n     * @return the next word of material from data\n     */\n    private static int streamtoword(byte data[], int offp[]) {\n        int i;\n        int word = 0;\n        int off = offp[0];\n\n        for (i = 0; i < 4; i++) {\n            word = (word << 8) | (data[off] & 0xff);\n            off = (off + 1) % data.length;\n        }\n\n        offp[0] = off;\n        return word;\n    }\n\n    static long roundsForLogRounds(int log_rounds) {\n        if (log_rounds < 4 || log_rounds > 31) {\n            throw new IllegalArgumentException(\"Bad number of rounds\");\n        }\n        return 1L << log_rounds;\n    }\n\n    /**\n     * Hash a password using the OpenBSD bcrypt scheme\n     *\n     * @param password the password to hash\n     * @param salt     the salt to hash with (perhaps generated using BCrypt.gensalt)\n     * @return the hashed password\n     * @throws IllegalArgumentException if invalid salt is passed\n     */\n    public static String hashpw(String password, String salt) throws IllegalArgumentException {\n        BCrypt B;\n        String real_salt;\n        byte passwordb[], saltb[], hashed[];\n        char minor = (char) 0;\n        int rounds, off = 0;\n        StringBuilder rs = new StringBuilder();\n\n        if (salt == null) {\n            throw new IllegalArgumentException(\"salt cannot be null\");\n        }\n\n        int saltLength = salt.length();\n\n        if (saltLength < 28) {\n            throw new IllegalArgumentException(\"Invalid salt\");\n        }\n\n        if (salt.charAt(0) != '$' || salt.charAt(1) != '2') {\n            throw new IllegalArgumentException(\"Invalid salt version\");\n        }\n        if (salt.charAt(2) == '$') {\n            off = 3;\n        } else {\n            minor = salt.charAt(2);\n            if (minor != 'a' || salt.charAt(3) != '$') {\n                throw new IllegalArgumentException(\"Invalid salt revision\");\n            }\n            off = 4;\n        }\n\n        if (saltLength - off < 25) {\n            throw new IllegalArgumentException(\"Invalid salt\");\n        }\n\n        // Extract number of rounds\n        if (salt.charAt(off + 2) > '$') {\n            throw new IllegalArgumentException(\"Missing salt rounds\");\n        }\n        rounds = Integer.parseInt(salt.substring(off, off + 2));\n\n        real_salt = salt.substring(off + 3, off + 25);\n        try {\n            passwordb = (password + (minor >= 'a' ? \"\\000\" : \"\")).getBytes(\"UTF-8\");\n        } catch (UnsupportedEncodingException uee) {\n            throw new AssertionError(\"UTF-8 is not supported\");\n        }\n\n        saltb = decode_base64(real_salt, BCRYPT_SALT_LEN);\n\n        B = new BCrypt();\n        hashed = B.crypt_raw(passwordb, saltb, rounds);\n\n        rs.append(\"$2\");\n        if (minor >= 'a') {\n            rs.append(minor);\n        }\n        rs.append(\"$\");\n        if (rounds < 10) {\n            rs.append(\"0\");\n        }\n        rs.append(rounds);\n        rs.append(\"$\");\n        encode_base64(saltb, saltb.length, rs);\n        encode_base64(hashed, bf_crypt_ciphertext.length * 4 - 1, rs);\n        return rs.toString();\n    }\n\n    /**\n     * Generate a salt for use with the BCrypt.hashpw() method\n     *\n     * @param log_rounds the log2 of the number of rounds of hashing to apply - the work\n     *                   factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.\n     * @param random     an instance of SecureRandom to use\n     * @return an encoded salt value\n     */\n    public static String gensalt(int log_rounds, SecureRandom random) {\n        if (log_rounds < MIN_LOG_ROUNDS || log_rounds > MAX_LOG_ROUNDS) {\n            throw new IllegalArgumentException(\"Bad number of rounds\");\n        }\n        StringBuilder rs = new StringBuilder();\n        byte rnd[] = new byte[BCRYPT_SALT_LEN];\n\n        random.nextBytes(rnd);\n\n        rs.append(\"$2a$\");\n        if (log_rounds < 10) {\n            rs.append(\"0\");\n        }\n        rs.append(log_rounds);\n        rs.append(\"$\");\n        encode_base64(rnd, rnd.length, rs);\n        return rs.toString();\n    }\n\n    /**\n     * Generate a salt for use with the BCrypt.hashpw() method\n     *\n     * @param log_rounds the log2 of the number of rounds of hashing to apply - the work\n     *                   factor therefore increases as 2**log_rounds. Minimum 4, maximum 31.\n     * @return an encoded salt value\n     */\n    public static String gensalt(int log_rounds) {\n        return gensalt(log_rounds, new SecureRandom());\n    }\n\n    /**\n     * Generate a salt for use with the BCrypt.hashpw() method, selecting a reasonable\n     * default for the number of hashing rounds to apply\n     *\n     * @return an encoded salt value\n     */\n    public static String gensalt() {\n        return gensalt(GENSALT_DEFAULT_LOG2_ROUNDS);\n    }\n\n    /**\n     * Check that a plaintext password matches a previously hashed one\n     *\n     * @param plaintext the plaintext password to verify\n     * @param hashed    the previously-hashed password\n     * @return true if the passwords match, false otherwise\n     */\n    public static boolean checkpw(String plaintext, String hashed) {\n        return equalsNoEarlyReturn(hashed, hashpw(plaintext, hashed));\n    }\n\n    static boolean equalsNoEarlyReturn(String a, String b) {\n        char[] caa = a.toCharArray();\n        char[] cab = b.toCharArray();\n\n        if (caa.length != cab.length) {\n            return false;\n        }\n\n        byte ret = 0;\n        for (int i = 0; i < caa.length; i++) {\n            ret |= caa[i] ^ cab[i];\n        }\n        return ret == 0;\n    }\n\n    /**\n     * Blowfish encipher a single 64-bit block encoded as two 32-bit halves\n     *\n     * @param lr  an array containing the two 32-bit half blocks\n     * @param off the position in the array of the blocks\n     */\n    private final void encipher(int lr[], int off) {\n        int i, n, l = lr[off], r = lr[off + 1];\n\n        l ^= P[0];\n        for (i = 0; i <= BLOWFISH_NUM_ROUNDS - 2; ) {\n            // Feistel substitution on left word\n            n = S[(l >> 24) & 0xff];\n            n += S[0x100 | ((l >> 16) & 0xff)];\n            n ^= S[0x200 | ((l >> 8) & 0xff)];\n            n += S[0x300 | (l & 0xff)];\n            r ^= n ^ P[++i];\n\n            // Feistel substitution on right word\n            n = S[(r >> 24) & 0xff];\n            n += S[0x100 | ((r >> 16) & 0xff)];\n            n ^= S[0x200 | ((r >> 8) & 0xff)];\n            n += S[0x300 | (r & 0xff)];\n            l ^= n ^ P[++i];\n        }\n        lr[off] = r ^ P[BLOWFISH_NUM_ROUNDS + 1];\n        lr[off + 1] = l;\n    }\n\n    /**\n     * Initialise the Blowfish key schedule\n     */\n    private void init_key() {\n        P = (int[]) P_orig.clone();\n        S = (int[]) S_orig.clone();\n    }\n\n    /**\n     * Key the Blowfish cipher\n     *\n     * @param key an array containing the key\n     */\n    private void key(byte key[]) {\n        int i;\n        int koffp[] = {0};\n        int lr[] = {0, 0};\n        int plen = P.length, slen = S.length;\n\n        for (i = 0; i < plen; i++) {\n            P[i] = P[i] ^ streamtoword(key, koffp);\n        }\n\n        for (i = 0; i < plen; i += 2) {\n            encipher(lr, 0);\n            P[i] = lr[0];\n            P[i + 1] = lr[1];\n        }\n\n        for (i = 0; i < slen; i += 2) {\n            encipher(lr, 0);\n            S[i] = lr[0];\n            S[i + 1] = lr[1];\n        }\n    }\n\n    /**\n     * Perform the \"enhanced key schedule\" step described by Provos and Mazieres in\n     * \"A Future-Adaptable Password Scheme\" http://www.openbsd.org/papers/bcrypt-paper.ps\n     *\n     * @param data salt information\n     * @param key  password information\n     */\n    private void ekskey(byte data[], byte key[]) {\n        int i;\n        int koffp[] = {0}, doffp[] = {0};\n        int lr[] = {0, 0};\n        int plen = P.length, slen = S.length;\n\n        for (i = 0; i < plen; i++) {\n            P[i] = P[i] ^ streamtoword(key, koffp);\n        }\n\n        for (i = 0; i < plen; i += 2) {\n            lr[0] ^= streamtoword(data, doffp);\n            lr[1] ^= streamtoword(data, doffp);\n            encipher(lr, 0);\n            P[i] = lr[0];\n            P[i + 1] = lr[1];\n        }\n\n        for (i = 0; i < slen; i += 2) {\n            lr[0] ^= streamtoword(data, doffp);\n            lr[1] ^= streamtoword(data, doffp);\n            encipher(lr, 0);\n            S[i] = lr[0];\n            S[i + 1] = lr[1];\n        }\n    }\n\n    /**\n     * Perform the central password hashing step in the bcrypt scheme\n     *\n     * @param password   the password to hash\n     * @param salt       the binary salt to hash with the password\n     * @param log_rounds the binary logarithm of the number of rounds of hashing to apply\n     * @return an array containing the binary hashed password\n     */\n    private byte[] crypt_raw(byte password[], byte salt[], int log_rounds) {\n        int cdata[] = (int[]) bf_crypt_ciphertext.clone();\n        int clen = cdata.length;\n        byte ret[];\n\n        long rounds = roundsForLogRounds(log_rounds);\n\n        init_key();\n        ekskey(salt, password);\n        for (long i = 0; i < rounds; i++) {\n            key(password);\n            key(salt);\n        }\n\n        for (int i = 0; i < 64; i++) {\n            for (int j = 0; j < (clen >> 1); j++) {\n                encipher(cdata, j << 1);\n            }\n        }\n\n        ret = new byte[clen * 4];\n        for (int i = 0, j = 0; i < clen; i++) {\n            ret[j++] = (byte) ((cdata[i] >> 24) & 0xff);\n            ret[j++] = (byte) ((cdata[i] >> 16) & 0xff);\n            ret[j++] = (byte) ((cdata[i] >> 8) & 0xff);\n            ret[j++] = (byte) (cdata[i] & 0xff);\n        }\n        return ret;\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/util/bcrypt/BCryptPasswordEncoder.java",
    "content": "package org.linlinjava.litemall.core.util.bcrypt;\n/*\n * Copyright 2002-2011 the original author or authors.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n *      http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\n\nimport java.security.SecureRandom;\nimport java.util.regex.Pattern;\n\n/**\n * Implementation of PasswordEncoder that uses the BCrypt strong hashing function. Clients\n * can optionally supply a \"strength\" (a.k.a. log rounds in BCrypt) and a SecureRandom\n * instance. The larger the strength parameter the more work will have to be done\n * (exponentially) to hash the passwords. The default value is 10.\n *\n * @author Dave Syer\n */\npublic class BCryptPasswordEncoder {\n    private final Log logger = LogFactory.getLog(getClass());\n    private final int strength;\n    private final SecureRandom random;\n    private Pattern BCRYPT_PATTERN = Pattern\n            .compile(\"\\\\A\\\\$2a?\\\\$\\\\d\\\\d\\\\$[./0-9A-Za-z]{53}\");\n\n    public BCryptPasswordEncoder() {\n        this(-1);\n    }\n\n    /**\n     * @param strength the log rounds to use, between 4 and 31\n     */\n    public BCryptPasswordEncoder(int strength) {\n        this(strength, null);\n    }\n\n    /**\n     * @param strength the log rounds to use, between 4 and 31\n     * @param random   the secure random instance to use\n     */\n    public BCryptPasswordEncoder(int strength, SecureRandom random) {\n        if (strength != -1 && (strength < BCrypt.MIN_LOG_ROUNDS || strength > BCrypt.MAX_LOG_ROUNDS)) {\n            throw new IllegalArgumentException(\"Bad strength\");\n        }\n        this.strength = strength;\n        this.random = random;\n    }\n\n    public String encode(CharSequence rawPassword) {\n        String salt;\n        if (strength > 0) {\n            if (random != null) {\n                salt = BCrypt.gensalt(strength, random);\n            } else {\n                salt = BCrypt.gensalt(strength);\n            }\n        } else {\n            salt = BCrypt.gensalt();\n        }\n        return BCrypt.hashpw(rawPassword.toString(), salt);\n    }\n\n    public boolean matches(CharSequence rawPassword, String encodedPassword) {\n        if (encodedPassword == null || encodedPassword.length() == 0) {\n            logger.warn(\"Empty encoded password\");\n            return false;\n        }\n\n        if (!BCRYPT_PATTERN.matcher(encodedPassword).matches()) {\n            logger.warn(\"Encoded password does not look like BCrypt\");\n            return false;\n        }\n\n        return BCrypt.checkpw(rawPassword.toString(), encodedPassword);\n    }\n}"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/validator/Order.java",
    "content": "package org.linlinjava.litemall.core.validator;\n\nimport javax.validation.Constraint;\nimport javax.validation.Payload;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.Target;\n\nimport static java.lang.annotation.ElementType.*;\nimport static java.lang.annotation.RetentionPolicy.RUNTIME;\n\n@Target({METHOD, FIELD, PARAMETER})\n@Retention(RUNTIME)\n@Documented\n@Constraint(validatedBy = OrderValidator.class)\npublic @interface Order {\n    String message() default \"排序类型不支持\";\n\n    String[] accepts() default {\"desc\", \"asc\"};\n\n    Class<?>[] groups() default {};\n\n    Class<? extends Payload>[] payload() default {};\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/validator/OrderValidator.java",
    "content": "package org.linlinjava.litemall.core.validator;\n\nimport com.google.common.collect.Lists;\n\nimport javax.validation.ConstraintValidator;\nimport javax.validation.ConstraintValidatorContext;\nimport java.util.List;\n\npublic class OrderValidator implements ConstraintValidator<Order, String> {\n    private List<String> valueList;\n\n    @Override\n    public void initialize(Order order) {\n        valueList = Lists.newArrayList();\n        for (String val : order.accepts()) {\n            valueList.add(val.toUpperCase());\n        }\n    }\n\n    @Override\n    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {\n        if (!valueList.contains(s.toUpperCase())) {\n            return false;\n        }\n        return true;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/validator/Sort.java",
    "content": "package org.linlinjava.litemall.core.validator;\n\nimport javax.validation.Constraint;\nimport javax.validation.Payload;\nimport java.lang.annotation.Documented;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.Target;\n\nimport static java.lang.annotation.ElementType.*;\nimport static java.lang.annotation.RetentionPolicy.RUNTIME;\n\n@Target({METHOD, FIELD, PARAMETER})\n@Retention(RUNTIME)\n@Documented\n@Constraint(validatedBy = SortValidator.class)\npublic @interface Sort {\n    String message() default \"排序字段不支持\";\n\n    String[] accepts() default {\"add_time\", \"id\"};\n\n    Class<?>[] groups() default {};\n\n    Class<? extends Payload>[] payload() default {};\n}\n"
  },
  {
    "path": "litemall-core/src/main/java/org/linlinjava/litemall/core/validator/SortValidator.java",
    "content": "package org.linlinjava.litemall.core.validator;\n\nimport com.google.common.collect.Lists;\n\nimport javax.validation.ConstraintValidator;\nimport javax.validation.ConstraintValidatorContext;\nimport java.util.List;\n\npublic class SortValidator implements ConstraintValidator<Sort, String> {\n    private List<String> valueList;\n\n    @Override\n    public void initialize(Sort sort) {\n        valueList = Lists.newArrayList();\n        for (String val : sort.accepts()) {\n            valueList.add(val.toUpperCase());\n        }\n    }\n\n    @Override\n    public boolean isValid(String s, ConstraintValidatorContext constraintValidatorContext) {\n        if (!valueList.contains(s.toUpperCase())) {\n            return false;\n        }\n        return true;\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/main/resources/application-core.yml",
    "content": "litemall:\n  # 开发者应该设置成自己的wx相关信息\n  wx:\n    app-id: wxa5b486c6b918ecfb\n    app-secret: e04004829d4c383b4db7769d88dfbca1\n    mch-id: 111111\n    mch-key: xxxxxx\n    notify-url: http://www.example.com/wx/order/pay-notify\n    # 商户证书文件路径\n    # 请参考“商户证书”一节 https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=4_3\n    key-path: xxxxx\n    # 消息推送配置token\n    token:\n    # 消息推送配置AesKey\n    aes-key:\n\n  #通知相关配置\n  notify:\n    mail:\n      # 邮件通知配置,邮箱一般用于接收业务通知例如收到新的订单，sendto 定义邮件接收者，通常为商城运营人员\n      enable: false\n      host: smtp.exmail.qq.com\n      username: ex@ex.com.cn\n      password: XXXXXXXXXXXXX\n      sendfrom: ex@ex.com.cn\n      sendto: ex@qq.com\n      port: 465\n    # 短消息模版通知配置\n    # 短信息用于通知客户，例如发货短信通知，注意配置格式；template-name，template-templateId 请参考 NotifyType 枚举值\n    sms:\n      enable: false\n      # 如果是腾讯云短信，则设置active的值tencent\n      # 如果是阿里云短信，则设置active的值aliyun\n      active: tencent\n      sign: litemall\n      template:\n      - name: paySucceed\n        templateId: 156349\n      - name: captcha\n        templateId: 156433\n      - name: ship\n        templateId: 158002\n      - name: refund\n        templateId: 159447\n      tencent:\n        appid: 111111111\n        appkey: xxxxxxxxxxxxxx\n      aliyun:\n        regionId: xxx\n        accessKeyId: xxx\n        accessKeySecret: xxx\n\n  # 快鸟物流查询配置\n  express:\n    enable: false\n    appId: \"XXXXXXXXX\"\n    appKey: \"XXXXXXXXXXXXXXXXXXXXXXXXX\"\n    vendors:\n    - code: \"ZTO\"\n      name: \"中通快递\"\n    - code: \"YTO\"\n      name: \"圆通速递\"\n    - code: \"YD\"\n      name: \"韵达速递\"\n    - code: \"YZPY\"\n      name: \"邮政快递包裹\"\n    - code: \"EMS\"\n      name: \"EMS\"\n    - code: \"DBL\"\n      name: \"德邦快递\"\n    - code: \"FAST\"\n      name: \"快捷快递\"\n    - code: \"ZJS\"\n      name: \"宅急送\"\n    - code: \"TNT\"\n      name: \"TNT快递\"\n    - code: \"UPS\"\n      name: \"UPS\"\n    - code: \"DHL\"\n      name: \"DHL\"\n    - code: \"FEDEX\"\n      name: \"FEDEX联邦(国内件)\"\n    - code: \"FEDEX_GJ\"\n      name: \"FEDEX联邦(国际件)\"\n\n  # 对象存储配置\n  storage:\n    # 当前工作的对象存储模式，分别是local、aliyun、tencent、qiniu\n    active: local\n    # 本地对象存储配置信息\n    local:\n      storagePath: storage\n      # 这个地方应该是wx模块的WxStorageController的fetch方法对应的地址\n      address: http://localhost:8080/wx/storage/fetch/\n    # 阿里云对象存储配置信息\n    aliyun:\n      endpoint: oss-cn-shenzhen.aliyuncs.com\n      accessKeyId: 111111\n      accessKeySecret: xxxxxx\n      bucketName: litemall\n    # 腾讯对象存储配置信息\n    # 请参考 https://cloud.tencent.com/document/product/436/6249\n    tencent:\n      secretId: AKIDOccMr856uoU1Tsa2MQL5aqseBUWRrb5i\n      secretKey: XqtgEhIdrupTs4ygaWlkUUXv3w3FiwuD\n      region: ap-shanghai\n      bucketName: vytech-1300096589\n    # 七牛云对象存储配置信息\n    qiniu:\n      endpoint: http://pd5cb6ulu.bkt.clouddn.com\n      accessKey: 111111\n      secretKey: xxxxxx\n      bucketName: litemall"
  },
  {
    "path": "litemall-core/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: core, db\n  messages:\n    encoding: UTF-8\n\nlogging:\n  level:\n    root:  ERROR\n    org.springframework:  ERROR\n    org.mybatis:  ERROR\n    org.linlinjava.litemall.core:  DEBUG"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/AliyunStorageTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.storage.AliyunStorage;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.io.Resource;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class AliyunStorageTest {\n\n    private final Log logger = LogFactory.getLog(AliyunStorageTest.class);\n    @Autowired\n    private AliyunStorage aliyunStorage;\n\n    @Test\n    public void test() throws IOException {\n        String test = getClass().getClassLoader().getResource(\"litemall.png\").getFile();\n        File testFile = new File(test);\n        aliyunStorage.store(new FileInputStream(test), testFile.length(), \"image/png\", \"litemall.png\");\n        Resource resource = aliyunStorage.loadAsResource(\"litemall.png\");\n        String url = aliyunStorage.generateUrl(\"litemall.png\");\n        logger.info(\"test file \" + test);\n        logger.info(\"store file \" + resource.getURI());\n        logger.info(\"generate url \" + url);\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/Application.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall.db\", \"org.linlinjava.litemall.core\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\npublic class Application {\n\n    public static void main(String[] args) {\n        SpringApplication.run(Application.class, args);\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/AsyncTask.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.scheduling.annotation.Async;\nimport org.springframework.stereotype.Service;\n\n@Service\npublic class AsyncTask {\n    private final Log logger = LogFactory.getLog(AsyncTask.class);\n\n    @Async\n    public void asyncMethod() {\n        logger.info(\"Execute method asynchronously. \"\n                + Thread.currentThread().getName());\n    }\n\n    public void nonasyncMethod() {\n        logger.info(\"Execute method nonasynchronously. \"\n                + Thread.currentThread().getName());\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/AsyncTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n/**\n * 异步测试\n */\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class AsyncTest {\n\n    @Autowired\n    AsyncTask task;\n\n    @Test\n    public void test() {\n        task.asyncMethod();\n        task.nonasyncMethod();\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/CoreConfigTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class CoreConfigTest {\n    private final Log logger = LogFactory.getLog(CoreConfigTest.class);\n    @Autowired\n    Environment environment;\n\n    @Test\n    public void test() {\n        // 测试获取application-core.yml配置信息\n        logger.info(environment.getProperty(\"litemall.express.appId\"));\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/ExpressTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.express.ExpressService;\nimport org.linlinjava.litemall.core.express.dao.ExpressInfo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest(classes = Application.class)\npublic class ExpressTest {\n\n    private final Log logger = LogFactory.getLog(ExpressTest.class);\n    @Autowired\n    private ExpressService expressService;\n\n    @Test\n    public void test() {\n        ExpressInfo ei = null;\n        try {\n            ei = expressService.getExpressInfo(\"YTO\", \"800669400640887922\");\n        } catch (Exception e) {\n            logger.error(e.getMessage(), e);\n        }\n        logger.info(ei);\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/IntegerTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.junit.Test;\n\npublic class IntegerTest {\n    @Test\n    public void test() {\n        Integer a = new Integer(512);\n        int b = 512;\n        Integer c = new Integer(512);\n        System.out.println(a==b);\n        System.out.println(a.equals(b));\n        System.out.println(a == c);\n        System.out.println(a.equals(c));\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/LocalStorageTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.storage.LocalStorage;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.io.Resource;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class LocalStorageTest {\n\n    private final Log logger = LogFactory.getLog(LocalStorageTest.class);\n    @Autowired\n    private LocalStorage localStorage;\n\n    @Test\n    public void test() throws IOException {\n        String test = getClass().getClassLoader().getResource(\"litemall.png\").getFile();\n        File testFile = new File(test);\n        localStorage.store(new FileInputStream(test), testFile.length(), \"image/png\", \"litemall.png\");\n        Resource resource = localStorage.loadAsResource(\"litemall.png\");\n        String url = localStorage.generateUrl(\"litemall.png\");\n        logger.info(\"test file \" + test);\n        logger.info(\"store file \" + resource.getURI());\n        logger.info(\"generate url \" + url);\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/MailTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\nimport org.springframework.context.annotation.Primary;\nimport org.springframework.core.task.SyncTaskExecutor;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.util.concurrent.Executor;\n\n/**\n * 测试邮件发送服务\n * <p>\n * 注意LitemallNotifyService采用异步线程操作\n * 因此测试的时候需要睡眠一会儿，保证任务执行\n * <p>\n * 开发者需要确保：\n * 1. 在相应的邮件服务器设置正确notify.properties已经设置正确\n * 2. 在相应的邮件服务器设置正确\n */\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class MailTest {\n\n    @Autowired\n    private NotifyService notifyService;\n\n    @Test\n    public void testMail() {\n        notifyService.notifyMail(\"订单信息\", \"订单1111111已付款，请发货\");\n    }\n\n    @Configuration\n    @Import(Application.class)\n    static class ContextConfiguration {\n        @Bean\n        @Primary\n        public Executor executor() {\n            return new SyncTaskExecutor();\n        }\n    }\n\n\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/QiniuStorageTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.storage.QiniuStorage;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.io.Resource;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class QiniuStorageTest {\n\n    private final Log logger = LogFactory.getLog(QiniuStorageTest.class);\n    @Autowired\n    private QiniuStorage qiniuStorage;\n\n    @Test\n    public void test() throws IOException {\n        String test = getClass().getClassLoader().getResource(\"litemall.png\").getFile();\n        File testFile = new File(test);\n        qiniuStorage.store(new FileInputStream(test), testFile.length(), \"image/png\", \"litemall.png\");\n        Resource resource = qiniuStorage.loadAsResource(\"litemall.png\");\n        String url = qiniuStorage.generateUrl(\"litemall.png\");\n        logger.info(\"test file \" + test);\n        logger.info(\"store file \" + resource.getURI());\n        logger.info(\"generate url \" + url);\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/SmsTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.NotifyType;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\nimport org.springframework.context.annotation.Primary;\nimport org.springframework.core.task.SyncTaskExecutor;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.util.concurrent.Executor;\n\n/**\n * 测试短信发送服务\n * <p>\n * 注意LitemallNotifyService采用异步线程操作\n * 因此测试的时候需要睡眠一会儿，保证任务执行\n * <p>\n * 开发者需要确保：\n * 1. 在腾讯云短信平台设置短信签名和短信模板notify.properties已经设置正确\n * 2. 在腾讯云短信平台设置短信签名和短信模板\n * 3. 在当前测试类设置好正确的手机号码\n */\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class SmsTest {\n\n    @Autowired\n    private NotifyService notifyService;\n\n    @Test\n    public void testCaptcha() {\n        String phone = \"xxxxxxxxxxx\";\n        String[] params = new String[]{\"123456\"};\n\n        notifyService.notifySmsTemplate(phone, NotifyType.CAPTCHA, params);\n    }\n\n    @Test\n    public void testPaySucceed() {\n        String phone = \"xxxxxxxxxxx\";\n        String[] params = new String[]{\"123456\"};\n\n        notifyService.notifySmsTemplate(phone, NotifyType.PAY_SUCCEED, params);\n    }\n\n    @Test\n    public void testShip() {\n        String phone = \"xxxxxxxxxxx\";\n        String[] params = new String[]{\"123456\"};\n\n        notifyService.notifySmsTemplate(phone, NotifyType.SHIP, params);\n    }\n\n    @Test\n    public void testRefund() {\n        String phone = \"xxxxxxxxxxx\";\n        String[] params = new String[]{\"123456\"};\n\n        notifyService.notifySmsTemplate(phone, NotifyType.REFUND, params);\n    }\n\n    @Configuration\n    @Import(Application.class)\n    static class ContextConfiguration {\n        @Bean\n        @Primary\n        public Executor executor() {\n            return new SyncTaskExecutor();\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/TaskTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport com.google.common.primitives.Ints;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.task.Task;\nimport org.linlinjava.litemall.core.task.TaskService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.context.annotation.Import;\nimport org.springframework.context.annotation.Primary;\nimport org.springframework.core.env.Environment;\nimport org.springframework.core.task.SyncTaskExecutor;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.util.Objects;\nimport java.util.concurrent.Delayed;\nimport java.util.concurrent.Executor;\nimport java.util.concurrent.TimeUnit;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class TaskTest {\n    private final Log logger = LogFactory.getLog(TaskTest.class);\n    @Autowired\n    private TaskService taskService;\n\n    private class DemoTask extends Task {\n\n        DemoTask(String id, long delayInMilliseconds){\n            super(id, delayInMilliseconds);\n        }\n        @Override\n        public void run() {\n            DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");\n            String now = df.format(LocalDateTime.now());\n            System.out.println(\"task id=\" + this.getId() + \" at time=\" + now);\n        }\n\n    }\n\n    @Test\n    public void test() {\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");\n        String now = df.format(LocalDateTime.now());\n        System.out.println(\"start at time=\" + now);\n\n        taskService.addTask(new DemoTask(\"3\", 1000));\n        taskService.addTask(new DemoTask(\"2\", 2000));\n        taskService.addTask(new DemoTask(\"1\", 3000));\n\n        taskService.addTask(new DemoTask(\"4\", 1500));\n        taskService.addTask(new DemoTask(\"5\", 2500));\n        taskService.addTask(new DemoTask(\"6\", 3500));\n\n        try {\n            Thread.sleep(10 * 1000);\n        } catch (InterruptedException e) {\n            e.printStackTrace();\n        }\n    }\n\n    @Test\n    public void test1() {\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");\n        String now = df.format(LocalDateTime.now());\n        System.out.println(\"start at time=\" + now);\n\n        taskService.addTask(new DemoTask(\"3\", 0));\n        taskService.addTask(new DemoTask(\"2\", 0));\n        taskService.addTask(new DemoTask(\"1\", 0));\n\n        taskService.addTask(new DemoTask(\"4\", 0));\n        taskService.addTask(new DemoTask(\"5\", 0));\n        taskService.addTask(new DemoTask(\"6\", 0));\n\n        try {\n            Thread.sleep(10 * 1000);\n        } catch (InterruptedException e) {\n            e.printStackTrace();\n        }\n    }\n\n    @Test\n    public void test2() {\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");\n        String now = df.format(LocalDateTime.now());\n        System.out.println(\"start at time=\" + now);\n\n        taskService.addTask(new DemoTask(\"1\", 0));\n        taskService.addTask(new DemoTask(\"2\", 1200));\n        taskService.addTask(new DemoTask(\"3\", 5200));\n\n        try {\n            Thread.sleep(10 * 1000);\n        } catch (InterruptedException e) {\n            e.printStackTrace();\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/TencentStorageTest.java",
    "content": "package org.linlinjava.litemall.core;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.core.storage.TencentStorage;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.io.Resource;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.io.File;\nimport java.io.FileInputStream;\nimport java.io.IOException;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class TencentStorageTest {\n\n    private Log logger = LogFactory.getLog(TencentStorageTest.class);\n    @Autowired\n    private TencentStorage tencentStorage;\n\n    @Test\n    public void test() throws IOException {\n        String test = getClass().getClassLoader().getResource(\"litemall.png\").getFile();\n        File testFile = new File(test);\n        tencentStorage.store(new FileInputStream(test), testFile.length(), \"image/png\", \"litemall.png\");\n        Resource resource = tencentStorage.loadAsResource(\"litemall.png\");\n        String url = tencentStorage.generateUrl(\"litemall.png\");\n        logger.info(\"test file \" + test);\n        logger.info(\"store file \" + resource.getURI());\n        logger.info(\"generate url \" + url);\n    }\n\n}"
  },
  {
    "path": "litemall-core/src/test/java/org/linlinjava/litemall/core/util/bcrypt/BCryptTest.java",
    "content": "package org.linlinjava.litemall.core.util.bcrypt;\n\nimport org.junit.Assert;\nimport org.junit.Rule;\nimport org.junit.Test;\nimport org.junit.rules.ExpectedException;\nimport org.junit.runner.RunWith;\nimport org.powermock.api.mockito.PowerMockito;\nimport org.powermock.core.classloader.annotations.PrepareForTest;\nimport org.powermock.modules.junit4.PowerMockRunner;\n\nimport java.security.SecureRandom;\n\n@RunWith(PowerMockRunner.class)\npublic class BCryptTest {\n\n    @Rule\n    public final ExpectedException thrown = ExpectedException.none();\n\n    @Test\n    public void testHashpwSaltIsNull() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", null);\n    }\n\n    @Test\n    public void testHashpwSaltTooShort() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"foo\");\n    }\n\n    @Test\n    public void testHashpwInvalidSaltVersion() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"+2a$10$.....................\");\n    }\n\n    @Test\n    public void testHashpwInvalidSaltVersion2() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$1a$10$.....................\");\n    }\n\n    @Test\n    public void testHashpwInvalidSaltRevision() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2+$10$.....................\");\n    }\n\n    @Test\n    public void testHashpwInvalidSaltRevision2() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2a+10$.....................\");\n    }\n\n    @Test\n    public void testHashpwSaltTooShort2() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2a$10+.....................\");\n    }\n\n    @Test\n    public void testHashpwMissingSaltRounds() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2$a10$.....................\");\n    }\n\n    @Test\n    public void testHashpwTooLittleRounds() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2a$03$......................\");\n    }\n\n    @Test\n    public void testHashpwTooManyRounds() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.hashpw(\"foo\", \"$2a$32$......................\");\n    }\n\n    @Test\n    public void testHashpw() {\n        Assert.assertEquals(\n                \"$2a$10$......................0li5vIK0lccG/IXHAOP2wBncDW/oa2u\",\n                BCrypt.hashpw(\"foo\", \"$2a$10$......................\"));\n\n        Assert.assertEquals(\n                \"$2$09$......................GlnmyWmDnFB.MnSSUnFsiPvHsC2KPBm\",\n                BCrypt.hashpw(\"foo\", \"$2$09$......................\"));\n    }\n\n    @PrepareForTest({BCrypt.class, SecureRandom.class})\n    @Test\n    public void testGensalt() throws Exception {\n        PowerMockito.whenNew(SecureRandom.class).withNoArguments()\n                .thenReturn(PowerMockito.mock(SecureRandom.class));\n        Assert.assertEquals(\"$2a$10$......................\", BCrypt.gensalt());\n        Assert.assertEquals(\"$2a$09$......................\", BCrypt.gensalt(9));\n    }\n\n    @Test\n    public void testGensaltTooLittleRounds() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.gensalt(3);\n    }\n\n    @Test\n    public void testGensaltTooManyRounds() throws IllegalArgumentException {\n        thrown.expect(IllegalArgumentException.class);\n        BCrypt.gensalt(32);\n    }\n\n    @Test\n    public void testCheckpw() {\n        Assert.assertFalse(BCrypt.checkpw(\"foo\", \"$2a$10$......................\"));\n\n        final String hashed = BCrypt.hashpw(\"foo\", BCrypt.gensalt());\n        Assert.assertTrue(BCrypt.checkpw(\"foo\", hashed));\n        Assert.assertFalse(BCrypt.checkpw(\"bar\", hashed));\n    }\n}\n"
  },
  {
    "path": "litemall-db/.gitignore",
    "content": "\n/target/\n/litemall-db.iml\n"
  },
  {
    "path": "litemall-db/mybatis-generator/generatorConfig.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE generatorConfiguration\n        PUBLIC \"-//mybatis.org//DTD MyBatis Generator Configuration 1.0//EN\"\n        \"http://mybatis.org/dtd/mybatis-generator-config_1_0.dtd\">\n\n<generatorConfiguration>\n\n    <context id=\"mysqlgenerator\" targetRuntime=\"MyBatis3\">\n        <property name=\"autoDelimitKeywords\" value=\"true\"/>\n        <!--可以使用``包括字段名，避免字段名与sql保留字冲突报错-->\n        <property name=\"beginningDelimiter\" value=\"`\"/>\n        <property name=\"endingDelimiter\" value=\"`\"/>\n\n        <!-- 自动生成toString方法 -->\n        <plugin type=\"org.mybatis.generator.plugins.ToStringPlugin\"/>\n        <!-- 自动生成equals方法和hashcode方法 -->\n        <plugin type=\"org.mybatis.generator.plugins.EqualsHashCodePlugin\"/>\n\n        <!-- 非官方插件 https://github.com/itfsw/mybatis-generator-plugin -->\n        <!-- 查询单条数据插件 -->\n        <plugin type=\"com.itfsw.mybatis.generator.plugins.SelectOneByExamplePlugin\"/>\n        <!-- 查询结果选择性返回插件 -->\n        <plugin type=\"com.itfsw.mybatis.generator.plugins.SelectSelectivePlugin\"/>\n        <!-- Example Criteria 增强插件 -->\n        <plugin type=\"com.itfsw.mybatis.generator.plugins.ExampleEnhancedPlugin\"/>\n        <!-- 数据Model属性对应Column获取插件 -->\n        <plugin type=\"com.itfsw.mybatis.generator.plugins.ModelColumnPlugin\"/>\n        <!-- 逻辑删除插件 -->\n        <plugin type=\"com.itfsw.mybatis.generator.plugins.LogicalDeletePlugin\">\n            <!-- 这里配置的是全局逻辑删除列和逻辑删除值，当然在table中配置的值会覆盖该全局配置 -->\n            <!-- 逻辑删除列类型只能为数字、字符串或者布尔类型 -->\n            <property name=\"logicalDeleteColumn\" value=\"deleted\"/>\n            <!-- 逻辑删除-已删除值 -->\n            <property name=\"logicalDeleteValue\" value=\"1\"/>\n            <!-- 逻辑删除-未删除值 -->\n            <property name=\"logicalUnDeleteValue\" value=\"0\"/>\n        </plugin>\n\n        <commentGenerator>\n            <property name=\"suppressDate\" value=\"true\"/>\n            <!--<property name=\"suppressAllComments\" value=\"true\"/>-->\n        </commentGenerator>\n\n        <!--数据库连接信息-->\n        <jdbcConnection driverClass=\"com.mysql.cj.jdbc.Driver\"\n                        connectionURL=\"jdbc:mysql://127.0.0.1:3306/litemall?useUnicode=true&amp;characterEncoding=UTF-8&amp;serverTimezone=UTC&amp;verifyServerCertificate=false&amp;useSSL=false&amp;nullCatalogMeansCurrent=true\"\n                        userId=\"litemall\"\n                        password=\"litemall123456\"/>\n\n        <javaTypeResolver>\n            <property name=\"useJSR310Types\" value=\"true\"/>\n        </javaTypeResolver>\n\n        <javaModelGenerator targetPackage=\"org.linlinjava.litemall.db.domain\" targetProject=\"src/main/java\"/>\n        <sqlMapGenerator targetPackage=\"org.linlinjava.litemall.db.dao\" targetProject=\"src/main/resources\"/>\n        <javaClientGenerator type=\"XMLMAPPER\" targetPackage=\"org.linlinjava.litemall.db.dao\"\n                             targetProject=\"src/main/java\"/>\n        <!--表名-->\n        <table tableName=\"litemall_ad\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_address\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_admin\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"role_ids\" javaType=\"java.lang.Integer[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_brand\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_cart\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"specifications\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_category\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_collect\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_comment\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"pic_urls\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n\n        <table tableName=\"litemall_feedback\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"pic_urls\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n\n        <table tableName=\"litemall_footprint\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_goods\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"gallery\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_goods_attribute\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_goods_specification\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_goods_product\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"specifications\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_issue\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_keyword\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_order\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_order_goods\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"specifications\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_region\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_search_history\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_storage\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_topic\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"goods\" javaType=\"java.lang.Integer[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_user\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_system\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n\n        <table tableName=\"litemall_groupon_rules\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_groupon\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_coupon\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"goods_value\" javaType=\"java.lang.Integer[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"/>\n        </table>\n        <table tableName=\"litemall_coupon_user\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_role\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_permission\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_log\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_notice\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_notice_admin\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n        </table>\n        <table tableName=\"litemall_aftersale\">\n            <generatedKey column=\"id\" sqlStatement=\"MySql\" identity=\"true\"/>\n            <columnOverride column=\"pictures\" javaType=\"java.lang.String[]\"\n                            typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n        </table>\n    </context>\n</generatorConfiguration>"
  },
  {
    "path": "litemall-db/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-db</artifactId>\n    <packaging>jar</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-json</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.mybatis.spring.boot</groupId>\n            <artifactId>mybatis-spring-boot-starter</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.github.pagehelper</groupId>\n            <artifactId>pagehelper-spring-boot-starter</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>mysql</groupId>\n            <artifactId>mysql-connector-java</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.alibaba</groupId>\n            <artifactId>druid-spring-boot-starter</artifactId>\n        </dependency>\n\n    </dependencies>\n\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.mybatis.generator</groupId>\n                <artifactId>mybatis-generator-maven-plugin</artifactId>\n                <version>1.3.7</version>\n                <configuration>\n                    <configurationFile>\n                        mybatis-generator/generatorConfig.xml\n                    </configurationFile>\n                    <overwrite>true</overwrite>\n                    <verbose>true</verbose>\n                </configuration>\n                <dependencies>\n                    <dependency>\n                        <groupId>mysql</groupId>\n                        <artifactId>mysql-connector-java</artifactId>\n                        <version>8.0.28</version>\n                    </dependency>\n                    <dependency>\n                        <groupId>com.itfsw</groupId>\n                        <artifactId>mybatis-generator-plugin</artifactId>\n                        <version>1.3.2</version>\n                    </dependency>\n                </dependencies>\n            </plugin>\n\n        </plugins>\n\n    </build>\n\n</project>"
  },
  {
    "path": "litemall-db/sql/README.md",
    "content": "这里的数据库由三个sql文件组成：\n\n1. litemall_schema.sql\n  \n   作用是创建空数据库、创建用户、设置访问权限。\n   \n   开发者开发测试阶段可以使用，但是部署生产阶段一定要注意修改这里的默认用户名和密码。\n\n2. litemall_table.sql\n\n   作用是创建数据库表，但是没有创建任何数据。\n   \n   因此，开发者可以在部署生产阶段直接使用。\n \n3. litemall_data.sql\n\n   作用是创建测试数据。\n   \n   这里的测试数据来自开源项目[nideshop-mini-program](https://github.com/tumobi/nideshop-mini-program)\n   \n   开发者开发测试阶段可以使用，但是部署开发阶段应该使用自己的数据。"
  },
  {
    "path": "litemall-db/sql/litemall_data.sql",
    "content": "--\n-- Host: 127.0.0.1    Database: litemall\n-- ------------------------------------------------------\n-- Server version\t5.7.21-log\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8 */;\n/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Dumping data for table `litemall_ad`\n--\n\nLOCK TABLES `litemall_ad` WRITE;\n/*!40000 ALTER TABLE `litemall_ad` DISABLE KEYS */;\nINSERT INTO `litemall_ad` VALUES (1,'合作 谁是你的菜','','http://yanxuan.nosdn.127.net/65091eebc48899298171c2eb6696fe27.jpg',1,'合作 谁是你的菜',NULL,NULL,1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,'活动 美食节','','http://yanxuan.nosdn.127.net/bff2e49136fcef1fd829f5036e07f116.jpg',1,'活动 美食节',NULL,NULL,1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,'活动 母亲节','','http://yanxuan.nosdn.127.net/8e50c65fda145e6dd1bf4fb7ee0fcecc.jpg',1,'活动 母亲节5',NULL,NULL,1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_ad` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_address`\n--\n\nLOCK TABLES `litemall_address` WRITE;\n/*!40000 ALTER TABLE `litemall_address` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_address` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_admin`\n--\n\nLOCK TABLES `litemall_admin` WRITE;\n/*!40000 ALTER TABLE `litemall_admin` DISABLE KEYS */;\nINSERT INTO `litemall_admin` VALUES (1,'admin123','$2a$10$.rEfyBb/GURD9P2p0fRg/OAJGloGNDkJS4lY0cQHeqDgsbdTylBpu',NULL,NULL,'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif','2018-02-01 00:00:00','2018-02-01 00:00:00',0,'[1]'),(4,'promotion123','$2a$10$wDZLOLLnzZ1EFZ3ldZ1XFOUWDEX6TnQCUFdJz4g.PoMaLTzS8TjWq','',NULL,'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif','2019-01-07 15:16:59','2019-01-07 15:17:34',0,'[3]'),(5,'mall123','$2a$10$aCtsc4rG6KmxQ59.IkYse.oRyKuwQoU2CPCmxSdB.d5nXq6aw/z4O','',NULL,'https://wpimg.wallstcn.com/f778738c-e4f8-4870-b634-56703b4acafe.gif','2019-01-07 15:17:25','2019-01-07 15:21:05',0,'[2]');\n/*!40000 ALTER TABLE `litemall_admin` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_aftersale`\n--\n\nLOCK TABLES `litemall_aftersale` WRITE;\n/*!40000 ALTER TABLE `litemall_aftersale` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_aftersale` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_brand`\n--\n\nLOCK TABLES `litemall_brand` WRITE;\n/*!40000 ALTER TABLE `litemall_brand` DISABLE KEYS */;\nINSERT INTO `litemall_brand` VALUES (1001000,'MUJI制造商','严选精选了MUJI制造商和生产原料，\\n用几乎零利润的价格，剔除品牌溢价，\\n让用户享受原品牌的品质生活。','http://yanxuan.nosdn.127.net/1541445967645114dd75f6b0edc4762d.png',2,12.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001002,'内野制造商','严选从世界各地挑选毛巾，最终选择了为日本内野代工的工厂，追求毛巾的柔软度与功能性。品质比肩商场几百元的毛巾。','http://yanxuan.nosdn.127.net/8ca3ce091504f8aa1fba3fdbb7a6e351.png',10,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001003,'Adidas制造商','严选找到为Adidas等品牌制造商，\\n选取优质原材料，与厂方一起设计，\\n为你提供好的理想的运动装备。','http://yanxuan.nosdn.127.net/335334d0deaff6dc3376334822ab3a2f.png',30,49.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001007,'优衣库制造商','严选找到日本知名服装UNIQLO的制造商，\\n选取优质长绒棉和精梳工艺，\\n与厂方一起设计，为你提供理想的棉袜。','http://yanxuan.nosdn.127.net/0d72832e37e7e3ea391b519abbbc95a3.png',12,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001008,'膳魔师制造商','严选深入保温行业内部，\\n找到德国膳魔师制造商的代工厂。\\n同样的品质，却有更优的价格。','http://yanxuan.nosdn.127.net/5fd51e29b9459dae7df8040c8219f241.png',40,45.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001010,'星巴克制造商','严选寻访全国保温杯制造企业，\\n最终找到高端咖啡品牌星巴克的制造商，\\n专注保温杯生产20年，品质与颜值兼备。','http://yanxuan.nosdn.127.net/5668bc50f2f2e551891044525710dc84.png',34,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001012,'Wedgwood制造商','严选寻访英国皇室御用陶瓷Wedgwood制造商，\\n制模到成品，历经25道工序、7次检验、3次烧制，\\n你看不见的地方，我们也在坚持。','http://yanxuan.nosdn.127.net/68940e8e23f96dbeb3548d943d83d5e4.png',21,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001013,'Royal Doulton制造商','严选深入英国最大骨瓷品牌Royal Doulton制造商， \\n顶级英国瓷器的代名词，广受世界皇室喜爱。\\n每件瓷器，都有自己的故事。','http://yanxuan.nosdn.127.net/0de643a02043fd9680b11e21c452adaa.png',47,24.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001015,'日本KEYUCA制造商','KEYUCA是日本餐具及料理用具品牌，\\n遵循极简原木风，高端餐具体验。\\n严选的餐具正是来自这一品牌制造商。','http://yanxuan.nosdn.127.net/9b85b45f23da558be101dbcc273b1d6d.png',49,14.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001016,'爱慕制造商','150家样品比对筛选，20家工厂深入走访，\\n严选最终选定高端内衣爱慕制造商，\\n20年品质保证，为你打造天然舒适的衣物。','http://yanxuan.nosdn.127.net/5104f84110eac111968c63c18ebd62c0.png',9,35.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001020,'Ralph Lauren制造商','我们与Ralph Lauren Home的制造商成功接洽，掌握先进的生产设备，传承品牌工艺和工序。追求生活品质的你，值得拥有。','http://yanxuan.nosdn.127.net/9df78eb751eae2546bd3ee7e61c9b854.png',20,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001037,'新秀丽制造商','严选为制作品质与颜值兼具的箱包，\\n选定新秀丽、CK、Ricardo等品牌合作的制造商，\\n拥有国内先进流水线20余条，实力保障品质。','http://yanxuan.nosdn.127.net/80dce660938931956ee9a3a2b111bd37.jpg',5,59.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001038,'Coach制造商','严选为制作高品质高颜值皮具配件，\\n由Coach、MK等品牌制造商生产，\\n由严选360度全程监制，给你带来优质皮具。','http://yanxuan.nosdn.127.net/1b1cc16135fd8467d40983f75f644127.png',3,49.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001039,'MK制造商','严选为制造高品质的皮具，\\n选择Michael Kors品牌合作的制造工厂，\\n18年专业皮具生产经验，手工至美，品质保证。','http://yanxuan.nosdn.127.net/fc9cd1309374f7707855de80522fb310.jpg',17,79.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1001045,'罗莱制造商','严选团队为打造吸湿透气柔软的蚕丝被，\\n从蚕茧原材到温感性能，多次甄选测试\\n选择罗莱制造商工厂，手工处理，优质舒适。','http://yanxuan.nosdn.127.net/14122a41a4985d23e1a172302ee818e9.png',45,699.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1003000,'Carters制造商','来自Carters大牌代工厂生产，\\n严选纯天然材料，无荧光不添加，\\nITS安心标志权威检测，安全护航。','http://yanxuan.nosdn.127.net/efe9131599ced0297213e6ec67eb2174.png',41,19.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005001,'Goody制造商','严选深入美国百年发饰品牌Goody制造商，\\n确保每把梳子做工精湛，养护头皮。\\n戴安娜王妃的最爱，你也能拥有。','http://yanxuan.nosdn.127.net/7c918f37de108f3687d69b39daab34eb.png',48,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006000,'范思哲制造商','严选找寻意大利奢侈品牌范思哲Versace的制造商，\\n致力于为用户带来精致、优雅、时尚的皮包，\\n传承独特美感，体验品质生活。','http://yanxuan.nosdn.127.net/c80ae035387495a61a4515906205efff.png',18,99.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008000,'WPC制造商','严选寻找日本雨伞品牌W.P.C制造商，\\n采用严谨工艺以及环保材料，\\n沉淀15年行业经验，打造精致雨具。','http://yanxuan.nosdn.127.net/c4e97cc87186ce17f9316f3ba39e220c.png',22,59.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010001,'竹宝堂制造商','严选走访河北、安徽等制刷基地，\\n选定竹宝堂、丝芙兰等品牌的制造商，\\n严格把关生产与质检，与您一同追求美的生活。','http://yanxuan.nosdn.127.net/61b0b7ae4f0163422009defbceaa41ad.jpg',39,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010002,'资生堂制造商','发现美，成为美，是女性一生的追求。\\n严选找寻资生堂代工厂，打造天然美妆产品，\\n致力于带来更多美的体验和享受。','http://yanxuan.nosdn.127.net/5449236b80d1e678dedee2f626cd67c4.png',19,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1015000,'NITORI制造商','宠物是人类最温情的陪伴，\\n严选找寻日本最大家居品牌NITORI制造商，\\n每一个脚印，都是为了更好地关怀你的TA','http://yanxuan.nosdn.127.net/6f3d310601b18610553c675e0e14d107.png',43,69.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1016002,'HUGO BOSS制造商','严选深入德国知名奢侈品HUGO BOSS的制造商，\\n开发睡衣、睡袍、休闲裤等轻奢品质家居服，\\n希望你在家的每一天都优雅精致。','http://yanxuan.nosdn.127.net/70ada9877b2efa82227437af3231fe50.png',11,45.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1018000,'Sperry制造商','严选团队对比多家硫化鞋制造商产品质量，\\n走访多个制鞋工厂，最终选定Sperry品牌制造商，\\n为你提供一双舒适有型的高品质帆布鞋。','http://yanxuan.nosdn.127.net/2eb12d84037346441088267432da31c4.png',32,199.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021000,'Marc Jacobs制造商','严选寻访独立设计品牌Marc Jacobs的制造商，\\n严格选材，细究纺织与生产的细节，多次打磨，\\n初心不忘，为你带来优雅高档的服饰配件。','http://yanxuan.nosdn.127.net/c8dac4eb1a458d778420ba520edab3d0.png',24,69.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1022000,'UGG制造商','为寻找优质的皮毛一体雪地靴，\\n严选走访多家雪地靴制造商，对比工艺，\\n甄选UGG认可的代工厂，只为足下的优雅舒适。','http://yanxuan.nosdn.127.net/4d2a3dea7e0172ae48e8161f04cfa045.jpg',29,59.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1022001,'Palladium制造商','严选探访多个制鞋大厂，选定Palladium制造商，\\n对比工艺选材，找到传承多年的制鞋配方，\\n只为制作一款高品质休闲鞋。','http://yanxuan.nosdn.127.net/3480f2a4026c60eb4921f0aa3facbde8.png',31,249.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023000,'PetitBateau小帆船制造商','为打造适合宝宝的婴童服装，\\n严选团队寻找PetitBateau小帆船的品牌制造商，\\n无荧光剂，国家A类标准，让宝宝穿的放心。','http://yanxuan.nosdn.127.net/1a11438598f1bb52b1741e123b523cb5.jpg',25,36.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1024000,'WMF制造商','严选找寻德国百年高端厨具WMF的制造商，\\n选择拥有14年经验的不锈钢生产工厂，\\n为你甄选事半功倍的优质厨具。','http://yanxuan.nosdn.127.net/2018e9ac91ec37d9aaf437a1fd5d7070.png',8,9.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1024001,'OBH制造商','严选寻找OBH品牌的制造商，打造精致厨具，\\n韩国独资工厂制造，严格质检，品质雕琢\\n力求为消费者带来全新的烹饪体验。','http://yanxuan.nosdn.127.net/bf3499ac17a11ffb9bb7caa47ebef2dd.png',42,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1024003,'Stoneline制造商','严选找寻德国经典品牌Stoneline的制造商，\\n追踪工艺，考量细节，亲自试用，\\n为你甄选出最合心意的锅具和陶瓷刀，下厨如神。','http://yanxuan.nosdn.127.net/3a44ae7db86f3f9b6e542720c54cc349.png',28,9.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1024006,'KitchenAid制造商','严选寻访KitchenAid品牌的制造商，\\n采用德国LFGB认证食品级专用不锈钢，\\n欧式简约设计，可靠安心，尽享下厨乐趣。','http://yanxuan.nosdn.127.net/e11385bf29d1b3949435b80fcd000948.png',46,98.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1025000,'Timberland制造商','为制作优质时尚的工装鞋靴，\\n严选团队深入探访国内外制靴大厂，选择Timberland制造商，\\n工厂拥有15年制鞋历史，专业品质有保证。','http://yanxuan.nosdn.127.net/6dcadb0791b33aa9fd00380b44fa6645.png',37,359.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1025001,'Kenneth Cole制造商','为出品优质格调的商务鞋靴，\\n严选团队选择Kenneth Cole品牌合作的制造商，\\n一切努力，只为打造高品质鞋靴。','http://yanxuan.nosdn.127.net/236322546c6860e1662ab147d6b0ba2f.jpg',7,349.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1026000,'CK制造商','严选寻访Calvin Klein品牌的制造商，\\n深入世界领带第一生产地，设计与品质并重，\\n致力于给消费者带来优质典雅的服饰用品。','http://yanxuan.nosdn.127.net/658f09b7ec522d31742b47b914d64338.png',1,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1026001,'Under Armour制造商','严选为甄选优质好袜，走访东北、新疆等产袜基地，\\n最终选定Under Armour品牌的合作制造商，\\n从原料、工艺、品质多维度筛选监制，保证好品质。','http://yanxuan.nosdn.127.net/4e93ea29b1d06fabfd24ba68a9b20a34.jpg',35,39.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1028000,'Gucci制造商','严选为设计一款优雅时尚的品质礼帽，\\n找寻拥有10来年经验的大型毛毡帽厂商合作，\\n坚持打造好设计、好工艺、好材质的潮流礼帽。','http://yanxuan.nosdn.127.net/278869cad9bf5411ffc18982686b88fb.jpg',23,59.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1028003,'Burberry制造商','为打造时尚舒适的童装系列，\\n严选选择Burberry制造商，优化版型配色\\n英伦风情融入经典格纹，百搭优雅气质款。','http://yanxuan.nosdn.127.net/07af01e281c7e0b912d162d611e22c32.jpg',4,99.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1033003,'Armani制造商','严选团队携手国际标准化专业生产厂家，\\n厂家长期为Armani、Alexander wang等知名品牌代工，\\n专业进口设备，精密质量把控，精于品质居家体验。','http://yanxuan.nosdn.127.net/981e06f0f46f5f1f041d7de3dd3202e6.jpg',26,199.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1033004,'爱马仕集团制造商','严选采用欧洲一线品牌爱马仕的御用香料供应商，\\n经过反复配比改良、试香调香、选品定样，\\n为你带来独特馥郁的散香体验。','http://yanxuan.nosdn.127.net/d98470dd728fb5a91f7aceade07572b5.png',33,19.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1034001,'Alexander McQueen制造商','为制造精致实用的高品质包包，\\n严选团队选择Alexander McQueen制造商，\\n严格筛选，带来轻奢优雅体验。','http://yanxuan.nosdn.127.net/db7ee9667d84cbce573688297586699c.jpg',16,69.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1037000,'厚木ATSUGI制造商','严选考究袜子品质，层层把关原料生产，\\n携手12年行业生产资质的厚木品牌制造商，\\n带来轻盈优雅，舒适显瘦的袜子系列。','http://yanxuan.nosdn.127.net/7df55c408dbac6085ed6c30836c828ac.jpg',27,29.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1038000,'Birkenstock集团制造商','为打造一双舒适的软木拖鞋，\\n严选团队寻找BIRKENSTOCK集团旗下产品制造商，\\n360度全程监制，舒适随脚，百搭文艺。','http://yanxuan.nosdn.127.net/05a2ecffb60b77e4c165bd8492e5c22a.jpg',14,59.90,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1038001,'Nine West制造商','为打造一双优雅舒适的高跟鞋，\\n严选选择美国Nine West玖熙品牌的制造商，\\n让美丽绽放在足尖。','http://yanxuan.nosdn.127.net/ad4df7848ce450f00483c2d5e9f2bfa7.png',13,219.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1039000,'TEFAL制造商','严选对标国际品质，致力于高品质生活好物，\\n执着寻求优质厨房电器供应商，\\n携手WMF、Tefal制造商，打造高品质厨具。','http://yanxuan.nosdn.127.net/2b7a07e25a3f3be886a7fb90ba975bb7.png',44,259.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1039001,'京瓷制造商','严选想为你的厨房生活，带来新鲜感和活力，\\n深入全国各地，选择日本京瓷等品牌代工厂，\\n打造钻石系列厨具，颜值与品质兼具。','http://yanxuan.nosdn.127.net/3dda530605e3ab1c82d5ed30f2489473.png',38,89.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1040000,'Tescom制造商','严选为打造时尚健康的个护电器，\\n选择Tescom品牌制造商，全球最大个护电器工厂之一，\\n拥有20年经验，出口180多个国家，品质有保障。','http://yanxuan.nosdn.127.net/c17cd65971189fdc28f5bd6b78f657a7.png',15,59.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1041000,'BCBG制造商','严选从产品源头开始，每道工序质量把关，\\n选择美国知名品牌BCBG的制造商合作，\\n严谨匠心，致力于优质柔滑的睡衣穿搭产品。','http://yanxuan.nosdn.127.net/b9072023afd3621714fd5c49f140fca8.png',36,99.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1046000,'Police制造商','严选团队选定Police品牌制造商合作，\\n有11年眼镜生产资质，兼顾品质与品味，\\n为你带来专业时尚的墨镜。','http://yanxuan.nosdn.127.net/66e2cb956a9dd1efc7732bea278e901e.png',6,109.00,'2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_brand` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_cart`\n--\n\nLOCK TABLES `litemall_cart` WRITE;\n/*!40000 ALTER TABLE `litemall_cart` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_cart` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_category`\n--\n\nLOCK TABLES `litemall_category` WRITE;\n/*!40000 ALTER TABLE `litemall_category` DISABLE KEYS */;\nINSERT INTO `litemall_category` VALUES (1005000,'居家','','回家，放松身心',0,'http://yanxuan.nosdn.127.net/a45c2c262a476fea0b9fc684fed91ef5.png','http://yanxuan.nosdn.127.net/e8bf0cf08cf7eda21606ab191762e35c.png','L1',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005001,'餐厨','','爱，囿于厨房',0,'http://yanxuan.nosdn.127.net/ad8b00d084cb7d0958998edb5fee9c0a.png','http://yanxuan.nosdn.127.net/3708dbcb35ad5abf9e001500f73db615.png','L1',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005002,'饮食','','好吃，高颜值美食',0,'http://yanxuan.nosdn.127.net/c9280327a3fd2374c000f6bf52dff6eb.png','http://yanxuan.nosdn.127.net/fb670ff3511182833e5b035275e4ac09.png','L1',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005007,'锅具','','一口好锅，炖煮生活一日三餐',1005001,'http://yanxuan.nosdn.127.net/4aab4598017b5749e3b63309d25e9f6b.png','http://yanxuan.nosdn.127.net/d2db0d1d0622c621a8aa5a7c06b0fc6d.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005008,'餐具','','餐桌上的舞蹈',1005001,'http://yanxuan.nosdn.127.net/f109afbb7e7a00c243c1da29991a5aa3.png','http://yanxuan.nosdn.127.net/695ed861a63d8c0fc51a51f42a5a993b.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005009,'清洁','','环保便利，聪明之选',1005001,'http://yanxuan.nosdn.127.net/e8b67fe8b8db2ecc2e126a0aa631def0.png','http://yanxuan.nosdn.127.net/3a40faaef0a52627357d98ceed7a3c45.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005010,'炒货','','精选原产地，美味加营养',1005002,'http://yanxuan.nosdn.127.net/6c43063003207168c1d8e83a923e8515.png','http://yanxuan.nosdn.127.net/3972963a4b6f9588262d2a667f4c1c73.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005011,'小食','','原香鲜材，以小食之味，带来味蕾惊喜',1005002,'http://yanxuan.nosdn.127.net/663f568475c994358bf31bcb67d122fe.png','http://yanxuan.nosdn.127.net/418f86049f957108a31ad55cec42c349.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005012,'食材','','天时地利人和，寻找这个时节这个地点的味道',1005002,'http://yanxuan.nosdn.127.net/e050980992725b7932bb3645fe5aec08.png','http://yanxuan.nosdn.127.net/80db363e0687b1a65edc6e75c1b99726.png','L2',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1005013,'冲饮','','以用料天然之美，尽享闲雅之意',1005002,'http://yanxuan.nosdn.127.net/2919b0d6eec79182cca31dc827f4d00a.png','http://yanxuan.nosdn.127.net/1e3d8f65c7c7811baccdfda6711cbfd5.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1007000,'杯壶','','精工生产制作，匠人手艺',1005001,'http://yanxuan.nosdn.127.net/0b244d3575b737c8f0ed7e84c5c4abd2.png','http://yanxuan.nosdn.127.net/ec53828a3814171079178a59fb2593da.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008000,'配件','','配角，亦是主角',0,'http://yanxuan.nosdn.127.net/11abb11c4cfdee59abfb6d16caca4c6a.png','http://yanxuan.nosdn.127.net/02f9a44d05c05c0dd439a5eb674570a2.png','L1',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008001,'毛巾','','日本皇室专供，内野制造商出品',1013001,'http://yanxuan.nosdn.127.net/44ad9a739380aa6b7cf956fb2a06e7a7.png','http://yanxuan.nosdn.127.net/c53d2dd5ba6b1cfb55bd42ea0783f051.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008002,'布艺软装','','各种风格软装装点你的家',1005000,'http://yanxuan.nosdn.127.net/8bbcd7de60a678846664af998f57e71c.png','http://yanxuan.nosdn.127.net/2e2fb4f2856a021bbcd1b4c8400f2b06.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008003,'鞋','','一双好鞋，才能带你到远方',1008000,'http://yanxuan.nosdn.127.net/4316c2d05745bc90d1f333e363e571bd.png','http://yanxuan.nosdn.127.net/85566d138ea55e6aaeda2cda02df66f8.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008004,'袜子','','新百伦、阿迪达斯等制造商出品',1010000,'http://yanxuan.nosdn.127.net/f123c74f54d9acff0bd1546c60034814.png','http://yanxuan.nosdn.127.net/13f256bac02bb27d74e035ad25cbd375.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008005,'户外','','MUJI、Nike等制造商出品',1012000,'http://yanxuan.nosdn.127.net/83d22ca3d1c8f94ee23ca96de489864c.png','http://yanxuan.nosdn.127.net/833476fc3ecc30a7446279b787328775.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008006,'口罩','','为你遮挡雾霾',1012000,'http://yanxuan.nosdn.127.net/9b93e661ff59cbda6094e8b30a63724e.png','http://yanxuan.nosdn.127.net/11d9700da759f2c962c2f6d9412ac2a1.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008007,'围巾件套','','围上它，你的造型才完整',1008000,'http://yanxuan.nosdn.127.net/3a8c7ae5b9dc5c1c4b7f2b656abb0279.png','http://yanxuan.nosdn.127.net/6beb3fd67106e42dc0f026b173373d16.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008008,'被枕','','守护你的睡眠时光',1005000,'http://yanxuan.nosdn.127.net/927bc33f7ae2895dd6c11cf91f5e3228.png','http://yanxuan.nosdn.127.net/b43ef7cececebe6292d2f7f590522e05.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008009,'床品件套','','MUJI等品牌制造商出品',1005000,'http://yanxuan.nosdn.127.net/243e5bf327a87217ad1f54592f0176ec.png','http://yanxuan.nosdn.127.net/81f671bd36bce05d5f57827e5c88dd1b.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008010,'拖鞋','','穿上拖鞋，回到自我',1008000,'http://yanxuan.nosdn.127.net/1121696544ed9b0c2a70e82f1088fa0e.png','http://yanxuan.nosdn.127.net/984ddb9671aab41651784ba55b2cbdcf.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008011,'清洁保鲜','','真空保鲜，美味不限时',1005001,'http://yanxuan.nosdn.127.net/dc4d6c35b9f4abb42d2eeaf345710589.png','http://yanxuan.nosdn.127.net/04cd632e1589adcc4345e40e8ad75d2b.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008012,'功能厨具','','下厨省力小帮手',1005001,'http://yanxuan.nosdn.127.net/22db4ccbf52dc62c723ac83aa587812a.png','http://yanxuan.nosdn.127.net/5b94463017437467a93ae4af17c2ba4f.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008013,'茶具咖啡具','','先进工艺制造，功夫体验',1005001,'http://yanxuan.nosdn.127.net/9ea192cd2719c8348f42ec17842ba763.png','http://yanxuan.nosdn.127.net/be3ba4056e274e311d1c23bd2931018d.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008014,'糖巧','','糖心蜜意，甜而不腻',1005002,'http://yanxuan.nosdn.127.net/db48a1db4daab74233656caaea4a06f3.png','http://yanxuan.nosdn.127.net/c12cf29b574c7e9d1fcff6a57a12eea2.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008015,'糕点','','四季糕点，用心烘焙',1005002,'http://yanxuan.nosdn.127.net/93168242df456b5f7bf3c89653b3db76.png','http://yanxuan.nosdn.127.net/66ea1d6ad602a8e441af7cada93bdc7a.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008016,'灯具','','一盏灯，温暖一个家',1005000,'http://yanxuan.nosdn.127.net/c48e0d9dcfac01499a437774a915842b.png','http://yanxuan.nosdn.127.net/f702dc399d14d4e1509d5ed6e57acd19.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008017,'收纳','','选自古驰竹柄原料供应商',1012000,'http://yanxuan.nosdn.127.net/fdc048e1bf4f04d1c20b32eda5d1dc6e.png','http://yanxuan.nosdn.127.net/2a62f6c53f4ff089fa6a210c7a0c2e63.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1008018,'单肩包','','单肩装上惬意心情',1008000,'http://yanxuan.nosdn.127.net/2f71c7710f0bf857e787e1adb449c8a2.png','http://yanxuan.nosdn.127.net/55f34f23ed31f31e1313ff33602f90cc.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009000,'日用清洁','','洁净才能带来清爽心情',1013001,'http://yanxuan.nosdn.127.net/e071686c212e93aa2fcafd0062a9c613.png','http://yanxuan.nosdn.127.net/729638bb13997f9c4c435b41ce6ed910.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010000,'服装','','贴身的，要亲肤',0,'http://yanxuan.nosdn.127.net/28a685c96f91584e7e4876f1397767db.png','http://yanxuan.nosdn.127.net/622c8d79292154017b0cbda97588a0d7.png','L1',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010001,'内衣','','给你贴身的关怀',1010000,'http://yanxuan.nosdn.127.net/20279e1753e4eedc6e347857acda9681.png','http://yanxuan.nosdn.127.net/02fede55aba1bc6c9d7f7c01682f9e2d.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010002,'内裤','','来自李维斯、爱慕等制造商',1010000,'http://yanxuan.nosdn.127.net/364269344ed69adafe1b70ab7998fc50.png','http://yanxuan.nosdn.127.net/0a7fe0a08c195ca2cf55d12cd3c30f09.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010003,'地垫','','家里的第“五”面墙',1005000,'http://yanxuan.nosdn.127.net/83d4c87f28c993af1aa8d3e4d30a2fa2.png','http://yanxuan.nosdn.127.net/1611ef6458e244d1909218becfe87c4d.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010004,'双肩包','','背上的时髦',1008000,'http://yanxuan.nosdn.127.net/5197c44b610d786796f955334b55c7a5.png','http://yanxuan.nosdn.127.net/506d19510c967ba137283035a93738a1.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011000,'婴童','','爱，从心开始',0,'http://yanxuan.nosdn.127.net/1ba9967b8de1ac50fad21774a4494f5d.png','http://yanxuan.nosdn.127.net/9cc0b3e0d5a4f4a22134c170f10b70f2.png','L1',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011001,'妈咪','','犬印、Harvest Hills制造商',1011000,'http://yanxuan.nosdn.127.net/720aebaa529df9391b95a078dfb2fd5c.png','http://yanxuan.nosdn.127.net/844e2f4dce94f71283840c141d4ca71b.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011002,'海外','','来自海外制造商的好物',1012000,'http://yanxuan.nosdn.127.net/da884ff3b9e9d5276986c99e85722461.png','http://yanxuan.nosdn.127.net/fd1de05d274222f1e56d057d2f2c20c6.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011003,'床垫','','承托你的好时光',1005000,'http://yanxuan.nosdn.127.net/316afeb3948b295dfe073e4c51f77a42.png','http://yanxuan.nosdn.127.net/d6e0e84961032fc70fd52a8d4d0fb514.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011004,'家饰','','装饰你的家',1005000,'http://yanxuan.nosdn.127.net/ab0df9445d985bf6719ac415313a8e88.png','http://yanxuan.nosdn.127.net/79275db76b5865e6167b0fbd141f2d7e.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1012000,'杂货','','解忧，每个烦恼',0,'http://yanxuan.nosdn.127.net/c2a3d6349e72c35931fe3b5bcd0966be.png','http://yanxuan.nosdn.127.net/547853361d29a37282f377b9a755dd37.png','L1',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1012001,'功能箱包','','范思哲、Coach等品牌制造商出品',1008000,'http://yanxuan.nosdn.127.net/3050a2b3052d766c4b460d4b766353a3.png','http://yanxuan.nosdn.127.net/0645dcda6172118f9295630c2a6f234f.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1012002,'雨具','','WPC制作商出品',1012000,'http://yanxuan.nosdn.127.net/4e929a21baebdb1200361d8097e35e45.png','http://yanxuan.nosdn.127.net/589da0f02917b8393197a43175764381.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1012003,'文具','','找回书写的力量',1012000,'http://yanxuan.nosdn.127.net/e1743239e41ca9af76875aedc73be7f0.png','http://yanxuan.nosdn.127.net/e074795f61a83292d0f20eb7d124e2ac.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013000,'靴','','经典的温暖',1008000,'http://yanxuan.nosdn.127.net/868c2a976719cd508e9ddf807167a446.png','http://yanxuan.nosdn.127.net/59485f1aa100e4210e16175f3412fa41.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013001,'洗护','','亲肤之物，严选天然',0,'http://yanxuan.nosdn.127.net/9fe068776b6b1fca13053d68e9c0a83f.png','http://yanxuan.nosdn.127.net/1526ab0f5982722adbc8726f9f2a338c.png','L1',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013002,'美妆','','为你的面容添色',1013001,'http://yanxuan.nosdn.127.net/aa49c088f74a1c318f1765cc2703495a.png','http://yanxuan.nosdn.127.net/d6a7b9a2eb6af92d709429798a4ca3ea.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013003,'护发','','呵护秀发，柔顺不同发质',1013001,'http://yanxuan.nosdn.127.net/672ddbed88d9762d2be789080880b16a.png','http://yanxuan.nosdn.127.net/398375d0e39574c6e87273d328316186.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013004,'香薰','','爱马仕集团制造商出品',1013001,'http://yanxuan.nosdn.127.net/d43e7af0a6a9385d88be2ca1df679158.png','http://yanxuan.nosdn.127.net/fc7764ff8e12d18f6c5881a32318ed16.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013005,'刀剪砧板','','传统工艺 源自中国刀城',1005001,'http://yanxuan.nosdn.127.net/9d481ea4c2e9e6eda35aa720d407332e.png','http://yanxuan.nosdn.127.net/555afbfe05dab48c1a3b90dcaf89b4f2.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1013006,'家居服','','舒适亲肤',1010000,'http://yanxuan.nosdn.127.net/71f391af17fce739a6a57a1eeadbcbf0.png','http://yanxuan.nosdn.127.net/5da102ea4c64081ce3a05a91c855fbc9.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1015000,'家具','','大师级工艺',1005000,'http://yanxuan.nosdn.127.net/4f00675caefd0d4177892ad18bfc2df6.png','http://yanxuan.nosdn.127.net/d5d41841136182bf49c1f99f5c452dd6.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1015001,'T恤','','自在而潇洒的穿着感',1010000,'http://yanxuan.nosdn.127.net/24a7a33cfeac0bb87a737480db79e053.png','http://yanxuan.nosdn.127.net/505c9a5a794b79e85fef4654722b3447.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1017000,'宠物','','抑菌除味，打造宠物舒适空间',1005000,'http://yanxuan.nosdn.127.net/a0352c57c60ce4f68370ecdab6a30857.png','http://yanxuan.nosdn.127.net/dae4d6e89ab8a0cd3e8da026e4660137.png','L2',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1018000,'夏日甜心','','湖南卫视《夏日甜心》周边',1019000,'http://yanxuan.nosdn.127.net/b5e9f174404ef81b8603d6ecc304c62e.png','http://yanxuan.nosdn.127.net/2b8497fe583d3c9759128b2d76f89dfd.png','L2',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1019000,'志趣','','周边精品，共享热爱',0,'http://yanxuan.nosdn.127.net/7093cfecb9dde1dd3eaf459623df4071.png','http://yanxuan.nosdn.127.net/1706e24a5e605870ba3b37ff5f49aa18.png','L1',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020000,'出行用品','','出行小物，贴心相伴',1012000,'http://yanxuan.nosdn.127.net/b29a11afa76b9f4a57131555f1a54c77.png','http://yanxuan.nosdn.127.net/81e18c6970a7809ee0d86f0545428aa4.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020001,'面部护理','','温和无刺激的呵护',1013001,'http://yanxuan.nosdn.127.net/f73df75f334126cf1f3823696ea0663c.png','http://yanxuan.nosdn.127.net/babf6573f8acd53f21205a7577ec03e1.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020002,'用具','','小工具成就美好浴室',1013001,'http://yanxuan.nosdn.127.net/1a851b2b3c9e16bdfd020a5fc03e9140.png','http://yanxuan.nosdn.127.net/4e3aebbd7ffef5bb250d19f13cb85620.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020003,'服饰','','萌宝穿搭，柔软舒适触感',1011000,'http://yanxuan.nosdn.127.net/4e50f3c4e4d0a64cd0ad14cfc0b6bd17.png','http://yanxuan.nosdn.127.net/004f5f96df4aeb0645abbd70c0637239.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020004,'婴童洗护','','天然，呵护宝宝肌肤',1011000,'http://yanxuan.nosdn.127.net/c55338691ebd46bee9ebf225f80363ce.png','http://yanxuan.nosdn.127.net/f2e301b189befff1d99adf917ba8ce20.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020005,'寝居','','无荧光剂，婴幼儿A类标准',1011000,'http://yanxuan.nosdn.127.net/0f3c5ad63139096fd0760219e12149af.png','http://yanxuan.nosdn.127.net/476995896abea91d3f2e9ec20d56bd8d.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020006,'玩具','','萌宝童趣必备',1011000,'http://yanxuan.nosdn.127.net/7aac7c5819f71345a52a4b9df23d6239.png','http://yanxuan.nosdn.127.net/34b3267efcddad09cd652f181d87aab0.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020007,'喂养','','宝宝吃得香，妈妈才放心',1011000,'http://yanxuan.nosdn.127.net/5db40a5bf84c177515610471d4d08687.png','http://yanxuan.nosdn.127.net/6b6f1672fe041594245fe56a5dd80871.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020008,'配饰','','与众不同的点睛之笔',1008000,'http://yanxuan.nosdn.127.net/d835a76e56a88905194f543b67089b4b.png','http://yanxuan.nosdn.127.net/57ce29ca06f592d65aabfa5f0f87ad43.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020009,'外衣','','穿出时尚感',1010000,'http://yanxuan.nosdn.127.net/883d89e54a9287569a201eca388a7cda.png','http://yanxuan.nosdn.127.net/647f7c39eb7c353958274a59fd821d03.png','L2',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020010,'衬衫','','细节讲究，合身剪裁',1010000,'http://yanxuan.nosdn.127.net/94aa4a4814e2a7a97639438f1d52dcee.png','http://yanxuan.nosdn.127.net/7927f8422c341f7353041a30d01045a2.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021000,'节日礼盒','','限量礼盒限时发售',1012000,'http://yanxuan.nosdn.127.net/e7b37b1ed5c18d63dc3e6c3f1aa85d8a.png','http://yanxuan.nosdn.127.net/bbb6f0ab4f6321121250c12583b0ff9a.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1022000,'数码','','智能硬件，匠心出品',1008000,'http://yanxuan.nosdn.127.net/3ec003761d346bc866de2ec249d7ff19.png','http://yanxuan.nosdn.127.net/c33b13875a86da535c935e3d454a6fd2.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023000,'厨房小电','','厨房里的省心小电器',1005001,'http://yanxuan.nosdn.127.net/521bd0c02d283b80ba49e73ca84df250.png','http://yanxuan.nosdn.127.net/c09d784ba592e4fadabbaef6b2e95a95.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1025000,'礼品卡','','送礼、福利首选',1019000,'http://yanxuan.nosdn.127.net/bb9232716b2fc96d9bdbac4955360dfa.png','http://yanxuan.nosdn.127.net/1266f0767a3f67298a40574df0d177fb.png','L2',11,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1027000,'茗茶','','一品茶香，品茗即是观心，饮茶涤净尘虑',1005002,'http://yanxuan.nosdn.127.net/0c5af0575176c4a3023783bef7a87a0f.png','http://yanxuan.nosdn.127.net/cfeb623929f3936cc882ffc6a9a2e927.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1027001,'果干','','品尝与收获到的是自然的味道',1005002,'http://yanxuan.nosdn.127.net/60f4ae2beef4754347fa36208f84efab.png','http://yanxuan.nosdn.127.net/4cdbf6ae196671cca154fe16e152d8d4.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1028001,'唱片','','经典音乐，用心典藏，瑞鸣音乐大师匠心打造',1019000,'http://yanxuan.nosdn.127.net/71feb3efd3eaee01a74e8aa78430de9d.png','http://yanxuan.nosdn.127.net/3b69079ea27f90b4f539e8c3b76680f5.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032000,'魔兽世界','','艾泽拉斯的冒险，才刚刚开始',1019000,'http://yanxuan.nosdn.127.net/336f0186a9920eb0f93a3912f3662ffe.png','http://yanxuan.nosdn.127.net/becfba90e8a5c95d403b8a6b9bb77825.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032001,'炉石传说','','快进来坐下吧，看看酒馆的新玩意',1019000,'http://yanxuan.nosdn.127.net/97937fcf2defb864d9e53d98a337d78a.png','http://yanxuan.nosdn.127.net/b5af3f6bfcbeb459d6c448ba87f8cc35.png','L2',2,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032002,'守望先锋','','物美价廉的补给箱',1019000,'http://yanxuan.nosdn.127.net/8cab7bf1225dc9893bd9de06fc51921d.png','http://yanxuan.nosdn.127.net/a562f05bf38f5ee478fefb81856aad3d.png','L2',3,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032003,'暗黑破坏神III','','奈非天们，停下脚步整理下行囊',1019000,'http://yanxuan.nosdn.127.net/8fe4eb999f748236228a73e09878e277.png','http://yanxuan.nosdn.127.net/1e19e948de63a1d0895a8620250c441f.png','L2',4,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032004,'星际争霸II','','记录科普卢星区的战斗时光',1019000,'http://yanxuan.nosdn.127.net/433ff879a3686625535ca0304be22ab2.png','http://yanxuan.nosdn.127.net/7394ce778791ae8242013d6c974f47e0.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1032005,'风暴英雄','','时空枢纽，是个充满惊喜的地方',1019000,'http://yanxuan.nosdn.127.net/e091aae0c8cafc5ab48dfabcc52c79b6.png','http://yanxuan.nosdn.127.net/ff1e28fb7151008f8dc46bbf8b357f63.png','L2',6,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1033000,'梦幻西游','','梦幻西游精品周边',1019000,'http://yanxuan.nosdn.127.net/f0698297aaac41b778c1ea65eefb8b34.png','http://yanxuan.nosdn.127.net/36711325781ca50fdfe234489fca973e.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1034000,'丝袜','','厚木制造商，专利冰丝',1010000,'http://yanxuan.nosdn.127.net/d82d0bacfd7243c2ad09dbf2513cfcf9.png','http://yanxuan.nosdn.127.net/4f8f86dfd1d4b46a9cf783b4980db47f.png','L2',5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1034001,'童车童椅','','安全舒适，给宝宝一个快乐童年',1011000,'http://yanxuan.nosdn.127.net/06bbfb293b6194b27ebdb3350203a1f7.png','http://yanxuan.nosdn.127.net/4d16871eb80dac59d1796c7d806a5cea.png','L2',7,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1035000,'卫衣','','舒适百搭，时尚选择',1010000,'http://yanxuan.nosdn.127.net/97bb55280b8ffa40390f2ee36486314a.png','http://yanxuan.nosdn.127.net/0282a81bbcae6c39918808fe7c4e1b93.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1035001,'毛衣','','温暖柔软，品质之选',1010000,'http://yanxuan.nosdn.127.net/cc886f16c8b9893305f1b3b6ad4eb0b1.png','http://yanxuan.nosdn.127.net/b610b058cfd73a9211dc890b7b0cbc66.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1035002,'裤装','','高质感面料，休闲商务两相宜',1010000,'http://yanxuan.nosdn.127.net/a3906045b1367d70f658ce9de03e8193.png','http://yanxuan.nosdn.127.net/1728b4eeaa7a3928f5416884f0e75b1c.png','L2',11,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1035003,'肉制品','','真嗜肉者，都爱这一味，佳肴美馔真滋味',1005002,'http://yanxuan.nosdn.127.net/db3e11b8a6974a253818ae0d6fb2d24e.png','http://yanxuan.nosdn.127.net/94480324b376a51af47cf92df70d1ade.png','L2',8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036000,'夏凉','','夏凉床品，舒适一夏',1005000,'http://yanxuan.nosdn.127.net/13ff4decdf38fe1a5bde34f0e0cc635a.png','http://yanxuan.nosdn.127.net/bd17c985bacb9b9ab1ab6e9d66ee343c.png','L2',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036001,'眼镜','','实用加时尚，造型百搭单品',1012000,'http://yanxuan.nosdn.127.net/97f5f75ea1209dfbb85e91932d26c3ed.png','http://yanxuan.nosdn.127.net/c25fb420ccb6f692a2d16f1740b60d21.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036002,'汽车用品','','给你的爱车添装备',1012000,'http://yanxuan.nosdn.127.net/382cda1ef9cca77d99bcef05070d7db0.png','http://yanxuan.nosdn.127.net/552e943e585a999169fdbc57b59524d6.png','L2',10,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036003,'调味','','烹饪必备，美食调味',1005002,'http://yanxuan.nosdn.127.net/2ae44a3944f2bc737416e1cff3d4bcef.png','http://yanxuan.nosdn.127.net/13d58949a8c72ec914b5ef63ac726a43.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036004,'大话西游','','大话西游正版周边',1019000,'http://yanxuan.nosdn.127.net/b60618db213322bdc2c5b1208655bd7e.png','http://yanxuan.nosdn.127.net/470a017f508e9a18f3068be7b315e14b.png','L2',9,'2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_category` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_collect`\n--\n\nLOCK TABLES `litemall_collect` WRITE;\n/*!40000 ALTER TABLE `litemall_collect` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_collect` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_comment`\n--\n\nLOCK TABLES `litemall_comment` WRITE;\n/*!40000 ALTER TABLE `litemall_comment` DISABLE KEYS */;\nINSERT INTO `litemall_comment` VALUES (1,1181000,0,'布料很厚实，触感不错，洗过之后不缩水不掉色','',1,1,'[\\\"https://yanxuan.nosdn.127.net/218783173f303ec6d8766810951d0790.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,1181000,0,'料子很舒服，凉凉的，配合蚕丝被，夏天很凉快~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/33978a0d6f56d94c45e4fc594b4b8606.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,1181000,0,'一直喜欢粗布的床上用品。冬暖夏凉。这套看起来非常漂亮。实际感觉有点粗布的感觉。很好！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d3975d1b6d88e9f9d762cd9a879d1a14.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,1006002,0,'3899床，2399白鹅绒被，899四件套。网易严选我要疯了！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7215309e93c48cca08ca6910194eb3b0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(5,1006002,0,'漂亮','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d85a556893919038b56a95b71c9a1228.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(6,1006002,0,'四件套已经收到 还没使用 不过手感很好 也没异味 相信严选的眼光  应该不会让我失望的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(7,1006002,0,'这个很沉，但是同一套既有白色又有深蓝色，我用了吸色布，才避免染色，根本不敢一起洗，，，，','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(8,1006002,0,'特别喜欢的床品。漂亮','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(9,1006002,0,'还没有使用，看起来还不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(10,1006002,0,'不错质量很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(11,1006002,0,'很好看，质量也很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(12,1006002,0,'超美，特别喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(13,1006002,0,'惊艳！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(14,1006002,0,'还没打开，绣花不错。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(15,1006002,0,'不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(16,1006002,0,'材质好，无味，赞','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(17,1006002,0,'现在都还在盖着','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(18,1006002,0,'太厚了，质量很好，只适合冬天','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(19,1006002,0,'对这套床品垂涎已久，但对于价格又有点犯嘀咕，这次降价，使我下决心下了单。拿在手里沉甸甸的，祈愿别辜负聊我对严选的期望','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(20,1006002,0,'第二次买了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(21,1006002,0,'质量很好，就是太白了，怪怪的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(22,1006002,0,'。。。。。。。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(23,1006002,0,'严选鼓励评价每一件商品，我喜欢严选的东西，一如既往的支持！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(24,1006002,0,'素雅，只是硬些','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(25,1006002,0,'美，面料舒服。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(26,1006002,0,'刺绣很漂亮，非常非常值。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(27,1006002,0,'超级好用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(28,1006002,0,'有点素，刺绣不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(29,1006002,0,'高端大气上档次。低调奢华有内涵。  很厚 很重','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(30,1006002,0,'非常好，质量，','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(31,1006007,0,'很棒～很有质感，产品想是市面上千元以上的产品规格；被子侧面还有心的设计了一段小拉链扣可以真实的触摸到被子里面的填充物-是羊毛（羊�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(32,1006007,0,'表面摸起来很舒服，线都处理得很好，里面有些地方填充物不太均匀','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1637021a44433992f403a4b925401a3b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5fd615a8f21050ac8f20a542f8e688a1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/968836b81e80750944ca350808763281.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(33,1006007,0,'做工真的不错，我婆婆说有点硬，可能对比蚕丝被，还是有点不一样。个人觉得还是值得买的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1943a9a6a203fa2ff56bc0800ed5cbfd.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(34,1006007,0,'被子很轻很薄，不是很暖，南方现在春天18度左右的气温，盖着比较合适，冬天再冷点肯定就不行了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b8b063c9b0199ed290f4b3ca49bf4b6c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(35,1006007,0,'配上针织帽，妥妥的。不厚不薄无异味，也很亲肤，满意。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f0ec4c28b64d4b676ba629c1fb006429.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(36,1006007,0,'超大一个包裹，棉被摸起来不错，等待盖','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4eff94aed684b2d8255e73686f570be8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(37,1006007,0,'很舒服的秋冬羊毛被，不厚不薄，买了一点都不后悔！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2ef5ee9903685928d7d1e1bf2fd5c1de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(38,1006007,0,'看着好，摸着好，重量感觉也正好，还没盖，已经套上被套，4年前的小被子终于可以退役了。PS 那一坨是只喵～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/01c3db0f9bfb16e969c4e968fe8a68f4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(39,1006007,0,'盖上了 还成','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5bf789025ccc72802ce58561e494c3aa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(40,1006007,0,'好大一箱啊 被子尺寸还挺准 准备晒下 可以用一用 一直冬天盖4+6的合被 这个5斤的样子 不知道冬天单盖是不是好冷 还没有盖过羊毛被 会5斤羊毛�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/20dfd145606fc60d914b2b7833e92c01.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1dcc038f9e39998a43f2d3fd9315469e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(41,1006007,0,'被子没有味道 包边很好 凉了两天 昨晚15度 睡着发热 很轻很舒适 配上水洗棉四件套和丝绒枕头 完美！！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a70b34d03da3d280d0fd79181d56589c.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4f07e2b6d807ff345a473d5da3c26968.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(42,1006007,0,'没有缺点。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c82b3ab3d224aa76740b9e3255adf3fb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(43,1006007,0,'整体满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c35d48dcada22ec1c44294f6b0a428e1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(44,1006007,0,'白天晒过，今晚已盖上，这久盖刚好合适','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1f8547923b6ffcba581239611f693ac2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(45,1006007,0,'下单后第二天早上顺丰到货，先赞快递！再说被子，一口气买了3床被子，和老公商量着不好就退掉，开箱后拿起来都很沉的很有分量，包边走线�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/90b284e3610a519a46aaa2f68eda2c48.jpg\\\", \\\"https://yanxuan.nosdn.127.net/cc6273be455c3316dce5cf704401df43.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(46,1006007,0,'包装很好，被子很好，广东的冬天够了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7609fb3c38f9bd7dd9af11f5818f0be5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c4061c4d985e27d323bb0129b86ec55a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2161ee60cc43edcff1e31a2bdf86a903.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(47,1006007,0,'今天才换上，好暖和。质量比我想象中的好。好评。希望晚上睡觉时不要太热啊！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/91ec809b19884e57c0d109b4412ee030.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(48,1006007,0,'租来的房 这样就够了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a2a7cc43bfab52175f6b8c12703f87d9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(49,1006007,0,'相当不错的被子，南方春秋盖正好，冬天需要加一床毛毯不然太冷。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7d7199ef7682089c9c7b45d3d2c4fed9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(50,1006007,0,'柔软，厚实，没有异味，不跑毛，从留的小口能清楚看到里面羊毛品质很不错，盖着很暖和。环扣有八个，套被套也很方便，不用担心被套错位�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0e10cb5879b7559415a9f8271b0d8fb0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/31dd362b4c47ba25994cec82020a466a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/33c360c34b5fd14fbd51ab7f96a23f93.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(51,1006007,0,'包裝很好！打開後摸著質量也非常不錯！滿意的一次購物體驗.','',1,1,'[\\\"http://yanxuan.nosdn.127.net/76735794dcee4fc7763c9e5387e0c2ce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(52,1006007,0,'看上去不错，媳妇要过来了，买了四件套和被芯，都要换新的给她一个惊喜！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5043098d243e80629ab3d45efbc46f2a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a599a3df10cb2ae5f8d4aa293f6f7ef5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(53,1006007,0,'网易买了220×240被套，结果回家发现大了又来买了被芯，发现网易严选质量真不错，多推出精品','',1,1,'[\\\"https://yanxuan.nosdn.127.net/940ba0e376afe987fffbf0174151980b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/91730445ae6b47e989fb112cd13df259.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bbd62a0f2f60443812c1dc51ee61e55f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/55dc0ff04281a0a3ccc3bf58b86d080d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(54,1006007,0,'不错不错不错的，喜欢上严选','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1d3b96140cd0cd9da2781aed350f65ca.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c98e86e420c3c50f377054ad465663b6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(55,1006007,0,'巨大无比的箱子，做工，质感都超赞，已经装好被套，盖在身上，具体效果如何，回头追评','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4b36085027dfa17f41ae18a8a59866bf.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e7f5b357910d79b6da7ab159500ed112.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bf3a081b3859ff62c21249c2b5443857.jpg\\\", \\\"https://yanxuan.nosdn.127.net/442180cdbc773cd453447acbe18076a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(56,1006007,0,'成都二月底，空调开25度，妈妈说被子很暖和','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5995203d941cd9ec29d72f88e2068470.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(57,1006007,0,'包装很结实，里一层外一层。东西也很好哟','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e952e01ca4cc9a6e98ac1b94c22897c1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(58,1006007,0,'喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ef9baeb4716e707430504c85a31bf23d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(59,1006007,0,'面料摸起来很舒服，没有羊毛味，但是有点新布料的味道。被子没有羽绒被轻，但也不算厚重。好评！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/3be9a5226968a712d0f070ad68f64dec.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8fdc01147eb50e9087aa00a2f62fac2d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4235a53cf606ae4bc0fea7a30af393bd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(60,1006007,0,'非常好，很暖和','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3369a66fb9df9b7d5b6ae2978d36610f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(61,1006010,0,'被子收到先晾晒两天。没有异味，做工精细，手感不错，拿了一撮烧是纯羊毛的。相信严选的品质。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/709c587f5f7d92f48332d06eb18e7126.jpg\\\", \\\"https://yanxuan.nosdn.127.net/6e1774068ce6b020c50c3c5d4a8e7dfc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(62,1006010,0,'质量很好，还没用，看着就非常喜欢！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5e10bd6ac6cb217268b4483a10bea56f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(63,1006010,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a3078f1431a1aca14caa560a6ff908a5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(64,1006010,0,'尺寸蛮好！质感好！非常棒！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/62c0b62ad5eb0c20337eabbf367e4278.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(65,1006010,0,'我确实没有发现有什么异味，羊毛被非常舒服，纯新羊毛品质非常好，这个价格商场里面是买不到的，提花做工也非常精细。配上去年买的床单�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/681b2327038b1c2c10af89b2527d7eda.jpg\\\", \\\"https://yanxuan.nosdn.127.net/71ccaffde9e79a89ad185ff9bdab40d7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e7742118d188ea3173ad5112a8a6f061.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3d77a201cbff3fae0c2d35c8dbe7ce30.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(66,1006010,0,'收到了，还没用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e44577b3101696c64196ca2ac6aed4d0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/19dc77eb45ad562080ae3f1b26220ecb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(67,1006010,0,'包装盒子很大。\\n和四件套一起买的，先晒晒再套上。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c7ddd8ce4d2588f88bee2bdc325b16e8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/63917d8d98648a1f6780113b81eaf49d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3cb128218eb997e9f3b9e2b3f977bb42.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(68,1006010,0,'发货很快，服务很好！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d9c4a183033024979794f5d125718c36.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(69,1006010,0,'超喜欢，晒一晒，就准备换上用了！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a9f9168ce83e7d73345aec85d3a58a48.jpg\\\", \\\"https://yanxuan.nosdn.127.net/683e47e56d8a123ef101d64afb22b293.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(70,1006010,0,'很棒啊 超级好 忠实粉丝','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2edff0244918811c38ce88eccd67d979.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ee205358200c2834f6fe1457e6b8cc0c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(71,1006010,0,'吓死个人，包装太大了。为快递行业废物担忧！被子还没用的，厚薄可以','',1,1,'[\\\"https://yanxuan.nosdn.127.net/874a5450cc4a013fafbb699d1be8f7e6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(72,1006010,0,'非常好的商品，挺厚实，套在严选被罩里正好。很舒适的感觉，今晚试试再跟评。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/6086f9c60725981a62bcb7cb9b16f96d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(73,1006010,0,'细羊毛比羊毛又更柔软舒服，包装依旧强大，第二床了，等着再团第三床给小孩。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a80a47d1da70aecda367c8346f6c4b28.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c03e0d833114a274c14e78078e209f23.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(74,1006010,0,'很好，喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d604e96c8fd278287b0b5938a6329d91.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(75,1006010,0,'不错，挺好的，打算晒一天，再用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d1a19fc34300d9777fa461e429953f47.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(76,1006010,0,'质量手感很好，值得购买。嘿嘿。感谢我中的优惠券买满599少105！划算','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f66f5867db18972a129da330db4c1a62.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(77,1006010,0,'东西还不错，家里20度盖着稍微有点热。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a74a0afeb7565c6e4faaa6eb9cf4749f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(78,1006010,0,'没有味道呀，摸起来手感不错的……严选脑残粉，不多说了，赞','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d0ba5d4d2e3749630dea1e22f5cea279.jpg\\\", \\\"http://yanxuan.nosdn.127.net/47cfc56cbe26aab5c357b8f202d0e1ff.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(79,1006010,0,'手感太棒了，收到晒了一天就用上了，超暖和！赞','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a6efb53eb88e7a64d2684e40f7a52d3f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(80,1006010,0,'简约，干净！四件套，被子，床垫全都换成严选的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/011740faaf3a95b9199098814e36e385.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(81,1006010,0,'被子柔软手感很好','',1,1,'[\\\"http://yanxuan.nosdn.127.net/998e430d04f8bb8b1d884bac1a02e313.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(82,1006010,0,'炒鸡大的包装盒，这几天天气不给力，还没有晒，后续追评。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9e81c34c4ff7c22bc349c6d268307dd2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/44e4a90615bece2401be24a2bf93ee69.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(83,1006010,0,'收到被包装箱吓了一跳，箱中箱好安全，被子羊毛分为一格格缝好，不走位，好柔软，妈妈可以过个暖暖的冬天了。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/3afa633ff158ed7739e99f242e6217d0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ab1c13bd41274a8c42d58cfd9c905aa1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(84,1006010,0,'严选的质量没有让人失望，品质真心好！做工让我没有什么可挑剔的，参加了感恩节的活动，感觉赚到了实惠！ 希望严选继续推出高品质，性价�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1ddafd57c3cc4c7fd3cd605ce6e5fdff.JPG\\\", \\\"http://yanxuan.nosdn.127.net/a7d5e47ef16d5a6cadec4a62846e28e1.JPG\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(85,1006010,0,'很大很温暖，女盆友很喜欢','',1,1,'[\\\"http://yanxuan.nosdn.127.net/49ce7f46d4978157321812d2ca8e4846.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(86,1006010,0,'一次买了几套，很不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8bb54ef41cc46ebd96577c38eb87715d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(87,1006010,0,'很好，很舒服。已经套上了被套（也是网易严选的）。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/2b52a8a6e59e8b2124cf2739af13910f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/96c5f2780a71c0b24ab6741f531a5711.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(88,1006010,0,'两层保护，套了个大箱子，基于对严选的信任，人生第一次网上买被子，而且是我没盖过的羊毛被，白白的，软软的，立马跟一起到的被套结合�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/20553ede4645fed898754f06a3bd9d9c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0213cae3ef5a865bb6dd8db6015cfc86.jpg\\\", \\\"http://yanxuan.nosdn.127.net/aa4f3ead32776fc29f6d065ce3292c08.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d437f107e112d9b6dd944efadbb9f451.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(89,1006010,0,'质量很好，还没用，希望是个好东西。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b0b43ef8aee2a518e256904ed9fd09fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(90,1006010,0,'比想象中的好好多！以至于我第一次愿意发买家秀！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1de092f2aad814487558f41b3de008cf.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3172ec3dd5de21b03310dcffdcc218c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/490ea866acd1e3ee81515bbe5b2b6825.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7a4dd625b8189905b263d23e5ecc0e23.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(91,1006013,0,'晾了两天 现在盖了 好舒服啊！已经爱上网易了严选了 要剁手了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5779110874e03e1364ae2d3e74e78cee.jpg\\\", \\\"https://yanxuan.nosdn.127.net/06f11a4b428f316dbab2b664c2838faa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(92,1006013,0,'被子质量很好，比实体店的便宜质量又好，值了！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/501c14b56ed0d7a6fb6a5f47ca90f51d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/488c125fb54f8a6ee5f66cc3849a6b55.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(93,1006013,0,'顺丰快递，物流很快！宝贝手感很舒服！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2c0edd6951c4ccdc6816a6654ae153ea.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d2cf24a8b7e98fdc14e55213f7a12f1f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/044ad064291fdd00fdb7222634ea1c00.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(94,1006013,0,'快递超级快 一天不到就送来了 对严选的质量从来没有担心过 这次更是出乎意料的好 赞','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(95,1006013,0,'很棒的一个产品！非常满意！盖起来轻薄又透气，在冷气房的保暖度也足够。很喜欢网易的蚕丝系列产品。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(96,1006013,0,'对蚕丝被非常挑剔的我表示对严选的品质非常满意，货品的确是100%桑蚕丝，做工精细，面料厚实，价格真心划算，真是太惊艳了，已经推荐给身�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(97,1006013,0,'蚕丝用的很好，轻薄舒适，性价比很高。准备回购。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(98,1006013,0,'我在罗莱实体店看到是400g要八百多，是桑蚕长丝。严选这个收到后感觉也不错，有淡淡的那种蚕丝香味，触感也很好，还没盖，应该会很好！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(99,1006013,0,'严选地球日活动买的，两条也差不多八折，正好和老妈一人一条，夏天快到啦，感觉一斤也不是很薄，蚕丝看着也不错，没什么味道，稍微通风�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(100,1006013,0,'真的不错，收到之后马上体验了。整体感觉非常柔和舒适，很有质感。感觉使用温度需要20度到25度。非常喜欢。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/692898a037906863f4130cc28aa96f54.jpg\\\", \\\"https://yanxuan.nosdn.127.net/daea9059182226688f60b1c7ee943b1a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/13026a745b1269591968eb5774beea93.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(101,1006013,0,'太舒服啦！又轻又舒服！简直太值了。还想买一套。睡觉都成了一种享受啦！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a5e70db6cb702cdb15c25410240da4e0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(102,1006013,0,'摸着滑滑的，没有味道，南京这个天盖稍微有点凉，等假日温度上来就能用了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0eaedb093836fc19b44c9762ec4245f9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/64b07866551aca5ab545b6945c3aa238.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(103,1006013,0,'包装真是太严实了，质量很好，0.5公斤的盖着不沉，很贴身，没有异味','',1,1,'[\\\"https://yanxuan.nosdn.127.net/31d573ea8e20c70c46f3e2a981201587.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(104,1006013,0,'手感超级棒，本来买了2床，还担心不合意退货麻烦，现在看来担心完全是多余的啦。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f48b64fc44e30b9353699d75cae4d38d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8be7358f3367af5f9b4607bb5904185a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(105,1006013,0,'手感超级棒，本来买了2床，还担心不合意退货麻烦，现在看来担心完全是多余的啦。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ed462bd77a20e2442c2d56d98d32ee8d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/31388ad9b235215a4f0974a66e748575.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(106,1006013,0,'到了就打开装好了，这个天盖着正合适。柔软亲肤。价格美丽。真心不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/19876c8e3661289f0b9a07a3948ad2b1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(107,1006013,0,'超级超级舒服。用券以后感觉也挺划算的。希望能推出再厚一点的。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d6d444376770e922138b1d12c18c020a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(108,1006013,0,'丁磊真是个最有情怀的CEO，也是养猪专业户里最有情怀的！中毒严选！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9285abeba996f87ffb126d761a7bea29.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(109,1006013,0,'挺服帖的，天气热了刚好网上，就是有股味道，得晾晾','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b38e68c198d8b1d41be27c9e8c4ee73d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(110,1006013,0,'保证严实，质量杠杠的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/01ce532366fb5dc49eb88e490d5d3984.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c509586b0e728860a8d14870f06112fb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(111,1006013,0,'一起买的，很好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6b6a073e6d7caad43f5e8cf9833da01e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(112,1006013,0,'真心好！赞一个！支持国货','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3853600951a35647609c6844dcdd6c86.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b1638f9674d1d8e9ca1872b12312f68f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(113,1006013,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4c5dfff639bc36a67ee8a35892f8d200.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(114,1006013,0,'质量很好，很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0ed20445542ab57b134ac1c7d3a0faea.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(115,1006013,0,'套进去了很舒服啊。就是想要这种薄点的，家里的都太厚','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c5f4909c19090e6e61157fa9eda1d0de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(116,1006013,0,'包装很仔细，缝合做工好，填充柔软轻薄。等天气暖和后就用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e94d6adaec4edf5702d3210b3d6ebe58.jpg\\\", \\\"https://yanxuan.nosdn.127.net/42369e5b147025746542231936d63ac5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/03a66e35f55d08c2de10834ce415bf89.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2bd45812d820f727c2e7f3fa3988dbce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(117,1006013,0,'有点薄，但是柔软蓬松。适合这个季节。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/66f272393658392a6f023898dccb9e90.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(118,1006013,0,'感觉还行，要用过才知道好不好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/84b6457d734c73414da6ba6247ac18af.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(119,1006013,0,'很舒服，适合夏天吹空调时盖','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a27659551c60008c31b1b48a2fa62c88.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(120,1006013,0,'三层包装，收到后刚好晴天暴晒了！不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6b06e92c9783ebbdda81346912296b58.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2b4c5c819f6af06e79d57ea098a39a56.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(121,1006014,0,'超级喜欢这个被子，这个组合广东已经够用了，真好，好像一朵云盖在身上，比以前买的蚕丝被都好～','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(122,1006014,0,'妈妈说非常好，字母被设计非常好用，面料很好高档，比某些大牌划算多了，蚕丝被是天然的很养皮肤','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(123,1006014,0,'性价比超高，子母被四季适用，宝宝睡觉容易出汗，蚕丝被透气保暖最合适。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(124,1006014,0,'被子收到了，凉了两天后就开始用母被，正合适，很舒服。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(125,1006014,0,'被子质量很好，非常舒服，母被正适合春秋，子被适合夏天，冬天子母合体，第一次在严选，很棒的购物体验，又接连下了几单，期待中。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(126,1006014,0,'收到后晾味两天，厚的收起来等天冷了盖，薄的已经盖上了，手感非常好，丝滑，盖起来也很舒适，亲肤，透气，桑蚕丝的被子对人身体好，总�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(127,1006014,0,'超舒服，买的是字母被，1.5➕0.5的，冬天肯定很舒服，这个季节用的是1.5的稍微有点热，过几天就用0.5的啦。打算后期再入一床1公斤的，感觉会�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(128,1006014,0,'舒服，柔软，双层，冬夏两用，好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(129,1006014,0,'还是有那么重那么沉～原本还在担心会不会冬天盖了少了～铺上以后觉得应该也很差不多了！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8736be0264f1d722cef01939836973e0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d0a72092ca8ca6077215e9f23efa31e2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(130,1006014,0,'包装的很用心，马上晾晒起来，子母被叠在一起冬天应该不冷了，春秋被正好用上。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6364c9dd6affe4796937326445ecc064.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(131,1006014,0,'刚买就有活动了，用着挺好再给父母买一套，比自己那套划算多了~~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/eba8499ab70da5138d0d5511a79a8e35.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(132,1006014,0,'很舒服，对比了罗莱家纺，还是选择了严选，没有令人失望。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c2fa7ba74c8b80fb36a5224931570be0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(133,1006014,0,'尺寸蛮好！质感也好！蛮喜欢，以后有需要还会光顾的！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f997931b3715affcb7546ca70010d558.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(134,1006014,0,'好重一大包，质量应该不错，相信严选','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e871c512e6183395b40eea65033633ec.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3abc075b9a60c6b99507636a96dd001f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(135,1006014,0,'蚕丝被非常好非常好非常好，换下羽绒被正好用它，超级丝滑，外面的面料也高大上，太对得起它的价格了，隔着被罩都能感到丝滑，必须赞一�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/52d48f5df17c94de6efc03220e808f60.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4caaf0a13a70f801f62efdcc0b12c69e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(136,1006014,0,'温馨福袋揭秘','',1,1,'[\\\"https://yanxuan.nosdn.127.net/27bd18e109bfec677acb114f0df15049.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(137,1006014,0,'不错不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/97b8b982e976f2b7e3fd8f453378212d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(138,1006014,0,'春天到了，一直没有用起来，被我塞到了柜子角落里，真是不好意思！子母被可以一年四季都用上，夏天用0.5公斤的，春秋用1.5公斤的，冬天两�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7b0bc93f9eaa88ea9354d6e33afa514d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(139,1006014,0,'蚕丝被是在看过评价后买的，所以还是很满意的。个人觉得有淡淡的很正常的味道。其实包装并不是最重要的，重要的是商品的品质。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0fcae1110d09b0c7ef44778781c39a5d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/505f58c738ca26fc35a5f58e2e5d2db7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/cb6db0c1f24151323f0bd8e40e6c63db.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a4d3db8aec4933a24b031b3c331829da.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(140,1006014,0,'能看到蚕丝呢，两床被子有拉扣能锁住，没什么味道，外面的被套很舒服，不沉很暖和，东北的冬天一床就够够的了，推荐！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e1466fdabc2df0ec42261139858eac99.jpg\\\", \\\"https://yanxuan.nosdn.127.net/64a7d1ed37be1b9f5f45552cf0c59eb7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5a4dfa6ffe661f52705fa01b3db10217.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8dd061631aca0194517f2e17826c4571.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(141,1006014,0,'品质真的太好了，有图有真相，必须给严选十二分好评','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b536d19af6299dfbea2362954e7b3ba2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3629cb676c071af26023f2cae21520e6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/57e702c6068668e6a025ff799162dcb4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1e7a50c0866931982f64ebc4dcf1dd07.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(142,1006014,0,'很重一大袋，应该是不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/01671ffc2f8f533dc10b9fae5e888b02.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(143,1006014,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0551f86464a85f7bef8636e82d2a16c1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(144,1006014,0,'东西真得很不错，份量足，比预期的重一些。包装有三层，够结实的。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8bae8bc13f53b8d77e3da8a339a826b8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6eadf3d5235e875a13fb9e094c25d3ca.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(145,1006014,0,'第一次用蚕丝被 原来这么薄 但是保暖性能相当好 略微有一点气味 可以忽略','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0203d4a921a735a03a9ec2509a4ca5f9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(146,1006014,0,'严选买蚕丝被放心','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ccd0091d097f9da975848aeedf729da3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(147,1006014,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/117da716695d4cd0666b4a4f1614a00d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(148,1006014,0,'使用后再追加评价☺','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0d9bd7d05a75234ac5fb56569fa3afbf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(149,1006014,0,'蚕丝被质量真的好  冬天也足够啦','',1,1,'[\\\"http://yanxuan.nosdn.127.net/161eaf989138d13499c4b0ec83f4a4fb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8e4a2ecdf1b4586ad54a666f6c9ddb6b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cd0efbf8cd0c2aacb6e3a4de8aee0f0c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(150,1006014,0,'包装不错质量应该还行和小宝被子的味道一样','',1,1,'[\\\"http://yanxuan.nosdn.127.net/37741286381028ce1db15966140ad90c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(151,1009009,0,'相信这个是高品质的鹅绒做成的，每次晒完被子蓬松得不得了，整理床被也方便，只要轻轻一掀，被子就平整服帖了；盖在身上既轻又贴身，柔�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(152,1009009,0,'羽绒被真的太棒了，很暖很轻，活动价格1300+很给力，而且盖着也不会有太大响声，买了两套，一套给爸妈，一套自己用。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(153,1009009,0,'到货搭到阳台晒了几天，没有异味！舒服的抱着不想起来！去大商场看了，同款鹅绒都要2千多！某宝又怕假货！只要严选没有辜负我的关注！真�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(154,1009009,0,'外包装是好的，可被子的箱子为啥灰辣么多而且破破烂烂的，还没打开看，但仓储差评差评！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0b698871fee771050538f9e98d6cc1bf.jpg\\\", \\\"https://yanxuan.nosdn.127.net/243c459a1195839cf45084f35540c2dc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(155,1009009,0,'被子不错，一大箱，但是这个箱子能设计个提手么，这么大的箱子想让人怎么拿啊','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e3573ec3d123bde7311edd874ff9e3b2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9b2308745635c95764a32e122d52e2dd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(156,1009009,0,'双十一1279买的，结果发现有一处钻绒。网易竟然没有换货服务，搞笑。在考虑要不要退货','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0eaea152d968cb88ba8a6082f49254c9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4a13a803fc6993845c98754a7dd714cd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(157,1009009,0,'很轻很厚，现在用不了了囤着冬天用。限时购1359，价格实惠。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/163aa25c63783f245b2903f7230db795.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(158,1009009,0,'超级暖，平时很怕冷的。盖这个绝对够了，可以抵御零下好几度。加上60s暖绒被套舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6815e6e715e469f9e0498a84c248f3b7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(159,1009009,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3c86f256e559dfcb5c6ac12ee6f0957e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(160,1009009,0,'相见恨晚的感觉。使用后才来评价。太暖和太舒服了，大大改善了我长期失眠的状态。非常赞！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0d35feb8182002ce0efa39dd04c8e188.jpg\\\", \\\"https://yanxuan.nosdn.127.net/15802fa58be1a8c9ee114f526ee88337.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(161,1009009,0,'又轻又暖，就是觉得短了点？严选的包装真是杠杠的，盒子质量不要太好啊！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5f996396607421ab20f91d12fbd84f97.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(162,1009009,0,'赞，很保暖很舒适，陪伴度过了一个美好的冬天','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ba6c27952db325c72f5b1f2ad76c2acd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(163,1009009,0,'好大的箱子啊，一定要直接寄回家。我想当然的寄到单位了，快递帮我往上搬的时候同事们以为发东西了呢。快递小哥人真好，强烈要求帮我送�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/357dfd5e73d3c7b8d93b598dc5cfa3c2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d80005eeb4a494fe820a2a993d8c10bf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(164,1009009,0,'活动是买的 这个羽绒被超值！非常暖和！很厚 很蓬松，比原来盖的波司登还要好，绝对物超所值！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3aa16a41e998d7cb01646612a085d74e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(165,1009009,0,'被子很轻柔，舒服，包布质量密实，两千块钱值得。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/71fd5f70b7da24c755370aff3767d0e2.JPG\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(166,1009009,0,'东西很好，给娃买的，很蓬松，降温也不怕了，换上新被套，更棒！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1f8379242fa0dfe2be0b63299a92de8a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(167,1009009,0,'老妈表示超级暖和，满意。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/303f07460c563b2809e8a28c42ec2974.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(168,1009009,0,'喜欢，软软的，还没用，先晒晒阳阳希望更蓬松','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5f9179e49cd6f301d933a20b9ea15ff7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e3598c1c76af2977f8e47657e79073d8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/cd2a1ce5f8c8c6462873cbc883064cab.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b0e5cc9f65ce8c473bb60e33d702c174.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(169,1009009,0,'睡了两天，被子很轻，但是非常暖和','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ca5f41ddb4e996752eaee88c603f89db.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ccc7e1ced6ae6653d27db2d2a5dad2bc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a676fec8d311b18352041938eb47f2fa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(170,1009009,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/510daeeeb0d7ab374d19118b56907d03.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(171,1009009,0,'包装一如既往的高端大气上档次，羽绒被一拿出来就完全蓬松了，手感超级舒服，真的有睡在云朵里的感觉哟','',1,1,'[\\\"http://yanxuan.nosdn.127.net/acf4545e5f5155610a9920639554eaca.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(172,1009009,0,'非常暖和，也时很厚的感觉，搭配有垂坠质感的被套，这样就完美了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/32867c025eda5d3fdceb6106420cfff3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(173,1009009,0,'被子太棒，很厚实很蓬。就是没有口子打开看到底是什么绒，不过无所谓啦，相信严选。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/2ac89fe52540efd8343791fc1fd2b155.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(174,1009009,0,'八折买的 颜色蛮好看 也很蓬松 透透气 还没有使用 不知道效果怎样 相信网易严选的品质','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d78ca7784908b91c720ec735c5a804c8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a00bd908f3cb0e5a20e1a47574d1c243.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(175,1009009,0,'特别厚 怀疑买厚了 蓬松度很好 没有异味 虽然不是无声的 但是绝对可以接受 没多大声','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d83c8a7bea22d11b5c87f90eac4dc39a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(176,1009009,0,'被子还没用，手摸了下，手感不错，而且也比较轻薄，期待暖暖的被窝效果。纸巾很划算。买了几次了，感觉严选产品质量真心不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9abf716e255f1436439559a9792d0741.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5c4ceaa303be30f8dea7e6d797fb48c7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(177,1009009,0,'活动送了299的泡泡纱可水洗空调被 用不上 全新250转 粉色','',1,1,'[\\\"https://yanxuan.nosdn.127.net/789eabd8acb8033a645d657761d664b2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(178,1009009,0,'非常舒服像睡在云朵里，拿出包装很快就膨胀起来，厚厚的冬天不怕冷了。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b31f1ba01ad55a1c5c211fc78c9151ce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(179,1009009,0,'被子整体约重7斤 体重称抱猫量法 摸起来不错 绒比较细 毛杆子不明显','',1,1,'[\\\"http://yanxuan.nosdn.127.net/081d8d7ba1363e567f1a4ba3a510746f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(180,1009009,0,'很舒服。当然四件套也是在严选买的。盖在身上很轻却很暖。半夜都会觉得热出了汗，但真的觉得很暖和。之前买了严选的羊绒被，质量也蛮好�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/38efadd5eee61fb44488062a4cb13f50.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(181,1009012,0,'枕头确实好，打卡包装后，很快完成充气，蓬松柔软。高度也合适，睡觉变得很享受。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/827017ba882ecc73bbc84b158ce52f58.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(182,1009012,0,'真空包装哦！拆开后就会膨胀起来，触摸感很好，尺寸有点大，枕头套刚好能装进去。明天洗了看效果怎么样，很实惠哦！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/642f783d1a82bcddca5c8b6d60a50587.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(183,1009012,0,'超级舒服，跟我去住五星级酒店的枕头一样，空气感超强','',1,1,'[\\\"https://yanxuan.nosdn.127.net/490b249734045af43acec2bd059a9e17.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(184,1009012,0,'抱着试试看想法买了一只，结果很蓬很弹，睡着非常舒服，网易果然没让我失望！昨天又下单买了一只呢！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(185,1009012,0,'枕头很舒服，蓬蓬的但睡下去就会到合适的高度，是在很舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(186,1009012,0,'枕头是很划算，当时做活动也就三十来块钱，用了大半年，还是很舒服的，可水洗，揉揉软软的，喜欢低枕的可以试试','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(187,1009012,0,'一口气买了好几个，软绵绵的，舒服得舍不得离开自己的窝了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(188,1009012,0,'枕头很舒服，弹力很好，有助睡眠。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(189,1009012,0,'枕头质量非常，做工精制，喜欢。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(190,1009012,0,'枕头充气很快 媲美外面一两百的枕头','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(191,1009012,0,'第一次在严选下单，就被严选的认真态度圈粉了！严选的包装很细致，枕头是真空包装，打开袋子后自动鼓起来。整体软硬适中，枕上去只会压�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(192,1009012,0,'收到昨晚就试了。感觉好舒服。\\n好评，还会再次购买的。\\n一起买了好几样。没有单独拍枕头。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a411c758836a8e5f785f9c887c9eade7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(193,1009012,0,'包装精美，便宜又好的枕芯境内，以后就严选了。快递员态度也很好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/510bdb612db9dc0afcf521ecfab0d544.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(194,1009012,0,'好喜欢！好蓬松！好软！扯出包装袋立马蓬松起来，小伙伴不要看照片以为很低，总归很超值！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ec18a1d6f7570d91ffcb00522992a7b9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f5ca9301a37bfc4ffb9159b7a0dc9058.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(195,1009012,0,'枕头很棒，枕着特别舒服，也没有异味，顺丰发货也快的没话说，包装好，都满意，好评~支持网易严选！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/59df349a01837ab721218fb7809871d2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5148b82159c373293feda182407596c8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(196,1009012,0,'质量挺好的，就是稍微有点大，打算再给父母买两个，当时买的是限时够，现在贵了十几块呢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5d775bd76f04920099a642ba183ac9cf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(197,1009012,0,'别的都挺好的，就是上面的洗涤说明看起来像放了几百年的布一样……希望换一种布料，不然总感觉怪怪的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/49030becc853b68b813089a0ac1a6c4e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(198,1009012,0,'最柔软的羽绒枕，很软枕上去没有高度，是我脖子喜欢的高度，从此不再落枕，套上枕套美美哒～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f1a26f246acd80b93a3ffd3b71be93ce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(199,1009012,0,'我的天真的好，用网易新闻金币换的没有花钱，真的帅气。推荐推荐，舒服舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b4f1e58479a242366bea4d6dbf2ff4ec.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fe732c746cccc711667b0cd337ccfba3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/756d3468dab3c5a5de9685d8faa6dd18.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(200,1009012,0,'不错，很蓬松，也挺厚实，睡着有支撑感，就是不知道，这个蓬松度可以保持多久，希望可以耐用点吧！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0cea9a7b366b8e3fcef5269137294359.jpg\\\", \\\"https://yanxuan.nosdn.127.net/051786f7e3eb36cabb458779c5fae9fe.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(201,1009012,0,'先前买了两个，又买了两个，还推荐朋友买了。严选东西就是好。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3161beb18ccf054115315cf09557ed59.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(202,1009012,0,'看评价好多人说矮 我枕着正好 也很有弹性 非常喜欢 还不贵','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bc547322ad5a8164a388d56508fc93eb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5894aad819e9c15ecffe88e9445884ae.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(203,1009012,0,'枕头很棒。但是喜欢睡矮一点的人，这个枕头或许太高。不过质量包装都是没得说的。严选很棒。继续加油吧。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1c62d0c41cebccd9e06dc23fe6ed111e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/47a2b22b14723f79eb1e89cd26606fcb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a2991ed5eac58e80a356dc784307490d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/546c5ed73a242dc0f11949d1e8607519.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(204,1009012,0,'京东plus会员，现在对严选也很喜欢，节省了挑选东西的时间，喜欢的话可以放心下单。好的生活，没那么贵。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d29440e326ad54261947b202a3f26f8b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(205,1009012,0,'和好的东东，看着很有质感，一下买了4只，已经用上了，柔软舒服，','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fb163c8f9605e606ecab378434cc8587.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(206,1009012,0,'枕头有点矮，不建议习惯高枕头的朋友买，另外上面没有拉链，以后清洗的时候有些麻烦。质量蛮好的，网易严选加油','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ed6084e670a4ea08448305f4fb6e5a81.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(207,1009012,0,'非常柔软舒服！软软的，但是睡觉的时候又能够支撑起来，不错哦！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3b789d855d6db896392a71364356b927.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(208,1009012,0,'包装太好了，物流也很快，枕头很好用，高度合适，好评！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/78060b1c3cb24079d7a771536019f990.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ae1d9d70310386d7acae2e7b74e03fd2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d4e20b69d45c2b1cac898146b53e758e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/25da72ece123bb0a092c183c5eac342c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(209,1009012,0,'枕头不错，很软。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/30d544de9c2596371557c9309c843eb1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(210,1009012,0,'很软，很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/debd2800a3e746d420e450eb05ad4125.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(211,1009013,0,'枕头很棒，蓬起来有17、8厘米高，枕下去有7-8cm高，很软又不会很低，舒服！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b007ab3de1c4c9fbea625db5615d49aa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(212,1009013,0,'包装很结实 箱子也很有特色 快递过来一点都没有压坏 枕头是压缩那种的 一打开就变得好大 很软很舒服 相信严选 以后肯定长剁手','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b255ead740392bd237ef95a676342833.jpg\\\", \\\"https://yanxuan.nosdn.127.net/79b7fc5c13193a2ab5f4d816fd01f91a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(213,1009013,0,'非常不错，打开后立即膨胀起来了，面料挺特殊的，睡起来也很舒服，脖子不会痛了！棒棒哒！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(214,1009013,0,'直接放洗衣机了。没问题。稍稍一拍打就恢复原型了。很喜欢，关键是随意洗不变形','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(215,1009013,0,'质量很好啊，一次买了两个，用了好久了才来评价，是好东西哦，信赖严选，发货快，顺丰快递也是隔天到，棒棒哒，满分','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(216,1009013,0,'个人不喜欢枕高枕头，这个枕头大小略大，但觉得很好，枕上去会凹陷出合适的大小深度，很舒服。早起拍一拍就变回鼓鼓饱满的形状了！大赞','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(217,1009013,0,'枕头越用越蓬松，触感非常好，很满意五分','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(218,1009013,0,'没有气味，厚实、蓬松。先收起来，冬天用。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(219,1009013,0,'这个真的很惊喜 很舒服也很软 躺着抱着都很舒服 推荐 包装质量感觉也很棒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7fb1a52e793f738cb9db3660e88756b7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(220,1009013,0,'配合宜家的枕头套，真的很舒服，回弹快，内陷深度也刚好可以承托颈部','',1,1,'[\\\"https://yanxuan.nosdn.127.net/44668cb4f55f120a5fe9ebda02e4b3a8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1e2647e8db48c19aec29a9b43c30d4a3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(221,1009013,0,'枕头很柔软，枕上很支撑力很好很舒服。可以直接水洗很方便，确实是款好物！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/859dbc341a909ba142c907ff4adb3ae9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/36c37e008facb551c60398e61244499b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/21430602d5024448e6928d2c28a9c0aa.jpg\\\", \\\"https://yanxuan.nosdn.127.net/66a07ac23e1b31f040af1db1c26e9db3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(222,1009013,0,'严选第一单，物流极速，对比以后我才知道这是严选，好的生活不用太贵','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b3f1dff629e4552bd48dc7bc448c87cc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(223,1009013,0,'简直不能再满意！枕头太舒服了！以前的枕头睡着做噩梦，这个枕头每天睡的踏实不想起炒鸡喜欢！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2c8ea07e47fd634985763f7542edb147.jpg\\\", \\\"https://yanxuan.nosdn.127.net/255aa07962209d5efc43db25b9fc420d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a0dee9b14a716c912ce7b129ed659943.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(224,1009013,0,'蛮好的、相信中国人自己也可以做出高品质的产品、国产品牌加油','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1493e2f39572135d26d7d44e2ee8a17d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(225,1009013,0,'第二个枕头了 真的很舒服 比59元那款要软很多 舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d27341b40f9dded7af6d48b17b3900b0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3311e083d8a6e2600a8efd6767141940.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(226,1009013,0,'枕头很大很大。。还没枕，应该不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ab40216e0e13bd43e6ce05cb70bf70ed.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(227,1009013,0,'超级软超级棒啊 第二次买枕头了 之前那款就很软很舒服 这次也不错 对网易的好感度是从同学实习食堂巨好吃开始的 哈哈网易的东西都靠谱！！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/28c3fe99d7c0845d2159821c775daa53.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(228,1009013,0,'怎么说呢，枕头实在是太大了，可能在我的单人床上格格不入，能做到真空包装，也算是配的起这么贵的价格！顺丰包邮，即使贵，有这么好的�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bff1a43f24ffe812cc66906199515076.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ef5442e53f8e7af08a883bd63b14288d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(229,1009013,0,'这是我用过最大的枕头','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0f8e9999e678270f398508fe2b2410ed.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(230,1009013,0,'超级喜欢，枕头很软，就是我想买的这种～从此种草网易严选～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/67987297b5cbf94ab90d7b2170fb3296.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e94869548ec9f377051f2e1d18341885.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(231,1009013,0,'枕上去感觉不错，是一体的不能拆，包装很好，物流很快','',1,1,'[\\\"https://yanxuan.nosdn.127.net/24ca01952605584b0290ccbaa9a6f199.jpg\\\", \\\"https://yanxuan.nosdn.127.net/113358276be0129a8057b095220d308d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(232,1009013,0,'枕头高度正好，软软的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4a5bbc43ce53d987ab8e6348ea85dd2f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(233,1009013,0,'很舒服，空气感，喜欢矮一点点枕头的选这个','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2bb50e6bfe365614f6ae5aa1155703b2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(234,1009013,0,'货收到了，看着不错，冲着抗菌防螨买的，期待不一样的效果','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c8eaaf0aae9f2ede1f9d33744ba7f8ff.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(235,1009013,0,'很蓬松，棒棒哒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0094a3508a0b37d8759597d183c85222.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(236,1009013,0,'很柔软','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b8bab304cbf3c2991d0bb367c05298da.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(237,1009013,0,'软的不行，睡着挺舒服，喜欢硬的不要买','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2f9c157a74efe18716c367c83eb05cd7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(238,1009013,0,'舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4a474f7688de05eab8f015132cef432c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(239,1009013,0,'超级棒，昨天刚到就直接用了，睡的很轻松，直接做了一个美梦！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/969eb7f65ab6aa69e7f242d11a29c32d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(240,1009013,0,'很舒服，比较软的，哈哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a8cd41200248e7b36e90482e9caa7e94.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(241,1009024,0,'好舒服！可以变换各种形状！比我之前在朋友家看到的懒人沙发好很多啊！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a3bd6f130fe3ee340037a37b6c721d16.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(242,1009024,0,'和MUJI的一毛一样，性价比够高，猫咪亲测舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6a10b3f27172cba92c05cd0530655aff.jpg\\\", \\\"https://yanxuan.nosdn.127.net/85e5548a59543b56e668cc0e4dfc45fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(243,1009024,0,'家里两个懒在地上的沙发，虽然其中一个是狗沙发。感觉跟MUJI 的很像，没有那么软更有型一些，舒适感不错，老公完全陷在这两个沙发里起不来','',1,1,'[\\\"https://yanxuan.nosdn.127.net/932ce1df5850a70e25c997ae74682ae4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(244,1009024,0,'物流很快，包装简单，但是实物质量很不错，出乎我的意料，坐上去比想象的舒适，根据你的坐姿调整形状，支撑软硬度也很合适，身体接触面�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7215aa51acd444921885a6df839c4c97.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8ca6c7d1609b2cf9a6da9cf9d28946e8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/742cb4d878399dbc16ee016bdcc8a1fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(245,1009024,0,'这个沙发真是太好用了，可塑性极强，随便用什么姿势坐上去都很舒服~','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(246,1009024,0,'这个和MUJI 的没什么差别，坐在上面很舒服，家里放一个很赞','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(247,1009024,0,'一直很喜欢这个样式的懒人沙发，超级喜。本来打算等新房子装好了，买两个懒人沙发，可以和她一人一个瘫在房间里看电视，听音乐，或者什�','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(248,1009024,0,'太棒了，哈哈，躺上去很舒服，休闲用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(249,1009024,0,'很满意，放在客厅沙发旁边，颜色很搭，自己觉得比无印良品的懒人沙发不差哦，值得推荐～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0ecf956ee0cfe4b660e5dc435d6cf6e8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(250,1009024,0,'质量非常的好，第一次用严选，效果超乎想象的好。送的雨伞也不是糊弄的。质量超级好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/988d68ce481b4e1425bb12489787900a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(251,1009024,0,'东西不错，感觉和MUJI的差距不大，而且相对很便宜。非常符合人体工程学。希望能出更多优秀产品。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3e1738e13e6dbfc758906ba604738fab.jpg\\\", \\\"https://yanxuan.nosdn.127.net/11847bb011f62259378b0a6ba94e04a1.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b3eebbdb1e5fdaf2afd91141284c53d0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(252,1009024,0,'坐上去舒适，比MUJI的稍有差别，比较价格有好大差异，做活动一次买了2个，值！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ccc0fd11392c2880ba9958da9c9d7e2b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(253,1009024,0,'买来很久了……非常舒服，躺下就不想起来，粉色也比较耐脏，两个人也可以靠','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6c96022a4cfaa246baecd50076eb9f42.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(254,1009024,0,'非常满意，看上muji店里的一直下不去手，这次严选做活动就买了。没味道，很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b020d52ddc614fdcf9ec816482bbb464.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(255,1009024,0,'打开坐了一下午，坐着腰非常舒服，但整体舒适度肯定不如大沙发，胜在灵活轻便可随意折腾。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e337cf4321f2e318fcd703c13a073b19.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(256,1009024,0,'一大坨，单独放地上当凳子没有依靠，不舒服。但放沙发上做垫背很舒服，但有些占地。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5789a2ddfc467d218e6a85cb842833f3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(257,1009024,0,'瘫上去就出不来了，很舒服，跟muji差距不大，回头买个套换换颜色又是另一个风格。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1811203fecc7b720d3d00cd33acfdbfd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(258,1009024,0,'和MUJI毫无差别，质量棒价格却只有一半，推荐很多朋友买了。真是超舒服，家里喵也喜欢躺上面','',1,1,'[\\\"https://yanxuan.nosdn.127.net/71ada136cdd64373601825214011af22.jpg\\\", \\\"https://yanxuan.nosdn.127.net/07cad4eb2ac9535220388f0614518be0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ab01443acbffa84c8a979f61086e2feb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(259,1009024,0,'很舒服，这个价位还是比较值的，跟muji在坐感上还是有些差异，胜在性价比','',1,1,'[\\\"https://yanxuan.nosdn.127.net/47161cc3669b3a91e3a7c95aced21815.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(260,1009024,0,'比良品的填充物多摸上去质感差不多，舒适度比良品差些，孩子的原话就是没有良品的舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9e7936d8eae4f7a45a5bbe37879b298c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(261,1009024,0,'沙发我很喜欢，刚刚收到就体验了一下，确实给人一个惊喜，怎么坐都很舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a07e1324bca05e5c2198c7fdcdbbfef5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(262,1009024,0,'感觉跟muji的还是不一样。没有muji的柔软。不过很好了，价格便宜，很划算','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d74f0faab980d50255486c550b920e23.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(263,1009024,0,'很好，虽然没有muji的爽，但是价格差这么多的情况下还是非常满意的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9d9ecac6a61f7b1c0fcdfe332426fa75.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(264,1009024,0,'做工确实比淘宝的好，但是比无印要硬点，舒适度差点，套子料子很好，总得来说不错的。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5946e8e602b1e00ed1a96c9c878b7c73.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(265,1009024,0,'很舒服的懒人沙发，放在客厅小阳台，忍不住幻想搬家后坐着读一本书喝一杯咖啡晒一晒太阳的幸福生活啊！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0f451fb2b42e6437c158cd7bebc42b7c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(266,1009024,0,'确实偏硬，没有不想起来的感觉。拿掉外套感觉就来了。请在做大点，外套再大点，体验一定会提升不少。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/633602f256da4e2c6d42b3fe3cf9b2cd.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d0c54709e1e2cfe4e4e5a088941dc65b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(267,1009024,0,'外头的软套还欠大，跟无印良品比坐进去的感觉，还是那个陷入感好，这个略硬，面皮上的软面多点会好。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/56d816049828593feba466b2726f261a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(268,1009024,0,'舒服 惬意 不过身为两百斤的胖子没人拉一把甭想优雅的起来..','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7bc086b44be7d9b817e12241a88b6220.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(269,1009024,0,'很舒服，坐下后不想起来…颜色不是很好看，再买一个套换着用~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/431be25b6a30a2ed03ac47cf8300b03b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2a0ade4dd55807a40cc4f1fd0d94c68b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(270,1009024,0,'本来以为这个颜色耐脏，结果毛毛粘上去很明显，坐着还算舒服但是没有muji的陷的深','',1,1,'[\\\"https://yanxuan.nosdn.127.net/02cb14b2e29256273d8c29a0dea86f1f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(271,1010000,0,'天然之物.颜色纯正.手感柔滑.纯羊毛.绝对相信严选....严格筛选','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3fcd5c4831a8c6ae297d2df19194843c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(272,1010000,0,'加厚款并不厚，不过保暖效果还是不错的，摸起来手感也很舒服，毯子大小也合适。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/156aa67d25e08d2bb0e07c36f3949b38.jpg\\\", \\\"https://yanxuan.nosdn.127.net/662f6f65414bf0b96deaed9032c72378.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(273,1010000,0,'超喜欢这款羊毛毯，每天躺沙发时都盖在身上，非常保暖。猫也很喜欢。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7f986d83a287bce0544c34a52361d862.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(274,1010000,0,'颜色款式材质都是我喜欢的。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/014108f56d8cfa0a789b2630ea657a83.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(275,1010000,0,'风一般的物流速度，给赞！产品也很好，确实很暖和！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7ecd64239acdbf3d880e3c0d89ddc954.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(276,1010000,0,'手感很好，今天拿去干洗一下就可以送给婆婆了✌️','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cd8cffb16f9dbd42d26c2467c3b82363.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(277,1010000,0,'质感不错，超大，超暖，有股羊味','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d19829938e1089c751b4bec660b302e8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(278,1010000,0,'包装很粗糙啊，感觉都不像严选的了。款型很靓，摩擦皮肤也不痒，够厚可以拿来垫床单下面。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/647c6245bb7a41323c3ce2cff9bb639e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1da70ad5d263120bbe8a309c9d87eb10.jpg\\\", \\\"https://yanxuan.nosdn.127.net/096ee1bcd1e8143916c89d0b756bf0b6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/cd60d3af53d09fed72352c310457bd98.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(279,1010000,0,'非常不错的一款羊毛毯，冬天窝在沙发追剧必备，值得再入手','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e682cb83a0f6c72b6a7bab66e310c093.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ebc6cbf55475566f7a383a04acbfef5d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(280,1010000,0,'严选质优，值的拥有。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7638d404f13588d32f32989767e58b4f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(281,1010000,0,'挺厚实的，不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f086163bcb8ba408a5862f275e6067a9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(282,1010000,0,'很舒服 质量不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9d1baa05053cbdbd89149d9fd3cdc448.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(283,1010000,0,'这是在严选上买的最贵的一次单价的产品 目前为止，看上去还不错。虽然说已经知道他的尺寸了，但是看到他本尊的时候，还是觉得很大。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/afd45ceb55bc6bddc44cf50a5325401d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/27b45e94dd7a987829c32dd7422819f0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(284,1010000,0,'铲子我很喜欢，盖毯我老婆喜欢，不过没想象的厚','',1,1,'[\\\"https://yanxuan.nosdn.127.net/771bef5ae8b66de0852e6e1a7a40319b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(285,1010000,0,'毯子很不错！包装稍显简陋','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c5e2f6adb442afda75887456a2c7842b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(286,1010000,0,'正好在下雨天到了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/caf4a75974f6d2ef220b47c7f0df0738.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(287,1010000,0,'满意！！！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dd181bbf2b271c1c66eff6068de50dc8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4ca7b2d4e1b193e378de57645e0338ec.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(288,1010000,0,'很厚','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d14c3df3856e42532ca3627243b56e5c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(289,1010000,0,'都非常喜欢！柔软舒适！全羊毛的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/01dfbe2416893d0429da5516cdd9502d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(290,1010000,0,'好，完美','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e969eaebf84ce032638940d4a99cf842.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(291,1010000,0,'感觉还可以，就是没有礼盒包装，就简单一个塑料袋装的。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0b4748f99e520ce931291fa92b98a723.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(292,1010000,0,'赠品不给补寄，垃圾服务，以后想转去必要买了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(293,1010000,0,'非常有份量、有質感的一款羊毛盖毯。舒適度也很好，窩在沙發里的首選盖毯。值得推薦！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(294,1010000,0,'非常厚实，真材实料。\\n天气渐热，还没用上，但感觉是非常好的质量','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(295,1010000,0,'这款虽然没有其他的精致，但是又厚又软，很舒服，限购时买还是蛮实惠的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(296,1010000,0,'很好，性价比超高，和我前两年买的西班牙产毛毯简直一模一样，太赞','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(297,1010000,0,'很厚实，很大。家里有暖气的时候盖着小睡一会午觉非常舒服。就是不知道该怎么清洗。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(298,1010000,0,'买给老妈冬天坐在床上看电视披肩膀保暖用的。老妈用了很开心。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(299,1010000,0,'挺厚实的羊毛毯，颜色看起来也非常的自然，没有过度染色，适合配合被子一起使用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(300,1010000,0,'包装精致，做工非常好，颜色也正。网易严选好赞，以后还会继续关注。最主要妈妈很喜欢。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(301,1010001,0,'很不错 比较柔软暖和 春秋用刚好 这个价位算是物有所值','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3057506509b4cc0e612516375fde2408.jpg\\\", \\\"https://yanxuan.nosdn.127.net/32ed6eab4918d9bc749e8083111bf180.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(302,1010001,0,'超出想象的好！又大又暖，冬天客厅看电视的最佳装备','',1,1,'[\\\"https://yanxuan.nosdn.127.net/052e2518fae1f5d772ca0d1352e9bc25.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(303,1010001,0,'今天收到了，老婆很喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/839197bb4193cadec20c7a668f164abb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(304,1010001,0,'这下看电视不用担心冻腿了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/38f5c1f70a9c9c5e45f2fcb0b5184641.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(305,1010001,0,'我很喜欢，猫更喜欢。。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1c2bcd3005dbf06b98518524afb04f4e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(306,1010001,0,'比图片白一点 有点怕脏 好大 暖和','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f1f1e1333d1274e0787f1d805767cc2d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(307,1010001,0,'可能是刚开始 的缘故，有点掉毛，希望往后会好点 还是大力支持严选 希望不忘初心 找寻到更多好产品','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(308,1010001,0,'挺软，就是纹理不太明显，质感看起来有点旧旧的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(309,1010001,0,'摸起来很舒服，不错不错…','',1,1,'[\\\"http://yanxuan.nosdn.127.net/4c965af8feecdff00f8ef2083041d211.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5db2ec27fe5f4da0ad15e745fb190703.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(310,1010001,0,'送给闺密的结婚礼物，她非常喜欢。说好大的一个毯子，我打算自己再买一个','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(311,1010001,0,'冬天坐在办公室里的保暖神器啊，又软又舒服，一摸就知道是纯羊毛的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(312,1010001,0,'收到很惊喜，厚实、柔软、颜色超美，不必澳洲带回来的差！超级舒服和显档次。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(313,1010001,0,'冬天买的 超爱羊毛毯 虽然多少会扎 但看着都温暖','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(314,1010001,0,'喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(315,1010001,0,'感觉很厚实，就是有点掉毛','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(316,1010001,0,'非常柔软','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(317,1010001,0,'很大，也很暖和。但是也存在其他评论里提到的，有点掉毛。可能需要先干洗一次才行。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(318,1010001,0,'不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(319,1010001,0,'有档次','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(320,1010001,0,'十分柔软亲肤，铺在沙发上做盖毯了。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(321,1010001,0,'收到迫不及待打开，是我想要的，比想象的要好，质量、手感，颜色超喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(322,1010001,0,'手感很好！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(323,1010001,0,'还没用，看着还行，无异味。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(324,1010001,0,'非常好的产品，严选第一选择','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(325,1010001,0,'保暖效果不错，就是掉毛的实在是厉害，基本上盖完以后，身上就跟金毛玩了一天一样。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(326,1010001,0,'好东西','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(327,1010001,0,'已退货更换','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(328,1010001,0,'倒春寒正好用上，可以当披肩又用作盖被，实用。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(329,1010001,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(330,1010001,0,'很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(331,1011004,0,'这款毛巾被特别厚实，做工非常精致，质地柔软挺妥，能满足春季和夏天空调间使用，适合我用来午睡✌','',1,1,'[\\\"https://yanxuan.nosdn.127.net/635170b308fb7488adcc916c50513998.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f53167e6e44205599d358e88fc1d0b27.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e7b57b47db189cc8b9dba730953048f0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(332,1011004,0,'厚实，舒适，洗水的时候正常掉绒，洗过后不掉毛，不缩水，不掉色。值！又买了床红色寄给家人用。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a4930439358a64cd1ae391ac021a1267.jpg\\\", \\\"https://yanxuan.nosdn.127.net/6bfc27e44113c231c809ecbbe8fc30b0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(333,1011004,0,'质量可以，颜色挺喜欢的，盖了一下，挺暖和的，留着夏天来就可以用了，好评！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/21ba531d3d76877f426de429d57f1f91.jpg\\\", \\\"https://yanxuan.nosdn.127.net/999578493838a59218230b19fc57f91d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/0e49046b0ab483c0b4935ae6da13c1af.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(334,1011004,0,'在寝室用不错哦','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fd0a27fd1d0753fda7b3b51aca10048a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(335,1011004,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a7f4a05abc17737d47e1d87d4803de86.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(336,1011004,0,'质量特别好，物超所值！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ddb730d6b3a0405ba62da7e1015d9058.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(337,1011004,0,'质量好，盖着很舒服，好评。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/07367c480302a7536edf39eb66927f22.jpg\\\", \\\"https://yanxuan.nosdn.127.net/adf211d67143b56433a5949131b2376d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(338,1011004,0,'分量足，手感好。\\n(^_^)','',1,1,'[\\\"https://yanxuan.nosdn.127.net/37f07aeff1f2ca0f266c3b63ed14ddb6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(339,1011004,0,'还是感觉有些薄啊…………','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d7f22f2bab32a044d649b1c73f2b9a95.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8d074111cbe37a96b4c5bde64eda7747.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(340,1011004,0,'物流配送很快，质量非常不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1cc9dbaf08d59f1e8e20ceacf37b528f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2a34ee756c626188683150636e5a97cd.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d15b196d104468b9af5336460d668ac9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(341,1011004,0,'之前买了一条好好……果断又买了3条','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5db4b968c03ca319772f5f8fc19fb499.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b29e848512311c2ae3b41c281dfdd7c3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(342,1011004,0,'之前买了一条好好……果断又买了3条','',1,1,'[\\\"https://yanxuan.nosdn.127.net/28c2258831b97c2ee2d023c903b2e479.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c6ed25afdd223e407ff5e4c5ba1a36a8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(343,1011004,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0eab994ad4bce67a91a31c8b8ba6b779.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f1a6a066ce0870e42251b8de39a8dadd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(344,1011004,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3e03a9d133ca322c436215aa31ce9560.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(345,1011004,0,'质量非常好，又密又细，厚实','',1,1,'[\\\"https://yanxuan.nosdn.127.net/34c2152720a488a7f15986a693c8c9bc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9e20d4848260f11b14966a96b13ccdca.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(346,1011004,0,'不错很厚实','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0c9c3aaad0ee1db23010f2882fbe1b33.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(347,1011004,0,'被子真心很不错   很重很扎实，在厦门一床这个被子一床空调被就可以过冬天了   喜欢！！！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b53073ebee0024459ee2fe0e4d3c5fc5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(348,1011004,0,'听简洁大气的，颜色挺好看的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6a7825a1ddf67d61c7433df105a6baba.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(349,1011004,0,'实物非常好，空调被很厚实，拿到手满满的幸福感～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8459e0a6e239c46942de324a55e2c99e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fe615d5dad609e8221b4667243fbd5d4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(350,1011004,0,'首先对快递表示一下肯定，昨天刚下的单今天就收到了。真的很大很舒服，料子是稍微有一些硬的，不过洗过应该就会好一些了。我买的蓝色的�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/377394ea763cf519a56d8f0dd0d8f7db.jpg\\\", \\\"https://yanxuan.nosdn.127.net/52991510bc74fad033e7b249d7b9be13.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(351,1011004,0,'很好，喜欢，满意，好评，5分！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1d132318eb02ffe326361b49106885cf.jpg\\\", \\\"https://yanxuan.nosdn.127.net/6129ceaf1df0a28270c8ac3f14e0bbce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(352,1011004,0,'很好，喜欢，满意，好评，5分！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/415967bab62b55d5bd253a5b26784d06.jpg\\\", \\\"https://yanxuan.nosdn.127.net/71504a1c7520729d501dec2430f834c2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(353,1011004,0,'与想象中的没差别，好喜欢！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9ea5e29bc21bd9ec70fe7842183c2489.jpg\\\", \\\"https://yanxuan.nosdn.127.net/540d6c43e5158695e99d7d4b3ace78bd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(354,1011004,0,'质量好，盖着特别舒服，很软和，这是买的第二创了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1f9dec128763bd92305fb76adf6e7371.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(355,1011004,0,'没味道，质地手感都很好，AB面不错……相信严选','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0a2dabac03704e85b7b61b224aa69832.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(356,1011004,0,'很好，超出了想象，摸着手感不错，有很厚实很重的感觉，稍微有些味道（商品介绍里说了），现在正在按照商家的介绍放在洗衣机里洗。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/990daee00e22c42b1b79eeae9981c673.jpg\\\", \\\"https://yanxuan.nosdn.127.net/dc071c856d9fffd31b53eec17e274a67.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(357,1011004,0,'挺沉的毛巾被','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0e5afb723baf9d1e863ae0d97337aefe.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(358,1011004,0,'又大又舒服，质量可靠，还买一件','',1,1,'[\\\"https://yanxuan.nosdn.127.net/662393c53e638f08d81035f611b1e4fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(359,1011004,0,'这个非常满意，很舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b6459dfc4274559982b0389884dd30d1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(360,1011004,0,'厚实阿，很舒服。童年睡觉的感觉。老爸老妈都喜欢。买了两张，还想再买','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8108f53f41effcb7581cc1c03b3191de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(361,1015007,0,'严选的商品不论是发货，物流，到品质都是无可挑剔的！从心里说确实好令人满意！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4c3d137c1e299e5502fd0537281e5d04.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(362,1015007,0,'一见钟情的抱枕，铃兰的图案美得不行，质量超好的，性价比高。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b54ed26bd3fa54e53e7b7c50ae514751.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(363,1015007,0,'放在心理咨询工作室的，图案有的说像花儿，有的说像太阳，充分发挥自由联想，有的来访者从头到尾一直抱着，很有安全感。背面是白色，素�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f019d4ff0e4fdaf4c4123167870c28b7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(364,1015007,0,'必须好评！质量比想象的还要好，做工精细，颜色和图案都很漂亮，喜欢！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/75bab0a63713b6a37b83ff6e900c10d0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f0246ffca30bd97a32cf47da0d1b42e1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(365,1015007,0,'绣花美美哒，布的材质也不错！靠垫弹性也不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6b32775ff2d3b7a4c8b81d78161209fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(366,1015007,0,'很好看，很美式，准备活动的时候再买一个','',1,1,'[\\\"https://yanxuan.nosdn.127.net/90f664150dd6a28f4ea74ad7e9ec4a28.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8774ba9d9239f3e39877f555acaf15b8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(367,1015007,0,'真空包装，收到的时候扁扁的，打开拍几下就很蓬松很舒服，做工精细，物超所值','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(368,1015007,0,'第一次在严选购物，收到的抱枕让人惊喜！物美价格还不贵！值！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(369,1015007,0,'特别喜欢，跟家里的沙发很配。所有花色都买了，喜欢。。。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(370,1015007,0,'质量很好，花色是我喜欢的类型，刺绣很精致','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(371,1015007,0,'花色漂亮，刺绣精致，非常喜欢，严选质量很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(372,1015007,0,'东西质量好漂亮好喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(373,1015007,0,'做工精细，没异味，回弹性能好，抱着很舒服。就是两个款式厚度有点差异。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/45573a8d626928fefcb8fb7c7bcdc6b7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/0307884c4b73c2e6b0a5fd70ecb6235a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(374,1015007,0,'做工精细，没异味，回弹性能好，抱着很舒服。就是两个款式厚度有点差异。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/65084b80fa3a0a5c40c6af4f4574e257.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ba42c4196b5e35820e3876edfa271d10.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(375,1015007,0,'全五星！包装用心东西又好！抱着很舒服，也没有什么味道，重点是颜色和花纹很高级很好看。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b57c8ed5c06023a9602e181d0616ca47.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(376,1015007,0,'包装用心东西又好！抱着很舒服，也没有什么味道，重点是颜色和花纹很高级很好看。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/59e2113b257f591aac6cd05fe01bb34f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(377,1015007,0,'绣花的线材和预期不一样，这种线材类似于毛衣线，图案设计还不错，线头的细节处理有待提高。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6f872a084f469dbf1d2071e1502b7265.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(378,1015007,0,'老婆埋怨买少了，高端大气上档次，低调奢华有内涵的一对抱枕，买到就是赚到，严选处女评。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1709ad9668080f5d68e4d99af71e2715.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(379,1015007,0,'刺绣图样很漂亮，和图片一模一样，但是怎么只有一面有花样，这不合理啊。和严选的枕头一样好。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d31116d0a2308816f7132058cf65996b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/476d82da9638aa3c078a85fe86f33455.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(380,1015007,0,'3种颜色都买了，都好看，质量也超级棒，放车上放沙发都很般配！外壳可以脱卸清洗，拉链也很顺滑','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4fe031edec3f8274be884cf3ecc179de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(381,1015007,0,'3种颜色都买了，都好看，质量也超级棒，放车上放沙发都很般配！外壳可以脱卸清洗，拉链也很顺滑','',1,1,'[\\\"https://yanxuan.nosdn.127.net/107d05282780754c9caa389cbc675931.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(382,1015007,0,'3种颜色都买了，都好看，质量也超级棒，放车上放沙发都很般配！外壳可以脱卸清洗，拉链也很顺滑','',1,1,'[\\\"https://yanxuan.nosdn.127.net/771d79c61b79683b575d6896945626b9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(383,1015007,0,'同上，这款是美式的，配皮沙发很搭。不过比想象中的花一些','',1,1,'[\\\"https://yanxuan.nosdn.127.net/78ddc578bc98934b2afc1235d04a2ce8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(384,1015007,0,'本来想要买铃兰，可以没货了，这款花纹略显凌乱，材质还不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/82d0bb3c13ebb8c12759a604ebfecf46.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8830ef8eed5b08626e5d63bd18ca2511.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(385,1015007,0,'一共买了4个，质量工艺都蛮好的，配上深棕色的沙发，很漂亮，好评!','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1939b8c48f5fa5c7bd421399bb47195a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(386,1015007,0,'非常满意非常满意非常满意非常满意非常满意非常满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/afcadcb617c6fbe9296333f34e84a910.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(387,1015007,0,'很漂亮，细看稍微有些线头，不影响整体美观。稍微有点味道，放了两天没味道了。拉链比较顺滑，还没拆洗过，希望不会缩水。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3c427d485030de309dbb05082833485e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/7de21d869a06cec111430043e9476807.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(388,1015007,0,'真的是价廉物美，质感特别好，很精致','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0b6dacaa8a042d32aba41eba382831fe.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(389,1015007,0,'真的是价廉物美，质感特别好，很精致','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d848bb60aebae7cad32bf1b3ad20eec5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(390,1015007,0,'这款很漂亮，图案配色都很经典','',1,1,'[\\\"https://yanxuan.nosdn.127.net/82d0bb3c13ebb8c12759a604ebfecf46.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8830ef8eed5b08626e5d63bd18ca2511.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(391,1019000,0,'第一次在这买东西，感觉可以，高大上的样子~~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/977b2150ba8d0eb116fe28d5007be2b7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e146d5dd0edcede5bc6e34ad4fb7705d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(392,1019000,0,'没有味道，用了一段时间了，感觉挺舒服的，为家里人也买了几个','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(393,1019000,0,'限时购抢到的，正好买了新的床搭配上这款记忆枕，很柔软，回弹也不错，再也不怕落枕了～～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fbfd0741f4296cd6ef8494703f2012a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(394,1019000,0,'枕头非常舒适，恢复速度也很快，基本没有任何异味，网易严选值得信赖，值得推荐！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/af231880521c66710957202477b0d00b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(395,1019000,0,'包装高大上，看起来不是很高，味道也不大，不过还得放几天再用，第一次尝试护颈记忆枕，应该挺好的！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/34ab034f68d41a1c929e05616f17c5e5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fb330041a2215d63a6dda00d0d1f74f7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/0e05c2b6991b08e0c57df46588a93392.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d941f8ca89634db5b8b32ab435b5034a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(396,1019000,0,'手感不错，等晚上用了再来评价。不过物流真心快，昨天下午下的订单，今天早上就送到家了。给个赞','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e7be56d46a0076091e873413d5b7f630.jpg\\\", \\\"https://yanxuan.nosdn.127.net/72bf1ac2cab80221b79cf4d49d2deae3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f9fb4f6cf50bd3097004f4bd2cbcb91f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(397,1019000,0,'特别好特别舒服，原来用荞麦的枕头，现在再也不用自己砸个坑了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3efd90c51ccb43ff93d23d96b156ab7a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(398,1019000,0,'感觉挺好！其实外面的应该是个枕套吧。白色不耐脏，上淘宝买了个深色枕套，谁叫你们没有。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/db5f2acb16b53aa0ee0dacd9ebf7a572.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(399,1019000,0,'还行吧，对我来说高了，虽然会软下去，其实也没有非常软，第一次用这种枕头，还没办法客观评价。中间有点小瑕疵，总体一般。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d276cf117e469d6f594889a517536d8d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9e5ab36536442c1cf5d908151c8ef658.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e280fe74f962b7cc9efbb07fa10050d2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/39ba6fa7d9e810104bc050b59b293cae.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(400,1019000,0,'枕头有点味道，可能刚送过来的原因吧。不过震起来确实很舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9acc2457fae7b44f46cbf38dfc46a207.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(401,1019000,0,'针头不错，侧睡比普通针头舒服很多，减轻了颈部肩部的力量，建议喜欢侧睡的人都入手一个，不然很容易变成习惯性耸肩','',1,1,'[\\\"https://yanxuan.nosdn.127.net/00fb73c8a948f8079217a24c80d43ca2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(402,1019000,0,'枕头的弧形并没有想象的高，还不错，买了四个，未来婆婆公公男朋友我各一个，挺好的……很清爽，婆婆给做了枕套，哈哈啊哈哈哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bff23e525e949e872b930e710d08ccc8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e838d02a8dbe90a22e3d552dcc873118.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(403,1019000,0,'放宿舍用的，平常的枕套也可以用，也不会说小很多。喜欢仰睡的最好还是枕低一点～之前脖子不舒服枕了这个枕头好多了，超级开心！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/22b0065c003aa2e567870cef17292b2f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(404,1019000,0,'第一次买。比想象中软。很白。睡过之后才知道。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7a729ed5625387171597be75d99d82b7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(405,1019000,0,'东西不错，很少买到和描述一样的商品！！！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/4a066e86af7fae026b8bfc1d4acd26d3.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(406,1019000,0,'东西不错，用了之后睡觉的积极性都高了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/034359a1d899f2e3de6666a987284704.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(407,1019000,0,'东西不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f2ff354d8d573ef7265a04b3213b0657.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(408,1019000,0,'很舒服的枕头，值得购买','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9e0e131d1c9ac1694a4a21d95f10d13c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(409,1019000,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f878ae2a2c8950d11d35fcf93115968d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bc5fd9cf526fd74cec4ac931369dc9b4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(410,1019000,0,'买给婆婆用的，评价非常好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/110d61a1bb10ab2c1273859589e06aaa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(411,1019000,0,'没味道，不过没想象中软，用一段时间再看。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a76de192aa1df77f12336275abc705a9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(412,1019000,0,'回弹不错，手感很好，柔软厚实','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0fbb7573e64ebf5db125401fb129403d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f56dcadfa362b6e53239ebc91753aba8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bed16cde08d5035a14bc2cb2fab9376b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(413,1019000,0,'非常好，枕着很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c634bca55395e106ed9d9e73f15e2b23.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(414,1019000,0,'物美价廉，性价比杠杠的。其实我是限时抢购的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4d74146663ff6bf900ad47f1843bf451.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(415,1019000,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/04ede9f5591458715b3cf4013edf5239.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(416,1019000,0,'有一点点味道，要晒几天吧，不敢直接枕','',1,1,'[\\\"https://yanxuan.nosdn.127.net/20842408304e34045e2c5c95d98657da.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(417,1019000,0,'买了一对，制作得比较精良。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/efa79ae21d5235c277d6e2b14eb67d76.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(418,1019000,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/70318a0f18f00cc63294f4d0f865c1a0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(419,1019000,0,'使用了几点已经适应了，弹力适中，快速回弹。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/154652fd3dfbe7ad2d1414f280518be9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(420,1019000,0,'一直再在用很棒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/143711134f3cb97409ddcd1e19d67956.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(421,1019001,0,'特意用了很长时间才来评价的，枕头不错，刚开始不太习惯，用了一段时间，感觉挺不错，再也没有落枕过，脖子也挺舒服的。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(422,1019001,0,'不错，很舒服，昨天晚上开始试用，睡的挺好的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(423,1019001,0,'买回来就迫不及待试了试，果然超级舒服。就是稍稍有点味道。总体来说还是很好的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/40e4859453a6cfaa129fbb740f335cc7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(424,1019001,0,'自从买了记忆枕，睡觉再也不会落枕了就是短了些，如果能做成一般枕头的长度就好了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/46e9a8a98f52712c49871e60d706d79c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(425,1019001,0,'这个价位的品质比卖场的好多了，手感和回弹确实理想，赶着限时购抢了两个。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d6c2b3a13609142f36bb8f58984e82e6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e343c8d89cea3e513b0335e8adcddb65.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(426,1019001,0,'挺舒服的，虽然对我来说有点点高，但是因为弹力好，并没有不适的感觉。之前总是落枕，这次醒来，颈部还挺舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c9da1feb565f8d0aa7c7fb2804b700f1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(427,1019001,0,'绿茶真的是不错，味道很正。\\n枕头很舒服，就是白色不耐脏，套个枕套。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/de21e4f108b4802ae9c0c29fe93ef606.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1e5877efb64d03264d86fd7cecf5a16b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/433a70e334bcc9b42aa9dd6e37ae5223.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(428,1019001,0,'略微有点硬，不过睡着挺舒服，侧卧很爽，要是再有枕套就好了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d6f4939f66356b71139914724d99378d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1fff5064bd1c6a9663a2e78e49e0b2fa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(429,1019001,0,'第二次买了，之前买了一个很舒服。不过上次是压缩包装的，这次没压缩。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/deaac3830cc1b39f4036aad11481911d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(430,1019001,0,'挺好的～收到货了，拆开也没发现有味道，可能是个别的吧，挺舒服的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fabdf1c9e3502a4a7880ab62234c4b08.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(431,1019001,0,'使用三晚，睡眠品質明顯改善，頭頸獲得很好的支撐，左右護頸有效加分，會推薦給朋友','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b88cfd6f084f637f3c384282b377693f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(432,1019001,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/39827391676935a0b5b438063217e650.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(433,1019001,0,'高颜值枕头，很舒服，让我每天睡好觉','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2def98a9ebeb2ab21928ef22de8969e9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(434,1019001,0,'我很满意 枕头很松软 喜欢严选的简约和高质量','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dc4abe070c7d90fa1567b5a102259445.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(435,1019001,0,'非常不错的东西，以后购物就严选了，大家快点买吧！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/46de2bb73159a6d39e2486aba890b43e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(436,1019001,0,'枕头的软硬程度刚好是我喜欢的，开始枕的时候觉得高了点，现在习惯了也挺好，睡在上面脖子很舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/38519811d2a30ef63cd9a5347ec1d21f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d01f3c7c39febd471ce3051097ddffed.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(437,1019001,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6b8f525cf1190b213c75b3c041724f98.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(438,1019001,0,'超级好，还可以呀，，爸妈很喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1be7ecf2c80c3e1d5ed273fc4a6b1d05.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3781e0e8f999e6ffaebd116a63b092e4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(439,1019001,0,'给爸妈买的。很棒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/89b164312caa1ab479d4d4776754d64f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(440,1019001,0,'符合人体工学，柔软回弹好，睡眠好伴侣','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8387a4c36cf221875e442ff79ee8e2d7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/668a9e7d80a55d6182b1fa831bd7ca10.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a244df8022193c5dcf240c509349af39.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(441,1019001,0,'晚上试试','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9fa9b008ee0cd8ca7d0cb8d5a374a3f9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a740874a93fb86758e9bfc6ce5edcc07.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(442,1019001,0,'好用，和老公一人一个。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2fc64ae459ba627b350058cd2a9fcd9a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(443,1019001,0,'手感不错，后续追评','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d5c64c787daf196c781ce89c212161de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(444,1019001,0,'开始觉得挺高的。枕上去发现刚好。回弹比较快 。没有味道。包装挺好。唯一的缺点就是我觉得太小了 感觉一转就枕不到了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f88dc1f34457cd746bf69d56f9007864.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d1869783fac3c7ba1eb25cbd79c7d8fb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5ba061e6048ff7cf3ffc86c736b73fe7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(445,1019001,0,'我对产品的要求是很高,的，枕头手感很好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/351d16f83bbc87c7e95a730d5a939f0b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(446,1019001,0,'严选夸张的包装，我就不上图了，总之就是高端大气上档次！说说感受1.软硬适中，比mengjie的一款100多的枕头硬一些，和luolai的一款枕头差不多�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8c57c950d9ffb76b895b80a7fe1acab7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ab9303135e7a016c4d06129e44075d37.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4c0519875ccf2927f53027b603644a8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(447,1019001,0,'放在1.5米床上正合适，1.8的床枕头会显小，但枕着是蛮舒服的。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c47fef50da78c59ae95e40c4a602e5fc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(448,1019001,0,'没感觉很保护颈椎, 反而睡久了会酸疼.','',1,1,'[\\\"http://yanxuan.nosdn.127.net/eab951dd532a3f2e05fb707e2e9895c7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/efb925c430e3983e289a6b93cb41e0df.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c417161df96586b583f99958cb572a42.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(449,1019001,0,'手感很好，记忆能力也很强。味道是有一点，但不致于很浓烈，拿到阳台上晒一下，看看会不会好很多。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/19e929005c199443ee3a16c011941670.jpg\\\", \\\"https://yanxuan.nosdn.127.net/431da993fcc0eb5b4f769b1fe732d7e1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(450,1019001,0,'看着还不错，没有什么味道。三星半。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3809b558a500ff7f003dae2bf1c24d01.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f8d0f0c1d7d06cbb6eb4186ae4e01ac8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(451,1019002,0,'很舒适，很宽大，回弹效果算是过得去吧。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(452,1019002,0,'京东plus会员，现在对严选也很喜欢，节省了挑选东西的时间，喜欢的话可以放心下单。好的生活，没那么贵。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/920e65862ada7abdc90a557bb52bb5a9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(453,1019002,0,'包装太好了，物流也很快，枕头很好用，高度合适，好评！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2b605f9207ed20a204657239b7e3aa54.jpg\\\", \\\"https://yanxuan.nosdn.127.net/0537d635b0681d808a49c938eb1e5bd0.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3fc181758d5f01eec774fee18eb504cf.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f49797d3383f97f5943e625c1f0f1d91.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(454,1019002,0,'非常的舒适，男盆友一直让我上淘宝买双人枕头，刚好在严选上看到，199觉得好贵！但是一看淘宝也是这个价格！但是严选有5.1减价券嘻嘻嘻嘻','',1,1,'[\\\"https://yanxuan.nosdn.127.net/df6d961b8b7fb26fae2e88535de262c6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/89fb73ced773b39fab4082c11ab58673.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(455,1019002,0,'双人枕头，收拾方便一点哈！枕着也舒服哈！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7498e2940b28af120cd0ec92a0c66638.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(456,1019002,0,'特别好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dd77d62b07a89101bc5a0a1ebc6957cc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(457,1019002,0,'昨天中午下的单，今天早上就到了，枕头质量很好，赞^_^','',1,1,'[\\\"https://yanxuan.nosdn.127.net/376436f6099e0fa98a7f9ec27af993cb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e0986515721ad7aba8a4788c1eed0a02.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(458,1019002,0,'性价比高！舒服！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f407f00c3a782907f3bd947597f1ea4b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(459,1019002,0,'东西质感不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3cfd42b6bbb132b7c28b169711bd4a18.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(460,1019002,0,'看着很好，顺丰也很快','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e00891ae79fe658b8e3de2917205015f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(461,1019002,0,'散散味','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1e22290cbe14a2e98441939baab3cf58.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(462,1019002,0,'包装好，物流好，味道大，得放几天。质量好。外面得套个枕套。赠送的连裤袜两双。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2a68e9bbc4d675c1bd723a5338a82528.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a0cb6796e54659385946120e430dae59.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4392e767d216022e5359b7709a5ae3b9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(463,1019002,0,'枕头不错，很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/05d02da308e3989c9fca0d5f4896a72b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(464,1019002,0,'很满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0c5620ccad56f071205697e37885fd62.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(465,1019002,0,'妈妈很满意~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/061ae0703caf5ebadccc08eea088fdf8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(466,1019002,0,'非常舒服，非常好，再买一个，哈哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bd13195748611dd22bba00b6a194f980.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(467,1019002,0,'感恩节给老爸老妈买的，看着很好，摸着也舒服，希望他们睡个好觉。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d51d8ca125798583b4c317d4918b8e0a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/635d93871385e2fc2c6fc6eee1f8c383.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5cc284cb123784f42d8ffeb342ac0e08.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c4ecd1c979ea4c518dd013bee05b711.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(468,1019002,0,'这款枕头确实也是我买过睡的比较舒服的一款！大小高低合适，脖子不累！弹性好！特别适合双人！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/bfa855a97f4c260766d2d949f5a4623f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(469,1019002,0,'慢慢的诚意，好旧没看到这样的双层包装，已经把app推荐给朋友','',1,1,'[\\\"https://yanxuan.nosdn.127.net/adeb8c4ce257ce5ed8b42ad926bf2f39.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f3cbccb526b8bfe70f19fd8dc6474cac.jpg\\\", \\\"https://yanxuan.nosdn.127.net/edfe4f2f59733f47420044ec803d3511.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(470,1019002,0,'很好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9c5d81d2e894be9a2edf15e4ffce5c86.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(471,1019002,0,'论包装我只服严选。论快递我只服顺丰！看商品，究竟是枕头太长还是人太矮呢！赶紧入手验证吧亲们。。。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/55eda2d46e781602fe1732ab087dd6ec.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(472,1019002,0,'网易的包装太好了，我觉得完全可以回收，如果产品再丰富点就好了，枕头还可以，我喜欢睡低，','',1,1,'[\\\"http://yanxuan.nosdn.127.net/ac7f99a0d6ed0630595896754d22ecaa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6c2c98716fc61299d19be8d1484f95e2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a755022c0d6fe33716aea91aad8eb752.jpg\\\", \\\"http://yanxuan.nosdn.127.net/729e5d7f1424d8b43873f7fa33d1ad6d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(473,1019002,0,'严选品质没的说，物流也快','',1,1,'[\\\"https://yanxuan.nosdn.127.net/aca9c69d3b7c13312dbd3a37509b51c3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(474,1019002,0,'不错很棒！睡着很舒服！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/84d494d5b7f0c28a326c8092ee1a55ea.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(475,1019002,0,'飞机盒+礼品盒，包装很到位，快递是顺丰。看评论说枕着舒服买来试试，枕高的一头刚刚好','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f54ba5cceada35bd0afc275760ebbac0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(476,1019002,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f2bded32842321014e42237e44e354f8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(477,1019002,0,'枕头不错，家里人都说质量可以价格便宜。最好有附带枕头套卖最好。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e6ba6f9d97f304ca62d417fec4a3fbde.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(478,1019002,0,'妈妈给好评！她颈椎不好，说用了这款枕头非常舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ba5d1d8c134420dc12044b34f5124f7b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(479,1019002,0,'很不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c5af0a8d29ab91608dc382026cf28b7f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(480,1019002,0,'很好，很满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3248f4e4255c42604a0434417c086831.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(481,1019006,0,'好用！特别舒服！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3743c2d0fb230661399466105afb5d7a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(482,1019006,0,'还不错哦~~~很舒服，很大','',1,1,'[\\\"http://yanxuan.nosdn.127.net/62c27ea54e33932e563afeec1c476241.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(483,1019006,0,'下单后到货及时，感谢！\\n尚未使用，使用后再追加评价✺◟(∗❛ัᴗ❛ั∗)◞✺','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1754d66ddacaa93156bfe018a46d3762.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(484,1019006,0,'到货速度很快，手感也很好，非常不错，气味问起来像中药，感觉很好！用一段时间后再来评价…','',1,1,'[\\\"https://yanxuan.nosdn.127.net/244f35238f3e8a49444d51f71faf6e62.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(485,1019006,0,'快递挺迅速的 东西也很满意 用一段时间再来评价效果吧','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c57a8dc16113bd7c01a3d707cb97f7db.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d5afdb995c94d703f890237c92e7c2bc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(486,1019006,0,'还没用，不过手工不错，应该很好用。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7b4d2e62598b06a44588bd522f3da4d8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(487,1019006,0,'第一次在严选购物，很满意。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2ea24ad589d12d7ad7764069000436f9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(488,1019006,0,'很快到了，还没用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cffd147b1f0565d02b985f79ccf25636.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(489,1019006,0,'枕头很大，睡起来也很舒服，是个好东西。外观也很美。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/cd1ae96536d55fcafb5d3707c0a3479e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(490,1019006,0,'看到实物感觉不错，物流挺快的，还没有使用，期待效果，相信网易逼格高。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8a339c4213d38c26e7434d904b7ef44e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0987c789450e8578e8771182cc4f8b74.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(491,1019006,0,'已经枕上了，还不错，正好适合我的高度，太赞了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e121edd11baa997bf99ce28ecd9c57d1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/73a22cd09dcce6c143bf13ed2d87f411.jpg\\\", \\\"http://yanxuan.nosdn.127.net/666d89f0b2f8082b853bcc85b05f80f8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(492,1019006,0,'做工精美，功能性佳，改进睡眠品质，真是物有所值','',1,1,'[\\\"http://yanxuan.nosdn.127.net/3295e86831e58a547c9d02af398ebdf2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(493,1019006,0,'小枕头很好','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d501148d4be2683fc216f4820587aa19.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(494,1019006,0,'睡眠效果不错，但 发票寄送很慢，不满意','',1,1,'[\\\"http://yanxuan.nosdn.127.net/38173cfe72e6a3c7399fd9bce2b1a508.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6c1c7dcdcb8a3d67c46859b81fcd54fb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4975a8cd6eaeccb64104190cebe83fef.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(495,1019006,0,'本来买去宿舍用的 谁知道对于一米五的床已经这么大了 我们家居然没有合适的枕头套 最后还是把这个枕头套的边缘拆了才合适 总的来说很满意 ','',1,1,'[\\\"http://yanxuan.nosdn.127.net/849ce52f9c5eb124a4e309b04f8ad455.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(496,1019006,0,'包装严密 枕头不错 是最满意的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/720c372249378c53e24d952c8e4b371d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ce7617ebaca5705074401054626025e1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(497,1019006,0,'果然没有让我失望。网易的东西都是我一直很喜欢的，良心产品。枕头很舒服、软硬度和厚度都很合适。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/faea0a3bdf26a4976b9944979a0aac5e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(498,1019006,0,'不错，好低合适还可以调节。质优价廉','',1,1,'[\\\"http://yanxuan.nosdn.127.net/2208450720dd7bf51abacc8ac5d751ff.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(499,1019006,0,'还没真实使用，看起来挺大。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e6c3665c5b5cf77f306ad470473f63f9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(500,1019006,0,'果然没有让我失望。网易的东西都是我一直很喜欢的，良心产品。枕头很舒服、软硬度和厚度都很合适。支持严选。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/3d30bd75af0cf2e5bca67650c85dc72c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(501,1019006,0,'朋友推荐的APP 价钱不贵 睡着也很舒服 以后会常来严选','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e424bc35c6e4eb4d31b58e06c4ff95f8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(502,1019006,0,'东西很好，很大，物流略慢，给妈妈买的枕头，希望妈妈枕着这个枕头每晚都能睡好觉，支持网易严选，还会再来购物的，会推荐给朋友们好的�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b12ac1dea50b7293bfbd23957508fb17.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1ce39f5f3618a0298ddbb8a02eda63ef.jpg\\\", \\\"http://yanxuan.nosdn.127.net/319bb56d8b76ed9dac75a0264b7332b4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(503,1019006,0,'枕头高度正好 非常舒服 一觉到天亮','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1ee3507c19892c726bf817fdf4d808a8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(504,1019006,0,'枕头非常好，两年买了无数的枕头，这是唯一一个用的觉得特别好的，要换枕头的时候肯定会回购','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(505,1019006,0,'软软的睡着挺舒服，严选质量不用说，就是中间有点小，滚来滚去总枕不到。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(506,1019006,0,'买了一堆东西，手工皂是送的，然后为了这个手工皂，我又买了皂托，买皂托的时候顺便买了袜子。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(507,1019006,0,'我感觉一般，没觉得睡了和一般通俗的枕头有什么区别。护颈没多好，反而还没平常的那种舒服。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(508,1019006,0,'抽了一个垫子出来用着很舒服，严选的东西，买着有瘾。品质好，真的不错。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(509,1019006,0,'高度合适，而且质量超级棒，对于我这么爱碎觉且挑剔枕头的人来说，真的好棒~','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(510,1019006,0,'我和严选的故事，从一个很好的枕头开始，每个疲惫的夜，我们一起相伴度过……','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(511,1020000,0,'靠垫很赞。我在沙发拿来当枕头，也挺舒服的。hhh','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c9c5b3f9928980e9c9005e90fa569efb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(512,1020000,0,'选择网易严选没选择错，东西很软，有回弹，靠着很舒服，我个人偏向喜欢硬一些的，这个偏软，但是也很好啦。包装还有快递都没得说，必须�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/06d74a02957e20cedca8c809a42d7114.jpg\\\", \\\"https://yanxuan.nosdn.127.net/373992f52f275ffc7eafcc7104a2b310.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2bb835d88a0869ab3ef71eb823c0ca6f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2524c9e01b537f6f47f775d6aef36af4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(513,1020000,0,'正合适，很舒服，上班终于不再难熬','',1,1,'[\\\"https://yanxuan.nosdn.127.net/809fa35edcaae9a3c0b603e4f4418bef.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(514,1020000,0,'靠在腰间，舒服，上班久坐不酸。现在想买写可靠有品质的东西都上严选','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(515,1020000,0,'绝对舒服，办公室腰靠。贴心的记忆力。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(516,1020000,0,'好用，有缓解一点腰酸','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(517,1020000,0,'简直不能太舒服，开车太实用了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(518,1020000,0,'这个真的超级好用！完美解决了开车时腰部酸痛的问题，好评！以后准备再买来办公的时候用～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ce1c368ebff8ab2c7b8bc93cb04942ef.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(519,1020000,0,'包装的很精致，我很喜欢，没有想象中的大，但东西感觉很好。明天带到办公室试一下。应该会不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7c750b62d6fb0c0f0783b5b87b346c4c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(520,1020000,0,'和描述说的一样的确有点气味，得晾几天。没有想象中的硬，觉得偏软，像枕头一样','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f121df81266b5ead7cebc1631877ace6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5a22c27871fad83331c162755d0d1470.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(521,1020000,0,'一直想买个腰靠，终于在严选下手了，大小合适，软硬也适中，包装袋尤其惊喜，软软的，还可以拿来装装别的东西','',1,1,'[\\\"https://yanxuan.nosdn.127.net/550e8928c05388e5b2a5b01283702fd8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(522,1020000,0,'体验了一上午，咋说呢，如果再大一点儿就好了，可以照顾到腰部以上的位置，不过还是挺软乎的。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4fffdb82fa6ab43a6365c2029f6df519.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(523,1020000,0,'放办公室椅子上，一直在用，挺好，做工质量不错，价格合适。还没形成习惯，过了这么久再次来关注严选，希望多多有活动。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/34cdf7cb9c69a64fde058e68ca7982d2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(524,1020000,0,'还不错   慢回弹的那种   材质很舒服颜色特别满意   淡粉不骚','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8bf5549a93222415180503e0016cdded.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(525,1020000,0,'真的特别好用！买的第二个腰靠，之前买的放在车上，后来又买了一个打算放在办公室用～做工很好，能完美的支撑起腰部～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8dc64013c5f2415d552975293b7ec31f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(526,1020000,0,'比较软 但是放在椅子上还是觉得一个不够 这个感觉价格还是有点贵','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1356367de183000f92789cb0cc1bd242.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1e7a72baa7fee3723c0fb489161eda58.jpg\\\", \\\"https://yanxuan.nosdn.127.net/49678012c43a0c3537c4cd35b35471d1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(527,1020000,0,'很软  放在椅子上很舒适  就是容易压的很扁…','',1,1,'[\\\"https://yanxuan.nosdn.127.net/94ec44fd7daea95d46f184ad3bb8a68a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(528,1020000,0,'超级棒啊 办公室必备… 可调节带子伸缩性很强 在严选买东西从没失望过','',1,1,'[\\\"https://yanxuan.nosdn.127.net/28d2de003efe4566a9bd1de3cd45b4f5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/82c3cab9b69f61bcd50e5fbab3aa5baf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(529,1020000,0,'蛮好的，希望时间久了不会压下去就不能恢复了……','',1,1,'[\\\"https://yanxuan.nosdn.127.net/62fc3fa5cb0a0185277a1e0b53fb0b34.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(530,1020000,0,'这个组合不错吧，坐垫比靠垫缓释要好。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9fe8daa5581acff11096306b9607bb82.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(531,1020000,0,'垫了之后很舒服，弹性也不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fb29b948cae39766c37fa3aa4f164d58.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(532,1020000,0,'挺软乎的，不错。是记忆棉，可以恢复。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dabf8a152140604c8c033549f408e324.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d404e0e3edf0eae7e80f12c6372bce94.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(533,1020000,0,'公司的意思很难受 放了它腰舒服很多','',1,1,'[\\\"https://yanxuan.nosdn.127.net/49fbf82054a53d7a6176fc793ff57917.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(534,1020000,0,'好的生活，没那么贵','',1,1,'[\\\"http://yanxuan.nosdn.127.net/37334e62e1c8b53562768522bcbcc13f.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(535,1020000,0,'希望放放就没气味了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f1d1f25800dd4e7a1406f18708c56950.jpg\\\", \\\"https://yanxuan.nosdn.127.net/162c475af76421c5bd4848cbbd29efaa.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5498420b755644f1bd275152dd6716cf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(536,1020000,0,'大小正好，放办公室用。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4a354c99b743c91063f8f6cbc213220e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f4d1aae3a27fc895fbdfe2598451e06f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(537,1020000,0,'非常舒服 还是很不错的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fc6844a7331ac8b7b07ae78e803a7d45.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(538,1020000,0,'已经买了两个，办公室必备','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b56a20b9a282747a1047933e25ed94e9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e81787ee465b0804e1f320899d9bea6c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(539,1020000,0,'固定的带子如果固定起来就会翘，所以没固定，这个支撑角度应该可以的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bc8ccb8692e92a75c6dfe71664510830.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(540,1020000,0,'很舒服，坐着终于不再是一种煎熬','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9919d565b801e84addd8f68f44b61050.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(541,1021004,0,'超喜欢 摸着柔柔软软的赶脚 这个季节马上就可以单独改了 柔肤滑腻','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(542,1021004,0,'包装完整～毯子很薄～触感很棒不扎人～一个人很够用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(543,1021004,0,'细腻，手感好。不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/95c04489fe537931d46712efe33150b2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(544,1021004,0,'摸起来手感不错，柔软，盖着也舒适。但是染色在边上没染到，有一条边。严选还号称质量把关呢，有点怀疑。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a161e2f52440acf5a3020b18b46cc8b1.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ec0a51ff14b0a8643868f98e10c5fa4c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(545,1021004,0,'盖毯很大一块，摸起来也很舒服，比想象中的好多了，赞赞赞，好开心','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d62c8e52b81ad641e840be162c4deeb4.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3cf1977b037354dd9135b2924f01807e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(546,1021004,0,'严选里面，认为最赞的货品，特别适合女生，白天可以当披肩，晚上可以搭被子上更暖和，穿裙子睡衣时候可以搭一下保暖，质量感觉也很棒，�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/458788add98d177564744c1e64805aa6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ec32609a76df38733f1352b8279c19e1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(547,1021004,0,'轻柔舒适手感佳，沙发上待着就靠它','',1,1,'[\\\"https://yanxuan.nosdn.127.net/09e6f7935abe6919fbb85c045453d649.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(548,1021004,0,'非常棒的毛毯，手感细腻柔软，喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/97f82258d18ecb3bf33e13c8d1264522.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9b1c323751b77840d8e01f82f10c7a3f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(549,1021004,0,'有点薄，不过很软摸着挺舒服，因为羊毛絮絮有点多','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dd235ed4c86af50dfffb08a11ee1b6d3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(550,1021004,0,'这个毯子很赞 很舒服也很保暖 又入了一条姜黄色 羊毛毯难免有些扎 不贴身就好了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e5bad28ebdf9a355d38fbc5e55865b55.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0dfcd3a55f00b6dcdce1e4bbb28b5981.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(551,1021004,0,'料子很不错，手感很好，挺舒服的，就是感觉有点薄。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a8d700cb145afb5238c59fadb917ecf2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1c07b35ae6d1211045289944c9062b1f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(552,1021004,0,'宝贝质量好，货正价实！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/171da27ecbbc4ad321f94d6e08a6cd9e.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(553,1021004,0,'宝贝质量优质，与描述完全一致，值得购买！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/7b08d1772f9a8bf6b69e0d360c562396.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(554,1021004,0,'好喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/99501eb64c85b80f8441bb29c7e0404d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/611b91b36cdf83550e8ff51519b70b71.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3b5f7c7979f28313a9ed0b4c2e9d0935.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(555,1021004,0,'容易起球，较薄','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1680a1a0d0f15461b45c7c7ddb0e286e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(556,1021004,0,'非常满意这条盖毯，几乎可以当作毛毯来用，因为首先真的好大张，第二很厚实，折起来相当重，本来想当披肩，试了下可以把整个人裹起来了�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/58a4c9453b58c42961f84c668571a7ed.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(557,1021004,0,'手感不错，很喜欢！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b7350262c6e28c90629e62c94371c35b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(558,1021004,0,'超级棒 有质感～提升床品逼格的利器','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8547f26652a6c2059b4e0a246a16209b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(559,1021004,0,'柔软细腻，是第一反应，降温后盖在腿上，非常舒服','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c98335cc4cb2411d90e7a0b806412383.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(560,1021004,0,'刚收到货，包装讲究，看上去不错，双十一三天到的货。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/35e36e81f65499831b278b57909c23a5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(561,1021004,0,'用来送礼，做生日礼物，都很爱','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1d269667e4726de78e50ab31eadb6195.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(562,1021004,0,'手感不错 颜色很适合冬天','',1,1,'[\\\"http://yanxuan.nosdn.127.net/2165d24376b3601a69fa527363ead10e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(563,1021004,0,'满意，相信严选，质量非常好。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e8fd89a7508fc53b83b7fba07e809a48.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3794b5a39646825076be8ca906dd68f1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(564,1021004,0,'质量很好！拿到家最好再透透风','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d10f75cea70f3c9deece05f45d5182cd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(565,1021004,0,'收到马上就用了，第一次用网易精选，品质不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e4e1354ce6559657aea7262fe64c23be.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(566,1021004,0,'很柔软暖和的毯子，如被子一样大，靠在沙发上用也很合适。平时还可以当披肩，颜色百搭。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(567,1021004,0,'送给男朋友的奶奶，感觉厚实又大方，自己也想再买一条','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(568,1021004,0,'给爸爸买的，冬天盖着在沙发上看电视不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(569,1021004,0,'公司年终奖品，都很满意','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(570,1021004,0,'公司年终奖品，都很满意','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(571,1021010,0,'很厚实。灯光问题。实物和照片一样颜色，没有色差。质量很好！大爱啊！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a8a0454723859c92af1dc6a10272b535.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(572,1021010,0,'颜色好看，触感舒服，刚好和窗帘很配，喜欢，爱上网易严选~','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b7e3e6d54808e7bc296699e41d597543.jpg\\\", \\\"https://yanxuan.nosdn.127.net/65e0859c700533fcc37ce691978ea68e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(573,1021010,0,'发货好快呀，昨天下午订货今天就收到了。感觉颜色还不错，像水洗牛仔布。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(574,1021010,0,'尺寸合适，设计很好，盖在身上很舒服，很喜欢四个角的设计','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(575,1021010,0,'被子很不错，材质很舒服！搭配之前买的芥麦枕头真的睡觉不要太赞了！价格也很合适，快递严选一直是顺丰，速度大家都懂！值得拥有！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(576,1021010,0,'颜色很清爽，有点儿牛仔水洗布的感觉，性价比高。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(577,1021010,0,'颜色超级赞，铺上也很舒服，适合夏天～','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(578,1021010,0,'收到货就洗了，喜欢的颜色，不暗也不亮，以后的四件套就是严选了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c55679696d860ec563e18b366982d09e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bd1fd4276a9bb4e770397ec227512225.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(579,1021010,0,'1.5米的床，买了1.8米的尺寸，不过质量很好，性价比很高！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/abd45ff67391e8e176f7e503e75c4283.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(580,1021010,0,'收到了就下水清洗劳动节晒好了就准备给儿子换上用的(⑉°з°)-♡','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f3daf5ae597a91cbfe0ab36a603a716b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d407a299c050a00bb3f8c19c1bbe5ce9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/39584183f2fcaad576f84949ec7b6cfc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(581,1021010,0,'怎么滚，怎么扔…都是好姿态…随意随性，自然！床品应该这样子！没有方向，正反，没有任何条框…','',1,1,'[\\\"https://yanxuan.nosdn.127.net/62571b423e27cd69ffb391457a5916de.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e99535c6492b6c01bfc85b72872b2304.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2c6c6a59044bed5367533b478d145430.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b6e369f36cf152ebd7147644f7f70fd5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(582,1021010,0,'因为迫不及待就要拆开洗。所以忘记拍照。是我喜欢的颜色。由于光线原因，拍的有的变色。很舒适。爱。爱。爱。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/46e48ab353bddccec633f12b5a521121.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(583,1021010,0,'无色差，纯棉。灰暗那种紫，毫不张扬，洗后在用，很好！那个同材料的小袋，很可爱。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/94fb9d130db489471b7706e7156b9a21.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1f1d98dc5095455b2689ca61c624057f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(584,1021010,0,'照出来有色差，实物比图片略深。不得不说的是质量真的很不错，很亲肤，躺在上面真的很舒服。中了严选的毒了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/06cc1e8d844bac13f1a86665200d7e06.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(585,1021010,0,'非常好！漂亮大气质量好！下回有优惠时再来买另一种颜色。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/62a25ab3e6125a6ffb4b805300025dbc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/efc8416ff62cbdaaa1aff5a8554b2ebe.jpg\\\", \\\"https://yanxuan.nosdn.127.net/53f6044d48b5f83be9d35b23d738dd94.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(586,1021010,0,'还不错，性冷淡的灰紫色，发来的时候有一小块污渍，洗掉了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f2d4bf919bf85438207094e34f8ebffa.jpg\\\", \\\"https://yanxuan.nosdn.127.net/98968a2e332cba9ac0a6f80503fc4f6e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(587,1021010,0,'超棒,晚上裸睡啦','',1,1,'[\\\"https://yanxuan.nosdn.127.net/08040bdcfc774498e07e0b13c4a6723d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(588,1021010,0,'严选品满意！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f110b82871829aac038e1fb510511c91.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(589,1021010,0,'颜色好看。挺舒服的。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dda9a1c41db0001848bcbc2819af17ca.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(590,1021010,0,'被套质量没得说，相当好，只是颜色稍稍灰点，高级灰才最漂亮嘛','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a3e192773af517323ee0ac09ef79ee84.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(591,1021010,0,'太舒服了，比淘宝500百多的还好！！！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a674065cd6ea8d9708e2105304fb95ca.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b20a0f0e4722f7833d63c94c27ae7a11.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2b5ae81d7182072323d4fd9bf4a5c6b4.jpg\\\", \\\"https://yanxuan.nosdn.127.net/04db196793abaf5b197abfafe4f5e702.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(592,1021010,0,'08年考上县里的二高，妈妈带着我在镇上买了一套床单被罩，没有枕头罩，天蓝色的，上面是史努比，一共四十多，质量不怎么好，一直用到大学','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7f1d3d8f3630374566ce945bcc5aed04.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(593,1021010,0,'这颜色很喜欢 每天都会有好的心情 质量也好得不要不要D','',1,1,'[\\\"https://yanxuan.nosdn.127.net/17fb23e441621e775c772c5c912023f0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(594,1021010,0,'晚上加上家里的灯光，感觉更像牛仔色','',1,1,'[\\\"https://yanxuan.nosdn.127.net/237be23e775e718b5807c2e7821db508.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(595,1021010,0,'质量不错，纯色看起来就会很舒服，还特意给家里的被子四角缝上了一段绳，为了与被罩里的绳子系上……臭小子非要上来当模特','',1,1,'[\\\"https://yanxuan.nosdn.127.net/262e60c88bb8c311ac2fe899e91d38a4.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8d4e1d65263bcf6f9f9959a9be217bb8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(596,1021010,0,'确实没有介绍中那种紫好看，实物更偏灰色，但质量还是挺好的，所以就留下用了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f86d9c02d903cda604d1b9d9fc76d8ef.jpg\\\", \\\"https://yanxuan.nosdn.127.net/787926f1b714f6f6b35c3da615b3a788.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(597,1021010,0,'很重，颜色挺好看，但是拍不出来，还会再关注的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cfea23e4f65e5492d3f833e29559811c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(598,1021010,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fe4048e0ab7956f7f09726705f972078.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(599,1021010,0,'装在一个小布袋子，好萌，灰紫颜色很喜欢，蓝色的有色差','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c29a35eff0c1f0c778c03d56d5ceb488.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(600,1021010,0,'昨天才下的单，今天就到了，一看到就好喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c1737ac2361f9e2aeda91382d35ca20e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(601,1022000,0,'超美 超喜欢 一直喜欢的调','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6d3a49740677455d0fb899267765e7dc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4982866d44171c1d1f376cad111d55f5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(602,1022000,0,'拿到手马上就洗了，快递超级给力，包装也很精致，是我喜欢的样子','',1,1,'[\\\"https://yanxuan.nosdn.127.net/db0917423ddfc7d51127f3a4bfa67305.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(603,1022000,0,'超级爱！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5d0b6d9aeac3e29dfe427792dd5fcd22.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(604,1022000,0,'真的非常好看哎，洗了一下毛球都没有掉。扣子和走线都非常好。唯一的缺点是支数太低，就是薄露透。如果被子和褥子是花的，铺这套就很尴�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a56dfe21a69ad1f9f3bbccaa8ded7799.jpg\\\", \\\"https://yanxuan.nosdn.127.net/7aa1d24c5e2c5a8624d0390a6d170a31.jpg\\\", \\\"https://yanxuan.nosdn.127.net/96ee70bdf77d62f82b1ddc9989f10ad9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1f0398106b3e75f3e8fe0b85a051d937.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(605,1022000,0,'洗過之後使用發現整套床單的尺寸偏大然後看起來就有點怪怪的但是基本上存棉的質感還是不錯','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f2754cd849fc7202daff2643bf2d8783.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(606,1022000,0,'整体很好。不过洗了一次、还是放网兜里洗的 毛球就掉了一个 略微失望 懒得退换了。相信严选，不过这些细节的质量还是希望继续努力。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1b14d8c62aab87e8897e8534e8d08d30.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(607,1022000,0,'不要买，洗完球掉了好多','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5cd0ebe5edaab4fe0dd5a20beab9973f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(608,1022000,0,'品质优良，制作精良，材质考究，满意度5星！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e02ca8a637c311e2d8a7c93a683e9d20.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ea78ba8241e4e0bf8bbe5038da19a72a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ad662ac8a06d7ef7a3c66a0317cb6ccf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(609,1022000,0,'真的不错，手感也很好。就是我的猫有强迫症，估计边上的毛球不久就会牺牲！满意！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/5cc5f18c584d773fae633b6563b8713e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4afc42f76816931ea4bd6bac28625289.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(610,1022000,0,'质量很好！大采购','',1,1,'[\\\"http://yanxuan.nosdn.127.net/74493d3423183023fc617aa2b14345d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/14e196fbca9e656ffd2456e636221d51.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(611,1022000,0,'非常好看哦！纯棉的，做工好，没有很柔软，球球超级萌，很喜欢','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b3463ea8bc10368ee81b829fe11bd487.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(612,1022000,0,'还行吧','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1281ddf340551bcdd484388fe46be141.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(613,1022000,0,'非常好的质量，颜色白白的没色差，价格很实惠，是纯棉的，有五星级酒店床单的感觉，已经中了严选的毒','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(614,1022000,0,'球球睡觉的时候不知不觉会拽掉 不过还能再绑上去看不太出来 实物很有质感','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(615,1022000,0,'铺在床上之后真的超可爱，最喜欢白色的球球们，睡起来也很舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(616,1022000,0,'很好，但是.我家1.8的\\\\晚安的羽绒被套进去有点挤，被套还是适合1.5的被子','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(617,1022000,0,'面料手感不错，就是绒球一洗就掉了，睡觉的时候也有点碍事','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(618,1022000,0,'灰常透明，只能用白色的被絮，边上的球秀并不牢固','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(619,1022000,0,'毛球要掉毛，第二次洗的时候掉了个毛球，心痛。白色太不经脏了，哭','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(620,1022000,0,'款式非常好看，但是面料太薄，会透出内褥的颜色','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(621,1022000,0,'非常棒 好看 又柔暖','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(622,1022000,0,'好好好好好好好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(623,1022000,0,'好看厚实，就是容易粘毛','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(624,1022000,0,'还没打开用，质量不错，比较重','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(625,1022000,0,'很喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(626,1022000,0,'好好好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(627,1022000,0,'觉得好看买的 布料不错 防尘袋收纳很贴心 唯一的不足就是机洗后 毛球掉了不少','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4f82acbd3717611306137018282047fe.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(628,1022000,0,'质量真心不错，严选上瘾了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(629,1022000,0,'很好，可以反过来洗，球球不会掉','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(630,1022000,0,'盖着舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(631,1022001,0,'喜欢严选的这个四件套，\\n真的炒鸡好看！\\n虽然洗完有点皱，\\n但一点儿也不影响呀，\\n配上宜家的鸭毛靠枕更配喔！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/60ea9abdc146361d85c23d25502d63b6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/052f9f4432392c7c218a1534902acefa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(632,1022001,0,'在春天季节收到如此美好的东东，心情也变得愉悦了起来呢！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(633,1022001,0,'包装很精制，里面包装袋很好用，可以出差派上用场了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(634,1022001,0,'快递很快就到了，看着也很好看，质量也很好，网易东西都很赞','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a8d21e18d3902010ddf5d01bfa546e78.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9ba7a9fbb56fa85a94bfbbf3540c6c96.jpg\\\", \\\"https://yanxuan.nosdn.127.net/976c474e5bbc687467b8b27a5b9a0796.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4f517fd870b2fa0b0d0577baf9b951a3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(635,1022001,0,'非常柔软舒服，用包装的袋子自己手工缝了个布袋，还挺漂亮的。满分','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9cdaf0bda6c875f8ba9e1baf17b4df2f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(636,1022001,0,'挺好看的，就是床单是纯白的，好不耐脏，有点受不鸟','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5638b05b2f7f0c3c4605878bbe8d5dff.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2b628823d155af9a6e2cb27f1dbc057b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(637,1022001,0,'这个略薄，里面的颜色能透出来，然后纯白色床单不是很能接受。总体一般吧','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9d41ed14d278a29f3284135b5eaaab1c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(638,1022001,0,'很好。只不过刚铺上就被娃尿了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dbfb7913eb778363595004e18765e5c8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(639,1022001,0,'漂亮哦！大爱','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a6a5a04bbcf72df70a24e8d13eca060c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(640,1022001,0,'已经洗洗铺上了，是纯棉的，有一股淡淡的棉花味，限时购买的价格划算，好的生活没那么贵，希望继续加强品控，推出更好的产品。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ece318e743ceaa23149f772ba6031b03.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(641,1022001,0,'摸着挺舒服的，但是买家秀怎么和效果图不同。。。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/134049bd13f120c24450b268f02b08ec.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(642,1022001,0,'很漂亮。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5494f065d611215430847bcd2c463057.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(643,1022001,0,'非常喜欢。就是尺寸小了希望出220*240的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/16f8f015384610efe99154e7643a83b6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(644,1022001,0,'刚洗咯，还没有铺，觉得应该还是蛮漂亮的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0ea2b71863166f483e0b7210229caa9f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3ec26a344972521786d0bbc531ebece7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(645,1022001,0,'质量特别好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d65b9d64714ae14745e54e862232f3a6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(646,1022001,0,'很质感，很喜欢，哇咔咔','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1131321e97086a8f36adf9e9fc9b8efe.jpg\\\", \\\"https://yanxuan.nosdn.127.net/789b8b698d5ed987956fa04842cccd99.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(647,1022001,0,'收到很惊喜，买之前没仔细看，就看了评论以为上面的花色是印染的还略微有些将就，收到打开一看原来是用线织出来的，而且布还夹杂着丝状�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bd36e5e737766d6038cbedf78d9b4104.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d050def0183e7ff1a2d5719b01c3e770.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(648,1022001,0,'太棒了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/61a8235883d29885426a1b46a26c198a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(649,1022001,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/51764b9aad0eb2c1c9f63c04f426c372.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(650,1022001,0,'不错不错。。。就是猫喜欢挠。。。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1510fc4f3cb6ad70c7a6d5c800ef3582.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b070ad49f34eb7230526be131e90e37f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/846c2c947b1e16ea48fe45eaf10ba8d5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1b21db23cf0b66204f995b03f6599ac3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(651,1022001,0,'喜欢，买了好几套还没用，但很喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2db07c73bd33799d9faa0f81c2effa08.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3cdfaf928cc82ed8bb4393b16503e1fc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/90ffc9ac073531cf5c916e23dda1f801.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(652,1022001,0,'包装精美，做工精细，回去就洗了。外面的包装袋也是跟床单一个材质的棉布袋子，可以留着当旅行收纳袋用，很好。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2b09774e999d31164adabddc65136476.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c810a49af0e195e8c58bbae9f988edb4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(653,1022001,0,'质量非常棒，价格虽有点小贵，但很喜欢 ，很值得购买，赞','',1,1,'[\\\"https://yanxuan.nosdn.127.net/842ac31942b2629b04f799a77a0f3ba8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(654,1022001,0,'第一次用 洗完变成这样了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d26629d083fa34b55edc6468c86b59a2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/0a448cad97e277cc274ad92b855e38ee.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(655,1022001,0,'非常舒适，漂亮','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7f392750ace1fa1423d4bf233c3bde0a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(656,1022001,0,'都是很实用，漂亮，质量好的东西，大爱！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/be868b285026c4671db000ca77457972.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(657,1022001,0,'没有熨烫，洗了就用上了，白色提亮整个房间，质感也很好，喜欢❤️','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f39999946017eef65aab38260e08de8d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(658,1022001,0,'很漂亮！配上宜家的流苏靠垫，更美了～唯一的缺陷是，只能装五尺的被子，冬天用不了了。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/82a3e6a6e3fcced4a597d4edb0ad62a2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/30874df735f1db24229b318896c6747a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(659,1022001,0,'包装尚可，还没来得及触碰','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9afaacec380dc7d203b427e070b3aa54.jpg\\\", \\\"http://yanxuan.nosdn.127.net/da4b6a08cce4d8a10e21d91c2d6f3de0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(660,1022001,0,'很棒！还没使用','',1,1,'[\\\"http://yanxuan.nosdn.127.net/18cf5680b41bb410bfc88cbc5e06d9f8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5a851b672f640a4d1cd4f96730fc7046.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(661,1023012,0,'手感很舒服的条毛巾被，有一点浮毛，不过洗过干了之后抖一抖就好了。颜色非常喜欢。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9f75d85a4bd001818fa4f2a8f2c29e3c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(662,1023012,0,'摸起来很舒服，暂时还未使用，到手第一件事先清洗了一遍，仔细检查过，没有质量问题，优秀','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2dd23da488a4d07fb2b64cc3d2c4e806.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(663,1023012,0,'照片偏灰 实际要普蓝色一些的 ，打开包装 手感不错！厚度就相当于厚实的毛巾差不多','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7a0e7b7df09c42762e972d557dc534a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(664,1023012,0,'有少年提到的掉絮，勾线现象，絮絮估计是需要多洗几次，勾线用针一点点，一节节的挑也能行。东西不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/35e37bc6928c93a631f2b3b1740ff372.jpg\\\", \\\"https://yanxuan.nosdn.127.net/6398bcdc7436ebe90109b240079f712c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(665,1023012,0,'已经是买的第二床了，另一床是蓝色，掉絮严重，也许是白色的不容易看见，多洗几次可能好点，优点，盖着亲肤。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e6e70b7625ac4bf13f5a1d04857d1db8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f204578c9da9828343296c2d4eb45946.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(666,1023012,0,'真心觉得不错的产品 收到后很满意 够分量 等时机适宜的时候再用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/30b40a6fade9533e1bc2afe208f050c8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(667,1023012,0,'两色各入一床，两个颜色都喜欢，很柔软。限时购比较优惠。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6064876ae6e9ebfaf9c9ec0e5f35dab7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(668,1023012,0,'凉快啊','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cca672a276c7835243a70d7fc1aac70d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(669,1023012,0,'质量不错，就是以为还能在限时购的折扣下再八折','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cb1fcaa7bc69a55ae0c474248ce962f3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(670,1023012,0,'两色各入一床，喜欢，很柔软。限时购比较优惠。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3caebeae559571fd6478426f7dd767bf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(671,1023012,0,'面料不错，盖着很舒服，中了严选的毒了哈哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cce740576b97af0812f1df57eee9813f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/40541e1761b33eeaa454580437942813.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(672,1023012,0,'彻底爱上网易严选，想把所有东西你回家','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c70a8cd8eff8dbd8360cc55fce9f43c1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(673,1023012,0,'被子不错，摸的也舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c5408297544de75b1abdea6fba6a2aa7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5419af51367403ced87cecaef018678f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(674,1023012,0,'颜色很喜欢，初夏初秋盖着都很舒服。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/235cb2276828b8620f5d9f812b74d277.jpg\\\", \\\"https://yanxuan.nosdn.127.net/7f6bbe6232b289dc9e075ae8c089f633.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ef3726418b70741be8fcd221bb24ffeb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(675,1023012,0,'很喜欢  舒服  颜值也高   刚好碰上活动 很划','',1,1,'[\\\"https://yanxuan.nosdn.127.net/dc27105cf7ef60cf15f47550a9ad5a1e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(676,1023012,0,'布料很舒服，真的舒心','',1,1,'[\\\"https://yanxuan.nosdn.127.net/52c7bae9d4476b2a7588003ef486358d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(677,1023012,0,'摸上去很舒服，喜欢毛巾被','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c3bab17fb65e36810867c2e62958084f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(678,1023012,0,'好好好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fbc3e351a1c14d0ef70d53909f749f86.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(679,1023012,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c72264ef9edaf220b555c4073b60896d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(680,1023012,0,'手感不错，还有试盖，应该不错的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9bc7321e6cab101eeb80f7cf81d6bf62.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(681,1023012,0,'手感不错，已丢洗衣机','',1,1,'[\\\"https://yanxuan.nosdn.127.net/89179186775daf9833d49a0c77d07a6c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(682,1023012,0,'手感很好，期待盖的效果！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5fe2399928dd3c90a4c8841d5668dd78.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(683,1023012,0,'被子，很好，温暖适中','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6cae0aa81bc1a0244a116a4abf3839a5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(684,1023012,0,'质量很好，柔软舒服，非常喜欢。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a38a9bdd3eb2bef7706a478fb73ceb83.jpg\\\", \\\"https://yanxuan.nosdn.127.net/7784023ce0d3d8f661d977b59f4679eb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(685,1023012,0,'非常满意 从颜色到质地 使用以后再来追评','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e0ca28bce4d92eedb239ea60ac99260c.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2858a6c28f2c6f6402fad39069ae48a3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/427431006fefeca537e61d37940147c3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(686,1023012,0,'空调被质量赏可 线纱掉毛不会太多 实物颜色有一定色差','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7a7884f4863abe114ee2f4faad1b364f.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fd739b388596b39039f2a695147ee5ac.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(687,1023012,0,'不错，我喜欢薄薄的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e839eaa10c9c04e3b904c87182289cbe.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(688,1023012,0,'喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/075f10ce762b652b345c6682b537b2d7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(689,1023012,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b801aef265eb9509204afc0609053372.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(690,1023012,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8e91915bb739af606136a9fd73625adb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(691,1023032,0,'高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3bac7631effc2f0c3749b5a78b2edf27.jpg\\\", \\\"https://yanxuan.nosdn.127.net/bd7cf1d02ab7c112879239a161b36d85.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8e22d927ded0f0bd170830f6bd65cdac.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e704b49044b98e3cbc9d46f399a5e06e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(692,1023032,0,'高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，高质量的评价，�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/062e060a5bf6708a8765c1f7ee2cbe58.jpg\\\", \\\"https://yanxuan.nosdn.127.net/883d1f066fb7d502b775d042244ee248.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5e9bb9c40eee150c3f5e6db90ca0eae5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d25f2738b9dfb101cabc6ffbf8e643a2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(693,1023032,0,'手感较柔软，贴身很舒适，也不像之前买的一套软的撑不起形。质量没得说，唯一不足的如大家所说，扣子不太有质感。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/83bac5372bb94d285a9b7cb7244bacbd.jpg\\\", \\\"https://yanxuan.nosdn.127.net/42a8e3a6f1e7102ab4155c3fc89f7a1a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(694,1023032,0,'贴肤很舒服呢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fed84f99370c5c3be71b3822ebd9b93a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(695,1023032,0,'不错 很舒适很好看！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/06a0bc6b753239b72a5806b780948a49.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(696,1023032,0,'我一直以为是被子的四件套，收到一看包装心里想肯定不是被子，小心翼翼的拆开，果然……怪我自己没看好，只能再重新买被子了，但东西还�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ae535db21f5b4bcb21a357aef1bd20d8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(697,1023032,0,'收到立刻洗了，不缩水，柔软舒适，贴身很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f21092b191df521b7b166187c5a483d9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(698,1023032,0,'颜色和图片差距大，面料很舒服','',1,1,'[\\\"https://yanxuan.nosdn.127.net/15fd0d9fcafa149985f2ea482ec40dc2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(699,1023032,0,'很漂亮 非常喜欢 不过金属扣在枕头上感觉有点危险','',1,1,'[\\\"https://yanxuan.nosdn.127.net/53cddbfd559e0b7a592b60ebdaff209c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(700,1023032,0,'睡起来挺舒服的，很柔软。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/05ab9dc44e3e145095435c8e053aaa0a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(701,1023032,0,'很好！洗了用上了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cd1e68034831bcaedbadf662e8c2acd6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(702,1023032,0,'东西很不错 包装相当于一个同材质的收纳袋 扣子似乎只是装饰 挺喜欢的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9568f7b3475d7a661eece12a6adbb962.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e0503f144ae9ecd630c7316c0edb1f81.jpg\\\", \\\"http://yanxuan.nosdn.127.net/788d59055a27ae9ea96aca198e524170.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c3538d8bb6a0d8dbe3abb3676d2a515d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(703,1023032,0,'手感是不错 但带荧光剂 虽说这是国内大多数纺织类产品的通病，但希望严选能在这方面更加严格把控。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/81cc392a3c8da91d00b655f56e215e49.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(704,1023032,0,'包装高大上，感觉还是偏薄，买了另外一种磨毛的四件套，价格两倍左右，差不多的感觉，质感很好，估计用起来肯定不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/4085c4e87b6d016cf857dd1582ba7a97.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(705,1023032,0,'一如既往的好，包装都给人那么舒服的感觉，严选一如既往的那么用心，细心。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b5d40bf84c572224c6ad65b90899a79b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/264911e117b8a5ea5ed829b10783e48e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0a3f0c41104fe3f681c4dd2aca9e949e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/87611d9d17d3ab7a46f60ce52e6c9cd8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(706,1023032,0,'质感很好！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bcd07ba53cca44579466390a69855974.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(707,1023032,0,'这款还没有用，摸起来挺舒服的，感觉是贴肤类的，自动垂平感应该比较好。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0677ec012ea010f8335c26d31512297d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(708,1023032,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/966f53e8781775f05a252f6bc6b899ee.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(709,1023032,0,'不如那几套磨毛的好。但也质地不错。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/cd7a4c223497c3f438adaa4a9ee1fae5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(710,1023032,0,'价格真的没的说。质量真的没的说。速度也没的说。东西一到马上先把被套套上了。一切都刚刚好。。。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/5475a1f79f787cdded23be7b6f413e19.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(711,1023032,0,'面料柔软舒适，但太薄了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0da9ce2de0ee9efcce4fbae5777d9075.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(712,1023032,0,'收货快，内外包装很细心，产品手感软滑细腻，颜色与宣传照接近，深灰搭浅灰很耐看，味道不大,如果洗后不脱色就perfect 了。总体感觉good !','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f686c636292c742f83cab009f7d177d4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9d6c10a99e5316ef24443644de76bc13.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8063a9ad43c8b2f3a6175772ade87a64.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0aa52522dac9fc1a42cb7cbf7a9db0f5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(713,1023032,0,'不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/be62a63f1d1f34344eafc4a9439cda09.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(714,1023032,0,'严选，质量超好，很有格调。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/45b0c3696557aa9171b8b3b0e5b9db05.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5bfcb3bd63a0f8d7203781a06b242cd0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(715,1023032,0,'没有想象中的那么好，比起第一次买睡衣被惊艳到，这次有点小失望。主要是这个棉料有点薄，对于这个价位来说织得不够密，而且还有点味道�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0e8fdb5e2d9aff68348b7adf76cc82ea.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f583550776bf9e65a834a2f5829717eb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b1f5c3b311732bcfc159efc6e2e61e2b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(716,1023032,0,'颜色素净，舒服，手感也是没的说','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0a36510f3e91726808658629e2c87139.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(717,1023032,0,'很棒 还没使用','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a29520b9a2ebe870e544a035e100a963.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(718,1023032,0,'东西不错的，一切刚刚好。做工是比较精细。就是六根固定绑带系上以后，被套铺平有点扯得不整齐，估计还是系得太紧了吧。熨烫一下会舒服�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9e9a5eea34c3027b949b6a389a8dafc6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/10f594c0d0110cc274b16ef69183dd5e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bef0054faf1abe16d1f1acd20909acb6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b2b40c71d4828263aada7c4fd9a7addc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(719,1023032,0,'非常舒服啊！料子很好，这个价位买到真是觉得捡了个便宜，这套被子比较大，很难买到合适又好看料子又舒服的被套，后续还会再在严选买一�','',1,1,'[\\\"http://yanxuan.nosdn.127.net/08f9f3defacb5e292d1edfb5ed06bdf5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d4dbbd3c5e1e811b28b136ba23b41dfd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7cfb477cc26bf4e2cf5c551b73e785a7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(720,1023032,0,'杯子很舒服，很柔软，挺喜欢','',1,1,'[\\\"http://yanxuan.nosdn.127.net/5899097cd481fc58c9b89c80d522ddc1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8e22c2851bbab5d6fa3f158b784d9dc2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(721,1023034,0,'盖着很舒服，很亲肤，也挺暖和！没有色差，支持严选！！！严选有毒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6170afd3f89cc8497f883e04fcb745db.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(722,1023034,0,'空调被，颜色无色差，尺寸合适，贴身使用无不适感。包装精美，发货速度快！赞！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(723,1023034,0,'春天很适合盖，有鸭绒很轻，保暖效果还是不错的，不用盖大厚棉被','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(724,1023034,0,'真心好的被子，夏天盖一点也不热，凉凉的触感，很舒服。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(725,1023034,0,'整体质地及做工满意，正反双面料设计很用心，尤其一侧的外翻包边很人性体验.','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3c5683a1ba3e71475ce10cf4dfa9538c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(726,1023034,0,'夏凉被很柔软、手感很小，这次买了水粉，剛剛又买了水蓝，如果有其它颜色还会再买','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5e7768781da0f976c058b69fc49584ee.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2f4f59f8d7201a6984d130ecae76af41.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(727,1023034,0,'被子是买给女儿用的，单人床，1.5米刚好，自身有个小袋子，收纳也很方便。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e71aabbf15fadc6dfff0e3fc614d99b9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(728,1023034,0,'挺快的，顺丰服务好。被子刚打开，还没盖，看上去还行，，下次还在严选买，让人放心。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/59f03bcc980dce726bc85d94cf889d46.jpg\\\", \\\"https://yanxuan.nosdn.127.net/7250913912c7400bd9978a4381adeab5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(729,1023034,0,'大家评论好，趁限时购果断买了二床，轻薄温暖，没有异味，喜欢。只是在唯品会买的150*210的被套不吻和。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fe32dc20c222126372d44b77a707e414.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8cae3963075ac4e1628fdc9bbd9781b5.jpg\\\", \\\"https://yanxuan.nosdn.127.net/89f5f7f71ecf8d3905f9e01d8fab0be6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/4d002b7e1b797918d3e57f39ddbb16a1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(730,1023034,0,'质量很好，羽绒被，江苏江南地区，4月下旬到五月中旬，盖得应该正好，不冷不热','',1,1,'[\\\"https://yanxuan.nosdn.127.net/bfc631af83e81eea39ac731229932cde.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(731,1023034,0,'好吧。 不是我想要的感觉。但质量很好。 留下来了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/914b65d13dca66952ce479510bffea38.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(732,1023034,0,'限时购了二床，颜色非常喜爱，质量也好，不喜欢厚重被的朋友可以考虑。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f0cc6c191b402c3d672af33fec94bad2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(733,1023034,0,'出乎意料的好，还有个袋子装起来，开始还以为是睡袋呢，哈哈哈，最近中了严选的毒，还有三个包裹明天到～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e960ba694a64bd325d1da1e2e645501a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/6d7888decc4dbff22cdbafcd4c2b832f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(734,1023034,0,'第三次买了，全家一人一个。厚薄大小都很合适。有一层薄薄的羽绒，推荐。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/20cdbfbcabe83d1853145f9d2d5b61b3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(735,1023034,0,'被子的质量超级好，我特别喜欢！我已经是严选的铁粉喽！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c3641a83243a2f114a53bd2678c5da0f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(736,1023034,0,'包装很好，拿在手里也很有分量，摸着挺舒服的。刚拆开有一股鸭毛的味道，洗一次就没有了。洗了不掉色，不褶皱，好评。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2e7071c0c9b6767b7e7f296636c9e147.jpg\\\", \\\"https://yanxuan.nosdn.127.net/81846d5503897013aed2f0aac9b1b244.jpg\\\", \\\"https://yanxuan.nosdn.127.net/323134fa126b1a9cd98d7486ecb85cf3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e7e31b7df68f3a520e7159001853a196.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(737,1023034,0,'被子又轻又软 这个季节盖正合适','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fd53e167497bbbb97e3770718f6996fa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(738,1023034,0,'太好用了，虽薄但挺暖和的，现在用挺好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7a14329425e91d548476883acacb6aba.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(739,1023034,0,'很舒服哦，夏天用正好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4bfb1a135cb9ba245547f44084c5e89e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(740,1023034,0,'昨天下午收到，还没打开看，晚上回家后再验收。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/656bd34fe25c3f628f4da98d8b64822d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(741,1023034,0,'摸起来很舒服，轻薄，颜色也喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f694324ff5889ba7f8a8f668187772dd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(742,1023034,0,'很舒服很可爱呀','',1,1,'[\\\"https://yanxuan.nosdn.127.net/42d2187e546b7106147bfdb2c6eb8230.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(743,1023034,0,'还没拆 看着还不错，等用了再来回评','',1,1,'[\\\"https://yanxuan.nosdn.127.net/783e288df5837acb5c58d95c026c3da9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(744,1023034,0,'摸了摸还是很柔软的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1d2b8fa0f32beb9cb118ee8509498d2f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(745,1023034,0,'包装很好。隔天就到了，质量没得说，而且很舒服，就是比想象中小了点，形状有点奇怪，不像双人被，也不像单人被，什么鬼哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a45ecc0098671df5228f0c57f260878c.jpg\\\", \\\"https://yanxuan.nosdn.127.net/40ec203b83a452c5f0c5aea9227007ae.jpg\\\", \\\"https://yanxuan.nosdn.127.net/339978754e04337b75301f9a38bf4698.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(746,1023034,0,'盖着很舒服  网易东西挺好的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4469ccfbe048afe16ed740f954ee1505.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(747,1023034,0,'质感不错，买个套，这个夏天不怕热死也不怕着凉啦哈哈','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5bee13beb6aad11e1a5f52dc55f219a3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/00374131d4a0e96276ffbb8146708eea.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(748,1023034,0,'轻便，实物颜色更好些','',1,1,'[\\\"https://yanxuan.nosdn.127.net/04157d6013ce501cc25f592b4057fa1c.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ec5ce24e7816b2535d76a678d8ed882f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(749,1023034,0,'质地优良，水蓝色特别适合厦门的天气！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a6cabf73f34e08ad423cedb625386786.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(750,1023034,0,'收到 包装好好 大爱','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d1c8c41a9f469076d11680777b5ea2cb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(751,1027004,0,'太喜欢这个颜色了，纱布质地柔肤透气，中了严选的毒，买买买不停。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cdecde7bf71220849f9c3cfe1720305d.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d811ba10f8618b7d79cf9a52f2fdd4bd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(752,1027004,0,'不错，颜值高，拿起来也有一定的重量，准备给儿子用','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c5d24cd977f7e6a22b2c49d95a016506.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d49149d0bd4feed76a315112bb19c1e7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(753,1027004,0,'大人小孩都能用的空调被，柔软，特别适合过敏体质','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(754,1027004,0,'6层纱布，薄厚很合适，触感舒服，透气很好。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(755,1027004,0,'做工不错，颜色还很漂亮，大爱啊','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(756,1027004,0,'很柔软，也比较保暖，挺好的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(757,1027004,0,'包装很妥帖 送货很快！被子软软的很舒服 没有什么味道 已经洗了 晾干了就能用了 觉得挺适合夏天 透气柔软舒适！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f96d2b67ebbdea6fa5e35e54bf0051a6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ad3b11cc8a6efa68e2a3bf0a1287db79.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2a3a2e4c8a8fa61129f8f63cc3b18e67.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(758,1027004,0,'很好很喜欢，回老家了，先生说很好很舒服发了两张照给我，相信严选限时抢购买的很好，活动很多很喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0ed3434a8d9f34a9c9cb163271b2b351.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d610e4e5e96e331b37fb2660e75d68b7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(759,1027004,0,'不厚的凉被，有点份量。手感不错，素雅的风格，这样子挺喜欢的！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ccf3d20d22cc236f18645a31440d01eb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/13d0b4c8f12f86a6f7b22b1f33e33996.jpg\\\", \\\"https://yanxuan.nosdn.127.net/563b6276a8301b54a282db2f4e81aea3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(760,1027004,0,'今年爱上纱布，颜色淡雅宜人，柔软又透气。如果有宝宝版就更好了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/ffbdbc7663e2cb91aa0ad6b8cfb2a718.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(761,1027004,0,'今年爱上纱布，颜色淡雅宜人，柔软又透气。如果有宝宝版就更好了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9fcf69c825c9e0d5710e0266b6d40866.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(762,1027004,0,'质量很好，细节也无可挑剔，手感颜色都很满意，是我和老公喜欢的调调，严选的东西每样都惊喜，真是好的生活没那么贵！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c139c422e588bcb9e4ac33ee6bd184e3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/319f26a8f035a0e256de94f798ccac70.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(763,1027004,0,'很好，拿出来有点味能用之前细细估计会好，比想象中厚','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7484a3371c630347d6b938f281461891.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(764,1027004,0,'第一次知道有纱布被，也是第一次买，被子很漂亮，手感也很好，希望到夏天给小朋友好用。只是这个颜色应该叫紫白格更合适','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0d195542a6802d85e8e7d2a0e01e0765.jpg\\\", \\\"https://yanxuan.nosdn.127.net/70de86f834585eb526a511c30b2f3210.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f035f61f705f7c003565b529fbf44cbf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(765,1027004,0,'很柔软','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f314a6af836f4729b6d056ae89a425a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(766,1027004,0,'摸着很舒服，女儿超喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0ac042af63b99779a3ff4aa45c87f669.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(767,1027004,0,'第一次买严选的床品 纯纱布的被子','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a5cd307aeb90e8a82fa0dea5b5eb21de.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(768,1027004,0,'买了两床被子 都好喜欢 有收纳很方便','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e22e5333296b2449a7efe2f8da18da74.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9d2e95b6788b928e46e3342b8bed8618.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(769,1027004,0,'挺厚实的纱布凉被 不错......','',1,1,'[\\\"https://yanxuan.nosdn.127.net/882203bf19bae17f4677e6417afff6cf.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(770,1027004,0,'质量很好，而且棉纱很软，透气性很好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0bce6fa312b6f1c3e929c448fdb5e6c5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(771,1027004,0,'洗过还没用，等天热一些再试试看','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3c560b411191814d224b2ff1969c67a3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(772,1027004,0,'包装很严实，打开有些气味，洗洗应该就好了，质量很好，喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/eb94697660a4c5c9fd18ed864182de21.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(773,1027004,0,'颜色素雅，纯棉纱布摸起来很舒服，不过真的蛮薄的，而且太小了，只适合单个成人用，所以打算对折起来给宝宝夏天用（6月初预产期）。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/06ee54a135f605d55165a7810ed98ecd.jpg\\\", \\\"https://yanxuan.nosdn.127.net/9439bc7eff6e5b0a2baf63e73693dc56.jpg\\\", \\\"https://yanxuan.nosdn.127.net/8401ea124553d6d7a204796b689573b8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(774,1027004,0,'粉嫩的颜色很好看，摸着也柔软，不知下水会怎样','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6c26ef6c0367e93f4903545eab9b4633.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(775,1027004,0,'超爱哒','',1,1,'[\\\"https://yanxuan.nosdn.127.net/1ddb72f23ddad3e07ebcda5ef94085b5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(776,1027004,0,'还没开始用，应该不错的相信网易严选。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/13339d32178b0c752137cbec4b25595a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(777,1027004,0,'特价入的，面料手感挺好，夏天到了正好可以用了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5bac771eeac478c87ca0188512fa2d2b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(778,1027004,0,'没拆，应该不错。颜色偏深','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8eacf960a27bc0c30edca041d7d4426d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(779,1027004,0,'但愿可以水洗','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8f3f29af175491ca569c3ecf1ffc3099.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(780,1027004,0,'买给女儿用的，应该还不错吧','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f107eac213d14fe2beaed9cd76742719.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(781,1029005,0,'非常喜欢很不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b4322ca1ad69c3fc7342943e0fdbf96c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(782,1029005,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/34fae145174f359ea4f21776666eded6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(783,1029005,0,'老婆说还行，比较冰，颜色喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e56df06bd57fb972cd02628adf6c3588.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3d19058f5f0a91ef713f60f9873782a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(784,1029005,0,'非常有质感，拎着很重，而且非常舒服，大爱，赞美之词无以言表。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/82a6dfc95ff74175592dec88fd2d3eb7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/232f54fdb4d0c7f7d941c6a2e1b5a7d7.jpg\\\", \\\"https://yanxuan.nosdn.127.net/2c16bbd157bf60112c81767e98fbf6b2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fa90fe5835c499154d63fa3a85749d5e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(785,1029005,0,'还是不错的 很漂亮 不过价格也真的蛮贵的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b9af549bff801596eea08b7cadfc33ca.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(786,1029005,0,'我觉得跟照片一样，没有色差，很漂亮，很舒服','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b501fd63bcbebae706f53512adf7e4e3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(787,1029005,0,'很好的床品。感觉和纯棉的没有很大的区别。颜色不错，很喜欢。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/74c24d248c54bd59c3a2889e4eeb25a9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(788,1029005,0,'非常不错，太舒服了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/99971f16173b839091795ff084895811.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(789,1029005,0,'比之前别人评价的颜色更和网上图片接近一些','',1,1,'[\\\"http://yanxuan.nosdn.127.net/7198431f3033432f02cf051b0b16922b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(790,1029005,0,'图片还是比较漂亮，体感还可以吧！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f6374cebaf4a8c3569b7919b07ebf3ee.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(791,1029005,0,'面料舒服，手感柔和，做工精细，好!希望严选继续严选，提供更多质优价实的货品给买家。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(792,1029005,0,'还没有开始用呢^_^','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(793,1029005,0,'质量真的很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(794,1029005,0,'颜色大爱     质感也不错    就是感觉好贵。。。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(795,1029005,0,'比预想好。还可以的。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(796,1029005,0,'水墨画的感觉，挺漂亮的，质地也舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(797,1029005,0,'手感一流','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(798,1029005,0,'质感还是很不错的，颜色没有图片上的鲜艳～总体不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(799,1029005,0,'好，比便宜的滑一点','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(800,1029005,0,'非常舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(801,1029005,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(802,1029005,0,'很好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(803,1029005,0,'颜色很漂亮 摸上去凉凉的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(804,1029005,0,'不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(805,1029005,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(806,1029005,0,'很不错，夏天特别合适，非常舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(807,1029005,0,'颜色和手感都不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(808,1029005,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(809,1029005,0,'今天开始使用，滑、软，不论是身体接触还是颜色，都喜欢','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(810,1029005,0,'冰冰的 很丝滑 适合夏天用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(811,1030001,0,'虽然很长，包装很仔细。完全不用担心快递途中损坏，高端大气。羊毛的很有质感。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2f79497bf891df4b1e80b38c3ffcece2.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ff2ae826208f45fd2b2a72e2b62f3f9e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ef9a10ab35dc14a0ace6972f6de8a79c.jpg\\\", \\\"https://yanxuan.nosdn.127.net/325f815a4d141d47b129b7783fc5566a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(812,1030001,0,'还不错。多拍了一块退货也挺积极的～','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3053c03b415a6c11d324b199027bc27d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(813,1030001,0,'还不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c6ef20cd6a48735c666b33b1b9f4c04f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(814,1030001,0,'还可以，喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/318b45d885ca1ec7164f3772b353a1f3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e3a917edd481b0cbd43d595ed1cf3359.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(815,1030001,0,'地毯不错，厚实，没啥异味，不适合光脚。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7b8a275bb7b1d0bd3e46fa31792d3eed.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(816,1030001,0,'还未使用，但已屯货。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b969bd9868cac8b8f7a8f2351fb905a4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(817,1030001,0,'正合适，质量不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c040519ed5837697873bc3b5865ff9ec.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(818,1030001,0,'书房用，没有特意拍照片。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/612f864bd517838d2557087da58ef449.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(819,1030001,0,'好看，且非常厚实，满意。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c460a8ec1823a70b6c9961ce4f845ee2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(820,1030001,0,'地毯厚度约一公分 拆封时有点淡淡的羊膻味 赤脚踩上去感觉有点糙 很满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/fafae471e228da34674aa87c2ade2f72.jpg\\\", \\\"https://yanxuan.nosdn.127.net/08f900afdd6ad904814e43b663f9436f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(821,1030001,0,'棕色不明显啊','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2287477c1dfcd1ec4e6ffe41fc9af67e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(822,1030001,0,'手感不错，花纹跟看起来不一样，是格纹的','',1,1,'[\\\"https://yanxuan.nosdn.127.net/df783bf33034094085d9e3339fecee72.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(823,1030001,0,'非常划算，很重，不是特别厚的款式，稍微有点味道，晾了两天就好了，非常满意！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/36f0f0daac56f48ddf68db0de836f9f5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(824,1030001,0,'非常喜欢，简单朴素，平时扫地机器人就能够打理','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5d64118e8e9cd7a5e21e202b74519d54.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(825,1030001,0,'很好，超值','',1,1,'[\\\"https://yanxuan.nosdn.127.net/6c43f5a8b46bafb538ab3edbe39973e0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(826,1030001,0,'等我把画一挂，有木有很完美，哈哈！想入手好久的地毯，一直没舍得，趁着活动入手，感觉还是买贵了…考拉才785，打折便宜有560买的，我花�','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c048754ce8df7c349e3ecd9da447541a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(827,1030001,0,'不错，很厚实，没有想象中那么扎，铺在卧室瞬间幸福感提升','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a046988f58b30ca8c85418c773dd36f2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(828,1030001,0,'好 最好有更大的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/87ae5aa545acd4aad83196321d998466.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(829,1030001,0,'还用说么？看图……严选脑残粉，不多说了，赞','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c861524983d483a940e7f9f0d5533694.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(830,1030001,0,'不错~挺厚的~性价比高~有点儿味儿，希望过几天就好了~','',1,1,'[\\\"http://yanxuan.nosdn.127.net/40aa13edb134d75adccd955d61191fac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a19c2a0e56f1fda17155f024dd6edec0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(831,1030001,0,'两块对接，铺在了客厅很合适。和图片不同，但是很好看。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/498b29a4fde8826560353a01a85d87f1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9a01b320bef853904c64cadca194c9fa.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(832,1030001,0,'总体效果还可以，仔细看应该不是全羊毛的，希望不要掉渣','',1,1,'[\\\"http://yanxuan.nosdn.127.net/bcd59ba1375fc55b34e0c44499a87ea2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/34e7e2a8fe9587b52a8aff3a8de1a9c0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(833,1030001,0,'米色的！我的地砖是米色的！刚好配米色地毯！薄！两面都是一样的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f272b8cae554ad4dccafe07858338a54.jpg\\\", \\\"http://yanxuan.nosdn.127.net/62e274fe5ce7ec08cb1c452869b12ad0.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(834,1030001,0,'家里的猫表示满意','',1,1,'[\\\"http://yanxuan.nosdn.127.net/f40ca520b3783c406c3f124175d1339b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de71f77e64c5249724feb3b3c6df4b5f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(835,1030001,0,'跟沙发很搭','',1,1,'[\\\"http://yanxuan.nosdn.127.net/cdc89f079d96bd5edc92db11c03bc4d5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(836,1030001,0,'还成','',1,1,'[\\\"http://yanxuan.nosdn.127.net/24005064eb747cf88c727926e296a4b1.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(837,1030001,0,'质地不错。颜色搭配地板在也可以，不过可能略深了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/aa36bd32c6aafcd2c7d07bb975664521.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(838,1030001,0,'刚收到货，包装好，看上去不错，双十一三天到的货。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/7b5fd267b222ebaa942c20f1f4433d30.jpg\\\", \\\"http://yanxuan.nosdn.127.net/855c6e8e34a66fcffdba04155bc662c2.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(839,1030001,0,'地毯不错，赶在双十一期间买的，支持网易严选！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c0755383bcb4f621bf90cfce50eb512f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(840,1030001,0,'地毯没有打开，看上去很不错。我已经爱上网易了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/56d754e102babbf3089811fc8824fd95.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(841,1030002,0,'不错呦','',1,1,'[\\\"https://yanxuan.nosdn.127.net/7bb3b32966993aacd903b2f24466cae5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(842,1030002,0,'妥妥的用上了，还拍了照片，绝美背景墙。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/275eda2f67b16f91180197746be05ffb.jpg\\\", \\\"https://yanxuan.nosdn.127.net/3e9e44ddd976ca68d2dfce46b47cff17.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(843,1030002,0,'脚感很厚，效果不错。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e35f1e24822d0c7458a40acdcd45ca7f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(844,1030002,0,'客厅用，没有特意拍照片。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/07e03eee27c2563b3e90fcee8d672990.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(845,1030002,0,'买了两块，把自己的房间装饰成这样的样子，很满意^_^','',1,1,'[\\\"https://yanxuan.nosdn.127.net/994a35a72e099f986158cf531a3a618e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(846,1030002,0,'貌美','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0c2490962517aa6ea8c5e6432b92f7f7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(847,1030002,0,'地毯质量比想象中的还要好，很厚实，比我之前淘宝里买的好太多了，还送了个收纳架。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/eeb5f9d76d341e1671305d813d9d39c6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(848,1030002,0,'厚实，喜欢，淘宝的两三百跟这个完全无法比','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a53d6f7b860dcb6952ef30a494bc1c4e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(849,1030002,0,'这个很美，本来想买折扣大的那款，可是看评价怕札脚还是选了这个，大爱啊！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/83c871636070b26e4e61b476da9c31fb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(850,1030002,0,'棉质底的羊毛毯生态值很高哦！感谢印度！感谢严选！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c186af83f0cb31bc9aabc06389e57e24.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(851,1030002,0,'还不错，由于墙面是弧形铺不到位实在是没法','',1,1,'[\\\"http://yanxuan.nosdn.127.net/55dad2cbefa4ed317015664bc57ee145.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(852,1030002,0,'很好','',1,1,'[\\\"http://yanxuan.nosdn.127.net/85e4b5add3a613eeb6311177dbcab51c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(853,1030002,0,'光脚踩着没有很扎还是蛮舒服的','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d4bc6beaeb7514ad2d42dcc5b3134484.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a0a6d1cc8be2c17c48bc855bb812b674.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e51ca1b85413f5539a60c0535d2f6d42.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(854,1030002,0,'质量很好','',1,1,'[\\\"http://yanxuan.nosdn.127.net/2c1643dfe3bdbe2a446ec57d4f4aa0a3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(855,1030002,0,'感觉不错，好看也耐脏','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9b0462e86060217e56bcfdc9ffc446ef.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(856,1030002,0,'非常好看','',1,1,'[\\\"http://yanxuan.nosdn.127.net/82ce49069472c58af5efe1ea8bf8b9db.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(857,1030002,0,'地毯厚度合适 ，颜色喜欢 ，没有掉毛的情况而且没有异味，整体很满意','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1c21a8a68e8d23997fcc45eaf9b88905.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(858,1030002,0,'很不错，家人都很喜欢！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1403f2c969126cbe037116a6a81b4015.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(859,1030002,0,'确实很大骚味，如果躺在上面。身高超过一米的站起来闻不到。猫狗略有不爱','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(860,1030002,0,'这个真的不能更赞了！！！颜色和我家沙发超级配，也没有出现评论里掉毛神马的现象，老公特别特别喜欢！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(861,1030002,0,'特别舒服，美，踩在上面软软的，限时特惠买下来的，价格也好给力，开心喜欢值得入手','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(862,1030002,0,'刚开始觉得羊毛的味道太重了 后来多通通风就好了 颜色什么的都挺好看的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(863,1030002,0,'开始有一点点掉毛，不过地毯很厚重几乎也没什么味道，总的来说，严选这次没有让我失望。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(864,1030002,0,'还行 就是猫子爱在上面抓来抓去当猫抓板','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(865,1030002,0,'还好，冲着印度手工生产去，','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(866,1030002,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(867,1030002,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(868,1030002,0,'非常好！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(869,1030002,0,'挺好的，没有多少气味，是真羊毛。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(870,1030002,0,'不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(871,1030003,0,'特别特别好看！！！价格真的很划算','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8c2d79eafce30b33981623b5602764db.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(872,1030003,0,'大爱啊！发货很快！宝贝惊艳了！喜欢的颜色和花色，立体感强！有一点儿羊毛的味儿，应该凉凉就好了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0a4cf3b05d448fe3eab0b27780f8c187.jpg\\\", \\\"https://yanxuan.nosdn.127.net/64758242eba35c7a877ee002b8c209a6.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ead4aee12a369b84288051c3c6000483.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(873,1030003,0,'物流在过年期间也顺利达到！点赞！实物颜色无偏差！就是这种纯羊地毯手感毛会有些扎','',1,1,'[\\\"https://yanxuan.nosdn.127.net/aa79c0bd1fd09987e0c39dac814c1c64.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(874,1030003,0,'超喜欢！淘宝同款要贵好几百呢！另外给快递小哥点赞，春节期间还给我送货！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/78ac06394b23de5e513919e41eccb3e9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b76613c7c826ce002bd1c8fd14bd0a2e.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(875,1030003,0,'新房子还没拿出来用，囤着的，就是信赖严选。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/3f87b2886be7b41ff2bbcf0ccddb947d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(876,1030003,0,'质感非常好，送给爸妈的小礼物，满意！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/15fa1943125e2e137c9064ac90dc1866.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(877,1030003,0,'完美契合家里的配色，踩上去也不是很扎人，一家人包括猫主子都很喜欢。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/b32f86638f2fd142256068f2ac3c1961.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(878,1030003,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/170ffe4237c3e60cf6f1ad67bc6a3dc5.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(879,1030003,0,'搬新家准备的，严选的超级粉丝了，要剁手的节奏','',1,1,'[\\\"https://yanxuan.nosdn.127.net/34e5d442c699c3b7f7e8b47a75dd352c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(880,1030003,0,'好看！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/af59bf890bcbe03f1319702ca2b422cd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(881,1030003,0,'客厅沙发搭配中，靠地毯来补救，协调了一下。挺好！试铺了一下，不滑。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/a92cfa969a468ff2145e31c0683693f4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(882,1030003,0,'效果不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/21eeacf0f39aaf8ae7716a457d4b7f1a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d7202fa92aaa88f60c7927803633bfe7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(883,1030003,0,'还没蒲，打算到了天气转暖时，把家弄干净妥妥滴铺上保鲜膜，再铺地毯。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/4cfb39eb0b927e00621011c54a6b951b.png\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(884,1030003,0,'还行，价格更美丽就好了，就是不知道日后咋清洗。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/457043886189b21710a4922cf3cc4841.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(885,1030003,0,'颜色偏暗，看起来脏脏的感觉','',1,1,'[\\\"https://yanxuan.nosdn.127.net/e35e6096f55159e96a179feb3512bb93.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(886,1030003,0,'这个是我喜欢的款式，非常满意','',1,1,'[\\\"https://yanxuan.nosdn.127.net/11f78c67c1a3959310ded640591a8172.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(887,1030003,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4f97a5727a3712d580edfdd95592603d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(888,1030003,0,'地毯很赞噢，踩着感觉不是很渣，有没有什么味道，与家里的瓷砖和家具也很搭，总体上非常喜欢，如果尺寸能再大点就更好了。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/d638aa55a696467effbf481b53c58fac.jpg\\\", \\\"https://yanxuan.nosdn.127.net/15bd39cc0aeb8d25401e3af19a1d3720.jpg\\\", \\\"https://yanxuan.nosdn.127.net/b1301a3efdb5fa1650c4169b0e9a606a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(889,1030003,0,'好看，跟家里很搭呢，后悔当时而且赶上了特价很划算','',1,1,'[\\\"https://yanxuan.nosdn.127.net/90a5c9028839b67b067613928aadceb7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(890,1030003,0,'漂亮，还没放沙发，所以显得有点小，其实还好，当上沙发应该正好吧','',1,1,'[\\\"http://yanxuan.nosdn.127.net/edf3d1345b3c091015e64651222e0d47.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(891,1030003,0,'棒棒哒 配白色地板超有感觉 薄薄的 摸上有点渣 但脚踩上去不觉得 边角会有点小滑 如果反面能防滑那就更完美啦','',1,1,'[\\\"http://yanxuan.nosdn.127.net/7b31bf2e3df8a241ea8a7da372b9402c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a8a66f882b60538ba55a23b5aa09ece4.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(892,1030003,0,'不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/822074577bb1bb822c9a021c502dcb8b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(893,1030003,0,'不是特别扎，颜色如图，配灰色地砖很好看~~严选的东西虽然稍微贵一点点，但是收到后从不会失望，不像某些……精挑细选总是和描述差别太多','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1ab41f9e615b88b0784225cbdfd9c0d6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(894,1030003,0,'双十一买下了一个家，图中地毯尚未打开','',1,1,'[\\\"http://yanxuan.nosdn.127.net/8df06db908d81bff38b8689ec68ab714.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(895,1030003,0,'稍微薄了点，不过总体很棒','',1,1,'[\\\"http://yanxuan.nosdn.127.net/42008c255804d6e0f06f31744a1e22ee.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(896,1030003,0,'棒棒棒','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1cc43a6771511e760b983e0a52b30dec.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(897,1030003,0,'颜色稍暗，做旧感，总体不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/7df109e1a62f0fe6b8afbef55e24b3fb.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(898,1030003,0,'不错，好看，做过精细～支持网易严选','',1,1,'[\\\"http://yanxuan.nosdn.127.net/1cc84f5e4016d2b9b83ca1d77c7d860c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(899,1030003,0,'照片一拍都很艳丽，但是实物很灰黯，地毯厚实','',1,1,'[\\\"http://yanxuan.nosdn.127.net/dbe3d7a2091ab13b715c4825f50d5a05.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cbee7f9389c280a11dbf3ae5bb8ad0e7.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(900,1030003,0,'有点扎。但很好啦很喜欢^_^','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e6be3da1ff67bf4111c569fa8c47ac43.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(901,1181000,0,'太好了，舒服的不得了，腰，腿，脊柱，头，颈椎！\\n无一处不舒服，真没想到这么优惠！\\n搬了新家还要买！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/5fe1121396458cfe0dc1b25ec86f7ff9.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d5a55abd6ced5c811d775b04929aaabc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/f1764d820ba6ddaf51d297e3cf3826cd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(902,1181000,0,'抱着试试的态度 先买了小的 果然感觉很舒服 深陷其中 把自己全身心都给了它 第二个床垫已经在路上','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f753f91430dfb56f574c737d4b2fde46.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(903,1181000,0,'这个床垫现在垫上去之后舒服多了，软软的，弹性不错，你们睡硬床板的考虑一下呗？','',1,1,'[\\\"https://yanxuan.nosdn.127.net/556cb7799b8218db00c3a65241e0f92b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(904,1181000,0,'弹性挺好！软硬适中，气味不大！八五折还是挺优惠的！主要是中毒严选了！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f3376d3767e3cd7a899773d680189d37.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(905,1181000,0,'大小合适，厚度也正好。很适合放踏踏米使用，床垫很软比一般的床垫好太多了，不知道夏天睡觉会不会热','',1,1,'[\\\"https://yanxuan.nosdn.127.net/9f835306fae8b851a834cc904630a5b3.jpg\\\", \\\"https://yanxuan.nosdn.127.net/5ef2a535450ae53897ac7700912c3b42.jpg\\\", \\\"https://yanxuan.nosdn.127.net/c2fedbb59dc123a23c9521076848d0dc.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(906,1181000,0,'尺寸刚好，很舒服，味道不算太重，需要吹吹风','',1,1,'[\\\"https://yanxuan.nosdn.127.net/f45ad4b14d9da7e3093e5c3b4d036753.jpg\\\", \\\"https://yanxuan.nosdn.127.net/a3ee0882bc45fb2caa264a90975f856b.jpg\\\", \\\"https://yanxuan.nosdn.127.net/1ea4c31b4ee206c04a49da856f0fe677.jpg\\\", \\\"https://yanxuan.nosdn.127.net/93d17fbea0a17301bf9c6433199dcb0b.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(907,1181000,0,'晾味中，质感不错。软，但是支撑够。','',1,1,'[\\\"https://yanxuan.nosdn.127.net/05e880ce4068ca33e53e191185fb811f.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(908,1181000,0,'非常不错的床垫，第二个了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cee78b5874dc15f3f4711e3b220cfafd.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(909,1181000,0,'很舒服的床垫 非常满意 对比了好多家还是选了这一款','',1,1,'[\\\"https://yanxuan.nosdn.127.net/67370cdb21d9ff8c1bb4ed2dae87a5c3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(910,1181000,0,'刚刚买个1.5的睡觉挺舒服！再入手一个1.8的，慢回弹很不错！躺在上面有些漂浮的感觉，腰下不感觉空，值得拥有！','',1,1,'[\\\"https://yanxuan.nosdn.127.net/8e474c5d740ef49115c7f0572ac8ea31.jpg\\\", \\\"https://yanxuan.nosdn.127.net/75ba158e6f8c5f62413707082d9cf8ae.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(911,1181000,0,'不错','',1,1,'[\\\"https://yanxuan.nosdn.127.net/cdb53b25adba61ea490ce9ec84b159b3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(912,1181000,0,'最开始我老婆还很不理解，家里有床垫为什么还要买，体验完的第一天就觉得很舒服。还让我给她爸也买一个…','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(913,1181000,0,'舒服的不行','',1,1,'[\\\"https://yanxuan.nosdn.127.net/43fdb1502679c50f6aa09acfb24cdfe3.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(914,1181000,0,'严选粉','',1,1,'[\\\"https://yanxuan.nosdn.127.net/db13b4127fd18a55c6e401be96ba877a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/ae1c1dd61cdbfc8ffe68bba8479c1d1e.jpg\\\", \\\"https://yanxuan.nosdn.127.net/d09e0a2ad05ea9c5600f92fd612726b8.jpg\\\", \\\"https://yanxuan.nosdn.127.net/e86109c6c174a3901dffaa8787f6cb72.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(915,1181000,0,'挺舒服，需要放放味，以为包裹很轻，没想到那么沉','',1,1,'[\\\"https://yanxuan.nosdn.127.net/0c540031d15549707903f616c150b9fc.jpg\\\", \\\"https://yanxuan.nosdn.127.net/029881404b69292f7c502379db227d9a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(916,1181000,0,'没什么味道，晾了两天，就迫不及待地铺上了。软软的，很舒服，性价比超高，商场里要一万多呢','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0efd8cd4dd510844333671fc60f19734.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(917,1181000,0,'很喜欢','',1,1,'[\\\"https://yanxuan.nosdn.127.net/2b93c0d0d194e3fb09fa5d43b949a3d9.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(918,1181000,0,'严选床垫真心不错，很厚实，还带了质量超赞的套子，双十一八折真心赞','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a87adeaa315060be6c5c6d7bb3a6b203.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6d8a8f800ccd811ff770a2c6c75545eb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a2746d61dae1f250ffd79fc73ec221ce.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(919,1181000,0,'早上不想起床有木有','',1,1,'[\\\"http://yanxuan.nosdn.127.net/d18f3783f352afee5ff78af88940df22.jpg\\\", \\\"http://yanxuan.nosdn.127.net/814d347fdca2087cb8b12abd334c1c23.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(920,1181000,0,'非常好，散了一下味就睡上了。第二天睡完后腰很舒服，但是觉得自己可能需要换个枕头','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b8c4879ffc89318aea3fbf8f20a126ef.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(921,1181000,0,'不错，没什么味道躺了试了下很舒服，决定再跟孩子买一个，好评！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/5091f0f6ae132a2f3cece0619ee9ea0d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(922,1181000,0,'刚收到 有重量！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/525c0db54abb9f496b8dca944963a18e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b3ef54154c756043c23ae027251a5b5d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(923,1181000,0,'还没用呢，不过我相信网易严选的质量','',1,1,'[\\\"http://yanxuan.nosdn.127.net/9f63b36112e51106414b8aa14b1e1073.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(924,1181000,0,'真心不错，比较舒适的选择','',1,1,'[\\\"http://yanxuan.nosdn.127.net/c78e6a9e8afdf38f20cd54831327236d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(925,1181000,0,'正在晾味，蛮厚重，感觉不错','',1,1,'[\\\"http://yanxuan.nosdn.127.net/b294a2c44e67b4e616b484684d0a472d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(926,1181000,0,'超级舒服','',1,1,'[\\\"http://yanxuan.nosdn.127.net/6f85c85e3926e1a1e20dd5a4f5b1296a.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(927,1181000,0,'自己去快递点取得 累尿了。','',1,1,'[\\\"http://yanxuan.nosdn.127.net/0c40f1b1de316fe3bf34462d222d4fc6.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(928,1181000,0,'很舒服 房东给了我一破床垫，再加上这个，躺着就舒服了，非常满意！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a6e7b13576b56af9d0868c94d4130d69.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(929,1181000,0,'好重的份量，回弹快。打开时有点味，通风2天就好了','',1,1,'[\\\"http://yanxuan.nosdn.127.net/a1bc975c41d14de42a5e751fb1f9a69f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5b95705cb60e8a884cf0de925938159d.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(930,1181000,0,'非常非常舒服，第一次在严选买东西，真的很好！！！睡上去很舒服！','',1,1,'[\\\"http://yanxuan.nosdn.127.net/e9955c289e13c8b54d2c10cc59a97a5c.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(931,1181000,0,'挺厚的，刚打开会有点味，放两天就好了，躺在上面很软很舒服，性价比高','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(932,1181000,0,'挺厚的，刚打开会有点味，放两天就好了，躺在上面很软很舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(933,1181000,0,'同事给推荐的严选，第一次购物貌似还不错！等新家收拾好再打开用吧','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(934,1181000,0,'很柔软，有漂浮感，太好睡了，就是有点热热的，质量很棒，包的套都很重','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(935,1181000,0,'感觉特别好，物美价廉，到货当天下午散了散味道，晚上就用了。感觉味道不大，很舒服，特别是腰部支撑好。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(936,1181000,0,'送货挺及时，床垫是朋友推荐的说很好我就买了，看上去不错，下去铺上试试看。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(937,1181000,0,'已经用了两个月了，贴合身体曲线，回弹很好，早上起来不再腰酸背疼了！很棒的床垫，强推！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(938,1181000,0,'高品质的网易严选表现，高逼格的包装，文艺范的表现，实在耐用的使用性质，推荐，推荐哦','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(939,1181000,0,'不错啊，稍微有点味道，放了两天就OK了，躺上去很舒服，第一次在网易购物，送货很快，性价比很高','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(940,1181000,0,'睡在上面特别实在，身体的每个部位都被托着。老公说睡醒后身上再不会有酸痛了。于是再次回购。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(941,1181000,0,'我一个女孩子，说实话，套套子的时候有点费劲，床垫挺沉的，不过睡着是真舒服，也没什么异味，不想起床','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(942,1181000,0,'这个记忆棉床垫我觉得还不错，比一般的床垫舒服，比较贴合身体能够给予足够的支撑。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(943,1181000,0,'味道放了一周，不错了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(944,1181000,0,'昨晚铺上床，试睡了一下，真的太舒服了，严选的东西真的是物美价廉！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(945,1181000,0,'这个床单强烈推荐，十周年800元。\\n睡着非常舒服，家里有榻榻米的可以考虑下。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(946,1181000,0,'不错，这种慢性回弹刚躺上去不习惯，但醒来后不会有腰背酸痛。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(947,1181000,0,'不好意思，早就收到货了，一直忘了确认！茶香很正！睡时间长腰疼~总体不错！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(948,1181000,0,'抱歉，第一次被严选伤害到。收到床垫很快还蛮开心的的，看了说明书说散散味再用，放了两天可能正好遇到阴雨天吧，也没有暴晒。也可能房间小，不够通风。今早醒来头晕目眩，上吐下泻，俨然一副中毒的迹象。真心第一次被网易的产品给伤害，是不是碰上搞活动，产品质量把关不严了','',1,1,'[\\\"https://yanxuan.nosdn.127.net/c4110c2c5355951cd1072ef50cb3d747.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fe5793902da1d1c699b74b89246a2b36.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(949,1181000,0,'不错 就是味儿大','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(950,1181000,0,'收到货物时开箱一看，居然是这样。被刮开了一个口子。心疼。想要退货，联系客服还没人理。。。\\n这种体验真的不好','',1,1,'[\\\"https://yanxuan.nosdn.127.net/4ac4120ce2686db84fd0147a53497f5a.jpg\\\", \\\"https://yanxuan.nosdn.127.net/fb39c5ecdb034a4a9444fa84c6916fe8.jpg\\\"]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(951,1181000,0,'晾咯两天才没有味道，真的很舒服，感觉整个身体都会被贴合的很好，买的很值，第一次买严选很值！！！！！！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(952,1181000,0,'一开始有味道，放了一个礼拜就好了，挺舒服的，性价比不错。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(953,1181000,0,'还没打开使用，但是看能卷起来小小的一盒，就很喜欢，方便携带','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(954,1181000,0,'比预想的还要好，铺在榻榻米垫上睡觉舒适感提升','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(955,1181000,0,'就是味道很大  很舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(956,1181000,0,'非常棒，用了几个月来评价的。网易的整体包装杠杠的，这个垫子睡的也舒服。比较贴身，不会有感觉酸酸的地方。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(957,1181000,0,'刚到！凉几天再说！味道有点重！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(958,1181000,0,'很好，很舒服，不知道时间长了会不会睡薄！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(959,1181000,0,'还不错，不是很软很软的那种，承托性挺好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(960,1181000,0,'睡起来很舒服，放在席梦思床垫上，腰部有支撑，只是味道真的很大！我在书房凉了三个半星期！睡上去之后还能隐隐闻到味道！希望没毒！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(961,1181000,0,'买给爸爸的，中午自己体验了一下，非常舒服，弹性适中，','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(962,1181000,0,'非常好，还是活动的时候买的。性价比上天了！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(963,1181000,0,'有点软，只能收起来了','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(964,1181000,0,'还不错，有点味道，放阳台吹下就好。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(965,1181000,0,'比想象中好，够软可是承托力好，不会睡到腰痛','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(966,1181000,0,'还没用感觉不错！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(967,1181000,0,'正品，没味道，质量不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(968,1181000,0,'很舒适的垫子','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(969,1181000,0,'质量灰常好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(970,1181000,0,'挺好的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(971,1181000,0,'不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(972,1181000,0,'不错…………','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(973,1181000,0,'不舒适，差评','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(974,1181000,0,'用后评价，刚打开味儿确实不小，晾了一周左右吧，味儿就散了，腰部贴合的很好，很舒服，不错。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(975,1181000,0,'很舒服，就是夏天有点热','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(976,1181000,0,'打算再回购2床','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(977,1181000,0,'还没拆应该不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(978,1181000,0,'收到货到现在有十天了，怎么还没回弹啊。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(979,1181000,0,'通风几天，已经没味道了，还不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(980,1181000,0,'非常舒服，用上马上感觉好多了，软但有支撑。非常棒。','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(981,1181000,0,'很好买的第三个','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(982,1181000,0,'睡着还不错','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(983,1181000,0,'第二次买了，很好，睡着舒服','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(984,1181000,0,'性价比很高','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(985,1181000,0,'尺寸刚刚好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(986,1181000,0,'好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(987,1181000,0,'一点点味道，还行，摸着手感不错，等睡过后再来追评','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(988,1181000,0,'一开始有些味道，需要多晾一阵。睡起来还不错，蛮舒服的','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(989,1181000,0,'外套不错，摸起来挺好','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(990,1181000,0,'很舒适 值得这个价格','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(991,1181000,0,'特别好。很舒适','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(992,1181000,0,'还没用','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(993,1181000,0,'床垫不错，相信网易','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(994,314,1,'是记忆棉 很满意','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(995,314,1,'很好的东西','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(996,314,1,'很舒服，有没有那么的软，不错！','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(997,314,1,'确实舒服，不过夏天会不会热啊？','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(998,314,1,'有点过软。等到夏季，上面直接铺凉席的话，不知道透气性会怎样？','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(999,314,1,'包装完好\\n无异味\\n厚度适中\\n慢回弹\\n\\n我直接放置在地板上，当做孩子的爬爬垫使用，上面铺床单，便于洗涤。作为直接铺地板的，有一个问题就是是否透气，否则用了1个月，反面肯定是发霉的状态，等实际效果','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1000,314,1,'东西挺好，为了脊柱而买','',1,0,'[]',1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011,1116011,1,'烦烦烦','',1,0,'[]',1,'2018-11-09 19:24:20','2018-11-09 19:24:20',0),(1012,1181000,0,'呃呃呃呃呃呃呃呃呃','gggg',3,1,'[\\\"http://localhost:8080/wx/storage/fetch/0bowbmr9eymb0hl19rhu.jpg\\\"]',5,'2020-02-10 21:16:00','2020-02-10 21:16:00',0),(1013,1012,2,'fffff','',0,0,'[]',0,'2020-02-10 21:41:16','2020-02-10 21:41:16',0),(1014,1011,2,'fffff','',0,0,'[]',0,'2020-02-10 21:41:25','2020-02-10 21:41:25',0);\n/*!40000 ALTER TABLE `litemall_comment` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_coupon`\n--\n\nLOCK TABLES `litemall_coupon` WRITE;\n/*!40000 ALTER TABLE `litemall_coupon` DISABLE KEYS */;\nINSERT INTO `litemall_coupon` VALUES (1,'限时满减券','全场通用','无限制',0,5.00,99.00,1,0,0,0,'[]',NULL,0,10,NULL,NULL,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,'限时满减券','全场通用','无限制',0,10.00,99.00,1,0,0,0,'[]',NULL,0,10,NULL,NULL,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,'新用户优惠券','全场通用','无限制',0,10.00,99.00,1,1,0,0,'[]',NULL,0,10,NULL,NULL,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(8,'可兑换优惠券','全场通用','仅兑换领券',0,15.00,99.00,1,2,0,0,'[]','DC6FF8SE',0,7,NULL,NULL,'2018-12-23 09:29:57','2018-12-23 09:29:57',0);\n/*!40000 ALTER TABLE `litemall_coupon` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_coupon_user`\n--\n\nLOCK TABLES `litemall_coupon_user` WRITE;\n/*!40000 ALTER TABLE `litemall_coupon_user` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_coupon_user` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_feedback`\n--\n\nLOCK TABLES `litemall_feedback` WRITE;\n/*!40000 ALTER TABLE `litemall_feedback` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_feedback` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_footprint`\n--\n\nLOCK TABLES `litemall_footprint` WRITE;\n/*!40000 ALTER TABLE `litemall_footprint` DISABLE KEYS */;\nINSERT INTO `litemall_footprint` VALUES (1,4,1109008,'2019-12-08 19:12:05','2019-12-08 19:12:05',0),(2,4,1110016,'2019-12-08 19:13:42','2019-12-08 19:13:42',0);\n/*!40000 ALTER TABLE `litemall_footprint` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_goods`\n--\n\nLOCK TABLES `litemall_goods` WRITE;\n/*!40000 ALTER TABLE `litemall_goods` DISABLE KEYS */;\nINSERT INTO `litemall_goods` VALUES (1006002,'1006002','轻奢纯棉刺绣水洗四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/4eb09e08ac9de543d2291d27a6be0b54.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0c9eb81c7594dbe42802ff1ebbece51a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8cfc7b6bfd28687ab3399da08e5ba61b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b98cfd7f197b62abd1679321eae253a6.jpg\\\"]','','设计师原款，精致绣花',1,23,'http://yanxuan.nosdn.127.net/8ab2d3287af0cefa2cc539e40600621d.png','',0,0,'件',919.00,899.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2597f9e2e41093f50761837eb4c2e6be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2597f9e2e41093f50761837eb4c2e6be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4377adc892bf9d16f9d0fd78f88a6986.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4377adc892bf9d16f9d0fd78f88a6986.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/986bd3a7517a356265049443cbb747d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/986bd3a7517a356265049443cbb747d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cdf3958b3a8d9982b879e3fea1fd616.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cdf3958b3a8d9982b879e3fea1fd616.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47e5be34ef476258f44f307982c705d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47e5be34ef476258f44f307982c705d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2220e4cbb5ebc49e9cecb64176983d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2220e4cbb5ebc49e9cecb64176983d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dee62e466465b370c349e37fccd3b596.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dee62e466465b370c349e37fccd3b596.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c021b91f965ac022182eb03b2780e5de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c021b91f965ac022182eb03b2780e5de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9f7afd9441928d7f670fd7879ba869d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9f7afd9441928d7f670fd7879ba869d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a73b69a2fefbd154a2a6ad45102b565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a73b69a2fefbd154a2a6ad45102b565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5836d918faa9b11eb8d9f97f9787cda9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5836d918faa9b11eb8d9f97f9787cda9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8216a8addae2f02a5a570ef45d5ecffc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8216a8addae2f02a5a570ef45d5ecffc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da382973dcb0e524a36519baab880204.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da382973dcb0e524a36519baab880204.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c6e84d49f74e228bc57934ec7b7500.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c6e84d49f74e228bc57934ec7b7500.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f1d0a20e54d3e2e59a44ffe44ebe405.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f1d0a20e54d3e2e59a44ffe44ebe405.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a39f2c7580ce5cadc62e8b39d58aca71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a39f2c7580ce5cadc62e8b39d58aca71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c71dc416f04615b634d2b6cd0c4215ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c71dc416f04615b634d2b6cd0c4215ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06ac26ed7d870c5c6f0ce3e07c629471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06ac26ed7d870c5c6f0ce3e07c629471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99b180d02726e0213e54dddf4b9b32fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99b180d02726e0213e54dddf4b9b32fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97de8d2687052976e51fff40d04af2ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97de8d2687052976e51fff40d04af2ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f527003599be237095995c98039ef87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f527003599be237095995c98039ef87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec30289dc1b2beb4b84a08c02a97ef6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec30289dc1b2beb4b84a08c02a97ef6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/685da1eaddcd26e8e2a1ff4d5d83f29f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/685da1eaddcd26e8e2a1ff4d5d83f29f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2610f487a733a88973d101dcd1766ee1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2610f487a733a88973d101dcd1766ee1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eab3633e648ab2e8412c6801feb6231e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eab3633e648ab2e8412c6801feb6231e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b6c4f220592ea7d5af0072a816fe946.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b6c4f220592ea7d5af0072a816fe946.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/310a777685204ece08592a6e2716c6c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/310a777685204ece08592a6e2716c6c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/198239985c74597717e639089ffae25f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/198239985c74597717e639089ffae25f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dec6b498c899351fe94d99a6dde0ee79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dec6b498c899351fe94d99a6dde0ee79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/516a17ca73846bc871902b298ce38a97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/516a17ca73846bc871902b298ce38a97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8231b81b5ba0e1c244074598c19f003.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8231b81b5ba0e1c244074598c19f003.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c704dcf169e9a177a3c762a6a54a46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c704dcf169e9a177a3c762a6a54a46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b9294ad5f78d890453d4a225feed518.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b9294ad5f78d890453d4a225feed518.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bb1b8fdfaa7f895bdd7d5c65c42a59b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bb1b8fdfaa7f895bdd7d5c65c42a59b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f342e6d6b75dc1f80972feb415fd4e75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f342e6d6b75dc1f80972feb415fd4e75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c9597cf206066861b3244f634c98e32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c9597cf206066861b3244f634c98e32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/970d4dad7d958293fd41ec1f444684f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/970d4dad7d958293fd41ec1f444684f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f93819b03de07abef8b2d94f1d5c84b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f93819b03de07abef8b2d94f1d5c84b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58c8c56aac61da4ee9fcf34930b76e4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58c8c56aac61da4ee9fcf34930b76e4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb6435ec714189d6ad5053bf12d41db7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb6435ec714189d6ad5053bf12d41db7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19cc85ae097247d5d868df993de64e7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19cc85ae097247d5d868df993de64e7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ab8e27757cabd39fccdb5fd8ef7b013.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ab8e27757cabd39fccdb5fd8ef7b013.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03e6f02f8f77b71a82a05dd1a9705057.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03e6f02f8f77b71a82a05dd1a9705057.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006007,'1006007','秋冬保暖加厚澳洲羊毛被',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/b7e3438c473a296a7e9feecbd4139af5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/70422011e5a9855a0723c9c08d0cbbb0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f65dbb00aff8b43be02f2c8104208877.jpg\\\", \\\"http://yanxuan.nosdn.127.net/85e8575c8e473a2f71054e9e36b1211c.jpg\\\"]','','臻品级澳洲进口羊毛',1,17,'http://yanxuan.nosdn.127.net/66425d1ed50b3968fed27c822fdd32e0.png','',0,0,'件',479.00,459.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c78ec6e16d8477525c0a59e3c9d847b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c78ec6e16d8477525c0a59e3c9d847b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/294185760b75f364f6ed42784877e59c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/294185760b75f364f6ed42784877e59c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2468d1851e29930cc3802f125da5d6e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2468d1851e29930cc3802f125da5d6e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0794791277945c1577776724778124f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0794791277945c1577776724778124f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6973ca1e6f264620d5d25e581a0d623d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6973ca1e6f264620d5d25e581a0d623d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26f01273c833c2ae75177a5c8d9310ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26f01273c833c2ae75177a5c8d9310ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf0207da5160588acf58d0f02ea9d360.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf0207da5160588acf58d0f02ea9d360.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbd5d5171a309344d05663952930441f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbd5d5171a309344d05663952930441f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7a65ac0824fc1584c2f1943ed1eaed0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7a65ac0824fc1584c2f1943ed1eaed0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88871ed9eccf7fbdfccf7912bb8f9d21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88871ed9eccf7fbdfccf7912bb8f9d21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7aa0e4c0abeb157e231b17e91cfa8f02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7aa0e4c0abeb157e231b17e91cfa8f02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a38f897200e305e7b23d62431b9c4d18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a38f897200e305e7b23d62431b9c4d18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb147c0e96cdac2d77ab4eef1785e99d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb147c0e96cdac2d77ab4eef1785e99d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6a270f7aed68cfe74e66d720c776fca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6a270f7aed68cfe74e66d720c776fca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2c0b548be17f620db8afbe039a99452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2c0b548be17f620db8afbe039a99452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/155fe0023e17bac4af486a6c1c098537.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/155fe0023e17bac4af486a6c1c098537.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f1f120ca7e362595fd986ea6de8814f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f1f120ca7e362595fd986ea6de8814f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6971f0333e0eeef7d9951edad068d4ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6971f0333e0eeef7d9951edad068d4ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c307630edf971e408938f1007169fa53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c307630edf971e408938f1007169fa53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ea2ba74fb518a298ef825c43ed634f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ea2ba74fb518a298ef825c43ed634f4.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006010,'1006010','秋冬保暖加厚细羊毛被',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/9b40ba300851af1b84ca0749bae70718.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fd7465ba32e23fd107161306d6b580cc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/288dc3fe3238962519f3abd5201e411e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/06cb7ac0991cb4ea236c826e8e6f0a9c.jpg\\\"]','ddd','细腻绵羊毛，保暖性增加一倍',0,16,'http://yanxuan.nosdn.127.net/8fe022126a2789d970f82853be13a5e6.png','',0,0,'件',679.00,659.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/01c77e998005297e0fad16b25433409f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01c77e998005297e0fad16b25433409f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36bffed3bd139e0135f35e1c30dfab01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36bffed3bd139e0135f35e1c30dfab01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/400b9395fb6947977a27da56baf07fcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/400b9395fb6947977a27da56baf07fcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d6aef8e60f6bf2a438774ae114a9206.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d6aef8e60f6bf2a438774ae114a9206.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13521752a26971ad793d5e3e7061305b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13521752a26971ad793d5e3e7061305b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e4beb6669d9a83e19540727c01ced37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e4beb6669d9a83e19540727c01ced37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c2e31cb55507bcb4653181f64a069a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c2e31cb55507bcb4653181f64a069a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a65159336d1e2991ef93ed2aab15b7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a65159336d1e2991ef93ed2aab15b7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bade2a9a72c78749f2a0126a43f5943.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bade2a9a72c78749f2a0126a43f5943.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15cf85dc65d2d857bfd1e45516775944.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15cf85dc65d2d857bfd1e45516775944.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dffc49e67aa11308b8e408d7539ddf84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dffc49e67aa11308b8e408d7539ddf84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0826118b3dbd1a123419d1f7f46784de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0826118b3dbd1a123419d1f7f46784de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cc7573ddb418a0f9fc0483367fce877.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cc7573ddb418a0f9fc0483367fce877.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62b67fcc05f65b26be987e2576ac1b97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62b67fcc05f65b26be987e2576ac1b97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61a604a7f4ec39a7383265d4fb4ba1fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61a604a7f4ec39a7383265d4fb4ba1fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b04ba442e1d859cce4a945b5fee0ec2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b04ba442e1d859cce4a945b5fee0ec2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0aae1850fdc689eb42103b43709a3de9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0aae1850fdc689eb42103b43709a3de9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a82fdc70b5da5c802dca76410c80dac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a82fdc70b5da5c802dca76410c80dac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41fff402bc16cd45614bdfa7b612849f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41fff402bc16cd45614bdfa7b612849f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d357f7ec1ced66c8865ed1029cbcc562.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d357f7ec1ced66c8865ed1029cbcc562.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad18d0bdad9a571bbf03ebe013a422d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad18d0bdad9a571bbf03ebe013a422d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e0e6c2c77f1627b79037b76ba37adf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e0e6c2c77f1627b79037b76ba37adf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b71de5aaafd05a730cfe421f9e16053d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b71de5aaafd05a730cfe421f9e16053d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aeca9234db5622edfe465c3f7732d203.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aeca9234db5622edfe465c3f7732d203.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/678124d2002655e05588a9484f8e5c14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/678124d2002655e05588a9484f8e5c14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3909a0aa66fbdc59c99d0666aef34286.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3909a0aa66fbdc59c99d0666aef34286.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ec01a83f6f6cd2d282ec0be98daeb3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ec01a83f6f6cd2d282ec0be98daeb3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8716853b4b08223e886ee8d882e2d58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8716853b4b08223e886ee8d882e2d58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8188de7819424845707f3f79a1f80d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8188de7819424845707f3f79a1f80d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30298def5edcdd62d0c4a20cfdfef66c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30298def5edcdd62d0c4a20cfdfef66c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3437687b19a26469212a1e2c485c557d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3437687b19a26469212a1e2c485c557d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2450afdd3b9f3cc7fc27bbde33ae0e86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2450afdd3b9f3cc7fc27bbde33ae0e86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/434d004c435b62a9505c5ffdf6d362d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/434d004c435b62a9505c5ffdf6d362d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41b6db4ce14bc2d3ff6526d43f52fb46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41b6db4ce14bc2d3ff6526d43f52fb46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cec4d2d62eccc86b409465e1344f1d24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cec4d2d62eccc86b409465e1344f1d24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09b9868d054ffcdbba3166882fbc8f38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09b9868d054ffcdbba3166882fbc8f38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d8027527ac4af59cc2172a7c3dce64e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d8027527ac4af59cc2172a7c3dce64e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59deea242718d6610f445776833f9afa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59deea242718d6610f445776833f9afa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13f4b4c5dc11e4f5d2767254d2a5c777.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13f4b4c5dc11e4f5d2767254d2a5c777.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0d22f9c380873ddca23e6f187d6b6aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0d22f9c380873ddca23e6f187d6b6aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1821334ad83bfaa64ac4d212be9dd953.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1821334ad83bfaa64ac4d212be9dd953.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72e6119d0329faa952d036173cf2f7fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72e6119d0329faa952d036173cf2f7fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f69081555848f7d3af16cefb9f661c64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f69081555848f7d3af16cefb9f661c64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbb30819e21854491e0a5c8cf933b59a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbb30819e21854491e0a5c8cf933b59a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16f564772fc2f1d0030629b42be12211.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16f564772fc2f1d0030629b42be12211.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a74dc5e969fc0896537be54155e11cd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a74dc5e969fc0896537be54155e11cd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c9702f8ffa6e3ebfcb5e1c14161a493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c9702f8ffa6e3ebfcb5e1c14161a493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4e3b23eacbc419baa748525bc71ac3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4e3b23eacbc419baa748525bc71ac3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb9520c1bc8e63e480bd61cfbcb6d18c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb9520c1bc8e63e480bd61cfbcb6d18c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006013,'1006013','双宫茧桑蚕丝被 空调被',1036000,1001045,'[\\\"http://yanxuan.nosdn.127.net/d83cbd9ec177276ba2582ee393eff3db.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b73852cf22939c4995a5bc8996a4afdd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d2fe16d259e0187d6b53eef028e843d1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4e8f5c09ae9dd03b5ae5b1287b598cc5.jpg\\\"]','','一级桑蚕丝，吸湿透气柔软',1,7,'http://yanxuan.nosdn.127.net/583812520c68ca7995b6fac4c67ae2c7.png','',0,1,'件',719.00,699.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/72d71d3ef34d9c63521e6ede2fd468e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72d71d3ef34d9c63521e6ede2fd468e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/454d60ad184bea35d73258716dd8eff2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/454d60ad184bea35d73258716dd8eff2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6af1ec459a8ed93abccb436c2424277f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6af1ec459a8ed93abccb436c2424277f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91b0e9d5f4bc57ec07702b9152ed9b46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91b0e9d5f4bc57ec07702b9152ed9b46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da9743a2abce3752e186928fd8028167.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da9743a2abce3752e186928fd8028167.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e48f4b067e0890f15c9f3fae5a94ae73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e48f4b067e0890f15c9f3fae5a94ae73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51009cc464b77780fda27d0f0d7aff62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51009cc464b77780fda27d0f0d7aff62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/557905b15620c59926fc3e655e676e1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/557905b15620c59926fc3e655e676e1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb249f4ccaa07940b40215883902af7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb249f4ccaa07940b40215883902af7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c763f877079e495ef67dc8db49369044.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c763f877079e495ef67dc8db49369044.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fffbf8c9990f40d4d63f84a2ecd8e84d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fffbf8c9990f40d4d63f84a2ecd8e84d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62dd5aa7c9f64936dcd86f1592eb38b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62dd5aa7c9f64936dcd86f1592eb38b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1f1914c7be28f6800372d878aaf5de1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1f1914c7be28f6800372d878aaf5de1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb23c66040b18fb5b5ba6dfeeb9a4b1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb23c66040b18fb5b5ba6dfeeb9a4b1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d49ac2656061fff48a6244dfdde01c41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d49ac2656061fff48a6244dfdde01c41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/947ca15f1e253634456e1bcb93c8172f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/947ca15f1e253634456e1bcb93c8172f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80ea5528f9a679f24d1240c9e519d693.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80ea5528f9a679f24d1240c9e519d693.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/150a3223e5bfdde9442c0bcab62ca711.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/150a3223e5bfdde9442c0bcab62ca711.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769f510f743022e38ded0e4a2f2023c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769f510f743022e38ded0e4a2f2023c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91cc7ea8833b03cc9fd7b567a4e2569f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91cc7ea8833b03cc9fd7b567a4e2569f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0982d37e3442540723b17a66493bf849.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0982d37e3442540723b17a66493bf849.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/449a379cf9a8664a52cc0ef9582fe063.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/449a379cf9a8664a52cc0ef9582fe063.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80d2959fe04d9a283ee1e9b180fd30be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80d2959fe04d9a283ee1e9b180fd30be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc878d8a7b7386f5503b327fd444a12d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc878d8a7b7386f5503b327fd444a12d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6137ff63496de30117774c7be09d8f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6137ff63496de30117774c7be09d8f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddfbc82ef6ede49231463b8d09465dbb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddfbc82ef6ede49231463b8d09465dbb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07a0a19039d8e98ffad6895b438545ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07a0a19039d8e98ffad6895b438545ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f4c47f5d8c1c390fd6efd5b757924c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f4c47f5d8c1c390fd6efd5b757924c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dee8166ae7bed6d509af9925a350b405.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dee8166ae7bed6d509af9925a350b405.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f07dc7e541fd4c0c71d21679a3afbd06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f07dc7e541fd4c0c71d21679a3afbd06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9deb210e7cdbb18bb42e37b0640fbba9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9deb210e7cdbb18bb42e37b0640fbba9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/286eed28f2cb51d76fafdb1a112aaa91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/286eed28f2cb51d76fafdb1a112aaa91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7d0251276ab00b200a153515d69dec7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7d0251276ab00b200a153515d69dec7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a908235021c994fb2d5a029f27bf520.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a908235021c994fb2d5a029f27bf520.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98b1fdb1029b1a585871574f7f8bf104.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98b1fdb1029b1a585871574f7f8bf104.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b67aa253cacf03bd0d5a3be8743d15b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b67aa253cacf03bd0d5a3be8743d15b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9689e05a06746a6f00be0b6f1dd80ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9689e05a06746a6f00be0b6f1dd80ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a494d87239c3a84819f54d5e1e430ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a494d87239c3a84819f54d5e1e430ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0187f5be624e13ed5eac7f00c13bde0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0187f5be624e13ed5eac7f00c13bde0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dec5144859fb414c2181e0bf15185cf2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dec5144859fb414c2181e0bf15185cf2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f06282b15ffbed67f115b436ca6975ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f06282b15ffbed67f115b436ca6975ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c159080beb18d634929c6543392d655.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c159080beb18d634929c6543392d655.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94bea38417d6f74a823b0407e3871709.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94bea38417d6f74a823b0407e3871709.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f204613bd50eb71265ca0dc28bc91df0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f204613bd50eb71265ca0dc28bc91df0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36e9a86f175472e70708511a51276e33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36e9a86f175472e70708511a51276e33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/293a0997d7f9dd51211225ceb8073a04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/293a0997d7f9dd51211225ceb8073a04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3c451b65fd6e8215f4609696f9699d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3c451b65fd6e8215f4609696f9699d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54ad136164b7066bda8c3f5b418eb6c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54ad136164b7066bda8c3f5b418eb6c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e17a55eea9daa90ad3e5490a8ade2060.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e17a55eea9daa90ad3e5490a8ade2060.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c898af2ddd8754fa42ae09d341c255ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c898af2ddd8754fa42ae09d341c255ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad2b42dfa9ed7a3b0b7d832482592aea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad2b42dfa9ed7a3b0b7d832482592aea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/314cb766b281d9d69ca7d0e177326e3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/314cb766b281d9d69ca7d0e177326e3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42bcc536dc84355531fa657a450b5daa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42bcc536dc84355531fa657a450b5daa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7f140d9e49eb84d504719b7a04541e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7f140d9e49eb84d504719b7a04541e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/693aa30f123d122d58507ec0df194f96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/693aa30f123d122d58507ec0df194f96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7193b8192cb6345f6f2503febd2b86ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7193b8192cb6345f6f2503febd2b86ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f997dbe72e525fcc68663fe50b5c825.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f997dbe72e525fcc68663fe50b5c825.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6771f59b904f91d296c115de01f0b7f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6771f59b904f91d296c115de01f0b7f3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006014,'1006014','双宫茧桑蚕丝被 子母被',1008008,1001045,'[\\\"http://yanxuan.nosdn.127.net/22535d179b6796fbd45a83d6ecea3b50.jpg\\\",\\\"http://yanxuan.nosdn.127.net/6e93d7d868d918bef0138748ffbd9458.jpg\\\",\\\"http://yanxuan.nosdn.127.net/ccc21b29557929ec99067a445fc74ea3.jpg\\\",\\\"http://yanxuan.nosdn.127.net/1479bec93b57855889d93a9f4eef0b72.jpg\\\"]','','双层子母被，四季皆可使用',1,15,'http://yanxuan.nosdn.127.net/2b537159f0f789034bf8c4b339c43750.png','',0,1,'件',14199.00,1399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3b5ee089edb2b5d3361bf60e208ec474.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b5ee089edb2b5d3361bf60e208ec474.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/737260dd5cfae7ef72c713af861e8774.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/737260dd5cfae7ef72c713af861e8774.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62a70427f9d6bf81bc19203e6f401e2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62a70427f9d6bf81bc19203e6f401e2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/051aa6ea1ef13b32240a34e0d2d5ca97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/051aa6ea1ef13b32240a34e0d2d5ca97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41b19060447843186366c221130ee4de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41b19060447843186366c221130ee4de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae757922d72e6c4357d10f1d78bd7a8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae757922d72e6c4357d10f1d78bd7a8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58bcf7d0ce99f4f2b5cf11b9511319e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58bcf7d0ce99f4f2b5cf11b9511319e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54496c73ebda2680aa2b9d8c375a82e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54496c73ebda2680aa2b9d8c375a82e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6caae81b0956de612ce57b1419382813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6caae81b0956de612ce57b1419382813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fbf34bb5b36ba708dfc3facc6551d1b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fbf34bb5b36ba708dfc3facc6551d1b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/741663a8fb8f5a17442951d7ed670952.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/741663a8fb8f5a17442951d7ed670952.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7055264e97783cc669a003e3e857de8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7055264e97783cc669a003e3e857de8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59983cf72d63181eff723b7d6ec2a57d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59983cf72d63181eff723b7d6ec2a57d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6046cb49c22b635a84d490e8f0ab9f8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6046cb49c22b635a84d490e8f0ab9f8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01d18fcb6e8019798a630c9abb01580a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01d18fcb6e8019798a630c9abb01580a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4093967aedc279e3c4ee3e672fbebbff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4093967aedc279e3c4ee3e672fbebbff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/994d3bcf0b40fc9c31f51a9accd0b88c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/994d3bcf0b40fc9c31f51a9accd0b88c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72fd621d3b567cb6d963a9b554c58ee5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72fd621d3b567cb6d963a9b554c58ee5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1704b2d57d8ce5a30b371f702b80e23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1704b2d57d8ce5a30b371f702b80e23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0cd8614de4c7bc709158dcf9b7e9ada.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0cd8614de4c7bc709158dcf9b7e9ada.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/290ecc11a85a18b87825fe57caa81bd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/290ecc11a85a18b87825fe57caa81bd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3467f0eb4f5a3feb30df257b1dd1a80a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3467f0eb4f5a3feb30df257b1dd1a80a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/406defa7a54f5626e050d9eee2a3a7f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/406defa7a54f5626e050d9eee2a3a7f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14f1fa09e672955a8afad3e35eae3798.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14f1fa09e672955a8afad3e35eae3798.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df344f04a06d62cb15c48a220fb18e34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df344f04a06d62cb15c48a220fb18e34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b468781d6f234e0107b7ed7c44492da5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b468781d6f234e0107b7ed7c44492da5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d91c856cbb29826afbc4d3e2bbf63e27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d91c856cbb29826afbc4d3e2bbf63e27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f08409269a24bc60c51c97e56b279ddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f08409269a24bc60c51c97e56b279ddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3809897fdc8a9db7bd447d7ec1116a17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3809897fdc8a9db7bd447d7ec1116a17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd024467887854c0f9540d9cfef2e6dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd024467887854c0f9540d9cfef2e6dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da5afa55ec02ac1e430ecb985c7aef83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da5afa55ec02ac1e430ecb985c7aef83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f522e5f98ccab9311de8b15a2c6951ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f522e5f98ccab9311de8b15a2c6951ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4d5ef81a10211b7a8d3b7134b3adccb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4d5ef81a10211b7a8d3b7134b3adccb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c241ff5f9c267fbd27c2e0bf346dc00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c241ff5f9c267fbd27c2e0bf346dc00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9db75fb0766730ee2f2afcf8b8b33659.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9db75fb0766730ee2f2afcf8b8b33659.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f4f42fad5ace718567c9aa68ada22a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f4f42fad5ace718567c9aa68ada22a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc0152f7a1a5a31603a59bdfdc4e987f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc0152f7a1a5a31603a59bdfdc4e987f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2929041a7abc890965d4b399f3b6278.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2929041a7abc890965d4b399f3b6278.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e12a5accd62e0b29ace162ca64fe5ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e12a5accd62e0b29ace162ca64fe5ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/924c7f4ce0af0fdefd04164508648885.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/924c7f4ce0af0fdefd04164508648885.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55f049536b6471804546d55b8f4fb88c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55f049536b6471804546d55b8f4fb88c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd99f9a6f3d60a1d07ac3428b974f65d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd99f9a6f3d60a1d07ac3428b974f65d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0444882d13667f002b4eeeaa02bf0498.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0444882d13667f002b4eeeaa02bf0498.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9491237b070c4eff99dff34d528b4b65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9491237b070c4eff99dff34d528b4b65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18bbcf7de0dfe9df10fdccffa328a54d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18bbcf7de0dfe9df10fdccffa328a54d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b396a6ce48ebd3297384d8deea6f06e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b396a6ce48ebd3297384d8deea6f06e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2234040e3bcd7d6b7954b34afc9592a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2234040e3bcd7d6b7954b34afc9592a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b2015e0c984e01a2ec6e971f3b3c855.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b2015e0c984e01a2ec6e971f3b3c855.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cfd381db37cea6b62856d0bcceaa4e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cfd381db37cea6b62856d0bcceaa4e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61c867e69ce18b47ba5e8b4dc35d45a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61c867e69ce18b47ba5e8b4dc35d45a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efbb973c5e5b9bf58e764957f64402b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efbb973c5e5b9bf58e764957f64402b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66eb58f7818e87a8cc67923a2effaeee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66eb58f7818e87a8cc67923a2effaeee.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1006051,'1006051','皇室御用超柔毛巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/de30c41b94ce203985a228dc787fdcfa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de30c41b94ce203985a228dc787fdcfa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de30c41b94ce203985a228dc787fdcfa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de30c41b94ce203985a228dc787fdcfa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de30c41b94ce203985a228dc787fdcfa.jpg\\\"]','','至柔至软，热销50万条',1,1,'http://yanxuan.nosdn.127.net/ad5a317216f9da495b144070ecf1f957.png','',0,0,'条',79.00,59.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009009,'1009009','白鹅绒秋冬加厚羽绒被',1008008,1001000,'[\\\"http://yanxuan.nosdn.127.net/33a04714bc15a43d0ce87d71d1d9694a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e0999e26962b6e88b05fdfe9ba8ff644.jpg\\\", \\\"http://yanxuan.nosdn.127.net/dd2aff7f4edb26f5e0f691e94a51c66a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/78059fd78b649d395f8e5740ba8eb99e.jpg\\\"]','','热销5万条，一条被子过冬',1,19,'http://yanxuan.nosdn.127.net/9791006f25e26b2d7c81f41f87ce8619.png','',0,0,'件',2019.00,1999.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/79ae82326ba86985035215ca9bebd137.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79ae82326ba86985035215ca9bebd137.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7aadf2c5fd0942dc9bceb5a0738d969.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7aadf2c5fd0942dc9bceb5a0738d969.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ccf2486677aafef68048894317b6e96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ccf2486677aafef68048894317b6e96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3ce70df9905a810c60220d9d24ebb2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3ce70df9905a810c60220d9d24ebb2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d51b1e4f61cb563b09dae46ee282e220.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d51b1e4f61cb563b09dae46ee282e220.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2791ef7173866f12be3341ca7202336.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2791ef7173866f12be3341ca7202336.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cda9c3d9f044310f49afc5bbdb3533d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cda9c3d9f044310f49afc5bbdb3533d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68e9be17108a9c6a0e6b786176a4b4c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68e9be17108a9c6a0e6b786176a4b4c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3974579c71cdf946088d339e9e5c865d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3974579c71cdf946088d339e9e5c865d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d95a8520e3e3dfec063fc484e1d57207.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d95a8520e3e3dfec063fc484e1d57207.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce8b29a61396dced0f89ea3bfdf1f45d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce8b29a61396dced0f89ea3bfdf1f45d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/129cba9ef941b367e56dad47aeb7fd96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/129cba9ef941b367e56dad47aeb7fd96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f566abb0c978093647aa1742725129ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f566abb0c978093647aa1742725129ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7c7c153400895b5d690f1eba9b3c315.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7c7c153400895b5d690f1eba9b3c315.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be750a41eef4db163a29e2326a65660f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be750a41eef4db163a29e2326a65660f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ea11ee2e846b3536acb599b93b7d2e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ea11ee2e846b3536acb599b93b7d2e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5814d4e02b3fd0b94d04ca262b201385.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5814d4e02b3fd0b94d04ca262b201385.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7959e1d91576bf0d21e7bd042e2210bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7959e1d91576bf0d21e7bd042e2210bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4268cc5be26539ed427927e4e6d8e18e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4268cc5be26539ed427927e4e6d8e18e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5667dee42adfce79988974d96ddd8b09.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5667dee42adfce79988974d96ddd8b09.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6c9f0a1a51cd0166844d3694cc92a1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6c9f0a1a51cd0166844d3694cc92a1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce43457f50492c355ff1f7577685c004.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce43457f50492c355ff1f7577685c004.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c2ff68fede235b1b9f249cd5dabce0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c2ff68fede235b1b9f249cd5dabce0d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/785952cd32deedc2bfd90826e89ddc2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/785952cd32deedc2bfd90826e89ddc2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b544624dcc990b966e6c6d20ee608b7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b544624dcc990b966e6c6d20ee608b7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/761a606123be84d0c6eaa2e5eb9f4f81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/761a606123be84d0c6eaa2e5eb9f4f81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cce548176f68f7e00de503d4d146629.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cce548176f68f7e00de503d4d146629.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30cb73b7917af99d4ccbdbca9042d566.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30cb73b7917af99d4ccbdbca9042d566.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a27c57bb90e145df10d633dcfdbe26b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a27c57bb90e145df10d633dcfdbe26b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8df76b01f83dd4d4a7f58014d8977067.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8df76b01f83dd4d4a7f58014d8977067.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea47ed85b1334e2da9672ee3e9ad66a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea47ed85b1334e2da9672ee3e9ad66a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/750caeba2fa63dec64d598e8299f2122.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/750caeba2fa63dec64d598e8299f2122.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14bd429f1d48be5d9a8240c1fb4c494b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14bd429f1d48be5d9a8240c1fb4c494b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02ee506d1f4ba045d7408a0b1e719c8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02ee506d1f4ba045d7408a0b1e719c8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82443ff0a437048729b35fbdb85b0c3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82443ff0a437048729b35fbdb85b0c3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3f39a87baa66fe50f3b141d148645b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3f39a87baa66fe50f3b141d148645b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/814e549460f206dccb8889165ef69ea2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/814e549460f206dccb8889165ef69ea2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43c21522533725d57ff893f9d080f6cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43c21522533725d57ff893f9d080f6cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfc0d18fa3b2ba721fd7614af7962cbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfc0d18fa3b2ba721fd7614af7962cbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b58ac36c4781edd6d09dfeb2fbb6112.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b58ac36c4781edd6d09dfeb2fbb6112.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aadb34b1fe47217989e46eefb2fcef2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aadb34b1fe47217989e46eefb2fcef2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/558aa961eb6b51692e50c5801d74adeb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/558aa961eb6b51692e50c5801d74adeb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af3a0c3d829d015c0850befa9aa7f05c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af3a0c3d829d015c0850befa9aa7f05c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23c02d5a325df4c87eb339e694489339.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23c02d5a325df4c87eb339e694489339.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c51160264c2344feb8a2580d0c47a655.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c51160264c2344feb8a2580d0c47a655.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea8ecd877fdd3c0b30f7d7b961fdf8ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea8ecd877fdd3c0b30f7d7b961fdf8ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5976f583518689c566c94ce65ac8fcb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5976f583518689c566c94ce65ac8fcb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/494dc60b71027177448188093c5eb072.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/494dc60b71027177448188093c5eb072.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c0fc3b0727795fe696579e6b3a1f817.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c0fc3b0727795fe696579e6b3a1f817.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ab7aa0de0e90b5a8768d25155e6c475.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ab7aa0de0e90b5a8768d25155e6c475.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/839ffe5bf65befd4ec353fbed7730b2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/839ffe5bf65befd4ec353fbed7730b2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/313df862cf6181ef199b782969be4607.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/313df862cf6181ef199b782969be4607.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e39bfc4343d8968879ec66cc67db8987.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e39bfc4343d8968879ec66cc67db8987.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0c74814f38aba0c40a405ece465d554.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0c74814f38aba0c40a405ece465d554.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009012,'1009012','可水洗舒柔丝羽绒枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/c2f88baff6d3d9c954bf437649d26954.jpg\\\", \\\"http://yanxuan.nosdn.127.net/36176eb5337c5048cf4403b145f43bc4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/13aae0f61d87198867c088aa50c00043.jpg\\\", \\\"http://yanxuan.nosdn.127.net/40e881087eae3ef541aa13f6b4e9d356.jpg\\\"]','','超细纤维，蓬松轻盈回弹',1,2,'http://yanxuan.nosdn.127.net/a196b367f23ccfd8205b6da647c62b84.png','',0,1,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1a5e9ace280a27c810e67bf3aab66a75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a5e9ace280a27c810e67bf3aab66a75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40c88e440f866d761e72fff850edafc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40c88e440f866d761e72fff850edafc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e26e6ab169ea6cd025558eecd8c9cd5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e26e6ab169ea6cd025558eecd8c9cd5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a44f6c9ce44db0c10453632a295849b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a44f6c9ce44db0c10453632a295849b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df9d87e60d06169417fa9460f81537d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df9d87e60d06169417fa9460f81537d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2cf5687c311b0dda7931a15532be0fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2cf5687c311b0dda7931a15532be0fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8acf04b68de689304e5cb69ff6bb07d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8acf04b68de689304e5cb69ff6bb07d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65d20babc642c3dcf86e543344e9ed52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65d20babc642c3dcf86e543344e9ed52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92efc7c36a8be774dffa2c6e64d80501.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92efc7c36a8be774dffa2c6e64d80501.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70be97c7a2fb95b45260c3debf6c2688.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70be97c7a2fb95b45260c3debf6c2688.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01f3285234fb3e7a005511985b21f79f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01f3285234fb3e7a005511985b21f79f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4b7e5b867f5b248d28a16116eac5633.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4b7e5b867f5b248d28a16116eac5633.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c7402aa957e5a25db3fbfefdfb0af96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c7402aa957e5a25db3fbfefdfb0af96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d0f3ba2eb421945a81fa52414dbca5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d0f3ba2eb421945a81fa52414dbca5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/000eb7d7bf5587215df305676533e5c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/000eb7d7bf5587215df305676533e5c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/557a98e73aa9d1d15721b7e4e26e487f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/557a98e73aa9d1d15721b7e4e26e487f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70b33a53ab55bdc711021ae5c9494f03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70b33a53ab55bdc711021ae5c9494f03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3d135a3e7c8f550a46cbdcc973d7ad7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3d135a3e7c8f550a46cbdcc973d7ad7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87eedde73e8c0b357ca1295a201ffbe0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87eedde73e8c0b357ca1295a201ffbe0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009013,'1009013','可水洗抗菌防螨丝羽绒枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/34bb2ff0358432c3f15e6afa0d5d2104.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5114eb391397033eca305055e21d9cb3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/73a866b532183dec74232b0cc1b36428.jpg\\\", \\\"http://yanxuan.nosdn.127.net/331a2954f81d0cfe764cbdf2e5b6b328.jpg\\\"]','','进口防螨布，热销50万件',1,3,'http://yanxuan.nosdn.127.net/da56fda947d0f430d5f4cf4aba14e679.png','',0,0,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b2576e9567e5de643a02f3a5fc26ee17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2576e9567e5de643a02f3a5fc26ee17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/029b577be403335de4c2a37b9d83a31d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/029b577be403335de4c2a37b9d83a31d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/779f04eac136c934fe9a17d2d26137ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/779f04eac136c934fe9a17d2d26137ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d641ff16c4b2502442616f3e194d575.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d641ff16c4b2502442616f3e194d575.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec14832d8c947f4dbe716eabfaa7029a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec14832d8c947f4dbe716eabfaa7029a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/645db2317426b5a852d331231e258c02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/645db2317426b5a852d331231e258c02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac6055481565438d5fee342c3ccec155.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac6055481565438d5fee342c3ccec155.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8382f534cf2acac06551df87e136c4f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8382f534cf2acac06551df87e136c4f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce4cf3fdb7230634c72fbf6c97bd3c16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce4cf3fdb7230634c72fbf6c97bd3c16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d78a9f815043b0ed880d0ba90b08dbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d78a9f815043b0ed880d0ba90b08dbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3aa34184510cbdd8df6ba4440af6e37e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3aa34184510cbdd8df6ba4440af6e37e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbb48af3056fd3dcffa9968a076753f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbb48af3056fd3dcffa9968a076753f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc72b5750827b7d222d972888fb9831b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc72b5750827b7d222d972888fb9831b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b24b9b12b891be546263e2cd3f0b704c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b24b9b12b891be546263e2cd3f0b704c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/631996fac12032dbdc17ffd721fb7087.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/631996fac12032dbdc17ffd721fb7087.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecc5a8793e18aad9bf3d5f0a89bff12f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecc5a8793e18aad9bf3d5f0a89bff12f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/943a4bc41ad6e80051c5cfacd102cfde.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/943a4bc41ad6e80051c5cfacd102cfde.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0a13678fdef5e56d53de783e8e01350.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0a13678fdef5e56d53de783e8e01350.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/220ef8d778bdfc198fcb53f0f01289a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/220ef8d778bdfc198fcb53f0f01289a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/573acbc397778453b21aba05e5a397f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/573acbc397778453b21aba05e5a397f6.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009024,'1009024','日式和风懒人沙发',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/9460f6b30661548c4a864607bfcdf4ca.jpg\\\", \\\"http://yanxuan.nosdn.127.net/acbdb480bcad193fad77ef6c4f52192e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e6feb5f4a0989d212bce068d4907657d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6059ab6e106d97c29d5723c1d6f1a11f.jpg\\\"]','','优质莱卡纯棉，和风家居新体验',1,1,'http://yanxuan.nosdn.127.net/149dfa87a7324e184c5526ead81de9ad.png','',0,0,'件',619.00,599.00,'<p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34a6a0daa3f7a397a38aad14cb9e90fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34a6a0daa3f7a397a38aad14cb9e90fa.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76637af0eec246b318cb129b768de637.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76637af0eec246b318cb129b768de637.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18fee22626e61fc1d1a01916914016ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18fee22626e61fc1d1a01916914016ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91f57a9bb142e1c1e2ff0bbea6f9af96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91f57a9bb142e1c1e2ff0bbea6f9af96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/252d80fd75eb1254d746d0b57c267650.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/252d80fd75eb1254d746d0b57c267650.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b07697992a2b14de6fd0a5811936d71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b07697992a2b14de6fd0a5811936d71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c499439d6081bb4e836955b7514c1b96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c499439d6081bb4e836955b7514c1b96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bed437fdc091d020a8f805bcc8830bd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bed437fdc091d020a8f805bcc8830bd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fc5febdb817abd7a1040bab03f048b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fc5febdb817abd7a1040bab03f048b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0417b3986c9dc082124fcc360390021.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0417b3986c9dc082124fcc360390021.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5c9d24c652d4dee7946ef925105f3f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5c9d24c652d4dee7946ef925105f3f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b10272c58f95dd6737ce1cd41452a21d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b10272c58f95dd6737ce1cd41452a21d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/510c6ef36760238b38ed59cd6e47a21f.png\\\" _src=\\\"http://yanxuan.nosdn.127.net/510c6ef36760238b38ed59cd6e47a21f.png\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6371348b917c021c55dc393fc59d4d28.png\\\" _src=\\\"http://yanxuan.nosdn.127.net/6371348b917c021c55dc393fc59d4d28.png\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de4079b128e57c5c0fa8a8177e9bc6e7.png\\\" _src=\\\"http://yanxuan.nosdn.127.net/de4079b128e57c5c0fa8a8177e9bc6e7.png\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/160966fbc772787f824dc1dbd5afb16d.png\\\" _src=\\\"http://yanxuan.nosdn.127.net/160966fbc772787f824dc1dbd5afb16d.png\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb3c8d3f10f2aca0908871c8e598aa0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb3c8d3f10f2aca0908871c8e598aa0e.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1009027,'1009027','皇室御用超柔毛巾80s',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/35ad21679dbd30a23a8308287ffd4673.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35ad21679dbd30a23a8308287ffd4673.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35ad21679dbd30a23a8308287ffd4673.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35ad21679dbd30a23a8308287ffd4673.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35ad21679dbd30a23a8308287ffd4673.jpg\\\"]','','轻柔舒适不掉毛',1,2,'http://yanxuan.nosdn.127.net/71cfd849335c498dee3c54d1eb823c17.png','',0,0,'条',99.00,79.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010000,'1010000','澳洲纯羊毛盖毯 加厚款',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/57779dbcd9cbb95241123d798f4693c2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/64c52113e0c5ca42cd363d5854280119.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b578539da6f0e39eb74991e9a0b74a90.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b544dee2401c02e95c0a7bc70960eadf.jpg\\\"]','','温暖加厚设计',1,36,'http://yanxuan.nosdn.127.net/3bec70b85337c3eec182e54380ef7370.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ff86010e7277e9fe194e393fb1ad2ba9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff86010e7277e9fe194e393fb1ad2ba9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/217045fdde1eef8a8f37cd162bed12dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/217045fdde1eef8a8f37cd162bed12dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/128cd8aebeb3ace9e00ab1f06ef52d69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/128cd8aebeb3ace9e00ab1f06ef52d69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/648886df63abe5211271ab1187f9c763.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/648886df63abe5211271ab1187f9c763.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/820a1f82b97a9f28b449bcdb2f72a631.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/820a1f82b97a9f28b449bcdb2f72a631.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4f0e12ff92d2d3056290c94aa512f43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4f0e12ff92d2d3056290c94aa512f43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4b8bb95cba61f7c6ec36af3312a3a68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4b8bb95cba61f7c6ec36af3312a3a68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e15a76573c7ba9d0a077eec5b914321b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e15a76573c7ba9d0a077eec5b914321b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8833d04e7f87b7a8d324c315df763726.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8833d04e7f87b7a8d324c315df763726.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa8ad5312cb4a8d129528e37a6ac64bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa8ad5312cb4a8d129528e37a6ac64bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5d26e28d938e9a33a2c729283f2cc82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5d26e28d938e9a33a2c729283f2cc82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d27a1a92b24adfdf0e6578ddbcd1b572.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d27a1a92b24adfdf0e6578ddbcd1b572.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38eb737cc02e5b383911867ed48a004b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38eb737cc02e5b383911867ed48a004b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82d5a1d5e587b9e8e781f485fb9f73bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82d5a1d5e587b9e8e781f485fb9f73bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/728d11809778d6de50f7274a384952e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/728d11809778d6de50f7274a384952e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/046d49ddc7c9e7031a354129a05e72e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/046d49ddc7c9e7031a354129a05e72e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8144e45974188424d576bc16fdfc5842.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8144e45974188424d576bc16fdfc5842.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bd138f32ee0930250aec8578d740a12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bd138f32ee0930250aec8578d740a12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71b7da3908ca5d8bb96c690d0c069a5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71b7da3908ca5d8bb96c690d0c069a5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3a9174f7ca98df4489fa0f1cacc289f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3a9174f7ca98df4489fa0f1cacc289f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b4adaa15075af3218bb54b556db6a70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b4adaa15075af3218bb54b556db6a70.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7e346ce58ad1400c14a11a515c37ab0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7e346ce58ad1400c14a11a515c37ab0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f3df0b2855589a41c66d35945dbf792.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f3df0b2855589a41c66d35945dbf792.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d5b71b357fc979d0e65968c6697a0df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d5b71b357fc979d0e65968c6697a0df.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1010001,'1010001','澳洲纯羊毛盖毯 舒适款',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/5abc565d5b01e8de15fa16acf58ed40e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/36cb5783a102c30b818adb7bf5dfde5b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/057bee2ec4c883077f4dc710c4076369.jpg\\\", \\\"http://yanxuan.nosdn.127.net/01a2844b480d2456d2e764c0ea2f8201.jpg\\\"]','','100%澳洲美利奴羊毛',1,33,'http://yanxuan.nosdn.127.net/a8b0a5def7d64e411dd98bdfb1fc989b.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b23db0608cd8bfde4be5d90124483b36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b23db0608cd8bfde4be5d90124483b36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f77c27a2e5d5f9d61eeaffc364d6415d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f77c27a2e5d5f9d61eeaffc364d6415d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5841dfb7a94c4b849abbe42b2a00434e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5841dfb7a94c4b849abbe42b2a00434e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/656ebc04bee2462793db2b8bf1813aa9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/656ebc04bee2462793db2b8bf1813aa9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c55350f193eaf1204a25932fa469586f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c55350f193eaf1204a25932fa469586f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca5c07a9abb58032f2d12e257ccbf367.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca5c07a9abb58032f2d12e257ccbf367.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/549b0e32a35f85fc0c1f34d03c336bcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/549b0e32a35f85fc0c1f34d03c336bcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb29db817a6ae1cd6619260023099369.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb29db817a6ae1cd6619260023099369.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68ec1234fec67d7ba4737ea6129601fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68ec1234fec67d7ba4737ea6129601fd.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7eaba1187a93d93031e52662d7e9012.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7eaba1187a93d93031e52662d7e9012.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9fb5698bdfde2ae6fa8c49b743e113b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9fb5698bdfde2ae6fa8c49b743e113b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8c4352aed20fc8e381e61b75a0df423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8c4352aed20fc8e381e61b75a0df423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bda69e3e6128f1ae2aef1d6b6c2a32a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bda69e3e6128f1ae2aef1d6b6c2a32a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/607a6bd73635d670d3c0efd5db4494a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/607a6bd73635d670d3c0efd5db4494a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfe7e30663d3d8a2deba97eeb6a9dd33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfe7e30663d3d8a2deba97eeb6a9dd33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79991d473d14b4c64054ac43c62acedc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79991d473d14b4c64054ac43c62acedc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1f4016c887fb7ec699fb8ac5336625d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1f4016c887fb7ec699fb8ac5336625d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ed3f9a90c5b8b3a20190068aaeaa069.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ed3f9a90c5b8b3a20190068aaeaa069.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccafa9bae7e5aad763ef6ac20830d1a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccafa9bae7e5aad763ef6ac20830d1a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bcb97f02f51d545eff2d186e6480728.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bcb97f02f51d545eff2d186e6480728.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e7cdbc72ac2358f7243baf320f8db9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e7cdbc72ac2358f7243baf320f8db9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4c6ba6d38e2beae0ad248d799021a23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4c6ba6d38e2beae0ad248d799021a23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10afa0d6db391623eecaf87fa004dc6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10afa0d6db391623eecaf87fa004dc6d.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/427865bf514f70b9d3eeca7929a9b754.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/427865bf514f70b9d3eeca7929a9b754.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6841486484cd3163b8d84856b6090f50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6841486484cd3163b8d84856b6090f50.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1011004,'1011004','色织精梳AB纱格纹空调被',1036000,1001000,'[\\\"http://yanxuan.nosdn.127.net/f7e77331229098060bbacf2fc6c1708b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2720383ea168872acc8d492de9573cc6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/45e4c14029626178419c82f2837f51ca.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bb6c28d502704d5c1645d066f79bf61d.jpg\\\"]','','加大加厚，双色精彩',1,2,'http://yanxuan.nosdn.127.net/0984c9388a2c3fd2335779da904be393.png','',0,1,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/28680639193b939b5d93cd77b3272a1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28680639193b939b5d93cd77b3272a1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/990c9a7781a8ae2b2a08c65c9af7afc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/990c9a7781a8ae2b2a08c65c9af7afc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7ccc07b50f491e94b6187bf49b48820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7ccc07b50f491e94b6187bf49b48820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69eb85fd08c9ebce511d13d899d96659.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69eb85fd08c9ebce511d13d899d96659.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a96f2f48217b913dc012671ed511d223.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a96f2f48217b913dc012671ed511d223.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c94a22b8644fafec3ff27f87dd12771b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c94a22b8644fafec3ff27f87dd12771b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/721b4749caada515bb5e616f41a410d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/721b4749caada515bb5e616f41a410d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1215d6badb5a922efaeadd36911a4a3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1215d6badb5a922efaeadd36911a4a3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/749a3c6e9228d304806a06e478644ca1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/749a3c6e9228d304806a06e478644ca1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cc7fd2eadbef5ab061fdf3550962d4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cc7fd2eadbef5ab061fdf3550962d4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/710b9318f02863fe79209e7e6c822a5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/710b9318f02863fe79209e7e6c822a5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaf8500212ec5bf783cb2bc63afbf7f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaf8500212ec5bf783cb2bc63afbf7f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9e03dfb8cacda0f8fbbcf0ef20f8a62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9e03dfb8cacda0f8fbbcf0ef20f8a62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fa109d21bda840ac7040b196c13a871.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fa109d21bda840ac7040b196c13a871.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76bfa90446c129fa3eb9f05104e9e778.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76bfa90446c129fa3eb9f05104e9e778.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3b94053478ceb6912a28597c51a3bcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3b94053478ceb6912a28597c51a3bcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a25bca01f9ad835cd79b1c11ffdb400e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a25bca01f9ad835cd79b1c11ffdb400e.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1015007,'1015007','典雅美式全棉刺绣抱枕',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/013657a5a5faf8a9a7e3f39b5bba4eac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d46ba997e163430e43735e4ad1caeff0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a90e545295d22de031b10aee631e48fe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f7188ec871d1f721f64cbe04860a4fe2.jpg\\\"]','','典雅毛线绣，精致工艺',1,4,'http://yanxuan.nosdn.127.net/a2045004de8a6225289376ad54317fc8.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/66640f55aeb668ac9df6e26b6b30adb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66640f55aeb668ac9df6e26b6b30adb5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42852faba5623c6dc5be451d80e5df03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42852faba5623c6dc5be451d80e5df03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48ce93c6f6a731778c505442f163b09e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48ce93c6f6a731778c505442f163b09e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02a3abee9bb3e22f27781ced8774d1ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02a3abee9bb3e22f27781ced8774d1ab.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c62a27145e1045879e3f2b97b9f86b4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c62a27145e1045879e3f2b97b9f86b4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48baaafe4ea4c32242c57e58ce8e139f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48baaafe4ea4c32242c57e58ce8e139f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99549f0375b108240866a09a0a2527d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99549f0375b108240866a09a0a2527d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/341529ba80d91c5304680be8f524a626.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/341529ba80d91c5304680be8f524a626.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b15e35e9d8c04288dfb7546b1f743c17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b15e35e9d8c04288dfb7546b1f743c17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c0ebf7949133cb382b6bf18c8a5a1c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c0ebf7949133cb382b6bf18c8a5a1c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfd25d0fa6dc13a335877360e3dab8d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfd25d0fa6dc13a335877360e3dab8d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbcc420cef18e4a43589198ebfcc4fd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbcc420cef18e4a43589198ebfcc4fd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15aa3e3ed45714d29ca062499db930ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15aa3e3ed45714d29ca062499db930ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab6963b4e529810577f3e428c9d10af6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab6963b4e529810577f3e428c9d10af6.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1019000,'1019000','升级款护颈波浪记忆枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/129cf4c83627828d8c68134eed07acba.jpg\\\", \\\"http://yanxuan.nosdn.127.net/155cd16ef921a10849eb6f353a81711d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/50c44c65dc8913fbc87da4d29e4e16a1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/007f21a042e9bc44ac4f44db11e5428b.jpg\\\"]','','享受自在侧睡',1,8,'http://yanxuan.nosdn.127.net/77c09feb378814be712741b273d16656.png','',0,0,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c1e5ff831fd66e404c8b2ac90b91c4e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1e5ff831fd66e404c8b2ac90b91c4e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0118ea9e0c1aa9596f9b57a8d862581.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0118ea9e0c1aa9596f9b57a8d862581.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/948f4095c7efbd2a1a7bfd624321b2e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/948f4095c7efbd2a1a7bfd624321b2e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b415b3b9e48688d3c81c96edbe5a26a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b415b3b9e48688d3c81c96edbe5a26a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a841d953c5d0ec3dbce02152bb44c2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a841d953c5d0ec3dbce02152bb44c2f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ce236ff050b8743bc2139c25db084d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ce236ff050b8743bc2139c25db084d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8dac2a76d5886429b8417cdd48bcbb7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8dac2a76d5886429b8417cdd48bcbb7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b79a8aac5584b137a3b010897415510e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b79a8aac5584b137a3b010897415510e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/100e058ca7bf727ac206147961e2638d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/100e058ca7bf727ac206147961e2638d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/746152d0f88b32455c1a85691a18ee0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/746152d0f88b32455c1a85691a18ee0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56d32b1bef15fd6f4b5780466b04c69d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56d32b1bef15fd6f4b5780466b04c69d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e949e68bdec54d89a8c55579da4eedd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e949e68bdec54d89a8c55579da4eedd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cee6a2ffbde4cfcc6f4e6bcaa824a28c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cee6a2ffbde4cfcc6f4e6bcaa824a28c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ac36b88f968048e02a9d074a0d28478.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ac36b88f968048e02a9d074a0d28478.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ed41d77cb4db472e73d996ca8566305.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ed41d77cb4db472e73d996ca8566305.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccc002f264cd53415811961486ae49bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccc002f264cd53415811961486ae49bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21b631c1147dee010fc3a7060feb8497.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21b631c1147dee010fc3a7060feb8497.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/124748dc5e030621db17ff341024cf9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/124748dc5e030621db17ff341024cf9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/800ff0bc68c16062cd128a4850bb0800.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/800ff0bc68c16062cd128a4850bb0800.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7add37eaba2dcfc34441f8a6d605ddc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7add37eaba2dcfc34441f8a6d605ddc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c078aab2f23798ff88e1623e01694ff2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c078aab2f23798ff88e1623e01694ff2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9fb2a267c184178d454c48a519338bfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9fb2a267c184178d454c48a519338bfb.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1019001,'1019001','升级款护颈加翼记忆枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/35634c85786bb56314df11c0dbea1b57.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdcdee30c0d89fd4defb57539dfab468.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9bbfbeead2e0b038f6ee002a2f556281.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e86e34c26d2b6d6caa02cd6cf4039cf5.jpg\\\"]','','仰睡优质装备',1,9,'http://yanxuan.nosdn.127.net/7644803ab19b3e398456aa5a54229363.png','',0,0,'件',129.00,109.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c6eb7df0cb54b1efd167d8c9fb499d4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6eb7df0cb54b1efd167d8c9fb499d4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6df32e9289c2e47966c3b117268698a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6df32e9289c2e47966c3b117268698a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92adf10bf5bb25403f449ec1e8612223.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92adf10bf5bb25403f449ec1e8612223.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f4b631f23c4d86aa3c6882258f1ed61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f4b631f23c4d86aa3c6882258f1ed61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/484044307538426c6c79d88891a44573.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/484044307538426c6c79d88891a44573.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3340218a14eb10f023410cb7b14ff5c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3340218a14eb10f023410cb7b14ff5c7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12f8e836b270f459bb9a7d0fd043f840.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12f8e836b270f459bb9a7d0fd043f840.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/234a40d515b4ef5283a4b307aa694880.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/234a40d515b4ef5283a4b307aa694880.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b999f414bab88eb61dc8c7c19e43784b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b999f414bab88eb61dc8c7c19e43784b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/729907923ec1d1c987b4fc9a3aab75da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/729907923ec1d1c987b4fc9a3aab75da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86c4cfbca9b18f1931fd6424d504f58c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86c4cfbca9b18f1931fd6424d504f58c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11cd2b57e9430b77019c1148ffc98e00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11cd2b57e9430b77019c1148ffc98e00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9025355615221491eeb0028f52c1190.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9025355615221491eeb0028f52c1190.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6541688751bf78732def7b1e7b80acde.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6541688751bf78732def7b1e7b80acde.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a307a08fe871cda58d345c3d27aec637.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a307a08fe871cda58d345c3d27aec637.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d0c08ea2cce7fa09cd20463687fde2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d0c08ea2cce7fa09cd20463687fde2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a141d9a027680a921b70adabb9e822f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a141d9a027680a921b70adabb9e822f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8eb750a2ce2373be40b852aaf0494edf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8eb750a2ce2373be40b852aaf0494edf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2275f3636c0719ab83d7391993da903a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2275f3636c0719ab83d7391993da903a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d05c90aa86f19886e94e402305dada1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d05c90aa86f19886e94e402305dada1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0acbac29252596be257c86a590eb567a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0acbac29252596be257c86a590eb567a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c99b1fd6b0b812a289b5887233453646.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c99b1fd6b0b812a289b5887233453646.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e45ab89e057c3f73c0b06464115ea357.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e45ab89e057c3f73c0b06464115ea357.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08f026762e2459f85f66766e4ea3e195.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08f026762e2459f85f66766e4ea3e195.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3365604b1b01c7a99d31a5307991bbb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3365604b1b01c7a99d31a5307991bbb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2406859dfe2befe93927346fe1317c22.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2406859dfe2befe93927346fe1317c22.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0121587794b92e2a5bba41460984f091.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0121587794b92e2a5bba41460984f091.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5187cfe2da36ce4c3946aa6d6ce23461.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5187cfe2da36ce4c3946aa6d6ce23461.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07447d11bdb3db402bd06a991f765052.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07447d11bdb3db402bd06a991f765052.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5219f74a5884e3bd4dc2a44c40ac521.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5219f74a5884e3bd4dc2a44c40ac521.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca006cc5c87ccde67019c28e7627d0fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca006cc5c87ccde67019c28e7627d0fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3260e27582b77978faee526a2a3c9d68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3260e27582b77978faee526a2a3c9d68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95093aa9450eb598e110bfa7903dce7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95093aa9450eb598e110bfa7903dce7f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1019002,'1019002','升级款护颈双人记忆枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/c51baecb5f1b3ae106edca6921f74ba8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/26a804344502042242df6c3d38ccd3d4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a3c11ba31e777302be5569b8f76eadc1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/dbb20bd6803e83b02f4880e1a4f22ad2.jpg\\\"]','','共享亲密2人时光',1,10,'http://yanxuan.nosdn.127.net/0118039f7cda342651595d994ed09567.png','',0,1,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c186a059de5eefc906216f4b30592330.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c186a059de5eefc906216f4b30592330.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6de82771ca1dd4cece4b16dcc306f83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6de82771ca1dd4cece4b16dcc306f83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df2daa178d711c8ea0ba9dbc52ce2686.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df2daa178d711c8ea0ba9dbc52ce2686.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14c3e64ba6565efe976952e2b6ae615d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14c3e64ba6565efe976952e2b6ae615d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2cf982e78628f3a0acb911fc274b9b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2cf982e78628f3a0acb911fc274b9b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e81eaa79cf531ef8ab46a30dff994f33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e81eaa79cf531ef8ab46a30dff994f33.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b5b19aaddb243ce516b5db29c1ef90d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b5b19aaddb243ce516b5db29c1ef90d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58cea18ebf8b094dcd62bd879fc040e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58cea18ebf8b094dcd62bd879fc040e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72b901a3f652c51fffa1a1de204aba31.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72b901a3f652c51fffa1a1de204aba31.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0e9d94f5c2ee8533b68e2db7746b534.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0e9d94f5c2ee8533b68e2db7746b534.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b705431d490adf12a9e5ec7b43e7607f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b705431d490adf12a9e5ec7b43e7607f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2bb4b705eabd3e5992dfab146bc2b3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2bb4b705eabd3e5992dfab146bc2b3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bdf08a6dfd6d2ef299121bd9dd39c0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bdf08a6dfd6d2ef299121bd9dd39c0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67c113a1c29d4db5bdb55f3ae06f7471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67c113a1c29d4db5bdb55f3ae06f7471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7733f0d7f4b0a66c247e60e3b49b1807.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7733f0d7f4b0a66c247e60e3b49b1807.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95eab4e49e0f3b0c3ffd2b08797d284b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95eab4e49e0f3b0c3ffd2b08797d284b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c468ae0e82c662ae0abb227abc6d594.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c468ae0e82c662ae0abb227abc6d594.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d53e9751dd2634990d89fb44a55ee566.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d53e9751dd2634990d89fb44a55ee566.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c73eff0b7f7cd8040aad206313d0abe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c73eff0b7f7cd8040aad206313d0abe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e74edf9fe31e71f1833773a312b4326.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e74edf9fe31e71f1833773a312b4326.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ea7a4055b77399ee1d20e2cbf7812d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ea7a4055b77399ee1d20e2cbf7812d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1e514096c4fdf3d54904fb29dc6a37c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1e514096c4fdf3d54904fb29dc6a37c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f305812a19b9147f8fa770beb4414459.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f305812a19b9147f8fa770beb4414459.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3acf6bc12a45cce9e5976ad27b09a60d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3acf6bc12a45cce9e5976ad27b09a60d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/985e651c504cd41e4d39b7f41f34c677.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/985e651c504cd41e4d39b7f41f34c677.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76fdc45c20487b3cface59a5ee70ddb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76fdc45c20487b3cface59a5ee70ddb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcac72497ef8f724c6761757eef857b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcac72497ef8f724c6761757eef857b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ada89064fd6a44ce87714431540e792.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ada89064fd6a44ce87714431540e792.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0d6b2c71c9572a68c58e0695e7e8e3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0d6b2c71c9572a68c58e0695e7e8e3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52cb1f494073a399179b2b49b8ea25ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52cb1f494073a399179b2b49b8ea25ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9778eca1ecc98ce85c0952a3ef7f0c4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9778eca1ecc98ce85c0952a3ef7f0c4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0feec16f0b84c7693a0ee5ba81cd28d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0feec16f0b84c7693a0ee5ba81cd28d.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1019006,'1019006','植物填充护颈夜交藤枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/7d5b06bf24cf343ac939b38fb8c1a1c7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/343d55292417edd5c3959f3ff5c28020.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3e2d677726a32443cfb4e82b15829ff3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fff8d78ae12dfe5477e16669664ba4f5.jpg\\\"]','','健康保护枕',1,7,'http://yanxuan.nosdn.127.net/60c3707837c97a21715ecc3986a744ce.png','',0,1,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/dbb1e80da69953f64383dd71fd0213f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbb1e80da69953f64383dd71fd0213f5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6acc4669a29c55f5c222414ad01bf89b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6acc4669a29c55f5c222414ad01bf89b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/514bd211189416cfd66867b7894e64ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/514bd211189416cfd66867b7894e64ec.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6291db12d9239a17cc4a746db803a307.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6291db12d9239a17cc4a746db803a307.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c12eb42828a8b7aa9b428e34b7a6af5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c12eb42828a8b7aa9b428e34b7a6af5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/592207ddff96c716e5a8d3e02ba80151.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/592207ddff96c716e5a8d3e02ba80151.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b58dac5f4495fa73d8df137d4aa611d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b58dac5f4495fa73d8df137d4aa611d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89e5a35e2763cd977f5ecb30f20651ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89e5a35e2763cd977f5ecb30f20651ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9b35ce1283c07e4f757e48016258e2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9b35ce1283c07e4f757e48016258e2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29d555239824f9d3f92526120b75550c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29d555239824f9d3f92526120b75550c.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1020000,'1020000','升级款记忆绵护椎腰靠',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/e163b42594b58936ee8500abb8b4112c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1f6f41a8c5cdafe375548d77e9f06d78.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b69fd91ecc1c9b9aa431b8df4298a6a1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a621c700d49357a4ab46c6c7a97fa83c.jpg\\\"]','','人体工学设计，缓解腰背疼痛',1,15,'http://yanxuan.nosdn.127.net/819fdf1f635a694166bcfdd426416e8c.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/8176934e414ec6c85078cb64322fe336.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8176934e414ec6c85078cb64322fe336.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33ff256b2f69de517f567ebb993dd08e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33ff256b2f69de517f567ebb993dd08e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5204e4f7c7fa00866e270a93ec85a596.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5204e4f7c7fa00866e270a93ec85a596.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f3aed0164b92344f17ffbc0b8fc7ade.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f3aed0164b92344f17ffbc0b8fc7ade.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d2d94d8f0f10f17183954b69d09e2bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d2d94d8f0f10f17183954b69d09e2bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3921600dd00e2c49a7414035111b767d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3921600dd00e2c49a7414035111b767d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aef3c726fec0be6ce17089e06e753d4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aef3c726fec0be6ce17089e06e753d4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/446fbad756b6327898cee40e7b67a0b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/446fbad756b6327898cee40e7b67a0b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0950b4fa1cac49eece29af35c6e69e4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0950b4fa1cac49eece29af35c6e69e4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf7e88b2b57641ab81bbf36351db5ff8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf7e88b2b57641ab81bbf36351db5ff8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53d66b4714682aaff4ab082980a44b46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53d66b4714682aaff4ab082980a44b46.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7f2d82d7a5622dd9f6b0d44faed9fda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7f2d82d7a5622dd9f6b0d44faed9fda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7fdc566d101b7cf73cee32f55b0f945.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7fdc566d101b7cf73cee32f55b0f945.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e04202364d1a0a1dc1a2a1ea871e45e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e04202364d1a0a1dc1a2a1ea871e45e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b3135ad6c01a2675fc7e96f6643ff7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b3135ad6c01a2675fc7e96f6643ff7f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021000,'1021000','埃及进口长绒棉毛巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/96c20e15c503ff5e358a150148f2f352.jpg\\\", \\\"http://yanxuan.nosdn.127.net/96c20e15c503ff5e358a150148f2f352.jpg\\\", \\\"http://yanxuan.nosdn.127.net/96c20e15c503ff5e358a150148f2f352.jpg\\\", \\\"http://yanxuan.nosdn.127.net/96c20e15c503ff5e358a150148f2f352.jpg\\\", \\\"http://yanxuan.nosdn.127.net/96c20e15c503ff5e358a150148f2f352.jpg\\\"]','','厚实舒适',1,7,'http://yanxuan.nosdn.127.net/7191f2599c7fe44ed4cff7a76e853154.png','',0,0,'条',59.00,39.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021001,'1021001','全棉进口埃及长绒棉浴巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/c41c58a7c72e8340211041cd493b1517.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c41c58a7c72e8340211041cd493b1517.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c41c58a7c72e8340211041cd493b1517.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c41c58a7c72e8340211041cd493b1517.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c41c58a7c72e8340211041cd493b1517.jpg\\\"]','','加大加厚埃及棉',1,8,'http://yanxuan.nosdn.127.net/fd5a8622ee1a7dfd4b57b938ebf25b24.png','',0,0,'件',119.00,99.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021004,'1021004','澳洲羊羔毛AB面盖毯',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/7040cb7e6982c3e008575a4ef28c9ca2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/28f75df99da69ef03d1a9eb581571438.jpg\\\", \\\"http://yanxuan.nosdn.127.net/21bdfbb496ba391223b1ea35cecf61a5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6b00e7da23c7d6db26e6d7b6a7615dd2.jpg\\\"]','','冬暖夏凉，吸湿排汗。',1,32,'http://yanxuan.nosdn.127.net/654b02045fde802b51d5bbf09a8b75f2.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7a82ce63285fa75e7c45958db6e1ea72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a82ce63285fa75e7c45958db6e1ea72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6251683549d0cefad6d75d48371ee5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6251683549d0cefad6d75d48371ee5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/332da1ccf902e60d638ee7a10b376949.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/332da1ccf902e60d638ee7a10b376949.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46b7c34a5c80742a1c2e64c984aadf45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46b7c34a5c80742a1c2e64c984aadf45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0309bc61af948669fe361b33271c79cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0309bc61af948669fe361b33271c79cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6d61c696d3194672cbfc760e2dfab04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6d61c696d3194672cbfc760e2dfab04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ece10fc88b908d9166e3f0fb5654b34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ece10fc88b908d9166e3f0fb5654b34.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01da8df479e8eade44e5b97d98d2ecdc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01da8df479e8eade44e5b97d98d2ecdc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e94e41f4b0fc8a91b48d111cf559963.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e94e41f4b0fc8a91b48d111cf559963.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39cc39f48b07dcd55280d6d41446a855.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39cc39f48b07dcd55280d6d41446a855.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbb6f955287c419cb2560b9a92507fbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbb6f955287c419cb2560b9a92507fbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2e23c277654ce9cda3f0222c0cdfd9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2e23c277654ce9cda3f0222c0cdfd9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5c537f3406d0b0cb7f432654d73456c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5c537f3406d0b0cb7f432654d73456c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fa0b1d1392d2755d8c76e5166717271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fa0b1d1392d2755d8c76e5166717271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/533ac276228fb4f4708407dbc9557074.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/533ac276228fb4f4708407dbc9557074.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b8abe94b174667084cfaa909a1a6ae8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b8abe94b174667084cfaa909a1a6ae8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90651cf71db15227b9d691e55f0a75da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90651cf71db15227b9d691e55f0a75da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24c44cd0e9cc09849bbcd48235b81dac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24c44cd0e9cc09849bbcd48235b81dac.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1021010,'1021010','色织水洗棉纯色四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/4b0e35f974567e45c3070e85e228fae0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b7dfccd8bdc97d8823ac0e7ef788ffb3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7a4b5ffb08ac487647c2988ec0d8186d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/13f2f859d43aff3f67b4d81f74b84cc3.jpg\\\"]','','做旧褶皱感，亲肤舒适',1,15,'http://yanxuan.nosdn.127.net/25d734cc0b2eae8f63f9deb1e4ad5f64.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/16227b81865dce643b91b00ea6c39012.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16227b81865dce643b91b00ea6c39012.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/427ef03b20aa52014ab9d91c3f9fdb5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/427ef03b20aa52014ab9d91c3f9fdb5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc2466433e832c592e537f0f54bc1702.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc2466433e832c592e537f0f54bc1702.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2bcd099ad5167317a73354291f2c007.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2bcd099ad5167317a73354291f2c007.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da75827b70675306c6ca7d63bef5ffb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da75827b70675306c6ca7d63bef5ffb1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ffc1fcd1d8afcbfa43b727eb40842ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ffc1fcd1d8afcbfa43b727eb40842ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8ae03d8ff640eaffb14ba37a83b137f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ae03d8ff640eaffb14ba37a83b137f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52c5f880b8e1a7cb7900616bd13a4b62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52c5f880b8e1a7cb7900616bd13a4b62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b77db532462faf31bed3c4629a1ecbf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b77db532462faf31bed3c4629a1ecbf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07efa2bf79478f24799ff0a4cbfa0e54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07efa2bf79478f24799ff0a4cbfa0e54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68070ec063cb05000ed7aef2b3ef1632.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68070ec063cb05000ed7aef2b3ef1632.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd54998d1cc11890f2650c74e7bfd340.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd54998d1cc11890f2650c74e7bfd340.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1022000,'1022000','意式毛线绣球四件套',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/61a44e7426fbc32db87afd48d85f2e99.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ac649a9fc8332aae1c60e8a10fb5a775.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3664e1b166b8dd54d05edd631e6966f9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/989d0d84d55e4a77a1c6dafa0a3bc207.jpg\\\"]','','浪漫毛线绣球，简约而不简单',1,18,'http://yanxuan.nosdn.127.net/5350e35e6f22165f38928f3c2c52ac57.png','',0,1,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3f63478dd19081036c7c8061a88438b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f63478dd19081036c7c8061a88438b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a437697cad2ac00a76b8a2a9f9f7819b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a437697cad2ac00a76b8a2a9f9f7819b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30607b946fa5245ab1376d28ab8d68c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30607b946fa5245ab1376d28ab8d68c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d18e17059acf20d507fdb8f7054968a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d18e17059acf20d507fdb8f7054968a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61a0539ce8ca1f38cce7c5647c94aaf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61a0539ce8ca1f38cce7c5647c94aaf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec45424eef32b60e477bf6860f6c3ac2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec45424eef32b60e477bf6860f6c3ac2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2fb058299e851d21128af4c29bbf40f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2fb058299e851d21128af4c29bbf40f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88fcf4d3d09cc26809eaabf0df4ddc84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88fcf4d3d09cc26809eaabf0df4ddc84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/505360bfb9ae52b707d194195b547d1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/505360bfb9ae52b707d194195b547d1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d359fdfda280d2c7681adee5a533a65d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d359fdfda280d2c7681adee5a533a65d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6276ab49a773dedadd75da6529fc41b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6276ab49a773dedadd75da6529fc41b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6057375f8fdafdc1e8e7a894bb2f39a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6057375f8fdafdc1e8e7a894bb2f39a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2059408e8aee017c85e47c7267af21bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2059408e8aee017c85e47c7267af21bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a7e4c7b19fd7822f89ccd63ca94b234.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a7e4c7b19fd7822f89ccd63ca94b234.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/937329152fc61bff06d29d4b316b7259.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/937329152fc61bff06d29d4b316b7259.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7bc2c66157bd5e2cdc978460214d33c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7bc2c66157bd5e2cdc978460214d33c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55d327d74e2c768006fcce7f83cf0051.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55d327d74e2c768006fcce7f83cf0051.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d06b9bef3bae34d66d38e30fad204d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d06b9bef3bae34d66d38e30fad204d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1f4f2ee0a473c251c055ffeb25426d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1f4f2ee0a473c251c055ffeb25426d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b7efe85839b1f1ea17c829563fc9206.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b7efe85839b1f1ea17c829563fc9206.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca4091e28e5b8cfd76c1ad3de8fda999.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca4091e28e5b8cfd76c1ad3de8fda999.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebd7266b6b01bddadf4903e8ca66a82a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebd7266b6b01bddadf4903e8ca66a82a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db777171b81a10c51bae065de7fbef7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db777171b81a10c51bae065de7fbef7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/416626d4074c929f080eff87586a49e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/416626d4074c929f080eff87586a49e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c23701559de65d814e9062847e87c6db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c23701559de65d814e9062847e87c6db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/200d89ca470fa10ac02971f26cf8f7fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/200d89ca470fa10ac02971f26cf8f7fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6c39f0cf32656244e699eb21089f434.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6c39f0cf32656244e699eb21089f434.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/287fa73c7e8b56eb8bd0ecee08c865da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/287fa73c7e8b56eb8bd0ecee08c865da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0807995485258c26c712169290aac892.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0807995485258c26c712169290aac892.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c29f153a2fada82300a904b2ca46eeeb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c29f153a2fada82300a904b2ca46eeeb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcd0c03d117c27a5c8856aabe577535e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcd0c03d117c27a5c8856aabe577535e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9d6c1f265a891458ec9646801a9f790.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9d6c1f265a891458ec9646801a9f790.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bce3852bdd99bc428e5339dcec1749b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bce3852bdd99bc428e5339dcec1749b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0076b7513361cb10daa6cdae51b0238f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0076b7513361cb10daa6cdae51b0238f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b289f3fdd57ba7c2f9bfed5cc235ad5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b289f3fdd57ba7c2f9bfed5cc235ad5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea27ef8fcca46882e225ab03f29cc4c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea27ef8fcca46882e225ab03f29cc4c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0bbddfd513a56bb4b4e60b0d7485261.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0bbddfd513a56bb4b4e60b0d7485261.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b6904ddbb813688f8e1c36874437b8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b6904ddbb813688f8e1c36874437b8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87439f2dc3805340736a508bfb4fc044.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87439f2dc3805340736a508bfb4fc044.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ca62c0aee1df52a9435ed2bf915b06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ca62c0aee1df52a9435ed2bf915b06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/993cfb5a549e93a86ac5a5485221ded3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/993cfb5a549e93a86ac5a5485221ded3.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1022001,'1022001','法式浪漫绣球四件套',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/7c782187c209bed0457ed114569cdedf.jpg\\\", \\\"http://yanxuan.nosdn.127.net/045f5f28165e3f1144fe86ddbbab2ba3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/afda747fab1299be4594f00b3e4e31d2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2860490e0349016cfc4a6a1d4f57c55d.jpg\\\"]','','浪漫绣球，法式般的呵护',1,16,'http://yanxuan.nosdn.127.net/bf8faee3b27b480f63b70056597b626d.png','',0,0,'件',369.00,349.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3caeae4eca0f08bc143f5c57412d6bcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3caeae4eca0f08bc143f5c57412d6bcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01f377d37098d65602e2447788b93dfc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01f377d37098d65602e2447788b93dfc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b47996d9b47ddb13789a4ace965328ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b47996d9b47ddb13789a4ace965328ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5daff2af7d1940210efba1d94057b073.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5daff2af7d1940210efba1d94057b073.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1d01003115794950d3e4f110403fdfd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1d01003115794950d3e4f110403fdfd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62c33967eb50d98eb09246092a054f74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62c33967eb50d98eb09246092a054f74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29792456f207afd95a62d60214a01851.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29792456f207afd95a62d60214a01851.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cda3817dcffa4e1be4e479724e7f035.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cda3817dcffa4e1be4e479724e7f035.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cf34c4567ec6dbe839339698a3adf30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cf34c4567ec6dbe839339698a3adf30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e64a01d30c65cea7c4ddf8f2229870d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e64a01d30c65cea7c4ddf8f2229870d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/413863b3cabcbc94e322e9d2910f66ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/413863b3cabcbc94e322e9d2910f66ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99ce4e6124b75df99e4d4b8de6878c5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99ce4e6124b75df99e4d4b8de6878c5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/403a8d6fa2422a0587cd2063f28cbbe1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/403a8d6fa2422a0587cd2063f28cbbe1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/099a401a319dae53cc5a7705f7b657fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/099a401a319dae53cc5a7705f7b657fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85dd8f3d5a6e885604d5fda96c39f281.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85dd8f3d5a6e885604d5fda96c39f281.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22ea153a4825aa13770743eb6a1d766f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22ea153a4825aa13770743eb6a1d766f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/578698b1a104997b3632db1f9dc74c6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/578698b1a104997b3632db1f9dc74c6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b0b8b276985770b2e1c904e676de897.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b0b8b276985770b2e1c904e676de897.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44f167771765a070a19c9ff6c130747e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44f167771765a070a19c9ff6c130747e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/342e7982df39b39f5bde5066c2421c24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/342e7982df39b39f5bde5066c2421c24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3db52e63ab4b82aa5544bb68bf494da5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3db52e63ab4b82aa5544bb68bf494da5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4449875c22659a531bbd6eb104f45e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4449875c22659a531bbd6eb104f45e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/177cf74899157b8edec80f14bdff2666.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/177cf74899157b8edec80f14bdff2666.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5a4bf58ec86ccceaeeae46a800be248.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5a4bf58ec86ccceaeeae46a800be248.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aedd86730887d4ce9ab4ce11367e70e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aedd86730887d4ce9ab4ce11367e70e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80a075b3084c766d313005abf44b59a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80a075b3084c766d313005abf44b59a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e2fbec13573dbd9fcc14b32fb9ca95e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e2fbec13573dbd9fcc14b32fb9ca95e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48a2191cf1e56304bb2a8dc84c18dc55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48a2191cf1e56304bb2a8dc84c18dc55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7daef2160a7c2838b144cb4426e9232d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7daef2160a7c2838b144cb4426e9232d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be2ba2e98e8f6c3a3e0a22bba52cde64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be2ba2e98e8f6c3a3e0a22bba52cde64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/706f8518e4f9f0868efd6c06a92374b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/706f8518e4f9f0868efd6c06a92374b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7377480490be9c4989733bfb20960553.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7377480490be9c4989733bfb20960553.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02f382fffc5e413d2c2c20f3ed1f7cbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02f382fffc5e413d2c2c20f3ed1f7cbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dba4773485150b157bdb304a4b7c64c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dba4773485150b157bdb304a4b7c64c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a0662a11f315dfaad974a20f9195eef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a0662a11f315dfaad974a20f9195eef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08dc21856b99613f59d501f99c54a577.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08dc21856b99613f59d501f99c54a577.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6723f2a290b14dea262b0abddc3464f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6723f2a290b14dea262b0abddc3464f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2dd2e85a09efff621454acd0a96c3497.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2dd2e85a09efff621454acd0a96c3497.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a317a6b832d9321a69c8966409f68ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a317a6b832d9321a69c8966409f68ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4031ea25471029f59ce36da8e0ce38e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4031ea25471029f59ce36da8e0ce38e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8beeebd28e23d906d7916ab4575f3800.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8beeebd28e23d906d7916ab4575f3800.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c65e967c692d7150baf9fee28f262935.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c65e967c692d7150baf9fee28f262935.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fc96c7688f33de5876b358fdf31ebf2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fc96c7688f33de5876b358fdf31ebf2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94adba0162052a5758ec9d8426123198.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94adba0162052a5758ec9d8426123198.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/152038e70480f6ba580a4830dc36b2de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/152038e70480f6ba580a4830dc36b2de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6053a2051a69b207a1c23236588c8ae8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6053a2051a69b207a1c23236588c8ae8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72ff4dab74569803e60b9ef2e9f43d34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72ff4dab74569803e60b9ef2e9f43d34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef52fed7935192b6127031d91f6f4c21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef52fed7935192b6127031d91f6f4c21.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023003,'1023003','100年传世珐琅锅 全家系列',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/9c9f47d3c321b96ad9c8d658ff4249e1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c9f47d3c321b96ad9c8d658ff4249e1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c9f47d3c321b96ad9c8d658ff4249e1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c9f47d3c321b96ad9c8d658ff4249e1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c9f47d3c321b96ad9c8d658ff4249e1.jpg\\\"]','','特质铸铁，大容量全家共享',1,3,'http://yanxuan.nosdn.127.net/c39d54c06a71b4b61b6092a0d31f2335.png','',0,0,'只',418.00,398.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023012,'1023012','色织华夫格夏凉被',1036000,1001000,'[\\\"http://yanxuan.nosdn.127.net/184c7ed8ac2ac4f8a7b33ee9d41fde77.jpg\\\", \\\"http://yanxuan.nosdn.127.net/46f42df107e2e338503fd13c4c8be128.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a584f3f733da004d602b3be9d07c3473.jpg\\\", \\\"http://yanxuan.nosdn.127.net/733430be1402c5e645bb40f0682b8ae5.jpg\\\"]','','凹凸华夫格织法，舒适轻柔',1,4,'http://yanxuan.nosdn.127.net/07376e78bf4fb8a5aa8e6a0b1437c3ad.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/70e21fc5c723dc6adcb1b531553597d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70e21fc5c723dc6adcb1b531553597d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcdf78276ab0bcd8ed80a3dda8c29b6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcdf78276ab0bcd8ed80a3dda8c29b6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1eb088a53d00f094bbac4b1f7a662457.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1eb088a53d00f094bbac4b1f7a662457.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86be51c377922edd23e48b9d0c51d5dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86be51c377922edd23e48b9d0c51d5dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9cadf6589933fab072aef8c0644bb91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9cadf6589933fab072aef8c0644bb91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adbb912f1131f821f4d01bb29ed31450.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adbb912f1131f821f4d01bb29ed31450.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8309ca74e9ecea295882b68cc0080652.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8309ca74e9ecea295882b68cc0080652.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cce90d2ad13258af815b828dd3fa34f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cce90d2ad13258af815b828dd3fa34f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ad6cf5c7f4ed107d39997ce1acfffd2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ad6cf5c7f4ed107d39997ce1acfffd2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b867cc1a9f3c0046b40118e009a2cbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b867cc1a9f3c0046b40118e009a2cbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b14b08ce203d77633340b1677f6196b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b14b08ce203d77633340b1677f6196b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b697d210e3137bc9fa8f5b74a9916ce6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b697d210e3137bc9fa8f5b74a9916ce6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8b23b600cb5848d00eb1a176554f5de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8b23b600cb5848d00eb1a176554f5de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b76964151af30178e74e28d0d590fd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b76964151af30178e74e28d0d590fd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3eda6586081f50314690ab9f141d1758.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3eda6586081f50314690ab9f141d1758.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/939f9ac497e48529e0c44ef5af32f329.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/939f9ac497e48529e0c44ef5af32f329.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023032,'1023032','纯棉色织缎纹四件套',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/bbd9bf40c371e5beb0b380f3f431082f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b786fa55756292a644dcf7b6f85b1d8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61a92631136272bf12cba53a4f27edfe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4c36bfcea9ca68e120f3aadd072bfd1e.jpg\\\"]','','色织缎纹工艺，亲肤舒适',1,20,'http://yanxuan.nosdn.127.net/e0b928ada728c140f6965bb41f47407b.png','',0,0,'件',469.00,449.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e05936cc765b06296b623de8c8ad08df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e05936cc765b06296b623de8c8ad08df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4eff9d27f32ff39c19f8f6e4fb1f222e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4eff9d27f32ff39c19f8f6e4fb1f222e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7241fac29763a031c9ce1089a1e4b4be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7241fac29763a031c9ce1089a1e4b4be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dc6d93ac0498c5dfab30508b9412bc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dc6d93ac0498c5dfab30508b9412bc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88d77c126de94ba83b264c413433d1ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88d77c126de94ba83b264c413433d1ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3379adc4f8cb904a509830c339474986.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3379adc4f8cb904a509830c339474986.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4b36d6bba85f96e1fe35c721f1bef4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4b36d6bba85f96e1fe35c721f1bef4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0340dc32d4eb348e015b6ad02e613ae5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0340dc32d4eb348e015b6ad02e613ae5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e478f4d41d9cb43e5ca6d3f4ec31e5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e478f4d41d9cb43e5ca6d3f4ec31e5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/656e723cec3cfc0e84d1c72eb286c3d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/656e723cec3cfc0e84d1c72eb286c3d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0730b88458593c7f8cc3fb389682378.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0730b88458593c7f8cc3fb389682378.jpg\\\"/><img src=\\\"http://yanxuan.nosdn.127.net/51bf3bc396723d289a1f9ec099dd7c74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51bf3bc396723d289a1f9ec099dd7c74.jpg\\\" style=\\\"line-height: 1.42857;\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/301f70f9f1926ade3e7a7ef4c01d9084.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/301f70f9f1926ade3e7a7ef4c01d9084.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b1596630f22d05ca935ab9d9793001e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b1596630f22d05ca935ab9d9793001e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87c1ea8b6868f46cdba056cd714108e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87c1ea8b6868f46cdba056cd714108e8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1023034,'1023034','泡泡纱可水洗夏凉被',1036000,1001000,'[\\\"http://yanxuan.nosdn.127.net/8c244a002f59df20637f3562b768621e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cc6efd29fb63ff82996f748770efb3de.jpg\\\", \\\"http://yanxuan.nosdn.127.net/66104d84d806a01ff1b97efb730ea577.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a16b2d6dc024e24cf1472c3f0f78940a.png\\\"]','','全棉泡泡纱，柔软亲肤',1,5,'http://yanxuan.nosdn.127.net/715899c65c023bb4973fb0466a5b79d6.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/85eeb993c3b4f37680c1980ad142e076.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85eeb993c3b4f37680c1980ad142e076.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81f6fb8e6d4917a25fd8b4817ea7d4f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81f6fb8e6d4917a25fd8b4817ea7d4f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/accecd0efbee671b1592560c3e08df40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/accecd0efbee671b1592560c3e08df40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1ed91aae1e7a9b3762edafcb31949b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1ed91aae1e7a9b3762edafcb31949b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c08c0809a1ddfdc7f739666599920999.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c08c0809a1ddfdc7f739666599920999.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/233157394df91dc93fe61ab8d1103e79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/233157394df91dc93fe61ab8d1103e79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10f3d5dcab0458117539f5cf0929c268.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10f3d5dcab0458117539f5cf0929c268.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ce6ff785959f440508e3bc7a9348618.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ce6ff785959f440508e3bc7a9348618.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b8c08729cfce7d9b35fd6ea00d4ba65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b8c08729cfce7d9b35fd6ea00d4ba65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d8284f1c706360ea32f8f05f94b367c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d8284f1c706360ea32f8f05f94b367c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e21927788dafa40a5f2f409114dca3c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e21927788dafa40a5f2f409114dca3c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b3c8d2cc37f9fc533616a18cd7a655e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b3c8d2cc37f9fc533616a18cd7a655e.jpg\\\" style=\\\"\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1025005,'1025005','100年传世珐琅锅',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/4559299068a6fff007d668c3c36a3d68.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4559299068a6fff007d668c3c36a3d68.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4559299068a6fff007d668c3c36a3d68.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4559299068a6fff007d668c3c36a3d68.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4559299068a6fff007d668c3c36a3d68.jpg\\\"]','','特质铸铁，锁热节能',1,1,'http://yanxuan.nosdn.127.net/49e26f00ca4d0ce00f9960d22c936738.png','',0,0,'只',288.00,268.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1027004,'1027004','色织六层纱布夏凉被',1036000,1001000,'[\\\"http://yanxuan.nosdn.127.net/d2e98b8645e07db420f19433079c690b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a32ae0e783c87db508689b42acaf45d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0eaf73715435fd18573b523ceb14125c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/55ef8f825782fef23d88479cec7691d9.jpg\\\"]','','柔软纱布，婴童可用',1,3,'http://yanxuan.nosdn.127.net/6252f53aaf36c072b6678f3d8c635132.png','',0,1,'件',269.00,249.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/67f90229027c9f7ce81be64b88a3a89d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67f90229027c9f7ce81be64b88a3a89d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/938dcbd014d6651024b94ac9c61deeac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/938dcbd014d6651024b94ac9c61deeac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2afaf85ccfc966329c91873b9bcfd895.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2afaf85ccfc966329c91873b9bcfd895.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7e46721c706d3a6abca8349384b7d29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7e46721c706d3a6abca8349384b7d29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16064cd765c185be8a4621ef66e3839e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16064cd765c185be8a4621ef66e3839e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3861e21da16b8e8907136f167d011971.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3861e21da16b8e8907136f167d011971.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62035b349641dff662334c1f749930e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62035b349641dff662334c1f749930e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d814f23d85fa7ba0d3871fbd2ca743c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d814f23d85fa7ba0d3871fbd2ca743c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa41611ffce03535348c76548d7be717.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa41611ffce03535348c76548d7be717.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a88cf7d8a483148d5261ca6ea8888e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a88cf7d8a483148d5261ca6ea8888e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ae01b731a6b50c78151f3fb270c2ee3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ae01b731a6b50c78151f3fb270c2ee3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/643974e12eea8a60e9b5c8039e2dfb46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/643974e12eea8a60e9b5c8039e2dfb46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8866316ff84ac68d1fe347eb6db8b07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8866316ff84ac68d1fe347eb6db8b07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8d875bd5949fa3d2f6bb1dbbcc12121.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8d875bd5949fa3d2f6bb1dbbcc12121.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cc4a687ed3be8727ee90e371defb4d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cc4a687ed3be8727ee90e371defb4d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c519db001d883d017a133efc7080d41a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c519db001d883d017a133efc7080d41a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbf012451cddac91a939c2b5171acc96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbf012451cddac91a939c2b5171acc96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e63320cbbeecd593457e3ded8b5e9b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e63320cbbeecd593457e3ded8b5e9b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0acb487f97e14a5b9fc8c5fa5d8b1a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0acb487f97e14a5b9fc8c5fa5d8b1a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4a709c0c8140be33d226e0963912499.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4a709c0c8140be33d226e0963912499.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb3eaec97d07430ed6aea55e0a40b56e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb3eaec97d07430ed6aea55e0a40b56e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/149f85abb95d094a7cb5ae7565a4ecd5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/149f85abb95d094a7cb5ae7565a4ecd5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af0c2642435d3437c9f710cc442615f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af0c2642435d3437c9f710cc442615f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/592fd3838f55f48a3f4ba5b2e796eff2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/592fd3838f55f48a3f4ba5b2e796eff2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3433c1bb5f6e0e3f3a10481ec53a28f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3433c1bb5f6e0e3f3a10481ec53a28f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/973cc6e90902c300a4648b5391246a19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/973cc6e90902c300a4648b5391246a19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb348e33f7387db2ddeaac68ca1abde1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb348e33f7387db2ddeaac68ca1abde1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7234ad4c588c7423cf121ffee298480.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7234ad4c588c7423cf121ffee298480.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17f16b61bc645d686fdbed7be626bf4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17f16b61bc645d686fdbed7be626bf4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6c3dc3c5436f3985a2fafce5e41d1e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6c3dc3c5436f3985a2fafce5e41d1e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5adb3c164a8e9edb187ea20aaca8b41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5adb3c164a8e9edb187ea20aaca8b41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79e4f7477ee14c37ba3e8b34e51f70ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79e4f7477ee14c37ba3e8b34e51f70ad.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1029005,'1029005','淡墨天丝麻渐变四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/7ef08c09c7322d9cb24528aec8802155.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5807317c3918f1ac2cf060cf5944602f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/838453906fdbcd5009186356e356ee62.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d131ee4307756bcc72054f9a8d9c9b43.jpg\\\"]','','亲肤透气，告别干燥秋季',1,24,'http://yanxuan.nosdn.127.net/25fe52f44853eb45f610846991bc4d9d.png','',0,0,'件',979.00,959.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2f948674e3ef78aa24c10b19729f4fb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f948674e3ef78aa24c10b19729f4fb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6f7b253a3a9c1f02e986f9a64cff535.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6f7b253a3a9c1f02e986f9a64cff535.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3865d7978f3b48a9b14cd4da8f0f6098.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3865d7978f3b48a9b14cd4da8f0f6098.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04cb61cad86bd2168bca2ec84e8b4e3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04cb61cad86bd2168bca2ec84e8b4e3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce4572adf231a3973b2d5a0f8314f968.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce4572adf231a3973b2d5a0f8314f968.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae020323ce54942f0144a6e502b63477.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae020323ce54942f0144a6e502b63477.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbe53d568c242bcc315b1dfe0dd31ecc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbe53d568c242bcc315b1dfe0dd31ecc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4981bb62099cd889c2060d59091a30c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4981bb62099cd889c2060d59091a30c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e44d15505bb091dea46ff43c7109050.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e44d15505bb091dea46ff43c7109050.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2843d3e369881bc1cf99e4013ab4aae2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2843d3e369881bc1cf99e4013ab4aae2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99d3e400707eebe6b541008d8d2fa304.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99d3e400707eebe6b541008d8d2fa304.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf8ae7b0bef82d7180bde3d32939a67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf8ae7b0bef82d7180bde3d32939a67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf89b5f0fdd2beac19eabbb5c1b4dfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf89b5f0fdd2beac19eabbb5c1b4dfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08021a1c737562f1a9acc37d878ff7d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08021a1c737562f1a9acc37d878ff7d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b1439470e09d8cbd9320a0c97a0ccaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b1439470e09d8cbd9320a0c97a0ccaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0759dd1870f1e0539cac751ebea4f1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0759dd1870f1e0539cac751ebea4f1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3343c096023771e737f13b6473f6c505.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3343c096023771e737f13b6473f6c505.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80c5a9c55e6b95c4a858dd4c6d8c6de8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80c5a9c55e6b95c4a858dd4c6d8c6de8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e8910c022ab86841cda2396c4465a54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e8910c022ab86841cda2396c4465a54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7348beaa667f2a6661280b16edd2b8f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7348beaa667f2a6661280b16edd2b8f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a1c836402908ce4c26a62c2ab5d7b83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a1c836402908ce4c26a62c2ab5d7b83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26dc9814e66b7252cba3fcefabb80d20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26dc9814e66b7252cba3fcefabb80d20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80f8cfcfb47dab3107824b81bf195410.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80f8cfcfb47dab3107824b81bf195410.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6f0f8ad06565d09338aab8c546dbf6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6f0f8ad06565d09338aab8c546dbf6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b24933453ed7672902fe34f4521806de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b24933453ed7672902fe34f4521806de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c270fcfcf8072e9adbc4042702c542e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c270fcfcf8072e9adbc4042702c542e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30524cd20f9dde720eb3405e0e5cf672.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30524cd20f9dde720eb3405e0e5cf672.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/583146da365d34a21a95c8ff096887a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/583146da365d34a21a95c8ff096887a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77d0c9777c92e11a81abf49eac319782.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77d0c9777c92e11a81abf49eac319782.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a202e74dbace549f54730e9f9840d3a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a202e74dbace549f54730e9f9840d3a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffb8f977278d24a5d4ef68ddef7ec8f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffb8f977278d24a5d4ef68ddef7ec8f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d02e0db8572baa48c2c5479aa16e7a51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d02e0db8572baa48c2c5479aa16e7a51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c1d4a177cccd0038d64455c0b14f21b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c1d4a177cccd0038d64455c0b14f21b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15b18532a1eba7e8c68aa4ec7abf43ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15b18532a1eba7e8c68aa4ec7abf43ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16e9a9c21cf9283b9c086be62234e1e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16e9a9c21cf9283b9c086be62234e1e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7708ab7dde37876a1983cfa279dedeef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7708ab7dde37876a1983cfa279dedeef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5aef158d01cffc44ec3e1ec8477652d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5aef158d01cffc44ec3e1ec8477652d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57064140310058975c8d4021de045977.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57064140310058975c8d4021de045977.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/487efa0eb926a93b9f5979f4b6ad8f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/487efa0eb926a93b9f5979f4b6ad8f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee1358f10dd840512d44e6d3dcee2074.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee1358f10dd840512d44e6d3dcee2074.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/267b321aa7bac423ef296f9ea862fda2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/267b321aa7bac423ef296f9ea862fda2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c9a99527c2a7320435407be94eba294.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c9a99527c2a7320435407be94eba294.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d477452ba64594b379e20b1777dd12f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d477452ba64594b379e20b1777dd12f1.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030001,'1030001','160*230羊毛手工地毯',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/b57e971ab0de96e159c2e8de13df25bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1e06cd5c6107e37214ea9cf13ef08676.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a7351368b2e1d57958c66a7225230b24.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3b9d726451cbe3c2d4432613d48bc6e9.jpg\\\"]','','印度进口，手工编织，简约百搭',1,25,'http://yanxuan.nosdn.127.net/88dc5d80c6f84102f003ecd69c86e1cf.png','',0,0,'件',989.00,969.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/fbe953060dd4282539ee78e22f9c326c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbe953060dd4282539ee78e22f9c326c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb6320b1b19fe349fca98dcb509ccb41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb6320b1b19fe349fca98dcb509ccb41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e3517025dc8da160277d7c80c55a83f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e3517025dc8da160277d7c80c55a83f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6d902b098a5009871e7dd2fc47d4aae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6d902b098a5009871e7dd2fc47d4aae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15b721ac1796a6a93c2925c45fbafa91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15b721ac1796a6a93c2925c45fbafa91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1e30ecc74b5b25869f892f51d4472b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1e30ecc74b5b25869f892f51d4472b0.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7ddc57f40d4ec7d7e1069fc24438e93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7ddc57f40d4ec7d7e1069fc24438e93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68e501bd5f6f2018ee275af62edcebce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68e501bd5f6f2018ee275af62edcebce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cd10a4cc89e2067421632172382410c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cd10a4cc89e2067421632172382410c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81d9b02cc74f846bb29bfc57b4d8dab1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81d9b02cc74f846bb29bfc57b4d8dab1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30a9e77d7e0cab9b389bc4a7f4a0be13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30a9e77d7e0cab9b389bc4a7f4a0be13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50513c57074971334c4b715d8b3cdfa1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50513c57074971334c4b715d8b3cdfa1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5497b96a17e01db88d3b8999d78e111d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5497b96a17e01db88d3b8999d78e111d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3311094b3f6ac170477dbf31fdc36a43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3311094b3f6ac170477dbf31fdc36a43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb7a1c7b6c6989af9c42a4e66de098e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb7a1c7b6c6989af9c42a4e66de098e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac42cbdfaa06c00a1bbd22fd63308546.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac42cbdfaa06c00a1bbd22fd63308546.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d2bf9139a0ca351f0ae4cabece86277.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d2bf9139a0ca351f0ae4cabece86277.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da1c0eef412d5ff9761a8659fa64d91b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da1c0eef412d5ff9761a8659fa64d91b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba7017652cf73419da57393bb02ca6de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba7017652cf73419da57393bb02ca6de.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030002,'1030002','160*230羊毛圈绒枪刺地毯',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/63096efbd6271a42d3d830e79bf9635f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/50643ebbcf8a243ca609477f431fe75a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bfc9ea77fa117eaa6be19ca7329d4c95.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a8540865c48fb297f77d30cdf3fb4884.jpg\\\"]','','印度进口，手工枪刺，简约百搭',1,24,'http://yanxuan.nosdn.127.net/8b9328496990357033d4259fda250679.png','',0,0,'件',919.00,899.00,'<p><video id=\\\"tmpVedio0\\\" class=\\\"edui-upload-video video-js vjs-default-skin video-js\\\" controls=\\\"\\\" preload=\\\"auto\\\" width=\\\"100%\\\" height=\\\"\\\" data-setup=\\\"{}\\\"><source src=\\\"http://yanxuan.nosdn.127.net/4ca24b2fa0043eb7435d1ca24312b689.mp4\\\" type=\\\"video/mp4\\\"/></video>‍</p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c409ac170dafe286e2cbd918b30a388.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c409ac170dafe286e2cbd918b30a388.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c4147de069c1c7d819711e683fae373.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c4147de069c1c7d819711e683fae373.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d4be2d9edd8481dfa51cc7b86a90b36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d4be2d9edd8481dfa51cc7b86a90b36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61be18dbb282646133551c2bc297fb36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61be18dbb282646133551c2bc297fb36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7160604c5bd97a0f1aef7f3a2a32b72b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7160604c5bd97a0f1aef7f3a2a32b72b.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32c5969b18a85bc62d4a855c40ab6142.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32c5969b18a85bc62d4a855c40ab6142.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62189479f43fd283340ce0fad3706b00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62189479f43fd283340ce0fad3706b00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f39cb441e6778d5d39510099f8befd3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f39cb441e6778d5d39510099f8befd3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bbb06c48c23cdf11fd93f711512eed7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bbb06c48c23cdf11fd93f711512eed7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0701aef423ba84cb1aabe8d6a1ab8d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0701aef423ba84cb1aabe8d6a1ab8d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dec1e3bf4d5812d7d9fbddf50657e73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dec1e3bf4d5812d7d9fbddf50657e73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44497f9ad25cb6d208cc564016c8fd54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44497f9ad25cb6d208cc564016c8fd54.jpg\\\"/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37de0870b61ed6e880936d22000c2e85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37de0870b61ed6e880936d22000c2e85.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97906141bd8846ea9e7888fa8a6b4ae0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97906141bd8846ea9e7888fa8a6b4ae0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db23e00419f012686aaf4b3eeecae09b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db23e00419f012686aaf4b3eeecae09b.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030003,'1030003','160*230羊毛手工几何地毯',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/1e0a3442eba15bcff79112b6462a8e08.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9750ed0f968d4c879c37396f533f02dc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/725bf6af1c14901068370aa051acecea.jpg\\\", \\\"http://yanxuan.nosdn.127.net/aff411a94562694cbdba5a415ff5dda2.jpg\\\"]','','几何图案，打造立体的时尚感',1,23,'http://yanxuan.nosdn.127.net/1d1ab099dc0e254c15e57302e78e200b.png','',0,0,'件',1489.00,1469.00,'<p><video id=\\\"tmpVedio0\\\" class=\\\"edui-upload-video video-js vjs-default-skin video-js\\\" controls=\\\"\\\" preload=\\\"auto\\\" width=\\\"100%\\\" height=\\\"\\\" data-setup=\\\"{}\\\"><source src=\\\"http://yanxuan.nosdn.127.net/e07746a58f5814648229ab750f7e59b0.mp4\\\" type=\\\"video/mp4\\\"/></video>‍</p><p><img src=\\\"http://yanxuan.nosdn.127.net/a03425edf97e1b0299d3095172991847.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a03425edf97e1b0299d3095172991847.jpg\\\" style=\\\"line-height: 1.42857;\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3fc35db4f3956b210032f0a876c2f2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3fc35db4f3956b210032f0a876c2f2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf278ec3726e12e0a07ef4384f80d7c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf278ec3726e12e0a07ef4384f80d7c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04cdc7e09537f67a140f5bd363751d23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04cdc7e09537f67a140f5bd363751d23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4978e0569025d98c7a0cc685a3227d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4978e0569025d98c7a0cc685a3227d5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/667999a8913e0dfc5118695f690f9ac4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/667999a8913e0dfc5118695f690f9ac4.jpg\\\" style=\\\"\\\"/></p><p><br/></p><p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0fe6f158bf93e05ae12fbc86ad7df61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0fe6f158bf93e05ae12fbc86ad7df61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39b84d98bfcbc4f0443ec04e39328d04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39b84d98bfcbc4f0443ec04e39328d04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16218f2ea0f8f4ddfd1fcbeac17d3b54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16218f2ea0f8f4ddfd1fcbeac17d3b54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e512605b0a5ee1dea333c42f826050b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e512605b0a5ee1dea333c42f826050b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/001d8961d92c3ebcf860e1745d0c63b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/001d8961d92c3ebcf860e1745d0c63b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25dda9b93dd3dd9aa622779c27481ef4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25dda9b93dd3dd9aa622779c27481ef4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/037abff9d64cdc761092d47619df82d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/037abff9d64cdc761092d47619df82d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f755e4142e8baf68fab301b3e6438d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f755e4142e8baf68fab301b3e6438d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa9ac1211dca7edc8fd93efd9cdd66e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa9ac1211dca7edc8fd93efd9cdd66e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ada62ef76b083d844d0762d2a6d33824.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ada62ef76b083d844d0762d2a6d33824.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030004,'1030004','日式穿线绣四件套',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/ff71d72ea77f23c6ebc7f77dd88ab947.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a846819b20cde76700c3e6c9179fff03.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8862d704f5590dc42c538a85120e1525.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cc182d01d83a3aea2f2928190ce523b6.jpg\\\"]','','源自日本的刺子绣工艺',1,19,'http://yanxuan.nosdn.127.net/e84f2e3b3d39cfdc8af5c3954a877aae.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c4f000d07201318aa97e28ca44265b38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4f000d07201318aa97e28ca44265b38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba9c0e8463001b51e62e4a6d1d3cebe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba9c0e8463001b51e62e4a6d1d3cebe3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/639358f7a538a6aad6b51ab71cf312f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/639358f7a538a6aad6b51ab71cf312f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7716eea4d973041f42f37dda65569d67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7716eea4d973041f42f37dda65569d67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b11376974f63cb3ba512ee6c7a3246c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b11376974f63cb3ba512ee6c7a3246c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e4dab90e7e762a28d3e44a93bd73dbf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e4dab90e7e762a28d3e44a93bd73dbf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14d6248e60ac4a5fa8a73ebe20d8e299.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14d6248e60ac4a5fa8a73ebe20d8e299.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82037e630fb9aabe1caa647f1aad7b8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82037e630fb9aabe1caa647f1aad7b8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f1442e6e6a628cdd0298e11b72c3df1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f1442e6e6a628cdd0298e11b72c3df1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47bd87ff29265ec6bd20e3d139bde9f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47bd87ff29265ec6bd20e3d139bde9f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c26da60fee77b361d5dfd54db2e248ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c26da60fee77b361d5dfd54db2e248ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/360546bc4a24bcd01771ebf3fc14e78e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/360546bc4a24bcd01771ebf3fc14e78e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2526231998502ab75fff85578f5b5805.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2526231998502ab75fff85578f5b5805.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b40d643b8801d4ff3c166757a4e22f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b40d643b8801d4ff3c166757a4e22f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/156e1560ba231e2c4d7441b556083b1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/156e1560ba231e2c4d7441b556083b1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abaaa1e37b4650641500d6ffc63ad003.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abaaa1e37b4650641500d6ffc63ad003.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ead543a4b8b31b3160eb626d0ac99a86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ead543a4b8b31b3160eb626d0ac99a86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9b21b1eeb2672cfb0b0d4d2eb05c1b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9b21b1eeb2672cfb0b0d4d2eb05c1b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95d189148e850ba0058c461d9295d5a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95d189148e850ba0058c461d9295d5a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b46ca72735ebc86f3903f19d6eeadc0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b46ca72735ebc86f3903f19d6eeadc0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc1c5c04748096c1e7e247589e5ac36d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc1c5c04748096c1e7e247589e5ac36d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e3f5a4543ad7b8023098e6dc73d79ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e3f5a4543ad7b8023098e6dc73d79ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ce626b3616f9c924d9e0b9b16971928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ce626b3616f9c924d9e0b9b16971928.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10451a1bd8ca994db14240f9da449aff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10451a1bd8ca994db14240f9da449aff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/726c9de98163127c5934133d3c8c83fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/726c9de98163127c5934133d3c8c83fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26cd209f7ab8571c8d9bca7835448ee6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26cd209f7ab8571c8d9bca7835448ee6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/985f6986962a913af1e1fa2382677813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/985f6986962a913af1e1fa2382677813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81020d5f2f40527915dde40de5fe61fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81020d5f2f40527915dde40de5fe61fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d09ba6c6d055b483029675fd054f13a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d09ba6c6d055b483029675fd054f13a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec24ea55fb62e16b8465c0bc55ebc4fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec24ea55fb62e16b8465c0bc55ebc4fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58c6aa370c08c703e656846c33e6da1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58c6aa370c08c703e656846c33e6da1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1b2a2dfb5df53e11a54dfe8e0c87ec8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1b2a2dfb5df53e11a54dfe8e0c87ec8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03c572a157408b95dd174b382552af2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03c572a157408b95dd174b382552af2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1e28353558a5d1edc9e550f2f208afd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1e28353558a5d1edc9e550f2f208afd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3bf45801fbaf481f1657ab129bd91e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3bf45801fbaf481f1657ab129bd91e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab30b1b28a6b0931a0d0c17495b17d38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab30b1b28a6b0931a0d0c17495b17d38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5065ff865628eba210732ee1fb814087.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5065ff865628eba210732ee1fb814087.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e85c4d9e815278bf505e9284be159911.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e85c4d9e815278bf505e9284be159911.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/982ba14437d259e070895027001fa014.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/982ba14437d259e070895027001fa014.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aef71397c166f205ee5da5a2400b9f5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aef71397c166f205ee5da5a2400b9f5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9615297dc1dfefab07be48c6ded3fa48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9615297dc1dfefab07be48c6ded3fa48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d666d2aa297864ffff3a89656fe32065.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d666d2aa297864ffff3a89656fe32065.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db3aab03b1fd811e0acb60fa72abf255.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db3aab03b1fd811e0acb60fa72abf255.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f8a35c0788697bb69e57dc46b9bd835.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f8a35c0788697bb69e57dc46b9bd835.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe6f71e8260eabaceb2928f7b15273e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe6f71e8260eabaceb2928f7b15273e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f27b1c0a4d03da94dfe15a5b44df6f2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f27b1c0a4d03da94dfe15a5b44df6f2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd22744a56ddbad35ac3ac0dfdd68321.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd22744a56ddbad35ac3ac0dfdd68321.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/099db3d23cf16e8315311a278b6dc067.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/099db3d23cf16e8315311a278b6dc067.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4dca16739bae1f1e1309acabd35f694.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4dca16739bae1f1e1309acabd35f694.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/389ea34f63fc565c4393ba3ec28c6bb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/389ea34f63fc565c4393ba3ec28c6bb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/625bf5612aee58c83047656079a1fe18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/625bf5612aee58c83047656079a1fe18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0404ed59fbdd994fe870c33714e42e7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0404ed59fbdd994fe870c33714e42e7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e00f36c0d57f5e15b1a2a4986d301f94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e00f36c0d57f5e15b1a2a4986d301f94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1125e14271c128a2b39ddf40176ddff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1125e14271c128a2b39ddf40176ddff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd8afd4c1a2c0a8f82f2c3fde62d12b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd8afd4c1a2c0a8f82f2c3fde62d12b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8355d2dbfa75957a5e7271929687b9af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8355d2dbfa75957a5e7271929687b9af.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030005,'1030005','撞色全亚麻四件套',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/d01e245eaeeff36003b083f9e48421a0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/71fbb4653d7de33f53f8d272eebe9c8e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/66a750c2205b4ed159818cfefc961d32.jpg\\\", \\\"http://yanxuan.nosdn.127.net/59b6eeb70a31992b1ea9b5fb3c781c27.jpg\\\"]','','纯亚麻面料，透气亲肤',1,22,'http://yanxuan.nosdn.127.net/86f57132793d3e3c924a7ba529849288.png','',0,0,'件',919.00,899.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/a8fedb97484d141058bc355232bc7844.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8fedb97484d141058bc355232bc7844.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa5e272a84cf083c296a03faeef32ed6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa5e272a84cf083c296a03faeef32ed6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fd2fb566df26754c654534797dfa1bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fd2fb566df26754c654534797dfa1bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32cf31205dc1b6b42bbd6ca9a2aabaea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32cf31205dc1b6b42bbd6ca9a2aabaea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7e0f71348f56dd6a40c8a2478586791.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7e0f71348f56dd6a40c8a2478586791.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/774b470824b4ff4a29f60331e3b20144.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/774b470824b4ff4a29f60331e3b20144.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc9898e5d4ac3a6b76e42db121aae0b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc9898e5d4ac3a6b76e42db121aae0b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d692546b25c6928e68a153b82a67a43b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d692546b25c6928e68a153b82a67a43b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07a3c5a409189b8ee2ab79ca5421ee99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07a3c5a409189b8ee2ab79ca5421ee99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bd1645b9e8f3aa94ea6a2041c352397.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bd1645b9e8f3aa94ea6a2041c352397.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48b88069ce49024e5a7f3ee6165960ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48b88069ce49024e5a7f3ee6165960ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37a1645307f9d3f5731bb72147859b25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37a1645307f9d3f5731bb72147859b25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9ff48188d699f20ddea72558f3ec71e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9ff48188d699f20ddea72558f3ec71e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15d1df0e289d03ababe2936c621ace26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15d1df0e289d03ababe2936c621ace26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bcb25939826af34300c9b657c025334.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bcb25939826af34300c9b657c025334.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c22a223c9f4efafa68a8f42d3b71d528.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c22a223c9f4efafa68a8f42d3b71d528.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84cf2b201b3e1a5a24b219babb9d9255.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84cf2b201b3e1a5a24b219babb9d9255.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/009e66cce8a7a43bd0e97e4f02a16414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/009e66cce8a7a43bd0e97e4f02a16414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3aa5570b4e01e7e7e01d2d8b4dc4b37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3aa5570b4e01e7e7e01d2d8b4dc4b37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4247a2bc0d95f5a664895b7e5553e3ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4247a2bc0d95f5a664895b7e5553e3ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8e7c456990a99e0d821bc7a4019b46d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8e7c456990a99e0d821bc7a4019b46d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af6665f7902523e9b19dc8d05219a94b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af6665f7902523e9b19dc8d05219a94b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50dae15620254859ce950e83a9de8e19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50dae15620254859ce950e83a9de8e19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0d183809d6dd2578e22012fb5f29cb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0d183809d6dd2578e22012fb5f29cb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/534d89cbedac890a4845c09c02e3b97f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/534d89cbedac890a4845c09c02e3b97f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13f685794d72dfa136d4a4ba7f924492.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13f685794d72dfa136d4a4ba7f924492.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13febece3486646420d7de552cc89144.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13febece3486646420d7de552cc89144.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3768643d8aee9f44218c85ab78af9caf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3768643d8aee9f44218c85ab78af9caf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8be7249357104bc94a008641b3105f1f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8be7249357104bc94a008641b3105f1f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31cd85a05cdeddef127b4c785fe8da16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31cd85a05cdeddef127b4c785fe8da16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fadf2462c0f06978829530510ba95a6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fadf2462c0f06978829530510ba95a6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da61ca6ac63f21d27a85bc7b31a92b20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da61ca6ac63f21d27a85bc7b31a92b20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d768f65baec4b75130dcc7c70daad88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d768f65baec4b75130dcc7c70daad88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50d644bc2cf83575ddd6a71a82fb4d05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50d644bc2cf83575ddd6a71a82fb4d05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/881e101c4072be27dbb21ecd935fc6b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/881e101c4072be27dbb21ecd935fc6b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24472778c90fc48428d84350f31fd1a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24472778c90fc48428d84350f31fd1a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8d1dbd24abc6184905bffeb9859b18d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8d1dbd24abc6184905bffeb9859b18d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2895c067f4d44a0fc14ee1add035e2dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2895c067f4d44a0fc14ee1add035e2dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96479876bb249cbe1b65b76bd08e03f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96479876bb249cbe1b65b76bd08e03f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1b15b5c27ad4cdff32ba9eac1d38b2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1b15b5c27ad4cdff32ba9eac1d38b2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f068dfac9c93c994bd4d7efacec8b70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f068dfac9c93c994bd4d7efacec8b70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13dafff25c676995e6b893a4193d0d9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13dafff25c676995e6b893a4193d0d9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4098b4ec10505fc8410dfa81e97a36d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4098b4ec10505fc8410dfa81e97a36d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05a682bc8ceff7e28655691dad62a169.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05a682bc8ceff7e28655691dad62a169.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b19a674dfa17eb6580113bf6e354158.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b19a674dfa17eb6580113bf6e354158.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95ed5187ef97940225fc2875da7ec342.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95ed5187ef97940225fc2875da7ec342.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbc6fb5b61197b3c5bbb4cfd2406f423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbc6fb5b61197b3c5bbb4cfd2406f423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/311c416209f055bd5fcb85b9fa02802d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/311c416209f055bd5fcb85b9fa02802d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc5f4d85baf345a43a13d5c005756d0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc5f4d85baf345a43a13d5c005756d0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88c814c6da3ce42657fe36cd4639050b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88c814c6da3ce42657fe36cd4639050b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f73bb5665bce9b76606919424e94ace.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f73bb5665bce9b76606919424e94ace.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/267bf3ac28457f2640c2adf47e927f65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/267bf3ac28457f2640c2adf47e927f65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95f30aedac3780793a77217cec971d36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95f30aedac3780793a77217cec971d36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c8330b3a20ca3fd799c685fcd2610e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c8330b3a20ca3fd799c685fcd2610e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/156ea9b9174741fccf12d1f84729bea0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/156ea9b9174741fccf12d1f84729bea0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1030006,'1030006','日式纯棉色织AB格四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/ef222b9012932fa7b19bef69069156ed.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e367cc48de5c3fd5f52bbf76cb65ee5a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3bf6f6d4d373c572d7444a935a3e1e3b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/226a9cd3bed63052e40d2de2fd3c7b6f.jpg\\\"]','','凹凸立体格纹，细节体现质感',1,21,'http://yanxuan.nosdn.127.net/578ffec952eb25ff072d8ea1b676bfd2.png','',0,0,'件',349.00,329.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7b05c0b013ec5ddced70db8f1836a524.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b05c0b013ec5ddced70db8f1836a524.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19f647d9669222fb0959a678d4e4b7b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19f647d9669222fb0959a678d4e4b7b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84a6fa64c9fe43e6a09ae808a525df8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84a6fa64c9fe43e6a09ae808a525df8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1c6b48a806df620cb939dd442bf9b24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1c6b48a806df620cb939dd442bf9b24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f3e08586b1a2381e76ef343b41fb8bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f3e08586b1a2381e76ef343b41fb8bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77b5016f3b1784ecc759ce4b5c5ec878.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77b5016f3b1784ecc759ce4b5c5ec878.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75ab91bbe6ef31861d9266c1d5796bd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75ab91bbe6ef31861d9266c1d5796bd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af0385d4be03564be9b958be9b7c4191.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af0385d4be03564be9b958be9b7c4191.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aac39aa60bdcfad36640dbd0e18ae452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aac39aa60bdcfad36640dbd0e18ae452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/159807ac6f2397189edbd794423994aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/159807ac6f2397189edbd794423994aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eedc9788b065368d513928bea9650c40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eedc9788b065368d513928bea9650c40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa9e8fe3f75f2698d355fbab3128ed01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa9e8fe3f75f2698d355fbab3128ed01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2582bc8b922a06800fcfdc274d42411c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2582bc8b922a06800fcfdc274d42411c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcfa6647d7273f487a3cff61aa948c95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcfa6647d7273f487a3cff61aa948c95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5841455f07b63fcd05fba393543f7e87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5841455f07b63fcd05fba393543f7e87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed5271f8cdcb33a25b18db8f0372470e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed5271f8cdcb33a25b18db8f0372470e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20be5bfe0c05f8bbedaec60167fa0e7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20be5bfe0c05f8bbedaec60167fa0e7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e39f1ffa3a475a9ed61b762b8c25e2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e39f1ffa3a475a9ed61b762b8c25e2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8046850716f5ebb7fcf596dc31914e80.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8046850716f5ebb7fcf596dc31914e80.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d2eafad0609aea932892b5c59decd27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d2eafad0609aea932892b5c59decd27.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffe985a36f22902a4145a331e734dd84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffe985a36f22902a4145a331e734dd84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/227fbf150c1bbd920c0458b5f2dc3c33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/227fbf150c1bbd920c0458b5f2dc3c33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0398d5e84e61bf044b6694a103ba690d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0398d5e84e61bf044b6694a103ba690d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/615dad0bf78318544a5408339082828a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/615dad0bf78318544a5408339082828a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a05a6367cc1dd5e9dcc372755ec65ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a05a6367cc1dd5e9dcc372755ec65ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92682369d59dc519fb4d58fbbb9a23f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92682369d59dc519fb4d58fbbb9a23f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d35c10f55941d55870f809ed212a5811.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d35c10f55941d55870f809ed212a5811.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f716b0db1b01cd73e0484a7e38fd873d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f716b0db1b01cd73e0484a7e38fd873d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f01467b000ea837c21cd37c6e05049ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f01467b000ea837c21cd37c6e05049ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b48e5f59ea7027e83bd16eebd3991b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b48e5f59ea7027e83bd16eebd3991b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/291de1e5da8832fc2da48a775c70ad70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/291de1e5da8832fc2da48a775c70ad70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9e2b594100374d8d3e6e4ed7b5d6b3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9e2b594100374d8d3e6e4ed7b5d6b3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b284b20ce0e3c2e6d3bb7468af21d7e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b284b20ce0e3c2e6d3bb7468af21d7e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70c1ed140868cca37832650061d99e2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70c1ed140868cca37832650061d99e2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e2a42fd68a4c0d9b6608e17e312ff50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e2a42fd68a4c0d9b6608e17e312ff50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98d794a141c1cd21173ee1e920ee2f59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98d794a141c1cd21173ee1e920ee2f59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7e8a0d4c32c59d5bb58bfd043d7b0f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7e8a0d4c32c59d5bb58bfd043d7b0f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c96effe484ec0fe3a24b6f50eb4c653f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c96effe484ec0fe3a24b6f50eb4c653f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46402f7f7b982caa07de61b47c7a39a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46402f7f7b982caa07de61b47c7a39a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d561dde54a84b1f652bf75dea175299.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d561dde54a84b1f652bf75dea175299.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1033000,'1033000','新生彩棉初衣礼盒（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/d820f03d67e68071d30c922ea87eb023.png\\\", \\\"http://yanxuan.nosdn.127.net/d820f03d67e68071d30c922ea87eb023.png\\\", \\\"http://yanxuan.nosdn.127.net/d820f03d67e68071d30c922ea87eb023.png\\\", \\\"http://yanxuan.nosdn.127.net/d820f03d67e68071d30c922ea87eb023.png\\\", \\\"http://yanxuan.nosdn.127.net/d820f03d67e68071d30c922ea87eb023.png\\\"]','','来自天然彩棉的礼物',1,2,'http://yanxuan.nosdn.127.net/9aab9a0bf4fef8fe3dc8c732bc22d4b7.png','',0,0,'件',219.00,199.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1035006,'1035006','全棉单面割绒浴室地垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/da263f1716b141df0339ea6b8176ce6f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/873f61c908523bc4257a4b511e9e422f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ecc95cf18f99dee5bfe65f016fa8535f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/80ef121faf019295c15d73ee8cf35425.jpg\\\"]','','手工制作，纯棉材质，柔软舒适',1,32,'http://yanxuan.nosdn.127.net/ee92704f3b8323905b51fc647823e6e5.png','',0,0,'件',76.00,56.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/39cba017dbf04371863ec3af894cb79c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39cba017dbf04371863ec3af894cb79c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/727bdb71768265b3c283b2d71ad63d8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/727bdb71768265b3c283b2d71ad63d8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b7eb8df6b30b61ff8326a5882bbf411.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b7eb8df6b30b61ff8326a5882bbf411.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5143f756b613c2523954affbdf514a05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5143f756b613c2523954affbdf514a05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a6879162b60e2442036c6c5d88275e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a6879162b60e2442036c6c5d88275e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d65d49dfd73f6b44d8e1b971df58ec1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d65d49dfd73f6b44d8e1b971df58ec1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/630c9a177eb89c044d4c968745fce915.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/630c9a177eb89c044d4c968745fce915.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1597a314b6ae69f361f4f1fbc2ed876c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1597a314b6ae69f361f4f1fbc2ed876c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cfcfff37b305dcc44d9a907377761f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cfcfff37b305dcc44d9a907377761f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27dd23d01d9d110ebb11c92fa087e208.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27dd23d01d9d110ebb11c92fa087e208.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/366f5281836ad5b3a06afe4ace14d2bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/366f5281836ad5b3a06afe4ace14d2bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cdd2229692184db4793f68ca2d1c307.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cdd2229692184db4793f68ca2d1c307.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/999c7854dff1496c2702c510b8c6586d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/999c7854dff1496c2702c510b8c6586d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7097f2a9c69c4f337ab9ff961276cf0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7097f2a9c69c4f337ab9ff961276cf0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d6ad8caac9c24f024b9525e492dde1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d6ad8caac9c24f024b9525e492dde1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1005834f8ac736dc7bc5c59cfab0ce01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1005834f8ac736dc7bc5c59cfab0ce01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/342365052bc031f64050c0d117786de1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/342365052bc031f64050c0d117786de1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bdb057b4b109ad39368d337b26fcef0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bdb057b4b109ad39368d337b26fcef0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c764541e44c1bfe9308c4be9ba70eb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c764541e44c1bfe9308c4be9ba70eb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e4dafc25a731ccf56b1296e9889530d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e4dafc25a731ccf56b1296e9889530d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0aae3c93d54fd9a25fc0d297e0cf856e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0aae3c93d54fd9a25fc0d297e0cf856e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d3f4adea81508c83148517b12b3963f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d3f4adea81508c83148517b12b3963f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7f792a547c9f534fd4bd00c88fe734c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7f792a547c9f534fd4bd00c88fe734c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41541dc15fbb715ed5311d4343516a6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41541dc15fbb715ed5311d4343516a6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/267175ffcb24b51250f642b31cadd977.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/267175ffcb24b51250f642b31cadd977.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036002,'1036002','高山苦荞麦枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/1c3acbfaa67a1a2034c53d6a12b87b5b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/49366cac271c5614501660ccf2c886a6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6def3e5d0f22d46c20f88304f2dd1f23.jpg\\\", \\\"http://yanxuan.nosdn.127.net/49844b0d390c2a1cf6147e80de8c2e51.jpg\\\"]','','原生苦荞，健康护颈',1,5,'http://yanxuan.nosdn.127.net/ffd7efe9d5225dff9f36d5110b027caa.png','',0,1,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/698e2a2252d9d4227f17f9d88a6e87ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/698e2a2252d9d4227f17f9d88a6e87ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38d70ef29b5e883125a27d6607a9ce62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38d70ef29b5e883125a27d6607a9ce62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0f7666b8f215007d322b7f7e7267d7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0f7666b8f215007d322b7f7e7267d7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d7661b99de023bed2ebf360a8f0cb7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d7661b99de023bed2ebf360a8f0cb7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a1860e8b8cac1f3e5a42bc7de5a8e04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a1860e8b8cac1f3e5a42bc7de5a8e04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb4e72d283bd58f1b23125dbeef11ef6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb4e72d283bd58f1b23125dbeef11ef6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9846b6c36e9dc27fc4b18ec3e0177aff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9846b6c36e9dc27fc4b18ec3e0177aff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b4e21c0d2fa575dc1636baf71666b1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b4e21c0d2fa575dc1636baf71666b1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9588e23919c7c54998bb5a07b0907eeb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9588e23919c7c54998bb5a07b0907eeb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c807c41d48efb876244bd41d1dd97ef5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c807c41d48efb876244bd41d1dd97ef5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b213fc5b21cbf79c39412e6d9b21e7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b213fc5b21cbf79c39412e6d9b21e7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fba066200fc8ce47a0c7e99b47f97e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fba066200fc8ce47a0c7e99b47f97e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/208af7a63670fc2a438364f2336f2806.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/208af7a63670fc2a438364f2336f2806.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab0c3198ec5c1193da9cd5a491bb459d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab0c3198ec5c1193da9cd5a491bb459d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c24e52caa847dd17210cc57d243d08c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c24e52caa847dd17210cc57d243d08c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0371cfdea30a90ef6955e3bcf3f9b6c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0371cfdea30a90ef6955e3bcf3f9b6c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8916eff34678bfda4980a231a3b8d09a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8916eff34678bfda4980a231a3b8d09a.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036013,'1036013','全棉针织素色床笠',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/e78d08c1c34aac63f3b73f2029ca4e77.jpg\\\", \\\"http://yanxuan.nosdn.127.net/29f185e123c9e1f4c075ff014db44324.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b2f4d0efc4dc1baf94aaa36712681da5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b342166f7e4c5eb4a430d524f248ef07.jpg\\\"]','','百隆色纺纱，亲肤舒适，裸睡神器',1,27,'http://yanxuan.nosdn.127.net/da1bc2c10f7b2e53f2466bd23953b982.png','',0,0,'件',129.00,109.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2ea947dc5f93d996b2d9651f07cf4e5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ea947dc5f93d996b2d9651f07cf4e5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/584f94e084559eb5a4e8ba4b0c0d94b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/584f94e084559eb5a4e8ba4b0c0d94b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd00b278f6e9ede88a9523f12da21a8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd00b278f6e9ede88a9523f12da21a8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89a1458cc189b185d42b0fce5ec47786.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89a1458cc189b185d42b0fce5ec47786.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8ca61b4ac2285c6399cf13e0e706122.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8ca61b4ac2285c6399cf13e0e706122.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a0ef1725c91b35d28fa2aade62474fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a0ef1725c91b35d28fa2aade62474fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/456dcb6d70990b9175d70ba596f3c407.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/456dcb6d70990b9175d70ba596f3c407.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e947956bcb3f7a281d75d900e14c1467.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e947956bcb3f7a281d75d900e14c1467.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/903adc0d93d873213cb63e2e8131b279.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/903adc0d93d873213cb63e2e8131b279.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/554f7b2d804375a1d6234dd530afba62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/554f7b2d804375a1d6234dd530afba62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0736125b93c2530567a3da47e51207f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0736125b93c2530567a3da47e51207f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d05886366aa27bfdbcab94f1cec3fdf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d05886366aa27bfdbcab94f1cec3fdf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a28af88609476e96c154e0724fbe1f5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a28af88609476e96c154e0724fbe1f5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8369453fa28fd4ceb4ad8d07797b8f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8369453fa28fd4ceb4ad8d07797b8f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b876f252a587a0e96116b346b7f3261.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b876f252a587a0e96116b346b7f3261.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa33c3d86cb635ae43cb467eceac29ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa33c3d86cb635ae43cb467eceac29ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ece8b099041cb048b9fef0084e913b3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ece8b099041cb048b9fef0084e913b3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d506d32e1fe346b94bea4a4358ffa62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d506d32e1fe346b94bea4a4358ffa62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d45055d253ecac606f8f7a20cc740436.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d45055d253ecac606f8f7a20cc740436.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b409d218695083e52089ab595ec169e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b409d218695083e52089ab595ec169e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c2713ccb4655853d0f34e97481742a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c2713ccb4655853d0f34e97481742a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/099b05e20345682d8ccffed299de4036.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/099b05e20345682d8ccffed299de4036.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/681e72addfa6a5c99c225b6cac80338b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/681e72addfa6a5c99c225b6cac80338b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/311a4c606bdebcf4e07bb4069d47d22d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/311a4c606bdebcf4e07bb4069d47d22d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7d70ea6a2a2480717e8d495a78c9f1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7d70ea6a2a2480717e8d495a78c9f1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e746e02d8cf7f32f4f0c3aa42fd3951f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e746e02d8cf7f32f4f0c3aa42fd3951f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaa74552f611e799d7912761a76718e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaa74552f611e799d7912761a76718e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/083c5a0f704b115660f5d6f1fe23d617.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/083c5a0f704b115660f5d6f1fe23d617.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e4ac92008c116a73048c4607f12eeca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e4ac92008c116a73048c4607f12eeca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e833539bb3899ad048186fa2aff42241.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e833539bb3899ad048186fa2aff42241.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2289c3881b2d32a9132d684cdd9b4fca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2289c3881b2d32a9132d684cdd9b4fca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1f8a657fd8363fcf4a62fa9ab838d61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1f8a657fd8363fcf4a62fa9ab838d61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fbef986dac776654ec8cd23e3cd8bf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fbef986dac776654ec8cd23e3cd8bf8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca3ff84fc05e386fdf3ee789d6fc70e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca3ff84fc05e386fdf3ee789d6fc70e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80a1a3202fc0104e54bd1fb5b111b448.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80a1a3202fc0104e54bd1fb5b111b448.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/071a8ca1a90782d6813f7c125fe04ca9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/071a8ca1a90782d6813f7c125fe04ca9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/840a076f6ac26b74b3786cfc3b66e785.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/840a076f6ac26b74b3786cfc3b66e785.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/923f018943db353459a940a2d3b57b5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/923f018943db353459a940a2d3b57b5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/360d3db07247ab7e824086d134ca8e83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/360d3db07247ab7e824086d134ca8e83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d28b9978bbf757f926a8f1fec1af4355.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d28b9978bbf757f926a8f1fec1af4355.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a8d4554060bdbcb99c6b910bca6de73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a8d4554060bdbcb99c6b910bca6de73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbc5931307c3dabab82f4b6314064097.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbc5931307c3dabab82f4b6314064097.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ed409573b7775e6a4aa0d11ae2bbe02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ed409573b7775e6a4aa0d11ae2bbe02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e4653f2d0dcf16a6e9fba2364074df0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e4653f2d0dcf16a6e9fba2364074df0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b27de84243cc25f752b3b7e955b0177d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b27de84243cc25f752b3b7e955b0177d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ddc46378605add71e99e51fdaf83db5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ddc46378605add71e99e51fdaf83db5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e402495d57f4934e7224948ac3d956cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e402495d57f4934e7224948ac3d956cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cdded8ed37708bf2a817f05efccbec0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cdded8ed37708bf2a817f05efccbec0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56ad5ff1c7f6c686739961df64abef75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56ad5ff1c7f6c686739961df64abef75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7508fe30e5bd5d46c7dcd95b059616cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7508fe30e5bd5d46c7dcd95b059616cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/760c798a64bd06d50a769935ba7cc59a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/760c798a64bd06d50a769935ba7cc59a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/621d6bf8f4938f18b585d8418f592b6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/621d6bf8f4938f18b585d8418f592b6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8147afb283cb461062a47c98ec6e663b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8147afb283cb461062a47c98ec6e663b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49a679fc021af27dc631702b58893bd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49a679fc021af27dc631702b58893bd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc9c61af723770deb3796bdc4d1c7fd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc9c61af723770deb3796bdc4d1c7fd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09e9e3ee2729bd7b1525db50ef15d978.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09e9e3ee2729bd7b1525db50ef15d978.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f77aaed5876f0b974834aaf0e0da96fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f77aaed5876f0b974834aaf0e0da96fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b323f96fabccf05c8f3ddd3537790cb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b323f96fabccf05c8f3ddd3537790cb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a23566fd52f0c4cfe83af728aa66a014.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a23566fd52f0c4cfe83af728aa66a014.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c4bbac4f263a5dc10fd3c66f701985c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c4bbac4f263a5dc10fd3c66f701985c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f40140d230db392fe51306614945713f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f40140d230db392fe51306614945713f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b9c12121bda764443a1933e533a4445.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b9c12121bda764443a1933e533a4445.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/632a48034a7c29e15a1e6c70014e3964.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/632a48034a7c29e15a1e6c70014e3964.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1036016,'1036016','日式色织水洗棉床笠',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/e4cd24991107bf5f020877ae356d5e91.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a98f3626eddeb5840c1ad3f72b5ba368.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2766b097e1b9b3993cf11c68c5581631.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1fe07019b1a38aa1ff5e4da9c301642e.jpg\\\"]','','色织水洗工艺，亲肤柔软',1,28,'http://yanxuan.nosdn.127.net/513d08057c69fdb7d19cc810e976118d.png','',0,0,'件',129.00,109.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/27aa5bc8460115ccb194f7f6878e68bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27aa5bc8460115ccb194f7f6878e68bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/765f188e5a348b9309fb6925c7b21aea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/765f188e5a348b9309fb6925c7b21aea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43945809af824c2be9ee6fa77ffa7789.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43945809af824c2be9ee6fa77ffa7789.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a95d653097cb9349a4a4c994dbec535.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a95d653097cb9349a4a4c994dbec535.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38e7c1373521ff55c3c976b2c7bfe149.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38e7c1373521ff55c3c976b2c7bfe149.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4407d34700a2c1fe874280344ba538ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4407d34700a2c1fe874280344ba538ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/461cdf2416cea7981df8043dc5ef0f0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/461cdf2416cea7981df8043dc5ef0f0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb17feeda18a8852a0a9e52631ae8194.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb17feeda18a8852a0a9e52631ae8194.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f4e1a21b84a69bf745b11d331cdfa0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f4e1a21b84a69bf745b11d331cdfa0d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a12d561d7d8901f714a6e7748e1c5615.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a12d561d7d8901f714a6e7748e1c5615.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99bf6cdd7bb5518e60dcd6f5e7621f6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99bf6cdd7bb5518e60dcd6f5e7621f6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66acc9ba0870f0bbfac7daf0f247ca8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66acc9ba0870f0bbfac7daf0f247ca8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7de61864c4f3e580efe49bea1677b2f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7de61864c4f3e580efe49bea1677b2f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0e3cb8406e04b802324deb5994f7bb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0e3cb8406e04b802324deb5994f7bb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cfcbc803bcd22c52179af79458e6ab74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cfcbc803bcd22c52179af79458e6ab74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6378dfc799bf4348bdf591878b8874b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6378dfc799bf4348bdf591878b8874b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79dfe0e605da000837104ca59bcacd70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79dfe0e605da000837104ca59bcacd70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5cddd147a17cd8e0ca3f1c344799150.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5cddd147a17cd8e0ca3f1c344799150.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75c4dd15612240676e8745947ba919b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75c4dd15612240676e8745947ba919b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7da0b604d50d515c9cca36882ac14f1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7da0b604d50d515c9cca36882ac14f1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf904edee30b5146bdaa9702e10220fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf904edee30b5146bdaa9702e10220fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01aefba507ae7eec7227c4198a66403b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01aefba507ae7eec7227c4198a66403b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df6e40b4b102add68cf411c5813662ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df6e40b4b102add68cf411c5813662ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d62ed698a238fc51141e4814e4aa36f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d62ed698a238fc51141e4814e4aa36f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c76b521fd6adde54dbb435245f6870d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c76b521fd6adde54dbb435245f6870d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca3f82155bca6258a3e8ce11f6057b78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca3f82155bca6258a3e8ce11f6057b78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/436c43a0feedb51240f9c88bc0816733.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/436c43a0feedb51240f9c88bc0816733.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41481ad182555bdf6b9c2091278414f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41481ad182555bdf6b9c2091278414f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7546a5f6ef3158ff9b339252ff78696.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7546a5f6ef3158ff9b339252ff78696.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ecb09d1c8ced8b066dce901e51ee8cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ecb09d1c8ced8b066dce901e51ee8cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e403b8fb0f2bb6064412a1980c723d3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e403b8fb0f2bb6064412a1980c723d3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54953bd9dd44742c5ad576b17582a703.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54953bd9dd44742c5ad576b17582a703.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cccb1ab3d945b7e24aed1dfbf42b9676.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cccb1ab3d945b7e24aed1dfbf42b9676.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe819702b2250071f0a0071687c7389a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe819702b2250071f0a0071687c7389a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eae0f463b127c7309bfdc13a45e48ff2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eae0f463b127c7309bfdc13a45e48ff2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82e69da4363fc4404bf76b4f409343e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82e69da4363fc4404bf76b4f409343e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22d0e5472c227bdc30f0ad0d9b35e8af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22d0e5472c227bdc30f0ad0d9b35e8af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99957f03aa9251a8e59a7ae667dc479c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99957f03aa9251a8e59a7ae667dc479c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0433876cad19a06ea91bbc7608d47fee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0433876cad19a06ea91bbc7608d47fee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a965570bf77472bfcec5f14680edd55d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a965570bf77472bfcec5f14680edd55d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99d89cbd0b23b522e5070039889e7a28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99d89cbd0b23b522e5070039889e7a28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb81ad0b1fc1cec89cc2c28bfde6d46d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb81ad0b1fc1cec89cc2c28bfde6d46d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd2acab71c610d144464defb9e009af8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd2acab71c610d144464defb9e009af8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/669cda2c9c42fdb0a72c74ea2da71d0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/669cda2c9c42fdb0a72c74ea2da71d0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18090d25c37e360ac4b1410daf14fb2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18090d25c37e360ac4b1410daf14fb2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6eee9afdba088f358eb96e8901ef6ad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6eee9afdba088f358eb96e8901ef6ad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ace611f1dcb46256611b3485f820cf51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ace611f1dcb46256611b3485f820cf51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eacee782799659dcab997fedfb9ef286.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eacee782799659dcab997fedfb9ef286.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f26fa1d434ecc7eef863e9708828b79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f26fa1d434ecc7eef863e9708828b79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f5772eb4931b6d74b3147716f008dd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f5772eb4931b6d74b3147716f008dd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6d176dad0dccbe141aad82a7014eb0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6d176dad0dccbe141aad82a7014eb0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edb8b0859327503c7df8b24a544bc2b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edb8b0859327503c7df8b24a544bc2b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3efc7698b3ebc19aabb61ab061a1e80e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3efc7698b3ebc19aabb61ab061a1e80e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52735272d754f74beb3965970cc76b32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52735272d754f74beb3965970cc76b32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8904e0e64dea985fbd99cbeff1a83db3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8904e0e64dea985fbd99cbeff1a83db3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29b1a16a684be99b30e3f99a5985f681.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29b1a16a684be99b30e3f99a5985f681.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef9f6230b76bef57703fac85f69efa0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef9f6230b76bef57703fac85f69efa0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f5bdb37e1abaabb8c2234a631b04aed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f5bdb37e1abaabb8c2234a631b04aed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31a47d47d24d219a24bdac55eda9b466.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31a47d47d24d219a24bdac55eda9b466.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/057140b9ba1541ee97775cfdf5f418db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/057140b9ba1541ee97775cfdf5f418db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8329134fe549244755fe13aba2571712.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8329134fe549244755fe13aba2571712.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1037011,'1037011','安睡慢回弹记忆绵床垫',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/52e1230341bde01128645c65650f601c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/49b3a096adad4ba4228d5d4fc00eb85f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/01460a9963bdecead79ce86c7df1e90a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ed12a0fc67eea2fec8a81dd044af28d2.jpg\\\"]','','5cm记忆绵的亲密包裹',1,22,'http://yanxuan.nosdn.127.net/a03ea6f4509439acdafcb7ceba1debe0.png','',0,1,'件',619.00,599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/0de1b826d70069e199b1a7bb0a9dcf20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0de1b826d70069e199b1a7bb0a9dcf20.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc1f1a0ad96a8ace2bcdf52e660e59a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc1f1a0ad96a8ace2bcdf52e660e59a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39beecbe6b2f7565cc42f50ab9e9bd06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39beecbe6b2f7565cc42f50ab9e9bd06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa64cb95f94066a4de15083fe741bae4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa64cb95f94066a4de15083fe741bae4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fc7bbf24ca3aa7c7991dcdc27f64f26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fc7bbf24ca3aa7c7991dcdc27f64f26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1f254d67dff28081aa22e9c386c7022.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1f254d67dff28081aa22e9c386c7022.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f1827ad687130c3d1b345b3e8c3e8e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f1827ad687130c3d1b345b3e8c3e8e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b76807d7bc32a4b71e68a71094a9a934.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b76807d7bc32a4b71e68a71094a9a934.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec78cb8ba4a08e58093b81d85cac54f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec78cb8ba4a08e58093b81d85cac54f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b2ed3ac4084c4608ea951311dfa14e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b2ed3ac4084c4608ea951311dfa14e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9bf6fd8849795c9f3c5912898aa6493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9bf6fd8849795c9f3c5912898aa6493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed0c57dfb615842011fc5b175dfe1059.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed0c57dfb615842011fc5b175dfe1059.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae2662ce9e409ef7f3adda13e5516d77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae2662ce9e409ef7f3adda13e5516d77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ede81499ac87a2692e25f1942bdc9580.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ede81499ac87a2692e25f1942bdc9580.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d471b9a35f873531627c1dd165de3709.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d471b9a35f873531627c1dd165de3709.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b19d147f0edf0bcfd270c0aca6f138db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b19d147f0edf0bcfd270c0aca6f138db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24dcb664f1f38694a5432378255aa36a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24dcb664f1f38694a5432378255aa36a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42502a8806348e62676f5d5778cfe063.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42502a8806348e62676f5d5778cfe063.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fe544ba36341e6a4f4d233ce7e713eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fe544ba36341e6a4f4d233ce7e713eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61ff53f6e9f3d9e93524caaf90bfcb85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61ff53f6e9f3d9e93524caaf90bfcb85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d8bb21d91874cd56829ccf205923897.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d8bb21d91874cd56829ccf205923897.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/daffb6e380594223f793e944c3f4b077.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/daffb6e380594223f793e944c3f4b077.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99b0f7110b67307ab02f18673a460cd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99b0f7110b67307ab02f18673a460cd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/643a55a8bb471698f6b69ce253501fc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/643a55a8bb471698f6b69ce253501fc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6041d02391c93451d84601d82ed4dbe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6041d02391c93451d84601d82ed4dbe3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0b528dbea6de5f0169dda6564f7055b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0b528dbea6de5f0169dda6564f7055b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ecbd17e370b03446b93dc9c61a32fab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ecbd17e370b03446b93dc9c61a32fab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17150b49d688da488535d894f5182ab3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17150b49d688da488535d894f5182ab3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22b05dc005df61f5c9363b54b1b7edea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22b05dc005df61f5c9363b54b1b7edea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/896a68ff3ae8ae686421e09a58e815e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/896a68ff3ae8ae686421e09a58e815e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8560c3a42081a5c125ab49038665a29a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8560c3a42081a5c125ab49038665a29a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08a377dba39be4540864fb049a580ea3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08a377dba39be4540864fb049a580ea3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb70fc1822b9e08875bd11c183395589.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb70fc1822b9e08875bd11c183395589.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88d0f503ea6c5e17bb71448846aa258b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88d0f503ea6c5e17bb71448846aa258b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/221dad708312cb8ff54306df88e6d976.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/221dad708312cb8ff54306df88e6d976.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/535b321ee2a870683fc37f5ff3a5893f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/535b321ee2a870683fc37f5ff3a5893f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/090125c757d1290c257ab28f285d3e41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/090125c757d1290c257ab28f285d3e41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db6e6c73b22e27c06b685de83f8ce4d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db6e6c73b22e27c06b685de83f8ce4d1.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1037012,'1037012','圆形护颈苦荞麦枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/d37e9d2b6bf71d4afa92928313abb69a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8ab74790baa735d1afba16aae5464180.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2e1cb4e60899b883dd1824ad9ad8f6d3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cac91a5d7952110cda8b857c7b92703c.jpg\\\"]','','高山苦荞填充，放松颈椎',1,6,'http://yanxuan.nosdn.127.net/ffd2c91c7cf9c6e0f630595f7679b95d.png','',0,0,'件',89.00,69.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/92e065fd564833df8d30ee998a6309cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92e065fd564833df8d30ee998a6309cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f94db52407c73ef4c3c2ed4ab8c87e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f94db52407c73ef4c3c2ed4ab8c87e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dddb8eedae26269e0ae1cc114eeee50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dddb8eedae26269e0ae1cc114eeee50.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d67592cccde77ce175b196fb51534880.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d67592cccde77ce175b196fb51534880.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/812a929e1e7db26c1902a5fefa25a7b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/812a929e1e7db26c1902a5fefa25a7b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c1e00a872c146ebcffd1aa42d758496.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c1e00a872c146ebcffd1aa42d758496.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5441c3860c5ff8b3766ba2b0e014213f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5441c3860c5ff8b3766ba2b0e014213f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0a02aee1dc5f8a280eee678ab2d7a45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0a02aee1dc5f8a280eee678ab2d7a45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2a21d3a75d4ec50431ddddd3298ae0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2a21d3a75d4ec50431ddddd3298ae0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5404f9d679b0d2ca0fd7aafffec1d3c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5404f9d679b0d2ca0fd7aafffec1d3c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b471c9b0bfcfa0c451eab494ff0278c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b471c9b0bfcfa0c451eab494ff0278c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33c95fe74862820264e02ff290a78272.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33c95fe74862820264e02ff290a78272.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f31eb1f1b684de70bc70e8a86a4bc11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f31eb1f1b684de70bc70e8a86a4bc11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75c423d78d9c56af60958833afeb4452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75c423d78d9c56af60958833afeb4452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b402caf41e160e62b61237c0a10abe8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b402caf41e160e62b61237c0a10abe8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c83d40738f5a03623bd0f8a24949bb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c83d40738f5a03623bd0f8a24949bb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbdff4265463c930fb06b28767261926.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbdff4265463c930fb06b28767261926.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43355138eb32b8cb6b950d51ba38db5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43355138eb32b8cb6b950d51ba38db5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1fe3c46e76126d6dc9872c9f0d561e9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1fe3c46e76126d6dc9872c9f0d561e9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fea1a7969b68ce647e655398e2beef09.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fea1a7969b68ce647e655398e2beef09.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e48409e525be320f98fc14aa40ed3a9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e48409e525be320f98fc14aa40ed3a9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8512ad8f5d680271651dbc69d7d8a16a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8512ad8f5d680271651dbc69d7d8a16a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b3e54a7360dd849f3c098fc2cc5ae12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b3e54a7360dd849f3c098fc2cc5ae12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b7c8648d1cf1c68bfb75293af7fd0c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b7c8648d1cf1c68bfb75293af7fd0c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2db0d7c0f0151662e5a06078efec21c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2db0d7c0f0151662e5a06078efec21c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fd50666a97d4cd2cf9c6f32a053b8ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fd50666a97d4cd2cf9c6f32a053b8ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/806a975d21c93917a1e406cd3de8e7f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/806a975d21c93917a1e406cd3de8e7f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32ec426227e7208f93d47c844684e69d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32ec426227e7208f93d47c844684e69d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c472f321af2b527593aa96259944780.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c472f321af2b527593aa96259944780.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86f9773e41872a4398f4118fe0869a3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86f9773e41872a4398f4118fe0869a3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c629d3761a71fdfca80dfe125b4783cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c629d3761a71fdfca80dfe125b4783cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69c8d2d299468bf485e1b62c3121be6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69c8d2d299468bf485e1b62c3121be6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/038b59945443c481b96936c7a3ca3f81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/038b59945443c481b96936c7a3ca3f81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2802906b8b2c3ff849b1b9ed1469d37e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2802906b8b2c3ff849b1b9ed1469d37e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de2b9357eed35a554f3fe3de1fe2d3dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de2b9357eed35a554f3fe3de1fe2d3dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc35132c0b41f1ee8c9ec5277ef55024.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc35132c0b41f1ee8c9ec5277ef55024.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56869d9a1d818d4836bc8e41a03359d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56869d9a1d818d4836bc8e41a03359d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89fc80f8e57ec8c7eb89657eb7febcdb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89fc80f8e57ec8c7eb89657eb7febcdb.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1038004,'1038004','100年传世珐琅锅 马卡龙系列',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/293018c87f7a9e8cfe2b3e62ff7f4216.jpg\\\", \\\"http://yanxuan.nosdn.127.net/293018c87f7a9e8cfe2b3e62ff7f4216.jpg\\\", \\\"http://yanxuan.nosdn.127.net/293018c87f7a9e8cfe2b3e62ff7f4216.jpg\\\", \\\"http://yanxuan.nosdn.127.net/293018c87f7a9e8cfe2b3e62ff7f4216.jpg\\\", \\\"http://yanxuan.nosdn.127.net/293018c87f7a9e8cfe2b3e62ff7f4216.jpg\\\"]','','均匀导热，释放美味',1,2,'http://yanxuan.nosdn.127.net/4d3d3eaeb872860539d7faa59f9f84e9.png','',0,0,'只',379.00,359.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1039051,'1039051','多功能午睡枕',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/0b89243ca9fbfbc22469a5970cb1e626.jpg\\\", \\\"http://yanxuan.nosdn.127.net/73c86d83c8b691609dadf738b1c5fc04.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ce894f867b1e3db7ba780726406c86f0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c031141657ed452c8ef2ab72aae4618e.jpg\\\"]','','放松自在的午后时光',1,14,'http://yanxuan.nosdn.127.net/c8ca0600fa7ba11ca8be6a3173dd38c9.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/aba5fac220a511eb859ad4834fd7c0e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aba5fac220a511eb859ad4834fd7c0e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37c7411fe03ac22b8b924190a5c6f483.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37c7411fe03ac22b8b924190a5c6f483.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88e313d81b848936d673edebc823f617.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88e313d81b848936d673edebc823f617.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efddbb9e7105a72fb40f168813764297.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efddbb9e7105a72fb40f168813764297.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4830e1927e472f45940a92acf3e04331.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4830e1927e472f45940a92acf3e04331.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10b2f2989c7239bcea42be91d1826fc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10b2f2989c7239bcea42be91d1826fc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3d19a5320eb179b3752458f15f1a068.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3d19a5320eb179b3752458f15f1a068.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97a9d81d01cbc6c8bf57e8b308de1537.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97a9d81d01cbc6c8bf57e8b308de1537.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/500497dcf877fbf29548ef7eae7766fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/500497dcf877fbf29548ef7eae7766fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92f6105f284bdd94aa4b6495a7d43994.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92f6105f284bdd94aa4b6495a7d43994.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60161ebc38b0b8c8ca9de8a0165843bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60161ebc38b0b8c8ca9de8a0165843bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ce9817e2d4415c5789028c57c593450.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ce9817e2d4415c5789028c57c593450.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e3dc4f7c9dcd228a94cc4ffa6cea1be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e3dc4f7c9dcd228a94cc4ffa6cea1be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89360198abf4bbb4c108bfe1068d83b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89360198abf4bbb4c108bfe1068d83b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f40b5ba3618e61e80ad8f175b3da866.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f40b5ba3618e61e80ad8f175b3da866.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad590b8d9cb20c046d0d8e68ea3b0dc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad590b8d9cb20c046d0d8e68ea3b0dc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c606522a6032f1a2268a0ee0d8d01dff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c606522a6032f1a2268a0ee0d8d01dff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f226b9e158f2cf451e925a606d1b5ecd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f226b9e158f2cf451e925a606d1b5ecd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b169357e50d02d557c468588939c7f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b169357e50d02d557c468588939c7f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5e676b79ffc838a2c496134c8c3f55f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5e676b79ffc838a2c496134c8c3f55f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e934b380901ffa4b035825b82246634e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e934b380901ffa4b035825b82246634e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8decfed210a7ada28bd71496a8ef51a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8decfed210a7ada28bd71496a8ef51a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fcc94c2ee6ea13ef7cd7d21f1c63b79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fcc94c2ee6ea13ef7cd7d21f1c63b79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bae5453415f2fd519b5cf836e9baddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bae5453415f2fd519b5cf836e9baddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5833f7b80c040d8bdf23e514d430e045.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5833f7b80c040d8bdf23e514d430e045.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15df0095ff692e8d67185c93c44680c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15df0095ff692e8d67185c93c44680c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32fdd19de26dee3281e76dc33059b1f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32fdd19de26dee3281e76dc33059b1f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/290d679b2fe2154ef36b777525d988bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/290d679b2fe2154ef36b777525d988bc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99233a211060d951818a729d43bb6533.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99233a211060d951818a729d43bb6533.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76fcb532c1aa2f631c0e439f5986654f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76fcb532c1aa2f631c0e439f5986654f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2e90d2089e907d605e1eee0e6fcb1d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2e90d2089e907d605e1eee0e6fcb1d1.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1039056,'1039056','金属亚光钢笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/9a98c755c0a5d2a13557eaeddf64930d.png\\\", \\\"http://yanxuan.nosdn.127.net/9a98c755c0a5d2a13557eaeddf64930d.png\\\", \\\"http://yanxuan.nosdn.127.net/9a98c755c0a5d2a13557eaeddf64930d.png\\\", \\\"http://yanxuan.nosdn.127.net/9a98c755c0a5d2a13557eaeddf64930d.png\\\", \\\"http://yanxuan.nosdn.127.net/9a98c755c0a5d2a13557eaeddf64930d.png\\\"]','','铱金暗尖，超顺书写',1,6,'http://yanxuan.nosdn.127.net/3e14e82a44c3a250af63df4c29c572d0.png','',0,0,'件',99.00,79.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1043005,'1043005','日式记忆绵坐垫',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/e48d2eb849c4426894fad347e9b8691a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b19866dcc87474faed9e1dbc46f65bcc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1a63d1f3785071edcc40e98440950f7c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ba5890ed54ea33c387e9773ab3f5523c.jpg\\\"]','','活性炭记忆绵，缓解压力',1,11,'http://yanxuan.nosdn.127.net/2a95b16f5b147cab4845641bee738a2e.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7239e35762ea2937549f53f4482124fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7239e35762ea2937549f53f4482124fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c23c022ad6737aa351140d7ce97a4a43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c23c022ad6737aa351140d7ce97a4a43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6fe3f499101077e6ee595a9145172c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6fe3f499101077e6ee595a9145172c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fdc843045b99838abd8ce3fcbec2890.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fdc843045b99838abd8ce3fcbec2890.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14d3e1c384f5bc66e85b4dfff61f49ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14d3e1c384f5bc66e85b4dfff61f49ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14eed3d4524fe441a54b604f37cfd299.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14eed3d4524fe441a54b604f37cfd299.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1b3a30c34e6fecf8105bf430e6d547f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1b3a30c34e6fecf8105bf430e6d547f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb5411b150ce5a69c0f88ef3af918061.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb5411b150ce5a69c0f88ef3af918061.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aebe8243acfa28a42d300d985c6e7036.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aebe8243acfa28a42d300d985c6e7036.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1371f124f86fc38c195f49e4bf26ddc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1371f124f86fc38c195f49e4bf26ddc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd05471ebf5529464c85eace3e7c5c7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd05471ebf5529464c85eace3e7c5c7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c607e963758e4ad3f3bc749098fdcec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c607e963758e4ad3f3bc749098fdcec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd472e779f1748937d269b87464722b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd472e779f1748937d269b87464722b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d19ec3e68922cdae4da8c0ab174bf5eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d19ec3e68922cdae4da8c0ab174bf5eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44003fe38ab817003cb441ed5e518c41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44003fe38ab817003cb441ed5e518c41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f3a7c45c70930950e60ddac979953d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f3a7c45c70930950e60ddac979953d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77fc74a83c328dddf610a045277f094e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77fc74a83c328dddf610a045277f094e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14056056c8e8cf3f77a479de696d18ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14056056c8e8cf3f77a479de696d18ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ec2764b8b29c67af332cc1fde825b70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ec2764b8b29c67af332cc1fde825b70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/494504fdb2d59d924de16cf79629dee9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/494504fdb2d59d924de16cf79629dee9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddf59afdada25b6b7aad72aaf8f0af20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddf59afdada25b6b7aad72aaf8f0af20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b8ad80c319aac920f3409bcd4376e17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b8ad80c319aac920f3409bcd4376e17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8571525a4f280d09926a1b388d06fe8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8571525a4f280d09926a1b388d06fe8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23c8bb2834f9ec05adb69e4df8354224.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23c8bb2834f9ec05adb69e4df8354224.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9c44aea67b0392547fdb3ba7f24c5fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9c44aea67b0392547fdb3ba7f24c5fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5045464902396b85ea12724ed962d7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5045464902396b85ea12724ed962d7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f484b21d07738839d1e199d8ba1031f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f484b21d07738839d1e199d8ba1031f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21718c637256576c66876aa30653e29d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21718c637256576c66876aa30653e29d.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1044012,'1044012','澳洲羊羔毛华夫格盖毯',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/01cfb372bafa59df04933cd8eeaba197.jpg\\\", \\\"http://yanxuan.nosdn.127.net/193969cf544ac650325e36672e219137.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e08100fe3969def50321373bcfb2b0a8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/72a8bb704e9485c512fdc4831207eec0.jpg\\\"]','','美利奴全新羊羔毛的细腻触感',1,35,'http://yanxuan.nosdn.127.net/a803c68ea88e3116023b45ac9ea99510.png','',0,0,'件',369.00,349.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3f743d4b4f30ddffdfee6339d83701c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f743d4b4f30ddffdfee6339d83701c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf2c4b3d138da32aae6b3ffcdaedeb73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf2c4b3d138da32aae6b3ffcdaedeb73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3536d6deabba614dd9a8730875a37d36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3536d6deabba614dd9a8730875a37d36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8d889753ccee9174a5449041aba57db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8d889753ccee9174a5449041aba57db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0785a14712f2d585fea3776a8775f1e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0785a14712f2d585fea3776a8775f1e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0c3756c5f4e96c0f37167dce9628a8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0c3756c5f4e96c0f37167dce9628a8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a196080fd7b76bf9e4b2c97afc1028d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a196080fd7b76bf9e4b2c97afc1028d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0d6859834701a093327e3710b52b5b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0d6859834701a093327e3710b52b5b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db0116b70973635ca8ff7be78bf5f541.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db0116b70973635ca8ff7be78bf5f541.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f066780f86264b0bc037b945b81b1406.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f066780f86264b0bc037b945b81b1406.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0d87991c9a1874693cfecc52c6e1197.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0d87991c9a1874693cfecc52c6e1197.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a450d55776a981ac9aa87af0a7c418f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a450d55776a981ac9aa87af0a7c418f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b450e5950181bf464baff2b7e79188d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b450e5950181bf464baff2b7e79188d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bebe0b8259c7fdd88509947ef0a8037a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bebe0b8259c7fdd88509947ef0a8037a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10be9b68827caaa1b67077c7c5bdf05b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10be9b68827caaa1b67077c7c5bdf05b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56c0dd020ab4aceeb696520df5c8780c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56c0dd020ab4aceeb696520df5c8780c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2176b1f79b255d89206f044e42c3812.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2176b1f79b255d89206f044e42c3812.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/389af26a26c1ac3ebae82afeca4850f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/389af26a26c1ac3ebae82afeca4850f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0897b52523d43efaa5b66449d97a2e5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0897b52523d43efaa5b66449d97a2e5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fbbb2da0b5019ddacc6761ebc691902.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fbbb2da0b5019ddacc6761ebc691902.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d8576b1472852a8ab96a30d4d8536c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d8576b1472852a8ab96a30d4d8536c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4df95e96ca354efec574e01297fd9e2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4df95e96ca354efec574e01297fd9e2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d98a831ff4adeccd093c3fd8ddbc026b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d98a831ff4adeccd093c3fd8ddbc026b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6050089684ca291a045ab0eea483aab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6050089684ca291a045ab0eea483aab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96b0c33ae3b402863bde7b830b817866.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96b0c33ae3b402863bde7b830b817866.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d7d595ae0df9e126dca6926b17c3afe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d7d595ae0df9e126dca6926b17c3afe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4230ca0e414599c38b22c677eac8a2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4230ca0e414599c38b22c677eac8a2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aad253305dcdb44bdbfb519a503823da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aad253305dcdb44bdbfb519a503823da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b512ead08406712b5d98abf20ebe7691.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b512ead08406712b5d98abf20ebe7691.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1045000,'1045000','绿茶蛋黄酥 200克/4枚入',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/c3f1f4ac04ace757bdd4985d933d54c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c3f1f4ac04ace757bdd4985d933d54c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c3f1f4ac04ace757bdd4985d933d54c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c3f1f4ac04ace757bdd4985d933d54c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c3f1f4ac04ace757bdd4985d933d54c5.jpg\\\"]','','香甜茶食，果腹优选',1,7,'http://yanxuan.nosdn.127.net/b2adc3fd9b84a289a1be03e8ee400e61.png','',0,0,'件',48.00,28.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1046001,'1046001','按动式三角中油笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/d43304129d1d77039689b9c116dd2218.png\\\", \\\"http://yanxuan.nosdn.127.net/d43304129d1d77039689b9c116dd2218.png\\\", \\\"http://yanxuan.nosdn.127.net/d43304129d1d77039689b9c116dd2218.png\\\", \\\"http://yanxuan.nosdn.127.net/d43304129d1d77039689b9c116dd2218.png\\\", \\\"http://yanxuan.nosdn.127.net/d43304129d1d77039689b9c116dd2218.png\\\"]','','进口笔尖，无毒油墨',1,8,'http://yanxuan.nosdn.127.net/74583e585825ecacb11f7c53d2021e00.png','',0,0,'支',28.90,8.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1046002,'1046002','直杆三角中性笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/c63cfb6cfda3959cb09e3dcfc1eef399.png\\\", \\\"http://yanxuan.nosdn.127.net/c63cfb6cfda3959cb09e3dcfc1eef399.png\\\", \\\"http://yanxuan.nosdn.127.net/c63cfb6cfda3959cb09e3dcfc1eef399.png\\\", \\\"http://yanxuan.nosdn.127.net/c63cfb6cfda3959cb09e3dcfc1eef399.png\\\", \\\"http://yanxuan.nosdn.127.net/c63cfb6cfda3959cb09e3dcfc1eef399.png\\\"]','','合金笔尖，高强度笔身',1,9,'http://yanxuan.nosdn.127.net/eb486cfe807c4fe5696aa59cbcf1f96a.png','',0,0,'支',29.90,9.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1046044,'1046044','美利奴羊毛盖毯设计师款',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/20289753360694c2787b3d65ce9377ac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/17b3b43e437cfe1c764710ff5d1834a5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1133086c5ee5994545ff68587ded4cb5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/72177689d24d3684d341bb38b94468fa.jpg\\\"]','','欧洲知名品牌设计师联合打造',1,34,'http://yanxuan.nosdn.127.net/2bfecfe58ea3ee0d554f2ed58e9ba30a.png','',0,0,'件',369.00,349.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1e6a7d46666cf41f62ae68b5fce159ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e6a7d46666cf41f62ae68b5fce159ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da60db9b1d6fdbd138ffd639ea5a7d96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da60db9b1d6fdbd138ffd639ea5a7d96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e10d5826f500d3921accdbcde3654ed4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e10d5826f500d3921accdbcde3654ed4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a0384e8fbb30e4f28a4eb63db3b570f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a0384e8fbb30e4f28a4eb63db3b570f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c105726991117504fafe0bfbd45b281e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c105726991117504fafe0bfbd45b281e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03e2b1bc1e51731ec5fc4077f3930c90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03e2b1bc1e51731ec5fc4077f3930c90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf095cc9dcd2e502cf189d8de3f19608.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf095cc9dcd2e502cf189d8de3f19608.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/884911b2fc49d0d40b05479f06513f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/884911b2fc49d0d40b05479f06513f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1f27e9690b91ab8b1a9eb14173d1258.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1f27e9690b91ab8b1a9eb14173d1258.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b8e25163aec2f41954112dc8a25c236.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b8e25163aec2f41954112dc8a25c236.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d1efb833b2c8d60d1f78d28f43bdbc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d1efb833b2c8d60d1f78d28f43bdbc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97d487110e5ba4f06c5200f92afb5d2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97d487110e5ba4f06c5200f92afb5d2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f791e35b8d26af8843b3ec85ee5b1ea2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f791e35b8d26af8843b3ec85ee5b1ea2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a3877e74b20978c91a78422710eda61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a3877e74b20978c91a78422710eda61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c47c9ccf32a82847317332654cffefbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c47c9ccf32a82847317332654cffefbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/660735bf422574c20d5e1de9a8412b68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/660735bf422574c20d5e1de9a8412b68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa0073b73e133fddd218cd873eb4704c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa0073b73e133fddd218cd873eb4704c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e08a269b051e91d3fcf3f5e1a819587.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e08a269b051e91d3fcf3f5e1a819587.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e6bef09f54ebcf9dfc739bed06ee884.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e6bef09f54ebcf9dfc739bed06ee884.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e91b06b37290a422433531a3c448fc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e91b06b37290a422433531a3c448fc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a860ec70f982f50981bec2e00e2c195.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a860ec70f982f50981bec2e00e2c195.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c9123297e0e183ee00a592430756e4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c9123297e0e183ee00a592430756e4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/745d0978c9fa4a5a4ceb0244f55f2456.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/745d0978c9fa4a5a4ceb0244f55f2456.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b56578bc472ea3fd1e5ac46fca6189b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b56578bc472ea3fd1e5ac46fca6189b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c606fa0c3704aacb37d6ddc10017337.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c606fa0c3704aacb37d6ddc10017337.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c9f3b7d40f4277a078a774bfb9d8e07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c9f3b7d40f4277a078a774bfb9d8e07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/628544b6dc30cd67c41dc9506df845a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/628544b6dc30cd67c41dc9506df845a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fef518af8f1e7b38a0eb1b28f4bb51a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fef518af8f1e7b38a0eb1b28f4bb51a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cda4010f9df50cf85c1f6b2c66739a1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cda4010f9df50cf85c1f6b2c66739a1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3081818ab418d732c80598a6528ed53b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3081818ab418d732c80598a6528ed53b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f47a15c1b0d754e3fb2e45db373ccc08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f47a15c1b0d754e3fb2e45db373ccc08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc890fd700609bcb80d4162573cc2b5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc890fd700609bcb80d4162573cc2b5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cfa435b515b0ab8cd99b6eb63ca5092f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cfa435b515b0ab8cd99b6eb63ca5092f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1048005,'1048005','日式色织水洗条纹抱枕',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/112dfb2b0d975c8d525230e91d0b8add.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7fe261a864417c0b78bca12b207678b5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d3491f2073d31d68af1dd5e050e54efb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/63721e6063a5ba7e218441efd011066e.jpg\\\"]','','色织面料，水洗工艺，柔软亲肤',1,5,'http://yanxuan.nosdn.127.net/ce980c16810a471dffff6aa8d7bac754.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/39afc6f165cf752e16c199b65ab61ee8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39afc6f165cf752e16c199b65ab61ee8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2635f2eb08e98687a132a97642d87de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2635f2eb08e98687a132a97642d87de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08b6bca750a85d833740e1f12e5a6216.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08b6bca750a85d833740e1f12e5a6216.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f61f9587dc8aec8330335da87dbb60ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f61f9587dc8aec8330335da87dbb60ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f22282ebbbeb664ba706e4f088c9db2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f22282ebbbeb664ba706e4f088c9db2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad7819c5597db9fce742cbc61aa53c72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad7819c5597db9fce742cbc61aa53c72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee4a43824784e660f44e16274c4717ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee4a43824784e660f44e16274c4717ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0eb752fd857fa1af74602afadabb0fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0eb752fd857fa1af74602afadabb0fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46290c0b824babab46ce73feb23a554d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46290c0b824babab46ce73feb23a554d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c34134e19df505b4b1b2277880bba2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c34134e19df505b4b1b2277880bba2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bce553f09f5146ba9209264c46e38ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bce553f09f5146ba9209264c46e38ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/732ed69a0539f4d972213ed64e5bcff0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/732ed69a0539f4d972213ed64e5bcff0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/147fcd503618a36a76ed792c6a2254b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/147fcd503618a36a76ed792c6a2254b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f68cea7d1e7dd23349f7c36e366cb6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f68cea7d1e7dd23349f7c36e366cb6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/852711207b87360d29289be16a76e5ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/852711207b87360d29289be16a76e5ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f46c1d0edb91be4fa7c2747b423c494.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f46c1d0edb91be4fa7c2747b423c494.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f2bc29d55899694b917c9991d0b1333.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f2bc29d55899694b917c9991d0b1333.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63d4fa2caa8bbd1d7e205e90fe176633.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63d4fa2caa8bbd1d7e205e90fe176633.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f885db84f7911c3c4abc9695f55f19f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f885db84f7911c3c4abc9695f55f19f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd0c5be6c986a60a577ab7fd4fa9796e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd0c5be6c986a60a577ab7fd4fa9796e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb0f814679347c4876f2ca30acd57f88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb0f814679347c4876f2ca30acd57f88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64b5936ea7e076885a7c1611d492aa57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64b5936ea7e076885a7c1611d492aa57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b503dd5b259a049dc3fffcabe6264c10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b503dd5b259a049dc3fffcabe6264c10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fb47a70640f6c252518a80a803bd362.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fb47a70640f6c252518a80a803bd362.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1837c9a132b1ca0ed52f76f935563b7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1837c9a132b1ca0ed52f76f935563b7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09e9cc037e909c934aba0b87c48914ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09e9cc037e909c934aba0b87c48914ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5c3a85ee4217386a8161016aa7727b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5c3a85ee4217386a8161016aa7727b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e666622ecebc8fc733a49c5ad7d16c3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e666622ecebc8fc733a49c5ad7d16c3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48f87049ad7e2492ae75da78b97cd6fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48f87049ad7e2492ae75da78b97cd6fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21cc4790d10496f2e73531c420fbb394.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21cc4790d10496f2e73531c420fbb394.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9510a74920b5589cba7af910774f8c0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9510a74920b5589cba7af910774f8c0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c69b713c98187890316668d10aa55c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c69b713c98187890316668d10aa55c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcafde6d38fd075c4ba6d0cc1e816314.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcafde6d38fd075c4ba6d0cc1e816314.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccdf51824645c27ab06e78faa85db7d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccdf51824645c27ab06e78faa85db7d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8096a502cac9f926d288cbbe8b8534fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8096a502cac9f926d288cbbe8b8534fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b2b9a1f8a1422e3975cbee85685672c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b2b9a1f8a1422e3975cbee85685672c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd6779619cc7ed6f2a4057526f0c579d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd6779619cc7ed6f2a4057526f0c579d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdef4d1620407043511daf2e97746f07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdef4d1620407043511daf2e97746f07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f30d798c772ea1599723c427c1d643b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f30d798c772ea1599723c427c1d643b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cfc9aae9304010e24d92b29220dc0b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cfc9aae9304010e24d92b29220dc0b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e20e47f1eaf643bc569ccb148781529.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e20e47f1eaf643bc569ccb148781529.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9beb4226eb47be1c16e872dd9281634.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9beb4226eb47be1c16e872dd9281634.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70d2d737fbf7fc5980604ea294942b41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70d2d737fbf7fc5980604ea294942b41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/496224b05a3054625b065de6aa769959.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/496224b05a3054625b065de6aa769959.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0671941e0dfb696d5392f174a949a13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0671941e0dfb696d5392f174a949a13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2df72e131e86e433d939776783a44db7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2df72e131e86e433d939776783a44db7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bea99ca3040befe69d4811e0ef9b226.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bea99ca3040befe69d4811e0ef9b226.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbc003f18889ab46a5a3a7e8698df351.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbc003f18889ab46a5a3a7e8698df351.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee0df8d583844e734273d73eb582a4a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee0df8d583844e734273d73eb582a4a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ea9467e6f4ef5c8f0812c1595704840.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ea9467e6f4ef5c8f0812c1595704840.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1051000,'1051000','Carat钻石炒锅30cm',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/fd939503a33960aea571c9f29d76053b.png\\\", \\\"http://yanxuan.nosdn.127.net/fd939503a33960aea571c9f29d76053b.png\\\", \\\"http://yanxuan.nosdn.127.net/fd939503a33960aea571c9f29d76053b.png\\\", \\\"http://yanxuan.nosdn.127.net/fd939503a33960aea571c9f29d76053b.png\\\", \\\"http://yanxuan.nosdn.127.net/fd939503a33960aea571c9f29d76053b.png\\\"]','','安全涂层，轻便无烟',1,7,'http://yanxuan.nosdn.127.net/e564410546a11ddceb5a82bfce8da43d.png','',0,0,'只',200.00,180.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1051001,'1051001','Carat钻石煎锅28cm',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/f0c000ef41a6c5d6bffa7cc8cbaf6e95.png\\\", \\\"http://yanxuan.nosdn.127.net/f0c000ef41a6c5d6bffa7cc8cbaf6e95.png\\\", \\\"http://yanxuan.nosdn.127.net/f0c000ef41a6c5d6bffa7cc8cbaf6e95.png\\\", \\\"http://yanxuan.nosdn.127.net/f0c000ef41a6c5d6bffa7cc8cbaf6e95.png\\\", \\\"http://yanxuan.nosdn.127.net/f0c000ef41a6c5d6bffa7cc8cbaf6e95.png\\\"]','','耐磨涂层，导热迅速',1,8,'http://yanxuan.nosdn.127.net/f53ed57d9e23fda7e24dfd0e0a50c5d1.png','',0,0,'只',179.00,159.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1051002,'1051002','Carat钻石汤锅24cm',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/39ca3e8d764d73e63a3c6592574bec79.png\\\", \\\"http://yanxuan.nosdn.127.net/39ca3e8d764d73e63a3c6592574bec79.png\\\", \\\"http://yanxuan.nosdn.127.net/39ca3e8d764d73e63a3c6592574bec79.png\\\", \\\"http://yanxuan.nosdn.127.net/39ca3e8d764d73e63a3c6592574bec79.png\\\", \\\"http://yanxuan.nosdn.127.net/39ca3e8d764d73e63a3c6592574bec79.png\\\"]','','安全涂层，锁热保温',1,6,'http://yanxuan.nosdn.127.net/56f4b4753392d27c0c2ccceeb579ed6f.png','',0,0,'只',248.00,228.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1051003,'1051003','Carat钻石奶锅18cm',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/1ae5526c8ef9c1be5decb41986827d60.png\\\", \\\"http://yanxuan.nosdn.127.net/1ae5526c8ef9c1be5decb41986827d60.png\\\", \\\"http://yanxuan.nosdn.127.net/1ae5526c8ef9c1be5decb41986827d60.png\\\", \\\"http://yanxuan.nosdn.127.net/1ae5526c8ef9c1be5decb41986827d60.png\\\", \\\"http://yanxuan.nosdn.127.net/1ae5526c8ef9c1be5decb41986827d60.png\\\"]','','轻便节能，易于清洗',1,9,'http://yanxuan.nosdn.127.net/6a54ccc389afb2459b163245bbb2c978.png','',0,0,'只',168.00,148.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1055012,'1055012','300根全棉羽丝绒抱枕芯',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/55d2d990f71f618146238f5bbf36d650.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4663facadd6c50f7ff11cd92b3cd8e7a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1c8123fb59473106eb829b6001c59701.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0eeb46f412322fe591fcf134b877c74f.jpg\\\"]','','仪征3D填充，充实的满足感',1,10,'http://yanxuan.nosdn.127.net/3d437c8d68e2ec3f3dd61001bf98f16e.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/07f2717762df73a6a697bb5399da6376.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07f2717762df73a6a697bb5399da6376.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e202bdb4be8f36bda118cf7265d00f65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e202bdb4be8f36bda118cf7265d00f65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b5766cf268d327a3518ee5429c4c4e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b5766cf268d327a3518ee5429c4c4e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f4e4356d070dbca22cf19a60a2447ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f4e4356d070dbca22cf19a60a2447ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da3a3e22d355ccf82235603507f3a083.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da3a3e22d355ccf82235603507f3a083.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be789777e5e1381bb7b62d26fcfb619e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be789777e5e1381bb7b62d26fcfb619e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c48e78aa87b8e81eab6a60de74d1c19c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c48e78aa87b8e81eab6a60de74d1c19c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f772f4990d8ae0acac660acf25be2d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f772f4990d8ae0acac660acf25be2d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f1bd930fcb57e79a4ce2a1c4a0f2f4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f1bd930fcb57e79a4ce2a1c4a0f2f4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f481e1e9b8c4e728f4f7225af52a335e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f481e1e9b8c4e728f4f7225af52a335e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fca69439b053b510724cf6834856a2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fca69439b053b510724cf6834856a2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a285ec5ac9c84a6616feca7301f515c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a285ec5ac9c84a6616feca7301f515c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52435458ac1c48fb45f4a9888052b5b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52435458ac1c48fb45f4a9888052b5b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01301675d00e13d21588d0bbb72e1745.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01301675d00e13d21588d0bbb72e1745.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63627106753f764733cf47047e887d1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63627106753f764733cf47047e887d1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15ecf40c8045513fe6a1303fe7d4383f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15ecf40c8045513fe6a1303fe7d4383f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8ef113464ff066662e639868e6eda28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8ef113464ff066662e639868e6eda28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0de1977400dfda99d0601e1c12fdbf1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0de1977400dfda99d0601e1c12fdbf1e.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1055016,'1055016','日式纯棉针织条纹抱枕',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/16fe67152585f306df7de145af71315d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1ade16619d245b1edcd2179321e6387b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/688a1f344a0d898d4ef9c834f236addc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7d8801b01b1c53cbdfc07678099ebe80.jpg\\\"]','','亲肤舒适，宛如妈妈的怀抱',1,8,'http://yanxuan.nosdn.127.net/23e0203f1512f33e605f61c28fa03d2d.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/4060bcde249c2501e5d95cfa0888a6c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4060bcde249c2501e5d95cfa0888a6c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afebd965217cfdbc238de9252c7d6e37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afebd965217cfdbc238de9252c7d6e37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b017649229c04dad59c312b3fe0cf7be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b017649229c04dad59c312b3fe0cf7be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e02d923a92d5bef4b264381cffd5d813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e02d923a92d5bef4b264381cffd5d813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0447366651e06dde345c907e12315c73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0447366651e06dde345c907e12315c73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5fdb8a54a2bc2285d1136bf9a2a674f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5fdb8a54a2bc2285d1136bf9a2a674f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1836dd3b75444a3ce42dc49fa5ee513.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1836dd3b75444a3ce42dc49fa5ee513.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f4740ae47c3ca8465e1ea6ec0a43563.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f4740ae47c3ca8465e1ea6ec0a43563.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f9f33a85933788209e6195468044387.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f9f33a85933788209e6195468044387.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6ceab4330e0dd218db3c16582465be1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6ceab4330e0dd218db3c16582465be1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dea7df197ba1e5ce5e9646aea43f798.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dea7df197ba1e5ce5e9646aea43f798.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/022e305413c9aa8e8db30a46a2a65286.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/022e305413c9aa8e8db30a46a2a65286.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cce2571a59a0bc39784d61c4134f9458.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cce2571a59a0bc39784d61c4134f9458.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1f287dab80d1b11450051de6c119611.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1f287dab80d1b11450051de6c119611.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7b6318cb7623349542ba971cf1887da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7b6318cb7623349542ba971cf1887da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf56a8ae91e07c91d70cf7b88cb59676.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf56a8ae91e07c91d70cf7b88cb59676.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76aebdbc4a150837b2dcaa2293c85cc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76aebdbc4a150837b2dcaa2293c85cc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/902fb302066a65488ed1f6da3a16ed66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/902fb302066a65488ed1f6da3a16ed66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd9df2852e760940b0ab9e599320ed35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd9df2852e760940b0ab9e599320ed35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ad1c6c9e619df09685cf9596339d714.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ad1c6c9e619df09685cf9596339d714.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83e54a3b9d13dc3c67e880c02e63167c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83e54a3b9d13dc3c67e880c02e63167c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f6b75fe4ff9ae0b976c8c85bbf0a719.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f6b75fe4ff9ae0b976c8c85bbf0a719.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82f850ea52ca3e7048283b3f8a65c616.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82f850ea52ca3e7048283b3f8a65c616.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bd4faa4898d9ea3c56fba9c5749cc62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bd4faa4898d9ea3c56fba9c5749cc62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6488dedf51c6e5a90fc5f156a4e8416b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6488dedf51c6e5a90fc5f156a4e8416b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc667ddb5116ceaf329f55982da36bb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc667ddb5116ceaf329f55982da36bb1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfbfde943773a0258fa81b84d710d36e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfbfde943773a0258fa81b84d710d36e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60d64bb0ac51346dc39d266beacdb846.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60d64bb0ac51346dc39d266beacdb846.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c50c0fd364d6b9a8646d0da75ce48f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c50c0fd364d6b9a8646d0da75ce48f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b24da9df819efdf9e110bb2228eadf0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b24da9df819efdf9e110bb2228eadf0d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cbbd9ec8dd41be2b35bf49842b67d86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cbbd9ec8dd41be2b35bf49842b67d86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d5bb53b92ed48f3f81980e41b51c0fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d5bb53b92ed48f3f81980e41b51c0fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d75a8fd77357f9a74a36fd7bfa7cebed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d75a8fd77357f9a74a36fd7bfa7cebed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2dd8069e6739d732a53c25c74c0b2a89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2dd8069e6739d732a53c25c74c0b2a89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7b4e172f8fd168e28854c3d8d04c56f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7b4e172f8fd168e28854c3d8d04c56f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8b981b58ffb3e0a75916def11e45493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8b981b58ffb3e0a75916def11e45493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fb12dd3d12c8828a5cf2e16f17a8f27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fb12dd3d12c8828a5cf2e16f17a8f27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8df57201eb9f5e7b576a6ccc31286e8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8df57201eb9f5e7b576a6ccc31286e8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f86f20ab83206abfdd682418e3cd3ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f86f20ab83206abfdd682418e3cd3ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c64ea783c9bd6dd2cb51b9978769edb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c64ea783c9bd6dd2cb51b9978769edb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/104dca8bdfb6413fed5379a5b04eec10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/104dca8bdfb6413fed5379a5b04eec10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cfb7760b81f0a82bdbae5079bfcd5ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cfb7760b81f0a82bdbae5079bfcd5ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c6e09984c0599b5205f4d099cd5cfcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c6e09984c0599b5205f4d099cd5cfcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e32f3a0bbc7ba3ec49b69fa89ba7da39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e32f3a0bbc7ba3ec49b69fa89ba7da39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/408bf6b2815efea1020278ff57204667.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/408bf6b2815efea1020278ff57204667.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6707b10b7a14f7d2e7487f30a687cfb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6707b10b7a14f7d2e7487f30a687cfb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c4977d2ce8691f85575698990c13c3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c4977d2ce8691f85575698990c13c3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22213164e3ce12c23260519cc5f2dd7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22213164e3ce12c23260519cc5f2dd7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9c8f7fda81f79cec8e75404386677c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9c8f7fda81f79cec8e75404386677c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1e5093b54f817ed1906fc58e7494790.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1e5093b54f817ed1906fc58e7494790.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/162452d2cb5ad3348862d5b1da7348c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/162452d2cb5ad3348862d5b1da7348c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8f6de9bc947bed7d5cebfe1f49a786d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8f6de9bc947bed7d5cebfe1f49a786d.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1055022,'1055022','磨砂杆直杆中性笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/57c9250bdc9876a1c4878f9256632d48.png\\\", \\\"http://yanxuan.nosdn.127.net/57c9250bdc9876a1c4878f9256632d48.png\\\", \\\"http://yanxuan.nosdn.127.net/57c9250bdc9876a1c4878f9256632d48.png\\\", \\\"http://yanxuan.nosdn.127.net/57c9250bdc9876a1c4878f9256632d48.png\\\", \\\"http://yanxuan.nosdn.127.net/57c9250bdc9876a1c4878f9256632d48.png\\\"]','','高韧笔杆，书写不疲惫',1,7,'http://yanxuan.nosdn.127.net/c7c74a96eacb29455dbf557b840eaaf5.png','',0,0,'件',24.90,4.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1056002,'1056002','男式玩色内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/fee5c31b4010b91ecc88e971b31f85e0.png\\\", \\\"http://yanxuan.nosdn.127.net/fee5c31b4010b91ecc88e971b31f85e0.png\\\", \\\"http://yanxuan.nosdn.127.net/fee5c31b4010b91ecc88e971b31f85e0.png\\\", \\\"http://yanxuan.nosdn.127.net/fee5c31b4010b91ecc88e971b31f85e0.png\\\", \\\"http://yanxuan.nosdn.127.net/fee5c31b4010b91ecc88e971b31f85e0.png\\\"]','','德国工艺，多色随搭',1,7,'http://yanxuan.nosdn.127.net/922fdbe007033f7a88f7ebc57c3d1e75.png','',0,0,'条',79.00,59.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1057036,'1057036','日式纯色水洗亚麻抱枕',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/bec107bf0cc86dcf90fa084584d68c76.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d5da1d907ce3e5dcc8cf72e925d9494b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2f82661892afb0fd5efa8ff343f9941e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fd1d9edc261fb68844c0fb65f0c1a4a4.jpg\\\"]','','水洗亚麻，透气亲肤',1,6,'http://yanxuan.nosdn.127.net/8a9ee5ba08929cc9e40b973607d2f633.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/6b69f7597ccffd27d77467d9d04eb294.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b69f7597ccffd27d77467d9d04eb294.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a89ca371ef07355c1feb293db961bd30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a89ca371ef07355c1feb293db961bd30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2076e89c5f8fde4f44f918bd02d18eb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2076e89c5f8fde4f44f918bd02d18eb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c9111e4dcc13cb41db98f68086cc620.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c9111e4dcc13cb41db98f68086cc620.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f0645abcf883e7a863f32ce95f3c26b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f0645abcf883e7a863f32ce95f3c26b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76a2b12f2d0f48f268d18b0ca0d1d6bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76a2b12f2d0f48f268d18b0ca0d1d6bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a91f75159867f33a91f4e9992e00afa1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a91f75159867f33a91f4e9992e00afa1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93de61256a8ff3a8aa4bb90847ff454e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93de61256a8ff3a8aa4bb90847ff454e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f611f99bea2920881e1421c110970234.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f611f99bea2920881e1421c110970234.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a292339423f141ad5d7a4011ea316956.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a292339423f141ad5d7a4011ea316956.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2045ae4f861d9eae6af351b9d82c9239.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2045ae4f861d9eae6af351b9d82c9239.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/398718a6d579c4af5f255909283e44a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/398718a6d579c4af5f255909283e44a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5be95e2db627908d23605fe042af2937.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5be95e2db627908d23605fe042af2937.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50a4fa0f67aa85dfaad36695225fe2f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50a4fa0f67aa85dfaad36695225fe2f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c825e297cfbaaae632146a55c61dc3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c825e297cfbaaae632146a55c61dc3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/261c7819e7e9ac165e64cae88a59f70c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/261c7819e7e9ac165e64cae88a59f70c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec83f40d91fcc79f59a2479dffeb4565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec83f40d91fcc79f59a2479dffeb4565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26f3e85402086b7d261a650e244dc676.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26f3e85402086b7d261a650e244dc676.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dccb68f0d97112d245ab1924744b94b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dccb68f0d97112d245ab1924744b94b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaba69949efd7ed85e72071f4ade4945.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaba69949efd7ed85e72071f4ade4945.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f23300061e5cf871e86a51f0012e885.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f23300061e5cf871e86a51f0012e885.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a55eedca057e0c973549ac8f13b47800.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a55eedca057e0c973549ac8f13b47800.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abf16e831285e3d97dbb60a3162e7968.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abf16e831285e3d97dbb60a3162e7968.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9390c8dab9fc7d8c27ac9410eb0340c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9390c8dab9fc7d8c27ac9410eb0340c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8feb2be5afec5abe439cf1b42683373f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8feb2be5afec5abe439cf1b42683373f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/beb7620d0f685ab9c3af7ed18284b29e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/beb7620d0f685ab9c3af7ed18284b29e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f70ceed2078d44d747a9ce369feee9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f70ceed2078d44d747a9ce369feee9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5469e219bd5347568337746b257f094e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5469e219bd5347568337746b257f094e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a177a6b6e58580809330895ebdbaff6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a177a6b6e58580809330895ebdbaff6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9db0090d56ab757babb2ba661726cbe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9db0090d56ab757babb2ba661726cbe3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6363637e0dd2fc670745c217b2a5cbfc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6363637e0dd2fc670745c217b2a5cbfc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1af1bde98f1497f591f62bff99ccca54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1af1bde98f1497f591f62bff99ccca54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69d034b353ae2e6e30afb6c21483690f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69d034b353ae2e6e30afb6c21483690f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e29d6ac5ed040d63847ca456a179d43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e29d6ac5ed040d63847ca456a179d43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29e460fba57f67cd83121f6cb917cfbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29e460fba57f67cd83121f6cb917cfbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16090c02f4d4b76c6be82d98e489586e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16090c02f4d4b76c6be82d98e489586e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c840eb66cf002227c52a13fbe55f657b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c840eb66cf002227c52a13fbe55f657b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16f65265b0942a60f3241704dc29be13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16f65265b0942a60f3241704dc29be13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54a63da54b4e80867d8cd92d1ea9576e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54a63da54b4e80867d8cd92d1ea9576e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebd0b906076850983e5a2aae9f667ce7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebd0b906076850983e5a2aae9f667ce7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbf32cdc82643a85c12ff05ea88088ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbf32cdc82643a85c12ff05ea88088ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca6e3ccc3725c3f58338b62a5a0655d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca6e3ccc3725c3f58338b62a5a0655d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ef02962e6155f811566aad168dabbec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ef02962e6155f811566aad168dabbec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/832735166071f05288ffd347dff58ee6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/832735166071f05288ffd347dff58ee6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fc490c4e9a0a0fa0affd317b8526f4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fc490c4e9a0a0fa0affd317b8526f4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b05f975f16c09f106c81533c1a249b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b05f975f16c09f106c81533c1a249b0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064000,'1064000','清新条纹开放式宠物窝',1017000,1015000,'[\\\"http://yanxuan.nosdn.127.net/d37918aa7193ac6b593f312b521468f0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/31b03320d8a2d98ba118af4bb9d95c27.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdf49298d942c0326b544bb4cbe68fef.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4a33476bcd469d4e94d2d400c738de04.jpg\\\"]','','清凉触感，耐抓耐磨',1,5,'http://yanxuan.nosdn.127.net/ebe118f94ddafe82c4a8cd51da6ff183.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/8c548cb27c126404efe2450f2d27b499.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c548cb27c126404efe2450f2d27b499.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67c38eb5939bfe33d13b4b336633df66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67c38eb5939bfe33d13b4b336633df66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1593939bfdc309df4faeda6cc13795ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1593939bfdc309df4faeda6cc13795ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19adc7cd503aa53cadbcb5719cfee8e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19adc7cd503aa53cadbcb5719cfee8e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb5ca4e6f1cd024a10b9bc37b2db396b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb5ca4e6f1cd024a10b9bc37b2db396b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5329ce259b9749db939845280eb2443.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5329ce259b9749db939845280eb2443.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcbd4101079f3e86ace47f581c52d12d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcbd4101079f3e86ace47f581c52d12d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cd95e21492d1197182ceeacdb3a9973.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cd95e21492d1197182ceeacdb3a9973.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/681b12dba20b3ec4cc8220907453411b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/681b12dba20b3ec4cc8220907453411b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2d4d84fd984e16caf44b2a0418f8427.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2d4d84fd984e16caf44b2a0418f8427.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064002,'1064002','秋冬加厚条纹宠物窝',1017000,1015000,'[\\\"http://yanxuan.nosdn.127.net/874a3f226d63546ca28f774cd9242251.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5e728b405af9d32114162800ffa67d8b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/eb83d490f564fd34b18b65583d0658d1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/af4347f2c2333dfbf654d6b5e549f9e8.jpg\\\"]','','时尚牛仔，加厚温暖',1,6,'http://yanxuan.nosdn.127.net/48dbfe207b2203ef45055dcc9cedbe60.png','',0,0,'件',89.00,69.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/86c5f5a3459ef9c80005b8aa166978d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86c5f5a3459ef9c80005b8aa166978d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75523f35d5f7241e050e947327dcf505.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75523f35d5f7241e050e947327dcf505.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8806274559067d9068029a13170201b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8806274559067d9068029a13170201b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3e9ab7fd7b25f737fb36eabf5e12a7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3e9ab7fd7b25f737fb36eabf5e12a7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36f48ab394369b521d10d4a88234673c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36f48ab394369b521d10d4a88234673c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5166fb4e87f789e975216805a7b7adaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5166fb4e87f789e975216805a7b7adaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/052e9fc4b166d8721274d28d61d4e126.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/052e9fc4b166d8721274d28d61d4e126.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/173830764375470fc8f29d97fbe3da72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/173830764375470fc8f29d97fbe3da72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ec75067b43329566a21963dc53e448d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ec75067b43329566a21963dc53e448d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e497b21b1e274a3bff78099cbb934eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e497b21b1e274a3bff78099cbb934eb.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7bda641422377741f5384f006fd52a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7bda641422377741f5384f006fd52a4.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064003,'1064003','六边形南瓜式宠物窝',1017000,1015000,'[\\\"http://yanxuan.nosdn.127.net/b2de2ebcee090213861612909374f9f8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3b905dd63fc81b0359a2716fe2a48b65.jpg\\\", \\\"http://yanxuan.nosdn.127.net/dbb11f9a0277b957ee7fa1c82f77d0bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9e2f6edb8edfedb03a2e3e6cdfe37b51.jpg\\\"]','','给萌宠柔软包裹的归家感',1,4,'http://yanxuan.nosdn.127.net/58ed94b63b39339e7814f1339013793c.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/44f4fe5b43365884131b07c25b3c54ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44f4fe5b43365884131b07c25b3c54ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/beabfe6fd0717daa3544ac7c2d82b430.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/beabfe6fd0717daa3544ac7c2d82b430.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25467804bf2eed0d07f171c10f798d2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25467804bf2eed0d07f171c10f798d2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fced8c058df228bed15bc8822fa871c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fced8c058df228bed15bc8822fa871c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3eea3bd19f75f01a7ed424be3aa9d42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3eea3bd19f75f01a7ed424be3aa9d42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e30076799805a678af405dce6ccf6d62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e30076799805a678af405dce6ccf6d62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac4cdbb579512a23287b4a43639b5e34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac4cdbb579512a23287b4a43639b5e34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cf8b27e7c89f0a46cbd330bb81ab1a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cf8b27e7c89f0a46cbd330bb81ab1a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3021babd417d3b3791db8b9684c9a07e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3021babd417d3b3791db8b9684c9a07e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a72b172bf0e8ad6d0d6735750e1d375c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a72b172bf0e8ad6d0d6735750e1d375c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064004,'1064004','方形封闭式宠物窝',1017000,1015000,'[\\\"http://yanxuan.nosdn.127.net/0ce6d033a3550d293737007a088026e1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/510b4711672df2d9b2d83e1505cdc4a3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d7e4f07329f9ff163ae0e37512ff56d3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b5cfb249243d2e0d7704c4b84d71e4c1.jpg\\\"]','','封闭式设计猫咪独享',1,7,'http://yanxuan.nosdn.127.net/337da7094c1df295ca0f0b8baa55b2d5.png','',0,0,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/09f022af55341d80d5d3ad620ce6d779.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09f022af55341d80d5d3ad620ce6d779.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d75ea4c580effd435ed00f652c01a778.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d75ea4c580effd435ed00f652c01a778.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fad82d53a0494c625608786f5931950.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fad82d53a0494c625608786f5931950.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a1d8a1cb8a57ae7921f34a9d761f3aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a1d8a1cb8a57ae7921f34a9d761f3aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/261670eea6a48c7e307393ce295e2ce5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/261670eea6a48c7e307393ce295e2ce5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11bfc68005a0ce9b80e01f614a259af7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11bfc68005a0ce9b80e01f614a259af7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/688f822cf34c656367cccfb0d9f72151.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/688f822cf34c656367cccfb0d9f72151.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3721906d7c6c0c30193d4778eff9e4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3721906d7c6c0c30193d4778eff9e4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/090e9c28dc2736a1246ef914e35634c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/090e9c28dc2736a1246ef914e35634c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f31d497ae028ff2c2e933d712ccc055d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f31d497ae028ff2c2e933d712ccc055d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a424b9e51b854c4abf61b8c1c1cdf1aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a424b9e51b854c4abf61b8c1c1cdf1aa.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7660d03152dea988256eac3be92541b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7660d03152dea988256eac3be92541b3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064006,'1064006','3D纯棉护颈加翼记忆枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/d129f712c8aac8835695f61980c621c0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4b6641252b78dbcf1572a8995f9666d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/11d466acd868271a6b6c04aa80013232.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a40d02a081b575d8d01808aab3eb2720.jpg\\\"]','','深色面料，安睡护颈',1,11,'http://yanxuan.nosdn.127.net/35306b8e65932dd28a5628d0bb44a044.png','',0,0,'件',149.00,129.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/5ea4edcd9cbd70f9d347a0191f5ac1e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ea4edcd9cbd70f9d347a0191f5ac1e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ffee41deb5a0b0017d5ac3f7feda520.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ffee41deb5a0b0017d5ac3f7feda520.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fa38f7a466b792826d03a7fc094b205.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fa38f7a466b792826d03a7fc094b205.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dc78b172a7818190aee72bf7c5a55c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dc78b172a7818190aee72bf7c5a55c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/086e2994f14897353fa9413f886e88f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/086e2994f14897353fa9413f886e88f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e46cdebba21e08125e9317c32679ff9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e46cdebba21e08125e9317c32679ff9f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86ebedb440da6e2af676554c39bfd653.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86ebedb440da6e2af676554c39bfd653.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b6728641afdc97f2fbb50c2b886c355.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b6728641afdc97f2fbb50c2b886c355.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a20cb1abd9e46768d63c0a03e780b921.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a20cb1abd9e46768d63c0a03e780b921.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/974d424a27d3502b203e66ad5b708e62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/974d424a27d3502b203e66ad5b708e62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c2df5c9e231ed917745ab770afe668d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c2df5c9e231ed917745ab770afe668d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc6ac3894803fe0030141852bd639558.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc6ac3894803fe0030141852bd639558.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaedff798dfbe28754bad944434ef654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaedff798dfbe28754bad944434ef654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d68bb36c8d47486b64e1551540887da7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d68bb36c8d47486b64e1551540887da7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35a5871cbc972b340191c6f558f4eb5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35a5871cbc972b340191c6f558f4eb5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7256ce7e7549fa545d8088e88cb9a200.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7256ce7e7549fa545d8088e88cb9a200.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/843e2e7ffd5d80ee3a714df546e5d76b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/843e2e7ffd5d80ee3a714df546e5d76b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc7115f361220617b7d66be8a76346cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc7115f361220617b7d66be8a76346cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/876075252dfc043c15a86e6d2415b4c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/876075252dfc043c15a86e6d2415b4c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cf1cdc2efd85cb5934515ad68975300.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cf1cdc2efd85cb5934515ad68975300.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df538abb58fb3ff667f919f9688e68c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df538abb58fb3ff667f919f9688e68c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e85c449ea1794d6925af9187e1dde6d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e85c449ea1794d6925af9187e1dde6d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c628d454aba737cd8fbd5bb52bb41a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c628d454aba737cd8fbd5bb52bb41a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e3b34066432dd830d7dea59f5172622.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e3b34066432dd830d7dea59f5172622.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8edc3903956456e4fbbd6844d1843079.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8edc3903956456e4fbbd6844d1843079.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ae7b238aa8be68f915b27c064fc1234.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ae7b238aa8be68f915b27c064fc1234.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7d59a45d54cbeb7fd3d4e3a9f6f20de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7d59a45d54cbeb7fd3d4e3a9f6f20de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/060287eacf5855100691a931615753a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/060287eacf5855100691a931615753a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/154e9d3945f092141030f9e0ffe00d75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/154e9d3945f092141030f9e0ffe00d75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/538caa5366b10fce92532c4094be7b41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/538caa5366b10fce92532c4094be7b41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e08d88f1f11877e188f63d9abe319e50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e08d88f1f11877e188f63d9abe319e50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8b31045cb0c2627f7f31bd6b0900482.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8b31045cb0c2627f7f31bd6b0900482.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33e654f6e06a9b39982f73ce9fbffecd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33e654f6e06a9b39982f73ce9fbffecd.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064007,'1064007','3D纯棉护颈双人记忆枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/08d319bdd8632420431ff35f23b3578c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/67dd8f238eb459a745094c2d6cba0499.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4622b31990831f1bfc9116ced8f4e5c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9931432a7e088a9cd9e62839f4a8c3cd.jpg\\\"]','','纯棉呵护，属于你我的记忆',1,12,'http://yanxuan.nosdn.127.net/d7bd87f8cc1965b25be33a8aad53812b.png','',0,0,'件',269.00,249.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/412aea28b2b2a73c2c72d6727cf393a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/412aea28b2b2a73c2c72d6727cf393a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4a0702b3c4f283600ba6d0cf789f7de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4a0702b3c4f283600ba6d0cf789f7de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/730b0efa8afa256d23501ec96a5e2ddd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/730b0efa8afa256d23501ec96a5e2ddd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81642b7941c7b8bdbdc4dc77ffcc5578.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81642b7941c7b8bdbdc4dc77ffcc5578.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/593d154ce6d6f420331932e6794e991b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/593d154ce6d6f420331932e6794e991b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c2516ab2aef32792a69942c292e813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c2516ab2aef32792a69942c292e813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3c8f152cc56156cd8f4a5a98acf43b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3c8f152cc56156cd8f4a5a98acf43b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9665043bbe3711d5d3ea3cab77eddd2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9665043bbe3711d5d3ea3cab77eddd2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9096c64c682e547fbdaf1b289196ed5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9096c64c682e547fbdaf1b289196ed5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4beee3ba8d300d83e2c6480773c5a972.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4beee3ba8d300d83e2c6480773c5a972.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cbff77e1a0e2db87e173257cd99e8e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cbff77e1a0e2db87e173257cd99e8e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b35b8cbd427cf60ebba8dcce0c28b539.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b35b8cbd427cf60ebba8dcce0c28b539.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4c24df5c03097c024198509c61d13c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4c24df5c03097c024198509c61d13c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46d41a03a6e247db80941864feb08d10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46d41a03a6e247db80941864feb08d10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0949c665b92f97cd784c1f987be48f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0949c665b92f97cd784c1f987be48f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd0857dbfa145f284871ea82b0ce5bdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd0857dbfa145f284871ea82b0ce5bdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce93e3abde3c15477d40295b53608327.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce93e3abde3c15477d40295b53608327.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/330c817b824269d069e49545ab001861.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/330c817b824269d069e49545ab001861.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cc67bcfe20910e921b5125282f8f781.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cc67bcfe20910e921b5125282f8f781.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06167a2aa51379b28bd2a3b74f7c6e3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06167a2aa51379b28bd2a3b74f7c6e3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50f9908d4e3cbbafd98608dda4546f4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50f9908d4e3cbbafd98608dda4546f4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d11343ac19faac774685171bbe16968.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d11343ac19faac774685171bbe16968.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/068b8d329e8199f4e8b1a9690c3bc14c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/068b8d329e8199f4e8b1a9690c3bc14c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e21f0029ccbbd476c03fd1a019b422a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e21f0029ccbbd476c03fd1a019b422a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20ca6208612904cbc2991878940a116d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20ca6208612904cbc2991878940a116d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/593d99720e59b5833d5a7b0628cdf808.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/593d99720e59b5833d5a7b0628cdf808.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/444772cbd5f5d7345161d7ec0f2dd15a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/444772cbd5f5d7345161d7ec0f2dd15a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5028a4c384c1f978b2823511711ac74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5028a4c384c1f978b2823511711ac74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70b25a0d4f606bea16d24faabac5dc58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70b25a0d4f606bea16d24faabac5dc58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d8acaaea02d7bd40b3b61db2481356f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d8acaaea02d7bd40b3b61db2481356f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddbc782913dc6fb3cc1b08899995edc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddbc782913dc6fb3cc1b08899995edc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81a914fb23780ee53e722d570352d4e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81a914fb23780ee53e722d570352d4e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c45103aa5110765ad12a8e6343f161f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c45103aa5110765ad12a8e6343f161f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71f0b88b4ed59f6d3bb6093270b2047e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71f0b88b4ed59f6d3bb6093270b2047e.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064021,'1064021','清欢日式可调节台灯',1008016,0,'[\\\"http://yanxuan.nosdn.127.net/fbe15281f89334032ab69e4e6751da64.jpg\\\", \\\"http://yanxuan.nosdn.127.net/997b3ceebb607dde42a17e320a830495.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4b8d97703408cac441e0e0f47f8494da.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b827d1d35e69f6e96e8b99889d322f57.jpg\\\"]','','木铁结合，全体可调节',1,3,'http://yanxuan.nosdn.127.net/c83a3881704094ddd3970099ca77d115.png','',0,0,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/15e1d839714a67bff57259d61d7ca2e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15e1d839714a67bff57259d61d7ca2e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43ba9bbc931f954e0aaeb90631a179ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43ba9bbc931f954e0aaeb90631a179ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac5ca160c90c1a700160d5d024ad611b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac5ca160c90c1a700160d5d024ad611b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f2d157d83955d5c616dc3d647da6f66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f2d157d83955d5c616dc3d647da6f66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2ee5af100a5432f0614e9717196787e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2ee5af100a5432f0614e9717196787e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91fb28c19d495e47797ef250940ab618.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91fb28c19d495e47797ef250940ab618.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f37742eed13ea12d8c341e1e3b988e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f37742eed13ea12d8c341e1e3b988e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ff15b419a0248b7b53bd60286067766.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ff15b419a0248b7b53bd60286067766.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21c4dacdc844da911e43eaac0975908a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21c4dacdc844da911e43eaac0975908a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f8741dd387c51378f78bdbf65856a41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f8741dd387c51378f78bdbf65856a41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbe9726936999c62ac8bce3b620cd045.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbe9726936999c62ac8bce3b620cd045.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d12ad2de3cb646e76380c064ccfe038f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d12ad2de3cb646e76380c064ccfe038f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1064022,'1064022','清欢日式可调节落地灯',1008016,0,'[\\\"http://yanxuan.nosdn.127.net/42b2a421dd83bcf26162b044ff363769.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0e38e0c1b48d36865d8303988631cb9c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4ddffcd3a434d9a11c6499dd88f7587e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d9ec4d2b23122e2c234bfec9a864cb67.jpg\\\"]','','便易调节，风格百搭',1,2,'http://yanxuan.nosdn.127.net/a9c155e26d09e3c92b623f0472ed674a.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/4fa5176b8bbfd702b44357c95f8a044b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fa5176b8bbfd702b44357c95f8a044b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd236663c583e2e1ae6cb94d12a8af00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd236663c583e2e1ae6cb94d12a8af00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/494586609ad676174c98218cc96e061b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/494586609ad676174c98218cc96e061b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e57043896c48d2b71796d375a2b30b08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e57043896c48d2b71796d375a2b30b08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f041fa43b81139eaa3034cc67e782980.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f041fa43b81139eaa3034cc67e782980.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/791780fa3b258fb5a9a708fb9e372ab7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/791780fa3b258fb5a9a708fb9e372ab7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c17e21c47b053843da3dd5a9c7c8d23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c17e21c47b053843da3dd5a9c7c8d23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fc69c1432555238f08d0501fe0f0326.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fc69c1432555238f08d0501fe0f0326.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3c503643ce94cf565405714d7ebf1dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3c503643ce94cf565405714d7ebf1dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a4c5f3c5dcfccd2891d70c005adceb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a4c5f3c5dcfccd2891d70c005adceb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23a01690993a30f54ce5f0e28335dfaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23a01690993a30f54ce5f0e28335dfaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44fc7b7c874bca097c9b29c362de9195.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44fc7b7c874bca097c9b29c362de9195.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/036b10c6d08a1d58708e5cd0bb2adb30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/036b10c6d08a1d58708e5cd0bb2adb30.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1065004,'1065004','悦己日式木质落地镜',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/3ca2cf7fcfb2bf2b9eba22157a636344.jpg\\\", \\\"http://yanxuan.nosdn.127.net/95d190d1f69187f02385ebc493342cb8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/954b84c81b137c4cf15c93d21d4e4945.jpg\\\", \\\"http://yanxuan.nosdn.127.net/38d3e733df9a3c7dc2b47f4895fe36cb.jpg\\\"]','','流畅线条，日式简约',1,5,'http://yanxuan.nosdn.127.net/05977cf923857db0c44b405bd87b096b.png','',0,0,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/071505a555d7af3302888633ecf1a333.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/071505a555d7af3302888633ecf1a333.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63af8dab1db0b12a52eb57c7cdd13907.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63af8dab1db0b12a52eb57c7cdd13907.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e12daa804d477c788dc3fde7cbbbcf9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e12daa804d477c788dc3fde7cbbbcf9c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1774e70b84d5649c3f59160366a8be2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1774e70b84d5649c3f59160366a8be2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bc88b8ff219bbbb9c314a60a539ab76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bc88b8ff219bbbb9c314a60a539ab76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/528a4a9baf15d763365769999e787564.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/528a4a9baf15d763365769999e787564.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afdc632bcb0604fb9a2dc692c6834c4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afdc632bcb0604fb9a2dc692c6834c4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38c34f66c7ec5ca66addf09ae943a613.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38c34f66c7ec5ca66addf09ae943a613.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/982421fefa534064491077cfb8386113.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/982421fefa534064491077cfb8386113.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de1abde1a9677876e9c376d931ec588a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de1abde1a9677876e9c376d931ec588a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/272fc358498057cdd10f8f9dd99a86bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/272fc358498057cdd10f8f9dd99a86bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e997339dee9e99bf077d51dc1a3bec44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e997339dee9e99bf077d51dc1a3bec44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a58d59b86dfcaaa50c9a09d8395ed4a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a58d59b86dfcaaa50c9a09d8395ed4a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2f4cb3d00ebf750197e66eee3526c11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2f4cb3d00ebf750197e66eee3526c11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20618b212b6346536b1ee5bf41cf5dad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20618b212b6346536b1ee5bf41cf5dad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7d06fa872740ca7da95fc4776dce3ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7d06fa872740ca7da95fc4776dce3ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a5f32728136b480c2c111ff1044ce83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a5f32728136b480c2c111ff1044ce83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c13b162992646bdfa930f2700512d958.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c13b162992646bdfa930f2700512d958.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed01c9ed90b3f7e612431513f0b9c208.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed01c9ed90b3f7e612431513f0b9c208.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06c384ef3116265888d3603b0174f5d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06c384ef3116265888d3603b0174f5d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c830d6d5d40ddf9781a864b4c3bec83c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c830d6d5d40ddf9781a864b4c3bec83c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05a0002f0886f4376790d00c03112ed6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05a0002f0886f4376790d00c03112ed6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb2e6937b3cd8c8680f775801f7b26ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb2e6937b3cd8c8680f775801f7b26ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56debcbe3a03f1417952e4ac7c89c808.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56debcbe3a03f1417952e4ac7c89c808.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b356769c6bb5ddebd99edd7792c76aff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b356769c6bb5ddebd99edd7792c76aff.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b539c78b905f02ef2be70518d3ac0a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b539c78b905f02ef2be70518d3ac0a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20d39e45843e2ee11507debc6ba7cd23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20d39e45843e2ee11507debc6ba7cd23.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1065005,'1065005','古风圆角木质落地镜',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/6908648f0e5168369d13e8f376b7ed22.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7bf78e4b6bfad80b2d64b7f43e952962.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35777d14d555a8f502587e8d8ed8330e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8cf033728913902f68f0b081ab118b5f.jpg\\\"]','','简约设计，日式和风',1,6,'http://yanxuan.nosdn.127.net/18b7be03bba9d01e4285fc443ea65bb1.png','',0,0,'件',269.00,249.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ad4d677ba4fdc24389cf860f8743d9c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad4d677ba4fdc24389cf860f8743d9c0.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55efe9c6c03836106384240169988ced.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55efe9c6c03836106384240169988ced.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ea288c48bee26165ec87685d750021f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ea288c48bee26165ec87685d750021f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c37cd04324fd588756c967c86dd7411.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c37cd04324fd588756c967c86dd7411.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef1a1759bece97e234e6a77bae769da9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef1a1759bece97e234e6a77bae769da9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f4872bc1e867dfd402a2294c020b1ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f4872bc1e867dfd402a2294c020b1ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e079f0074555ce7277dcad6a979761b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e079f0074555ce7277dcad6a979761b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84e158a79a9866f94a571f05db594432.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84e158a79a9866f94a571f05db594432.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44f454dd9f5381290758cb8206114625.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44f454dd9f5381290758cb8206114625.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddaba7e0ddfc98f3c5b6a618eaa39561.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddaba7e0ddfc98f3c5b6a618eaa39561.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e38fef39f59f8c2e9fef58803927686.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e38fef39f59f8c2e9fef58803927686.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04cbc58190e01cd802d966aa784e5ba2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04cbc58190e01cd802d966aa784e5ba2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0680a0d1bc619337cc71e74674bb474.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0680a0d1bc619337cc71e74674bb474.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cbaa63130f7f1f1316824ef91aec45f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cbaa63130f7f1f1316824ef91aec45f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9f63dae4b1138ee5eedeb591055fcdc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9f63dae4b1138ee5eedeb591055fcdc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4e03dcf4a426395943a7e426e1537cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4e03dcf4a426395943a7e426e1537cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/535b1678f1193020ebdf857cc0714605.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/535b1678f1193020ebdf857cc0714605.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b086b038327b4f4749f01f20edc51759.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b086b038327b4f4749f01f20edc51759.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/600cd143741752e1ddec0726203158ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/600cd143741752e1ddec0726203158ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f92e38e1e47d83dbd687cb3a99d42cf6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f92e38e1e47d83dbd687cb3a99d42cf6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/808e61b5efb9caf9619d1ea104cd0c8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/808e61b5efb9caf9619d1ea104cd0c8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76b6a500d227dfe044e7e89d2b1fc90b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76b6a500d227dfe044e7e89d2b1fc90b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b504d58141383196993a05cac20b5c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b504d58141383196993a05cac20b5c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86a53c9649767b375e7b7954b1ef8dda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86a53c9649767b375e7b7954b1ef8dda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/094601496343ee6c7bd27f889d0c671a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/094601496343ee6c7bd27f889d0c671a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cdfbaab3dc8a228ec830cf66c1455e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cdfbaab3dc8a228ec830cf66c1455e2.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a081b94d90c5c79f9e6c4729cf77b63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a081b94d90c5c79f9e6c4729cf77b63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39db72c177156f3fed68510b28d5c8dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39db72c177156f3fed68510b28d5c8dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee0a390f0b6619aecb84518b31e4d467.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee0a390f0b6619aecb84518b31e4d467.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1068010,'1068010','全棉澳毛床褥床垫 床笠款',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/84d68d030d379712544c1df2fe5dd75a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/977d1c16a4902d50712a00a0b2415d55.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4794dea6cd4bf39626b00335c00b2257.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8e3c52a8645ab6c83ceff377f33a5500.jpg\\\"]','','精选优质澳毛，柔软保暖',1,21,'http://yanxuan.nosdn.127.net/9ed4ff9642ea9cb776a20560647cd72b.png','',0,0,'件',349.00,329.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/95a63d6da753734c1ef2943e33a8bb3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95a63d6da753734c1ef2943e33a8bb3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9d333d9669d0524e57d0c3df85c32c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9d333d9669d0524e57d0c3df85c32c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d07d8f04991d6277ffbe8f2e9c1f269e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d07d8f04991d6277ffbe8f2e9c1f269e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4514788afc9687cff4382d6b10b65484.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4514788afc9687cff4382d6b10b65484.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85004c0d8c353a371e74b12c7043b7c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85004c0d8c353a371e74b12c7043b7c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c2f84e148ab9dc37fca2ba9b14b1d91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c2f84e148ab9dc37fca2ba9b14b1d91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7891ebca110196561a0b89f594dcb901.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7891ebca110196561a0b89f594dcb901.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aab95836c91dd19b558ef7af6be87932.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aab95836c91dd19b558ef7af6be87932.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f95c06896c52e1818b068c6caccbd3b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f95c06896c52e1818b068c6caccbd3b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92f0ddd32ef8721a57398dc850c69db8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92f0ddd32ef8721a57398dc850c69db8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13fbf8e8abc527424bec76f5cb5d9362.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13fbf8e8abc527424bec76f5cb5d9362.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a96f28cfdfc2902126b6543f8a41f713.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a96f28cfdfc2902126b6543f8a41f713.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1068011,'1068011','全棉丝光骆驼绒秋冬被',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/ccd6d04356b4b8fa00659b7c287a742f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a3fddd5ba2d029c8adc22f4346d15be2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/afe43ecb0839d0f1d91551a357db65a9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/85dcb0a492eefb8a64c963400fac48a8.jpg\\\"]','','精细驼绒填充，加厚温暖',1,18,'http://yanxuan.nosdn.127.net/0e4ba6ed44fef8803c243e585b621ab7.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/513bb53138abc91136a185451db84124.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/513bb53138abc91136a185451db84124.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/892c546f668cda7061312c927d6b8706.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/892c546f668cda7061312c927d6b8706.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a47d06b195c64a165b82e797ac6d0f74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a47d06b195c64a165b82e797ac6d0f74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2518d05fed8e33f2b61fd06a2711f7bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2518d05fed8e33f2b61fd06a2711f7bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/104bfe84e2f4625c4cdf66c3e511b9cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/104bfe84e2f4625c4cdf66c3e511b9cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c69525ee67d15f619a4c33d5570e732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c69525ee67d15f619a4c33d5570e732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79b82500961b6385b852633961ce5c6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79b82500961b6385b852633961ce5c6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea190f56ac369eaef45159412675bb49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea190f56ac369eaef45159412675bb49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae33c22489785820a608a6508dda713b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae33c22489785820a608a6508dda713b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcd357ecf585630bf3e11364e7beef51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcd357ecf585630bf3e11364e7beef51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c77e5ed4dbd4ca1834cc1d65fb6fb978.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c77e5ed4dbd4ca1834cc1d65fb6fb978.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1068012,'1068012','全棉色织绗缝夏凉件套',1036000,1001020,'[\\\"http://yanxuan.nosdn.127.net/b99da1e1f21b0fe977c170ab9c06d43b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bbad82d64b6e7a02d0b1d98189ed4fa2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e50f8e392c50d9c0538ccfd452849e6a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/98d6ac6863c11e016ab620dc5d79c13c.jpg\\\"]','','夏季凉被，冬季暖套，四季可用',1,8,'http://yanxuan.nosdn.127.net/69145abddddd31ae8878ea7ca7297b4b.png','',0,1,'件',619.00,599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/f2c8da50d92baec4dd3cf9efd031c609.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2c8da50d92baec4dd3cf9efd031c609.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c942345abc7f4ccb968922399bf7f9d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c942345abc7f4ccb968922399bf7f9d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9356de74f5f05ffa1f2193eea6c5bdc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9356de74f5f05ffa1f2193eea6c5bdc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a665cfb96c9941e5b8dff8d90853bc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a665cfb96c9941e5b8dff8d90853bc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a046b731093bec9b8959e2474cfa4a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a046b731093bec9b8959e2474cfa4a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/559719ac8d4e3f71905299b9177a4ce0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/559719ac8d4e3f71905299b9177a4ce0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df69b9248e172d145a2a19344e42cc95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df69b9248e172d145a2a19344e42cc95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa820a8ae627c519739d3ce12c2c6518.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa820a8ae627c519739d3ce12c2c6518.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd486a7f6146271c0541539be673f58c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd486a7f6146271c0541539be673f58c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee9211f783669f8b81b268e1a63752cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee9211f783669f8b81b268e1a63752cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35e57db1fd86be37d669d355061fd6b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35e57db1fd86be37d669d355061fd6b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/921d514a1b6e33f4a2f5799f2dbc9a0f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/921d514a1b6e33f4a2f5799f2dbc9a0f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9dd1dae09dbade1b4128648cc34b1bc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9dd1dae09dbade1b4128648cc34b1bc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fdb3e737194ddf41c6d807f072a3da9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fdb3e737194ddf41c6d807f072a3da9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e69d648b43e8a251ece334534302e368.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e69d648b43e8a251ece334534302e368.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c105ac189899e85677e746af9cf14b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c105ac189899e85677e746af9cf14b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3dfe534d6109aeb1d6efec2c69064654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3dfe534d6109aeb1d6efec2c69064654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e38db6341ce3864d00b67ed920deee3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e38db6341ce3864d00b67ed920deee3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d6fd87dd1e350771e0414eef4a00f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d6fd87dd1e350771e0414eef4a00f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18d8a013e03ad654f2e4f8817801168c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18d8a013e03ad654f2e4f8817801168c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4891ddcdde1628465490e970fb0cdd4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4891ddcdde1628465490e970fb0cdd4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5fa31df63a81e665df490c9d7f42a98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5fa31df63a81e665df490c9d7f42a98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd10bc9fdd09b964ef38e6e6ab481805.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd10bc9fdd09b964ef38e6e6ab481805.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/598ada2dd1db82e54bcbda20d493f471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/598ada2dd1db82e54bcbda20d493f471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbb8921d833c3dcb89962f8d3f77d254.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbb8921d833c3dcb89962f8d3f77d254.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1bd69c32e8228bfcc72ea580e530b66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1bd69c32e8228bfcc72ea580e530b66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6259e545bc7631c00391156e2f66f690.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6259e545bc7631c00391156e2f66f690.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d8b5c26dd3141e4c2939cade0eb3f25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d8b5c26dd3141e4c2939cade0eb3f25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8892a18d128d00d19daf3a0c5f7601c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8892a18d128d00d19daf3a0c5f7601c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c513d36bd6f8be0b44ffd321d821419.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c513d36bd6f8be0b44ffd321d821419.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/547fa7c92b2a1beb018c6326630f0d52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/547fa7c92b2a1beb018c6326630f0d52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d755722133aea49aa0ff53a345977b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d755722133aea49aa0ff53a345977b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7ce2a9b6b8a5ade671bb0f1c0c14b6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7ce2a9b6b8a5ade671bb0f1c0c14b6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd6d960441bd4bd208cca0e0d85e98b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd6d960441bd4bd208cca0e0d85e98b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98eea2b147f2a6db9c409aa004ef6d1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98eea2b147f2a6db9c409aa004ef6d1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d95786dc2a8ea1bf0f2974c536c96ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d95786dc2a8ea1bf0f2974c536c96ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db9ebe54b716d0e728e76d9cfe578638.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db9ebe54b716d0e728e76d9cfe578638.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4884a54269e320eb5eaeb281ce44972a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4884a54269e320eb5eaeb281ce44972a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f7039e7cc12f77edbc0c05a4b5cabe0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f7039e7cc12f77edbc0c05a4b5cabe0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78218e4c3089b11eaf51dcb128f9458a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78218e4c3089b11eaf51dcb128f9458a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25ac7c99eb8032df971d5c59c5b7c5d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25ac7c99eb8032df971d5c59c5b7c5d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2322fcab99f29c5e3041fb03608c5af9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2322fcab99f29c5e3041fb03608c5af9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49fbd5127b6c785cab0a7b0511d010fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49fbd5127b6c785cab0a7b0511d010fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/337ac8db46d718d2e76217aeab913757.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/337ac8db46d718d2e76217aeab913757.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9fa6cd8ddc515ed4bbf2428b326df941.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9fa6cd8ddc515ed4bbf2428b326df941.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1070000,'1070000','星云酥 180克/3颗',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/fec3fedc5dc8eb4c0f9ad8035061cebe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fec3fedc5dc8eb4c0f9ad8035061cebe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fec3fedc5dc8eb4c0f9ad8035061cebe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fec3fedc5dc8eb4c0f9ad8035061cebe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fec3fedc5dc8eb4c0f9ad8035061cebe.jpg\\\"]','','酥饼界的小仙女',1,8,'http://yanxuan.nosdn.127.net/8392725765cdd57fdae3f173877f4bda.png','',0,0,'件',46.00,26.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1071004,'1071004','日式圆形宠物盆猫砂盆',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/38bc080faa7fc71f0659d8f01c2732cb.png\\\", \\\"http://yanxuan.nosdn.127.net/2fb5b6d817c8abe928499b38e85f9175.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a7b14f413a7880aeab33d54273b75a61.png\\\", \\\"http://yanxuan.nosdn.127.net/86a75ab34cdc6dba5f86917dbfc5c573.jpg\\\"]','','日式配色，圆滑细腻',1,20,'http://yanxuan.nosdn.127.net/f0abf2bf11c8d303212e4a0c1106bb73.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/8fcac09d7577060c0a512ea6739c97ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fcac09d7577060c0a512ea6739c97ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b69b19b139cd26bf6dab5d5a648937b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b69b19b139cd26bf6dab5d5a648937b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/272be92e722c0336aa8ea5dfea9c8160.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/272be92e722c0336aa8ea5dfea9c8160.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0585ea90000fff3a6cd8ef3d0f311e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0585ea90000fff3a6cd8ef3d0f311e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0e6f8bff79c8fb501ad2e27e578e62d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0e6f8bff79c8fb501ad2e27e578e62d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2447c2a4d60144b25e9f103175531ac7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2447c2a4d60144b25e9f103175531ac7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8557a4772478e932fcc516df28ff8b26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8557a4772478e932fcc516df28ff8b26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bcebc60f77b9dc0ec98beef7685710e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bcebc60f77b9dc0ec98beef7685710e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a125c5c2835777fb86e806b4f91c95a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a125c5c2835777fb86e806b4f91c95a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71cd7a9c5ff13033878477c72bd8bcf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71cd7a9c5ff13033878477c72bd8bcf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cd3a745cafb0ade80fef30282f33c39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cd3a745cafb0ade80fef30282f33c39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d604b2a4e400c5de3ae6d8fac2b0a89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d604b2a4e400c5de3ae6d8fac2b0a89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2a0a3a2c8e45bba29aa51b7b5f08308.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2a0a3a2c8e45bba29aa51b7b5f08308.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a65be28f7c1b9e4a1043cac8a415089.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a65be28f7c1b9e4a1043cac8a415089.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7bde1458f209cd046378455838c6c89c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7bde1458f209cd046378455838c6c89c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7a561a6b7461d45ffc6ed90e7f48c9a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7a561a6b7461d45ffc6ed90e7f48c9a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6c2b53acdb9e4a8bc95609bf97f4513.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6c2b53acdb9e4a8bc95609bf97f4513.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ececb765899660140651e29ab4526eca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ececb765899660140651e29ab4526eca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83ad2165ee9891683052f26c928068b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83ad2165ee9891683052f26c928068b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/786bdedae9e0d2d7ab4de3697d3642b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/786bdedae9e0d2d7ab4de3697d3642b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33eeab8794cadfb86498a366b56d8b57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33eeab8794cadfb86498a366b56d8b57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b4b835a0268eed92c845b851be3be71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b4b835a0268eed92c845b851be3be71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dde1d2f1d7d8a19f162fcd7f0535a7dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dde1d2f1d7d8a19f162fcd7f0535a7dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/885792079ae57ba6de8507fab565c586.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/885792079ae57ba6de8507fab565c586.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9110f49c6a9f29f0b03855582af0d88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9110f49c6a9f29f0b03855582af0d88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7fee119279d42ba0fb697cf9e8f53d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7fee119279d42ba0fb697cf9e8f53d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b44824d6ab6387b9cc37f9d6aecb9d43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b44824d6ab6387b9cc37f9d6aecb9d43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34620b3bf872306803dfe9560acdcff4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34620b3bf872306803dfe9560acdcff4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2c60c4177b50725cd3d2a11eb54714b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2c60c4177b50725cd3d2a11eb54714b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f74507842ac9dd42103de38cc878a34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f74507842ac9dd42103de38cc878a34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63c1f83a1a5d1ba546ac7d875dabfeed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63c1f83a1a5d1ba546ac7d875dabfeed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/acc33719f9810f8a69be93903a0b64f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/acc33719f9810f8a69be93903a0b64f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/108405824c2b2590655f75638dd41c06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/108405824c2b2590655f75638dd41c06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd1a84cf1e70f02541dfd546bdb0d563.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd1a84cf1e70f02541dfd546bdb0d563.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/901ab7dcd0a1e5c4339dbadf93889233.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/901ab7dcd0a1e5c4339dbadf93889233.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb98fc4e92fb69f27eb95a13c267e165.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb98fc4e92fb69f27eb95a13c267e165.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50e017498ac9caf6a0679dd26bbec392.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50e017498ac9caf6a0679dd26bbec392.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79469391cecf19b30111fa4385e89d6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79469391cecf19b30111fa4385e89d6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef40b078efaa06acd1487f07b7dfb213.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef40b078efaa06acd1487f07b7dfb213.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f42673dcf2d61d5c695ffb7705c53f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f42673dcf2d61d5c695ffb7705c53f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0aecfd282d652b7451143ae42aa0f3bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0aecfd282d652b7451143ae42aa0f3bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c80632b60bb7191671adb473e04111c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c80632b60bb7191671adb473e04111c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2414ed9c34593c5a12f57d73099795b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2414ed9c34593c5a12f57d73099795b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1e849da7d5e442717c2ceb64e8de762.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1e849da7d5e442717c2ceb64e8de762.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32ab9b54417e5f571aad635625a1fd97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32ab9b54417e5f571aad635625a1fd97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f06afbd180cd2eb34e181df8bbba5098.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f06afbd180cd2eb34e181df8bbba5098.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ffce5e44238942d4cfcb2300376cbda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ffce5e44238942d4cfcb2300376cbda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6014bf19a6d49285681a1c05250709f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6014bf19a6d49285681a1c05250709f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3a51faae51f1a03cc44f36b1850037c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3a51faae51f1a03cc44f36b1850037c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/846b1d0320958c8b5451f3b217e7e8f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/846b1d0320958c8b5451f3b217e7e8f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99789d189daa1e63f292ca9d8d950c03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99789d189daa1e63f292ca9d8d950c03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29a06ebfaaded39141e85496b5e3af84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29a06ebfaaded39141e85496b5e3af84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15c8def8966137bc5708a4591ec1eff8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15c8def8966137bc5708a4591ec1eff8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1071005,'1071005','便携多功能宠物拾便器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/821f3e9e08116060fef28f24f787d05c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/508d8f7768e53fd2e8666a10882ae09a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1df6745760f5c35089e542835e6e0c9f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/100d0c180c2569cb2e4b221620a9d7ca.jpg\\\"]','','方便携带，环保卫生',1,17,'http://yanxuan.nosdn.127.net/07a47d73e2eb53b1a7939219a4e63618.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/0439a458150f17b3c54e1898b4ddf71f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0439a458150f17b3c54e1898b4ddf71f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/759a3d2dc0fea138932feb0b03def7ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/759a3d2dc0fea138932feb0b03def7ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fbc1e3aaaec589986fe8c460006b408.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fbc1e3aaaec589986fe8c460006b408.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ff62dcfcc7df4e69bdbfb6830d3729.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ff62dcfcc7df4e69bdbfb6830d3729.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8413e338d3d16087645d817aac894bc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8413e338d3d16087645d817aac894bc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8746c36ec37fe13c0124c13162a903cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8746c36ec37fe13c0124c13162a903cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ba42ac14b311acbcc1b1ab3f9c0c239.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ba42ac14b311acbcc1b1ab3f9c0c239.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/381576780a6acb18d4b9720caff81d51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/381576780a6acb18d4b9720caff81d51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec97befffd24b79f095b698d5da500bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec97befffd24b79f095b698d5da500bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a95dcc67a1ddd5c653aa38d085ca289.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a95dcc67a1ddd5c653aa38d085ca289.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/148b5c0861ce138fed9ce344be4f3735.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/148b5c0861ce138fed9ce344be4f3735.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/853b3e416ac990886f252b492a18d765.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/853b3e416ac990886f252b492a18d765.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc62219c8eded9aa632bf130fd816844.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc62219c8eded9aa632bf130fd816844.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad28c490b2c43b7ca1d9da3fc3631465.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad28c490b2c43b7ca1d9da3fc3631465.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d371fd88d9312493cfd3be36a322d92b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d371fd88d9312493cfd3be36a322d92b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f40e9c97a58c8c93335e5374b6e6d70c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f40e9c97a58c8c93335e5374b6e6d70c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74092ef98970e14ad640949e923a40e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74092ef98970e14ad640949e923a40e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea98fada7b079deb466e5a787d241dae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea98fada7b079deb466e5a787d241dae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f69dd49e4d45cc27ccc9e5a6e765fbfd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f69dd49e4d45cc27ccc9e5a6e765fbfd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77137b44be1a680cae7b1c25e37e386d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77137b44be1a680cae7b1c25e37e386d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce607d0b53a481683a78520c8ab6ccae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce607d0b53a481683a78520c8ab6ccae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/011c0ff03dc6d9c4abbfb717d1757bf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/011c0ff03dc6d9c4abbfb717d1757bf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2290de54b4dfca00cb57fc879b5bbbab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2290de54b4dfca00cb57fc879b5bbbab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c08cc448c81b6256db91211579dfb738.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c08cc448c81b6256db91211579dfb738.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ede1bd346840f490cadbb4e2091e236.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ede1bd346840f490cadbb4e2091e236.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0243642fd350cb2b7873817f052c37e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0243642fd350cb2b7873817f052c37e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a4acab695c5596de04e3642ac2bd711.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a4acab695c5596de04e3642ac2bd711.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd5e8c7e865dcf50b662c6f2224deb05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd5e8c7e865dcf50b662c6f2224deb05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b132996c99b3a02443692ececf52f5fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b132996c99b3a02443692ececf52f5fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/175b24fab11d1f543e10ccc2f2ac4eb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/175b24fab11d1f543e10ccc2f2ac4eb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a51eb838b01dac5bec6057e1e59428.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a51eb838b01dac5bec6057e1e59428.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cda60b57d1f0e78cd3921bc4e3d8ccf2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cda60b57d1f0e78cd3921bc4e3d8ccf2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1437057917d6deb2e453e711bcbf40ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1437057917d6deb2e453e711bcbf40ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/121b6dc31268b1a82c632fcb634f9a64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/121b6dc31268b1a82c632fcb634f9a64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0923c11aec66cec291f8a142b8391e01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0923c11aec66cec291f8a142b8391e01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/736a20d6584ffaacc39bd62c700b68ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/736a20d6584ffaacc39bd62c700b68ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7643379507709dba5947571eb18fc7b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7643379507709dba5947571eb18fc7b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0217adfd4f3a62963f18f841fa945e5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0217adfd4f3a62963f18f841fa945e5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4055e755e250b2c84a0548e031de7f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4055e755e250b2c84a0548e031de7f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f3c65c42ffac403bf55ff33454849f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f3c65c42ffac403bf55ff33454849f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/349b23e34055e38d2311b82cc42b9402.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/349b23e34055e38d2311b82cc42b9402.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f9a830bb03074182f19931ec6aaf1c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f9a830bb03074182f19931ec6aaf1c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32bc1a4cb7aa944ac67856fcb6e5c73f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32bc1a4cb7aa944ac67856fcb6e5c73f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/381b80fabf330062ab9ffcde4ea025be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/381b80fabf330062ab9ffcde4ea025be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f987d33585b22286115fbb684edbbf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f987d33585b22286115fbb684edbbf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89e8c521f234dfb1c0217e553826b4f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89e8c521f234dfb1c0217e553826b4f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de5822513f7a21e52a23e65709311072.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de5822513f7a21e52a23e65709311072.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4437746b0494178f77250f55937d7080.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4437746b0494178f77250f55937d7080.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b46621bf43e028b86ae69fb68019318b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b46621bf43e028b86ae69fb68019318b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/208bf739edd3b19c8fba3f2cb47792f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/208bf739edd3b19c8fba3f2cb47792f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e63ee61d221db9cbe9978da2394ee2b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e63ee61d221db9cbe9978da2394ee2b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3719e6b0d3e8cd37b9c9e3f7c84fbc2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3719e6b0d3e8cd37b9c9e3f7c84fbc2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e5613aef6325482b310cb2bbe4a23e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e5613aef6325482b310cb2bbe4a23e8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1071006,'1071006','清新宠物水食钵食盆',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/1abb129cd7cab1f6469adf6bcde59a3d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1b5b295e3dfc745c0759e0ebbf683bdf.jpg\\\", \\\"http://yanxuan.nosdn.127.net/07b8e6b55ebcbb5554c99f8d4a43d9aa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/07fb9bad42bc23e248039fdd61abfb31.jpg\\\"]','','含银离子的洁净除菌食盆',1,16,'http://yanxuan.nosdn.127.net/d206e0d15955b4d76431a752f2c94f9f.png','',0,0,'件',29.90,9.90,'<p><img src=\\\"http://yanxuan.nosdn.127.net/f6211683724401e87e2458378137f31b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6211683724401e87e2458378137f31b.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1072000,'1072000','手工针织绞花抱枕套',1008002,1001020,'[\\\"http://yanxuan.nosdn.127.net/7814d8085b2258f916a3697bca6aea83.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cef89da34299cd7cebd7a73f0ae3c04a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e4649c66dd5541878d4ff55eb3991bcd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0e36b9e351760706e6c15d8e82d671bb.jpg\\\"]','','纯手工针织，带给你复古的暖',1,9,'http://yanxuan.nosdn.127.net/87cf3a17ad40bfdcdc3314ea4591a5e8.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/74ead5d764e22f8d50dc44a7a61da41a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74ead5d764e22f8d50dc44a7a61da41a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be7f775d658e40e6ca76e657006053a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be7f775d658e40e6ca76e657006053a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fe9345385034a4d25580072444b349b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fe9345385034a4d25580072444b349b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bffafbafcf3010c3e5ab454af09cde4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bffafbafcf3010c3e5ab454af09cde4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/123a0dcb707c2a178e5f9da395b5b24e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/123a0dcb707c2a178e5f9da395b5b24e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfeba71e7e71a63dee06b079b4c4c4f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfeba71e7e71a63dee06b079b4c4c4f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdc034602358c7752073a9b4bd6b499f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdc034602358c7752073a9b4bd6b499f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3050a816fd41ec2b8880d11aafc26177.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3050a816fd41ec2b8880d11aafc26177.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/027e8c218edbbf1779cf4b380b2133c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/027e8c218edbbf1779cf4b380b2133c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbd1f6dd39bd517c99c7ae07d9b32b0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbd1f6dd39bd517c99c7ae07d9b32b0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db5baa7586787b7e0f27a5b7a09946a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db5baa7586787b7e0f27a5b7a09946a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66a0ff102559b2d840240d6fa8c37001.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66a0ff102559b2d840240d6fa8c37001.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b17b0772d947612819e4489d9e5a865.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b17b0772d947612819e4489d9e5a865.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53cc65ea58a7757fca2585b25056cf21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53cc65ea58a7757fca2585b25056cf21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86506725ae85f9864c8b70b64b2e37d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86506725ae85f9864c8b70b64b2e37d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/671d390a50d363d6ae6ab0c52f06a284.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/671d390a50d363d6ae6ab0c52f06a284.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14e864b84a51faebab51912bbfea7b75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14e864b84a51faebab51912bbfea7b75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e31d1086f08b77298977c2b459be4833.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e31d1086f08b77298977c2b459be4833.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02338b650755a458ca8561f484e618d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02338b650755a458ca8561f484e618d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ffbeafbda15fcfcf98c3b7a62c77e05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ffbeafbda15fcfcf98c3b7a62c77e05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f61f5e704ccf72bfb570842a366f104.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f61f5e704ccf72bfb570842a366f104.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e119daabcfd640441083e17445834954.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e119daabcfd640441083e17445834954.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/010ba3b486af23613c04046c5829a7c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/010ba3b486af23613c04046c5829a7c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25f470d4479fbb74f9b6e105f8dedfbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25f470d4479fbb74f9b6e105f8dedfbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e7c300089dba380e9f48d49ec964ff9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e7c300089dba380e9f48d49ec964ff9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a7ab3c980cf291404489bd137efde6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a7ab3c980cf291404489bd137efde6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fb08e93fa462fca26680a56737b9f91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fb08e93fa462fca26680a56737b9f91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0ad6f5f75871fa02408723457a8a8ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0ad6f5f75871fa02408723457a8a8ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3cecb48c44520393993ce5bc85da7ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3cecb48c44520393993ce5bc85da7ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd68c353ca83624fa367f90592649b36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd68c353ca83624fa367f90592649b36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9327cc921602b9d5b05147e4266910cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9327cc921602b9d5b05147e4266910cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37cf3aa662187aa1126a5c41cb41d796.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37cf3aa662187aa1126a5c41cb41d796.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bef5ea165cda6dbbb109ea895b3f2fc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bef5ea165cda6dbbb109ea895b3f2fc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78c0d06130500a1247cb2a602264c61c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78c0d06130500a1247cb2a602264c61c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79fd1cbd0c0d02ac58c2f449dcb6c97f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79fd1cbd0c0d02ac58c2f449dcb6c97f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61acb2d95e1833aad988c183c94eebe2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61acb2d95e1833aad988c183c94eebe2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7828935cd158c7bb6643186eb25be8bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7828935cd158c7bb6643186eb25be8bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0409cef7649088f345fc64a348b49468.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0409cef7649088f345fc64a348b49468.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54e1beab4c0616b3147270201f978f2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54e1beab4c0616b3147270201f978f2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a75d34f45de74f2476f34ce329d57ff6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a75d34f45de74f2476f34ce329d57ff6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81607103dfd183acf7a364dd58e3cf93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81607103dfd183acf7a364dd58e3cf93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03cf20624d36fc793143ba7ba8b5c17f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03cf20624d36fc793143ba7ba8b5c17f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da92a3b8729effd6f79e9c86b522f6ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da92a3b8729effd6f79e9c86b522f6ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71aa5c2a762f4bced311f40323980552.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71aa5c2a762f4bced311f40323980552.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b81f52020b75b35b2254d327625713d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b81f52020b75b35b2254d327625713d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f4d245eea01d80ce6769f308ccd7152.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f4d245eea01d80ce6769f308ccd7152.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c74f125472bf12a5b0ece0aaf15ef85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c74f125472bf12a5b0ece0aaf15ef85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6139fdd3fb21d66c527520a747a17fe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6139fdd3fb21d66c527520a747a17fe3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1072001,'1072001','色织水洗棉绣花抱枕套',1008002,1001020,'[\\\"http://yanxuan.nosdn.127.net/cfde5301ba393421dc2e3ae718f1e1df.jpg\\\", \\\"http://yanxuan.nosdn.127.net/09fb1d7566f5eaf4a1888e986e22d680.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f9cefc0ae2125053eda113e9ffc46625.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a06657b204eeec45cc40137711c8ab87.jpg\\\"]','','清素色织，搭配水洗棉旧色的温柔',1,7,'http://yanxuan.nosdn.127.net/0e9d5954d7dc2477d9c46b730e05ab42.png','',0,0,'件',69.00,49.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/f8a74bd8e87987849bf2505c08ac69e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8a74bd8e87987849bf2505c08ac69e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be7ae107fc4b5085241507ed711254f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be7ae107fc4b5085241507ed711254f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/143c402e82c2d99c3bc7cc51d064a62b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/143c402e82c2d99c3bc7cc51d064a62b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52f5b211f5da083da2bc9b5237c40b3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52f5b211f5da083da2bc9b5237c40b3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5af00c6f7dc0d798dffe2cdc2da0f870.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5af00c6f7dc0d798dffe2cdc2da0f870.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/750bbc1c2207159b58a6de350060f5c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/750bbc1c2207159b58a6de350060f5c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d55dd54de50ff03b199261f3e021f388.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d55dd54de50ff03b199261f3e021f388.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b659703ddf8e35bb89ee5ff36e84b4f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b659703ddf8e35bb89ee5ff36e84b4f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/573f30d45c3eea65f29a6497ac2b9a98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/573f30d45c3eea65f29a6497ac2b9a98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7d58eb147f2d8bedfc88ba08b544d7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7d58eb147f2d8bedfc88ba08b544d7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec89200168dd4a703f7b89ec2be0b8a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec89200168dd4a703f7b89ec2be0b8a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d123c7d7b79ef8cd2703976e8bf1dbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d123c7d7b79ef8cd2703976e8bf1dbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2797ba305c10b0e5fd6eafb384101402.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2797ba305c10b0e5fd6eafb384101402.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abcfbdafabe855e77598860b426fa5e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abcfbdafabe855e77598860b426fa5e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d6ff672dae187d85d199ee1b1b62f9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d6ff672dae187d85d199ee1b1b62f9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e4424539e51dca9d000c6b67bea1f8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e4424539e51dca9d000c6b67bea1f8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/942da4a7c05d2a25be7a26decc40f53a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/942da4a7c05d2a25be7a26decc40f53a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c872c106b7da7d7b1167a9554c92aa1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c872c106b7da7d7b1167a9554c92aa1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82607c78aedacd534a2e0f1b38e2e3e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82607c78aedacd534a2e0f1b38e2e3e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07e4e5ac1501706c8666eff4a703b5fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07e4e5ac1501706c8666eff4a703b5fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a56805f63dfe98583e6b58eaa9dd595a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a56805f63dfe98583e6b58eaa9dd595a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecdd28de374db2de0c0c2f0f50d0cd26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecdd28de374db2de0c0c2f0f50d0cd26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69fcb2566dea15f16a182b7e4e05893f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69fcb2566dea15f16a182b7e4e05893f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc3c5b3a6a14c8307e57842bf737601b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc3c5b3a6a14c8307e57842bf737601b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53d9c980cc924790bd7983bd80b0221a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53d9c980cc924790bd7983bd80b0221a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/787bdee826a5112c3e2bd4b9c15717e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/787bdee826a5112c3e2bd4b9c15717e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44dc985f99b3a95f255624a4d97857ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44dc985f99b3a95f255624a4d97857ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf117d9aef1ef7ab10d2ef040d9444c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf117d9aef1ef7ab10d2ef040d9444c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07044f1a6c11d8d15e410a01482fb39a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07044f1a6c11d8d15e410a01482fb39a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ca8ea48405cb43c901181a684c623dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ca8ea48405cb43c901181a684c623dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b4111628661d4216c8d0fc057e6d81e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b4111628661d4216c8d0fc057e6d81e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4adb10168dbfcee6f49460b2478de249.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4adb10168dbfcee6f49460b2478de249.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e798dd4abe3a833a4d0066453955ec1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e798dd4abe3a833a4d0066453955ec1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/528abeae19cf1b5af2f49be4e142a2da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/528abeae19cf1b5af2f49be4e142a2da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d3d5ae118bcacdfda08eb182a03c15a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d3d5ae118bcacdfda08eb182a03c15a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3323a393743f839e12586418a0711123.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3323a393743f839e12586418a0711123.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ac29c5a1569d9fb37420f2eae835b91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ac29c5a1569d9fb37420f2eae835b91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89ef4f7ec1c86f13d328c23c0429892a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89ef4f7ec1c86f13d328c23c0429892a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b005b97dbffa333e49ff484abbcff04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b005b97dbffa333e49ff484abbcff04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afa56b9370cdc27f27f8f951108cea4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afa56b9370cdc27f27f8f951108cea4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5daae71eb699e7417e695472e1142678.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5daae71eb699e7417e695472e1142678.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3dbb71ba9fff82849a959deb8f5b7946.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3dbb71ba9fff82849a959deb8f5b7946.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e024ba974bad906db9e2a28d42293a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e024ba974bad906db9e2a28d42293a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87e2d46daab9e1dd3e112c15692c66ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87e2d46daab9e1dd3e112c15692c66ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/342bc9bb1cbf81d1bc7b33f77fa915ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/342bc9bb1cbf81d1bc7b33f77fa915ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f54d685cb3c111beff7ef58bb16252d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f54d685cb3c111beff7ef58bb16252d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7c4c896daa0ac2ff5f89d5b738fc007.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7c4c896daa0ac2ff5f89d5b738fc007.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/839da4fb5874271d54f94c60ad4d7387.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/839da4fb5874271d54f94c60ad4d7387.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7147d5acd91c330479762e51cf4257f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7147d5acd91c330479762e51cf4257f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a9ca13fd9189e60df2f4a21783a3795.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a9ca13fd9189e60df2f4a21783a3795.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09fa8e6e95cc716138549e6b244a7924.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09fa8e6e95cc716138549e6b244a7924.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/772e18352ad2c156ee190f068726cd8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/772e18352ad2c156ee190f068726cd8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c0a1e57d429d19fb7f4e678fa7fae1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c0a1e57d429d19fb7f4e678fa7fae1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88ddae38e8b363acdf79bfbe0547cc50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88ddae38e8b363acdf79bfbe0547cc50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c4c683112a57543d4e028754be53e0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c4c683112a57543d4e028754be53e0d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f476dbaf8a8cae1e8a311edb77d4ea78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f476dbaf8a8cae1e8a311edb77d4ea78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7493e6d2980dc116654bdb3b24c1a3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7493e6d2980dc116654bdb3b24c1a3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57e84b0e4b979782b0c3a4bce908d797.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57e84b0e4b979782b0c3a4bce908d797.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8eb47f38c324fd320c74bf0aa3ebdf1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8eb47f38c324fd320c74bf0aa3ebdf1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/622949bf7e667ea54eaf0861ac31c842.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/622949bf7e667ea54eaf0861ac31c842.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1073008,'1073008','铸铁珐琅牛排煎锅',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/61a56890eada2439eb4ff0a613cf8347.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61a56890eada2439eb4ff0a613cf8347.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61a56890eada2439eb4ff0a613cf8347.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61a56890eada2439eb4ff0a613cf8347.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61a56890eada2439eb4ff0a613cf8347.jpg\\\"]','','沥油隔水，煎出外焦里嫩',1,4,'http://yanxuan.nosdn.127.net/619e46411ccd62e5c0f16692ee1a85a0.png','',0,0,'件',169.00,149.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1074001,'1074001','男式莫代尔无痕内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/f8529d85ca41fa84abbad9affb5a071d.png\\\", \\\"http://yanxuan.nosdn.127.net/f8529d85ca41fa84abbad9affb5a071d.png\\\", \\\"http://yanxuan.nosdn.127.net/f8529d85ca41fa84abbad9affb5a071d.png\\\", \\\"http://yanxuan.nosdn.127.net/f8529d85ca41fa84abbad9affb5a071d.png\\\", \\\"http://yanxuan.nosdn.127.net/f8529d85ca41fa84abbad9affb5a071d.png\\\"]','','Bemis技术，极简无痕',1,8,'http://yanxuan.nosdn.127.net/73567265b04a9998f64419186ddd8531.png','',0,0,'件',79.00,59.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1075022,'1075022','暗格简约钢笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/6359ef53b700620c2b391555a3b75439.png\\\", \\\"http://yanxuan.nosdn.127.net/6359ef53b700620c2b391555a3b75439.png\\\", \\\"http://yanxuan.nosdn.127.net/6359ef53b700620c2b391555a3b75439.png\\\", \\\"http://yanxuan.nosdn.127.net/6359ef53b700620c2b391555a3b75439.png\\\", \\\"http://yanxuan.nosdn.127.net/6359ef53b700620c2b391555a3b75439.png\\\"]','','铱金暗尖，300超长书写',1,3,'http://yanxuan.nosdn.127.net/97ad483a94ed88216a989df83e39cbf0.png','',0,0,'件',59.00,39.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1075023,'1075023','舒适安睡复合羽绒枕',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/db89f8742e3bda3bae05ea56c2d4d6b3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4943dc2f6192742f25b3d53a4dab9dcf.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ad02e74a05f02d1d347a34612f673783.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cf2b3277065fd8cf027fad31cc1c2290.jpg\\\"]','','一等白鸭绒，蓬松承托',1,4,'http://yanxuan.nosdn.127.net/29bc800b9f1fa551bc3cd47b10e2a799.png','',0,0,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/0ff8b333d789044e2020d09ce66abe40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ff8b333d789044e2020d09ce66abe40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70caba30b405042d08d15f5f6424d3f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70caba30b405042d08d15f5f6424d3f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c01c5af096b8264909dcbdca7c4f831.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c01c5af096b8264909dcbdca7c4f831.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2df03eb9a43051e5369940952231796.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2df03eb9a43051e5369940952231796.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed1f8ba403cf7dc5079b43fa9205b38c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed1f8ba403cf7dc5079b43fa9205b38c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b812ece2ed52e7e169c2ffa34efc6d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b812ece2ed52e7e169c2ffa34efc6d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ceb3a596bd54c41a0c942ee3ffcdc2ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ceb3a596bd54c41a0c942ee3ffcdc2ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2331d3d090594d46840297fc14aa681e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2331d3d090594d46840297fc14aa681e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4852822f42865ce533a23618070577bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4852822f42865ce533a23618070577bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e821d78a3df70df85e85e801cb946f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e821d78a3df70df85e85e801cb946f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d97f8202cb7529796d729cdbe9af1f4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d97f8202cb7529796d729cdbe9af1f4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b6470ce962c35c3f897656d4a7d1701.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b6470ce962c35c3f897656d4a7d1701.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b0f31bf36f4faef0dd9cef22a2dff98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b0f31bf36f4faef0dd9cef22a2dff98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a0fe9cb6f96b5bf93b297068899ddbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a0fe9cb6f96b5bf93b297068899ddbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e516515fc49c649ef3b2d36de21033e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e516515fc49c649ef3b2d36de21033e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/010efd52fa7f0f11ff9639a4a108bf27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/010efd52fa7f0f11ff9639a4a108bf27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8101b530c6eb05bd4c894ecb3f99c86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8101b530c6eb05bd4c894ecb3f99c86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f135aacff4028aea9a557b64dea3779.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f135aacff4028aea9a557b64dea3779.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/718ac56251b9d22cc0d335bf1e7ab2ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/718ac56251b9d22cc0d335bf1e7ab2ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4e56c008935f06153909d59fb744161.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4e56c008935f06153909d59fb744161.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ab34a4c97fe8e316e8078dd01dee9e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ab34a4c97fe8e316e8078dd01dee9e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bb11146c349d8b1ca33efb91701b136.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bb11146c349d8b1ca33efb91701b136.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db2e3cdad17d198777ed0ffd26a14fc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db2e3cdad17d198777ed0ffd26a14fc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e745a57db19fb1385ef95a83a3322dd2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e745a57db19fb1385ef95a83a3322dd2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93388abeeeb46c7f9f04746e790f0e42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93388abeeeb46c7f9f04746e790f0e42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c6f2ef50e700773a99a8e78ade1f5c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c6f2ef50e700773a99a8e78ade1f5c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b428e3c4b9cafb1aadea1b3bff9f787.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b428e3c4b9cafb1aadea1b3bff9f787.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28ebf258d2507a68b6f340c3c568fead.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28ebf258d2507a68b6f340c3c568fead.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a2d314d6ec97d56d17ea66878d6c995.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a2d314d6ec97d56d17ea66878d6c995.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b89f8a5e287db625cbcbbf3f6df86ed7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b89f8a5e287db625cbcbbf3f6df86ed7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30df1b2dbf80de0a904a8bb51b611946.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30df1b2dbf80de0a904a8bb51b611946.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/513627f00d497ff83910fc06c6628430.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/513627f00d497ff83910fc06c6628430.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a48e9f3bad79676d1e9e717a3f9a9ed1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a48e9f3bad79676d1e9e717a3f9a9ed1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae2607d313993a5701079a0c9bcb00ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae2607d313993a5701079a0c9bcb00ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5108b4d56d178d806483a2675e1ef41e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5108b4d56d178d806483a2675e1ef41e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58bf7e5b113db4031b094b6e0fe1a54a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58bf7e5b113db4031b094b6e0fe1a54a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b617faa161158a4858579262b34b04d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b617faa161158a4858579262b34b04d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/309bbce1758293039c6fefc28c864b1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/309bbce1758293039c6fefc28c864b1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba8569688c174365735ecff01bd9e03f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba8569688c174365735ecff01bd9e03f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69db8b8b99fc661446b20859dc99e153.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69db8b8b99fc661446b20859dc99e153.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f16738356218d0abd570e4249b3afe9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f16738356218d0abd570e4249b3afe9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01593a4ae7ee3c4a26ba398db50b592a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01593a4ae7ee3c4a26ba398db50b592a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49749fe8f76654ee74a8d0978d4ad990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49749fe8f76654ee74a8d0978d4ad990.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1075024,'1075024','升级款纯棉静音白鹅羽绒被',1008008,1001000,'[\\\"http://yanxuan.nosdn.127.net/20b8099e0b733dd772eddc867286e4ef.jpg\\\", \\\"http://yanxuan.nosdn.127.net/24d57fc1aaee7ef34d5ad742dbe71c75.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2e9cf29302ae0d14eb86765d4f04b280.jpg\\\", \\\"http://yanxuan.nosdn.127.net/32fe42db040cebe98cdac1cb03fcbe10.jpg\\\"]','','静音面料，加厚熟睡',1,20,'http://yanxuan.nosdn.127.net/ce4a1eb18ea518bf584620632509935f.png','',0,0,'件',2419.00,2399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/56261ca3bfb33b4400911bd01ac27ae5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56261ca3bfb33b4400911bd01ac27ae5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/214f8c19371d71dac57ec63e398e87bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/214f8c19371d71dac57ec63e398e87bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12732b11ddc970e10ebf37d71088bab3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12732b11ddc970e10ebf37d71088bab3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be6a7afdc814c8f56d08e3f4285cd456.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be6a7afdc814c8f56d08e3f4285cd456.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67cca9bceb817b16690e291a67f41e28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67cca9bceb817b16690e291a67f41e28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67313c9944f3e4277c3e640ab60bbde3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67313c9944f3e4277c3e640ab60bbde3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47235be353e7eec56b7e425be4ddedba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47235be353e7eec56b7e425be4ddedba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3e3d7887ec3ea8ddabd581c4e36e2f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3e3d7887ec3ea8ddabd581c4e36e2f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33f1565e2a14c3fb4456b694771e6fad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33f1565e2a14c3fb4456b694771e6fad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a41d8674cd63d15c5549a6c5745a658.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a41d8674cd63d15c5549a6c5745a658.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7522e4b7add69ae6ba223a38fbd34f4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7522e4b7add69ae6ba223a38fbd34f4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5c9bd7dae7c24125104e80384c602ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5c9bd7dae7c24125104e80384c602ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97a225e49a0a8c764ca394cccb3b10f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97a225e49a0a8c764ca394cccb3b10f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16f06738c9fb6355352a4eb21a25744b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16f06738c9fb6355352a4eb21a25744b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3ad7de130695e388afa4946c63b4214.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3ad7de130695e388afa4946c63b4214.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dd0e528b444841f7326dc933b501938.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dd0e528b444841f7326dc933b501938.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ae9599dba84e72c970eecafd9de6294.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ae9599dba84e72c970eecafd9de6294.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b93b7087d8c64647b725418211fd2c4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b93b7087d8c64647b725418211fd2c4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ff7f4cae6011903f209305cd57598c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ff7f4cae6011903f209305cd57598c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/123723b1a400f6088af024190f154d01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/123723b1a400f6088af024190f154d01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3a6127948261397e2cce816afe7ff10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3a6127948261397e2cce816afe7ff10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2bc185f49542115c38aca6508951f83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2bc185f49542115c38aca6508951f83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf2a0932d6fd65702b0d30dee3f1c658.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf2a0932d6fd65702b0d30dee3f1c658.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f02e979aff1ce7a335cd314491886b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f02e979aff1ce7a335cd314491886b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c64f22b8da97967e854b6e2240ba8ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c64f22b8da97967e854b6e2240ba8ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/857365c29c631ca06d9218213e54f3d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/857365c29c631ca06d9218213e54f3d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be2f36d6255a9f8baf5573c8cb80b4c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be2f36d6255a9f8baf5573c8cb80b4c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1f71db51b1e322046737356482f115e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1f71db51b1e322046737356482f115e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0697d1c2cd446297ad0494fc97f75ebb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0697d1c2cd446297ad0494fc97f75ebb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e663a704ca44c6d448d37a9fbfb34b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e663a704ca44c6d448d37a9fbfb34b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5cc03a916aa7a1a7160aab17749c7b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5cc03a916aa7a1a7160aab17749c7b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4be42b28ba4bdb04ec250ac5a1d23335.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4be42b28ba4bdb04ec250ac5a1d23335.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f1f5bf21475bc50979dce49894bd03c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f1f5bf21475bc50979dce49894bd03c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dca09a7be97a3bbebeea80f6266e1cbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dca09a7be97a3bbebeea80f6266e1cbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82cfe49a34dd57e9879ab264b2c4a0f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82cfe49a34dd57e9879ab264b2c4a0f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/609766611ba2b7f471f4b5ec3cfb1570.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/609766611ba2b7f471f4b5ec3cfb1570.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4bfa751387777262f0dd3cbfeda6cf3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4bfa751387777262f0dd3cbfeda6cf3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cce5ecbcc8d6cbaf2da11a0efa137467.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cce5ecbcc8d6cbaf2da11a0efa137467.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d698dd6bad6abd7b5ad731ca8954ab9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d698dd6bad6abd7b5ad731ca8954ab9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34b463871aee608c1c3ccc9a6ae4e7fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34b463871aee608c1c3ccc9a6ae4e7fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d7d047d324a9878de7cc1ccd2b24fab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d7d047d324a9878de7cc1ccd2b24fab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf43f53d3770ff5d34eaade48c42ddf0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf43f53d3770ff5d34eaade48c42ddf0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e4d8478f1cbe72b6991e59cdbf2c1c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e4d8478f1cbe72b6991e59cdbf2c1c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec91680fb9913afc597afc4295c9810e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec91680fb9913afc597afc4295c9810e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf5f83c67d2b6303fc10d7698211c451.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf5f83c67d2b6303fc10d7698211c451.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4e736beeba84fa508b5001c14326817.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4e736beeba84fa508b5001c14326817.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b39bb20bc10eb80a4a73af1ef72e1f14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b39bb20bc10eb80a4a73af1ef72e1f14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ee97cc8179dc8f63df9545ed4cf1289.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ee97cc8179dc8f63df9545ed4cf1289.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6f5d89595f271bf1ece37ef1a59b7fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6f5d89595f271bf1ece37ef1a59b7fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cfc8924f6085deaf154deb6da8ac794.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cfc8924f6085deaf154deb6da8ac794.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69dc1813268f768aa90f696807c0614c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69dc1813268f768aa90f696807c0614c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a781da27715d6bbb246e7a9997e1ef4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a781da27715d6bbb246e7a9997e1ef4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e3177e5434d5ef56ea7a782358da8ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e3177e5434d5ef56ea7a782358da8ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64468f6698d122f7c554299af3ea9f13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64468f6698d122f7c554299af3ea9f13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/024b2a81d2860e631165a80a7142cf67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/024b2a81d2860e631165a80a7142cf67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85b12419b868dc311361781e50d46877.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85b12419b868dc311361781e50d46877.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fcff064127cdf5b5a73d358db4efa21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fcff064127cdf5b5a73d358db4efa21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f28c8dd3c027fbfd64952d2c55b87fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f28c8dd3c027fbfd64952d2c55b87fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/144ee76547f7b21bacb763426af25f07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/144ee76547f7b21bacb763426af25f07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/191c12adb5895f7fb71c9d5b8bee424d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/191c12adb5895f7fb71c9d5b8bee424d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7158e3fa0c0c034b91dbd06d2eccef3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7158e3fa0c0c034b91dbd06d2eccef3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01da4634f8486926944213e12b15e114.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01da4634f8486926944213e12b15e114.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/957eaa7ec5510cfc24d41e82f0882406.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/957eaa7ec5510cfc24d41e82f0882406.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1081000,'1081000','北欧风珊瑚绒多功能暖手枕',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/a4fda9721fda4cb644f7eaf8e07a26f0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/086010dccc921d77f21c67d15b3f4233.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f652505736cd034a74c2dc89637dcd4e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bb03b98fb84fa9cdbc3ea4616c7db915.jpg\\\"]','','手枕坐垫两用',1,22,'http://yanxuan.nosdn.127.net/cc45baafad00405699552c187c64c512.png','',0,0,'件',69.00,49.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/19ce01a5361a70388e7d40e94ccd3495.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19ce01a5361a70388e7d40e94ccd3495.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a037a815a9c11449de1c5c94d6a6d987.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a037a815a9c11449de1c5c94d6a6d987.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7ccc425d60247f8468ede401cb74683.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7ccc425d60247f8468ede401cb74683.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/039951ed06296e8065f7b219a4a111de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/039951ed06296e8065f7b219a4a111de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37576f4179798648632a694da355996f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37576f4179798648632a694da355996f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d45db0fcfff3fb9ced3f6bc5e5d6a23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d45db0fcfff3fb9ced3f6bc5e5d6a23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e46450a60e9bc60bca3f483ad14337b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e46450a60e9bc60bca3f483ad14337b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/071c557f2845aa18a7f4d80f556b1178.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/071c557f2845aa18a7f4d80f556b1178.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5935e928d9b1b6781db188cf41f93424.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5935e928d9b1b6781db188cf41f93424.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83f8bac183a90e5d8f32c698813ef046.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83f8bac183a90e5d8f32c698813ef046.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7ae7816d84e084b9df010ae92f7c0bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7ae7816d84e084b9df010ae92f7c0bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c89f0917bceb94f0e300df77d08c75e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c89f0917bceb94f0e300df77d08c75e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62c52e788f028eab5b4927671f4aa109.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62c52e788f028eab5b4927671f4aa109.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93b9efc4c1b39c065c0dde2974a9dc52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93b9efc4c1b39c065c0dde2974a9dc52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40da45628d48712880dc64843aba8e6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40da45628d48712880dc64843aba8e6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec12badecafb5dd8f67b52efa6cf4b15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec12badecafb5dd8f67b52efa6cf4b15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bde2888497b52e724ca72d42a86578d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bde2888497b52e724ca72d42a86578d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f1b163294dff20ac85a5f6dc8016500.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f1b163294dff20ac85a5f6dc8016500.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f970069e7d381421dec8c407fcd2a7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f970069e7d381421dec8c407fcd2a7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b852d0821395488c729a4d09941b2ea7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b852d0821395488c729a4d09941b2ea7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/660168255d39ded4c1d2038cff5d253f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/660168255d39ded4c1d2038cff5d253f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fe09efd35ef54dfa0a92c8059971995.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fe09efd35ef54dfa0a92c8059971995.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f13328e747638a9681502f97d0fc032a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f13328e747638a9681502f97d0fc032a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05c538811b7d8d37b15e9b168b45ed19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05c538811b7d8d37b15e9b168b45ed19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e597815f2bbf76f2c078326d3cd255e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e597815f2bbf76f2c078326d3cd255e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73d7bd31e90a2bdc79263dde20e2496c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73d7bd31e90a2bdc79263dde20e2496c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e10091f21b56c616ac4ab51decab76a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e10091f21b56c616ac4ab51decab76a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5023b92342a2f936996c2eaf2e79f1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5023b92342a2f936996c2eaf2e79f1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a090e4b9269a901e660cc35a1c38975a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a090e4b9269a901e660cc35a1c38975a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85c707ebaae017ab65bf5e2266ec7c6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85c707ebaae017ab65bf5e2266ec7c6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30a57bf64ad98af99955d90e45ae9f3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30a57bf64ad98af99955d90e45ae9f3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ec59f055c27c776ee5ec635e1e64b79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ec59f055c27c776ee5ec635e1e64b79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f39b93929486b2ba679ed22fac5021b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f39b93929486b2ba679ed22fac5021b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ea9e76b9b0988c823796752cd3bc4e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ea9e76b9b0988c823796752cd3bc4e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b952cc40eab4b590943ad91fb35c4ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b952cc40eab4b590943ad91fb35c4ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f5e5f1d2adbb2aaaf10e1e38913206b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f5e5f1d2adbb2aaaf10e1e38913206b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50c14625bb7a2d0331fee4181ae22455.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50c14625bb7a2d0331fee4181ae22455.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7af5402277f0cfd4e9ac2bf9c0c0cd8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7af5402277f0cfd4e9ac2bf9c0c0cd8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b413e4e18e70b2b1bddb54358fbf507e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b413e4e18e70b2b1bddb54358fbf507e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2006d2a3ff91300d1265ce875433484a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2006d2a3ff91300d1265ce875433484a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35c5c281c7b8bfe5a67704abfbd0f550.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35c5c281c7b8bfe5a67704abfbd0f550.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f30d0dd64c48d72f543cf7f48f66f48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f30d0dd64c48d72f543cf7f48f66f48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13632b105431e683733b69d8a065d458.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13632b105431e683733b69d8a065d458.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3a10c77b61704c1efa426d566ead340.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3a10c77b61704c1efa426d566ead340.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1081002,'1081002','北欧风珊瑚绒多功能抱枕',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/73c8f8fdbbbafc138ed2c19f7a7e518f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ab092f06061931198edcf473286efd0e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4881e1b07627266a2c67d2f26db1cbfe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d08aa4841b37ef3f78ef6c27e093857a.jpg\\\"]','','靠枕暖手毛毯多用',1,21,'http://yanxuan.nosdn.127.net/380cfcd5d8bc22360de089f0b4eb11da.png','',0,1,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d3afdc4dc4f7e8700abd3befd8786f9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3afdc4dc4f7e8700abd3befd8786f9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/690e4238d3c6fe734e5a5a8e5d567cf2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/690e4238d3c6fe734e5a5a8e5d567cf2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bb465550fcf6bafcde2b11b4a96d799.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bb465550fcf6bafcde2b11b4a96d799.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b4ba8661f77ff02edc7a172ea1489a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b4ba8661f77ff02edc7a172ea1489a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ededcff020a14eecad669b5beeba3f30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ededcff020a14eecad669b5beeba3f30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/394992289ec493441e7e91dd8a6e856b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/394992289ec493441e7e91dd8a6e856b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f06eb02e8ed368a868dfd8137d1c7f3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f06eb02e8ed368a868dfd8137d1c7f3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cec7fcfda67bf3ed1ee66e887614d633.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cec7fcfda67bf3ed1ee66e887614d633.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19ffcfd2a998820e92656611ba6ccd99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19ffcfd2a998820e92656611ba6ccd99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c698e643a9ababb498f36b2dd948f59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c698e643a9ababb498f36b2dd948f59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9746e6314f6aec06be56e6b1f54972c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9746e6314f6aec06be56e6b1f54972c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769eee41f1452888fa632c07551ca400.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769eee41f1452888fa632c07551ca400.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65c740031e1cd5792aecc6333710fe06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65c740031e1cd5792aecc6333710fe06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42361e27db7a3b76705568c0f57bfd43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42361e27db7a3b76705568c0f57bfd43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a3048b4a8ea13487faa1ff51c394ad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a3048b4a8ea13487faa1ff51c394ad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/032041aaae3d703194d7fab7599c4495.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/032041aaae3d703194d7fab7599c4495.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2478a21152ad10d517af58aaaed64214.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2478a21152ad10d517af58aaaed64214.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92691014c72fd7f34f6fada58162011f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92691014c72fd7f34f6fada58162011f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9dc547b23d58f4a835008b55f797f4bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9dc547b23d58f4a835008b55f797f4bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf6a80f009ba96e51851dce228e542b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf6a80f009ba96e51851dce228e542b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52674285cdb5d2ea19967d3188d1ff8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52674285cdb5d2ea19967d3188d1ff8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eeb3c5128f915416f4b60a968230d320.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eeb3c5128f915416f4b60a968230d320.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/998cc7acd5ce1797aa4b32f8ef775148.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/998cc7acd5ce1797aa4b32f8ef775148.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7d12038de9483c3974c3ad8f20927a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7d12038de9483c3974c3ad8f20927a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3c6b9f3fdf0c48156251636e513720e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3c6b9f3fdf0c48156251636e513720e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/367b80cefe0803348720f82f1c30cfe7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/367b80cefe0803348720f82f1c30cfe7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c360e0a65e58cc1c04e01eed6f04b54b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c360e0a65e58cc1c04e01eed6f04b54b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e60d12aff676400bad21d0c93b67803.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e60d12aff676400bad21d0c93b67803.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8be1fb462d145316ec2264d5025b8a48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8be1fb462d145316ec2264d5025b8a48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80725f3251d122a8bc66b20814648310.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80725f3251d122a8bc66b20814648310.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a6a82ed8c28b0c60b45bb38e4e7ce04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a6a82ed8c28b0c60b45bb38e4e7ce04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae881c80e00c34e59c7fd77f829b9931.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae881c80e00c34e59c7fd77f829b9931.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10d7b57b8772053d38fca8e7f6856bac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10d7b57b8772053d38fca8e7f6856bac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d43e30b2aaac4a81dec473fc2842984.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d43e30b2aaac4a81dec473fc2842984.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdd8426becc5a730730838e264c8c998.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdd8426becc5a730730838e264c8c998.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2aaf853063048b8485c1219b8ba55ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2aaf853063048b8485c1219b8ba55ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70604ff736ccc200037d247a274ac128.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70604ff736ccc200037d247a274ac128.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3778c8814cba4fa56d697d6e7c84e5dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3778c8814cba4fa56d697d6e7c84e5dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa66cda001dd6ba7281f9808da9a344b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa66cda001dd6ba7281f9808da9a344b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65955a09afe2dfa08a92e3b70bda0f5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65955a09afe2dfa08a92e3b70bda0f5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46bd1859ec91d296d8367e2e6a97ec11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46bd1859ec91d296d8367e2e6a97ec11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33259dcc01613bbf0bb8313f9129e7bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33259dcc01613bbf0bb8313f9129e7bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5fa03cc2c17cc38da8dc84d0c0e42fa2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5fa03cc2c17cc38da8dc84d0c0e42fa2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5baa2bc5c725dd3d8522b7766830bcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5baa2bc5c725dd3d8522b7766830bcb.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1083009,'1083009','海洋之心永生花',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/157be86783a0cab72ac5bd73d9de79aa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/238d39c9f49c2ab186be2cdbe21ebad4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d361a0c72f4c3d8b61d1502d47878d97.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7f1ab428fbea15ea9c02af2b44b452e1.jpg\\\"]','','厄瓜多尔玫瑰，精致美感',1,1,'http://yanxuan.nosdn.127.net/76e5c820f6bb71a26517ffa01f499871.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1b746ed72f6bf99405c749cb6c9da6eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b746ed72f6bf99405c749cb6c9da6eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06b441ba473cabbc5189da42a2c0eb77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06b441ba473cabbc5189da42a2c0eb77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3f24e6e91b100c8132feb082f1a34e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3f24e6e91b100c8132feb082f1a34e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/696cba61d6b37131c2322b66d0495b93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/696cba61d6b37131c2322b66d0495b93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1b458886ef3de6961975f86425fafb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1b458886ef3de6961975f86425fafb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63635766ac69f5009483eaca4d696da2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63635766ac69f5009483eaca4d696da2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b0d9fdd0909325b8a067e2e7d70c157.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b0d9fdd0909325b8a067e2e7d70c157.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82da955cf9e36e3d08dadc59f5f300c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82da955cf9e36e3d08dadc59f5f300c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20d2cc7cdf5e6efe02bfe466e66cd9f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20d2cc7cdf5e6efe02bfe466e66cd9f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a337c585ca3a1bbeee9785e0f6a191c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a337c585ca3a1bbeee9785e0f6a191c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65277e00b7fc1a3319881a3692777268.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65277e00b7fc1a3319881a3692777268.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31e4584649abe39c7f197ba8924fb74c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31e4584649abe39c7f197ba8924fb74c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbc59ffa03f9901cdccfba627b60e1ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbc59ffa03f9901cdccfba627b60e1ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4b72e337df5ed195cfbc661a3777845.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4b72e337df5ed195cfbc661a3777845.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/080ce5c403e912ac791b31eb0c289511.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/080ce5c403e912ac791b31eb0c289511.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78b066ce0b49497a9501948063322263.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78b066ce0b49497a9501948063322263.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fb74a8a28be5f5c6dacfd16f978afe2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fb74a8a28be5f5c6dacfd16f978afe2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36b820addabfb7caf910529969a3f1bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36b820addabfb7caf910529969a3f1bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/219fdb339a336e4f72f40c8849069b15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/219fdb339a336e4f72f40c8849069b15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfb962ce656900f82c46c2e2d3a5df1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfb962ce656900f82c46c2e2d3a5df1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01946020d4e1500d250d28c7e7e0dae5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01946020d4e1500d250d28c7e7e0dae5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20b66f85a1606fda8fc700a85c17d8d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20b66f85a1606fda8fc700a85c17d8d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31a70dab0b81c7eac9696b2116a6df99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31a70dab0b81c7eac9696b2116a6df99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/611db5a79922174f7fc267267c01fb6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/611db5a79922174f7fc267267c01fb6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ceeea13917bc6ba5d8b358007feacc4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ceeea13917bc6ba5d8b358007feacc4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95cb22dfb9901f209719996cb40c1d41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95cb22dfb9901f209719996cb40c1d41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e98ac4660f3907189a73040d91c74609.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e98ac4660f3907189a73040d91c74609.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8593ac139f076079f1600d5c9dc8018d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8593ac139f076079f1600d5c9dc8018d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0045d4dd0585566f1b93eaf844e3073a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0045d4dd0585566f1b93eaf844e3073a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9d407b3292b173daec7044c3db1fd6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9d407b3292b173daec7044c3db1fd6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f5e7818316caa798f48fae4f3cdb938.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f5e7818316caa798f48fae4f3cdb938.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be171d645ed6e4f2651df9d3f6f4231e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be171d645ed6e4f2651df9d3f6f4231e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea8bf6c7ebc5641209fb1c846f3bef5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea8bf6c7ebc5641209fb1c846f3bef5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95b1e32659f10a90e0ea01255d318df2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95b1e32659f10a90e0ea01255d318df2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c60047bd75a8b0cc943925f2ecd6e63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c60047bd75a8b0cc943925f2ecd6e63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d5fdfb237a0ff76f276662437a49bdd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d5fdfb237a0ff76f276662437a49bdd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/476a35de0402c6ffb483d890ab0ddbef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/476a35de0402c6ffb483d890ab0ddbef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02a627d54428aced361f96e3e6eca226.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02a627d54428aced361f96e3e6eca226.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6b5d161c87cae4b6d713fd79e135045.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6b5d161c87cae4b6d713fd79e135045.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d893f5518e755af8686cf13e4490a129.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d893f5518e755af8686cf13e4490a129.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54fa3793ff82c378ab52a9eaf6fa4f7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54fa3793ff82c378ab52a9eaf6fa4f7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/053b11e1be5bbf24773853025125dec0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/053b11e1be5bbf24773853025125dec0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57798ce86240acd240f4b56c9aa04f01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57798ce86240acd240f4b56c9aa04f01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a379abfeada13c4696c48379a035373.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a379abfeada13c4696c48379a035373.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a2d49a4c05ee87b057e9f0bd1c22a66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a2d49a4c05ee87b057e9f0bd1c22a66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91bdd265ca73b68ecc940bda58c67d5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91bdd265ca73b68ecc940bda58c67d5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46328006b2280246628dbbf890cb7b72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46328006b2280246628dbbf890cb7b72.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1083010,'1083010','绿野仙踪永生花',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/d22c4d48a852444f82f411ab8527e197.jpg\\\", \\\"http://yanxuan.nosdn.127.net/31627021573831753fd8635a73b2186c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/172d2bfb2ad0dccd79c2e3cd64557cac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/16e3828d30c2fcde21c503849cd4fb27.jpg\\\"]','','花朵与多元素的碰撞',1,3,'http://yanxuan.nosdn.127.net/b9a12d07f8f2d04d662d9340e68e6687.png','',0,0,'件',489.00,469.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/872f68ec2c4c81593d7a264b533b8b38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/872f68ec2c4c81593d7a264b533b8b38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87e5fe50a1d16ba939666f6d6004de73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87e5fe50a1d16ba939666f6d6004de73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06aaec921b232c61fd12c09ea5a43500.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06aaec921b232c61fd12c09ea5a43500.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1004dd3c5389c77f983637d72bc0ec59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1004dd3c5389c77f983637d72bc0ec59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8636d85945b34f4f46c40d8bb23da1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8636d85945b34f4f46c40d8bb23da1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cba38f6d80de232aa7cb41a5ea762ccc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cba38f6d80de232aa7cb41a5ea762ccc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbce5a3eb52ba113817529c0f6e19ce6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbce5a3eb52ba113817529c0f6e19ce6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcb43dc45be45570a9b8a2940d508f3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcb43dc45be45570a9b8a2940d508f3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f65584ca37db0d4bba7b3ff8d0dd7c85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f65584ca37db0d4bba7b3ff8d0dd7c85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce1d98231b92a08a851bd1df647383bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce1d98231b92a08a851bd1df647383bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6614fd0aa3434d15305c99893f6275ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6614fd0aa3434d15305c99893f6275ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73bfbb663434efdbfaa16b300af283a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73bfbb663434efdbfaa16b300af283a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91a5e9f66c342ab7620b6110f12cb4e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91a5e9f66c342ab7620b6110f12cb4e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a697e0d6cd426ad0fd108279d4592a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a697e0d6cd426ad0fd108279d4592a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86d524e4372219fe3cf192cf8ced2fce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86d524e4372219fe3cf192cf8ced2fce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/631bd72f94c63871b4c635109f67e1c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/631bd72f94c63871b4c635109f67e1c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/220dfd6fe696ad1c4cc7552d01af7414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/220dfd6fe696ad1c4cc7552d01af7414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1886adf40c6e0fb9bf9262c54b3d12c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1886adf40c6e0fb9bf9262c54b3d12c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f60e5c3002cd00f5b2190ef0eea7c05a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f60e5c3002cd00f5b2190ef0eea7c05a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1d91663eded7ff87a33c251f6b71168.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1d91663eded7ff87a33c251f6b71168.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5de732d905584125eeaaebc0b7bf2d96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5de732d905584125eeaaebc0b7bf2d96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de2b14e10b3450453b406c238953d9ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de2b14e10b3450453b406c238953d9ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9d37955cdadb0800eba149475bd96e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9d37955cdadb0800eba149475bd96e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1f75e9d6b70c75670319231f1571dd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1f75e9d6b70c75670319231f1571dd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b890510ea48b7d159a22890406e5b3ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b890510ea48b7d159a22890406e5b3ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf306751ff360b80219eb56e0236ef66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf306751ff360b80219eb56e0236ef66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54aa26a7c8785299f54719304b75eade.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54aa26a7c8785299f54719304b75eade.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7a151c2e24d097b6128415a7d7c17ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7a151c2e24d097b6128415a7d7c17ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24de9d76834c16d6811d0db2743e11bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24de9d76834c16d6811d0db2743e11bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7bafc75fe6a498f2710542f28e129e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7bafc75fe6a498f2710542f28e129e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc61bdbac2ee9ba29004e4455fb02ead.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc61bdbac2ee9ba29004e4455fb02ead.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/077f02722953587161b03664a95e04dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/077f02722953587161b03664a95e04dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/240b04e96eb8555f673d5d83987b0085.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/240b04e96eb8555f673d5d83987b0085.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0ea680311627b79e004a1023b8ba667.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0ea680311627b79e004a1023b8ba667.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e013efd9b24d7776ef14139d09385c22.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e013efd9b24d7776ef14139d09385c22.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/771212784bf1dc6f15616d760f84ee3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/771212784bf1dc6f15616d760f84ee3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d158de0ad3d9199f69b23dbdc4158145.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d158de0ad3d9199f69b23dbdc4158145.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/907d34328d50e3046569a7dbb3ffc6fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/907d34328d50e3046569a7dbb3ffc6fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a727890123a453f2d985fbf4e8685673.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a727890123a453f2d985fbf4e8685673.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a91a0c6ae0b550ac31a2595bd576248.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a91a0c6ae0b550ac31a2595bd576248.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/faae995ebf3c914e15c6fd722e56f723.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/faae995ebf3c914e15c6fd722e56f723.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42c03d3bb396ff92f41508523528084f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42c03d3bb396ff92f41508523528084f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34cd72d26957d2d21b77e13f72b2c152.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34cd72d26957d2d21b77e13f72b2c152.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d90740ea6c616414b4d560cfa704924f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d90740ea6c616414b4d560cfa704924f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/160debe27efa104fba6de6514449619c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/160debe27efa104fba6de6514449619c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/180a58f57add7ac4cd4b73a19407713b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/180a58f57add7ac4cd4b73a19407713b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f0881dbadf691f92257d073c1e5a780.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f0881dbadf691f92257d073c1e5a780.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f191394211da2a5b0f63d3e102067b28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f191394211da2a5b0f63d3e102067b28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fc6603485665bdc886bf13664d1a493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fc6603485665bdc886bf13664d1a493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/693af2b7a263853ef898401b3221e5ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/693af2b7a263853ef898401b3221e5ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a54b9bff291b8e0c98260d0aceea61e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a54b9bff291b8e0c98260d0aceea61e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/356950f4b46e0b039797de034a197a86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/356950f4b46e0b039797de034a197a86.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1084001,'1084001','纯棉简欧条纹针织盖毯',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/8e316090dd262ca0a4fe8f37bdc1f1aa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3eb572eef0f47c125cbe99514e021d8f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cf87ca367a793e250f27a831da7e142e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0e6431e884c7afbe4c648f0317a368eb.jpg\\\"]','','纯棉针织，柔软亲肤',1,37,'http://yanxuan.nosdn.127.net/07f682d405c1d2ed343c210ac8f8862a.png','',0,0,'件',269.00,249.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d60df75bd3b7037cfbdb0bcb5fe29078.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d60df75bd3b7037cfbdb0bcb5fe29078.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a3b8f3a2fa9862a758916be8a99f237.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a3b8f3a2fa9862a758916be8a99f237.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16ae1db56d952fca040462fedf80fe6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16ae1db56d952fca040462fedf80fe6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13833e191509f7ef0e0f2b2431b167e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13833e191509f7ef0e0f2b2431b167e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/989982f7920b6cf6bf6942fb7e6f28e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/989982f7920b6cf6bf6942fb7e6f28e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec920f8b651cff338e5c6d3f9200ccbf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec920f8b651cff338e5c6d3f9200ccbf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b997c8381faacba67423c4901e75cbd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b997c8381faacba67423c4901e75cbd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fd1cb3ed252f2bd7f3ef09006f4183f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fd1cb3ed252f2bd7f3ef09006f4183f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c29a7dce14c954710ffbf3b2e6e1f5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c29a7dce14c954710ffbf3b2e6e1f5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad7deda640da27bed0957567b8c720fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad7deda640da27bed0957567b8c720fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3192b3299cc9debf87e017ed6e0e707.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3192b3299cc9debf87e017ed6e0e707.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdb27df5a064f09d0a6b2fa0cadeafc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdb27df5a064f09d0a6b2fa0cadeafc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22dd3a0791adc1cb60c0e7f4e5f50ea8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22dd3a0791adc1cb60c0e7f4e5f50ea8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/955d02dad34f4a570d5f6799e29f0484.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/955d02dad34f4a570d5f6799e29f0484.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/567c8474434e1c64f31bdbff5833dec7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/567c8474434e1c64f31bdbff5833dec7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f31f3d51648100fcb7c512f48fcaf8eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f31f3d51648100fcb7c512f48fcaf8eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/777f29a46d14baab3e676c317ce17d26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/777f29a46d14baab3e676c317ce17d26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa41d6a9b78bb94e51face2264976044.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa41d6a9b78bb94e51face2264976044.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f98cc5909c7b2960989dadf2ff3aca7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f98cc5909c7b2960989dadf2ff3aca7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c3b809c819b448d8b5cae7aa5ccaaae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c3b809c819b448d8b5cae7aa5ccaaae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e73953b0e4226ff8ce7760f1ef521ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e73953b0e4226ff8ce7760f1ef521ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a3c3af2199907393e91a24f8d2aa05d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a3c3af2199907393e91a24f8d2aa05d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf286dc4fbad8ac953a2cf580b24059d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf286dc4fbad8ac953a2cf580b24059d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ff7fcba4fc90420e266fe23a2b522b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ff7fcba4fc90420e266fe23a2b522b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2da1324a8fef80f429d29d8c9905e221.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2da1324a8fef80f429d29d8c9905e221.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b28b3a2839f599ba0be34d103dc03d43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b28b3a2839f599ba0be34d103dc03d43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d382ee5c40eeb88b27cdea1cdb102c77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d382ee5c40eeb88b27cdea1cdb102c77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02e82cbd31c4103d825b8bf3e65d282e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02e82cbd31c4103d825b8bf3e65d282e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69aec67dd8281a9a563136cbd285957b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69aec67dd8281a9a563136cbd285957b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ce752d3bc231a483501ea7253479974.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ce752d3bc231a483501ea7253479974.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75e8fe26c602ef7751ed8b433a0b078d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75e8fe26c602ef7751ed8b433a0b078d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46aaf931f8ccf7ba1c47f6602fb0c4e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46aaf931f8ccf7ba1c47f6602fb0c4e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/853e0615dea16f01e63abb76f0b08357.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/853e0615dea16f01e63abb76f0b08357.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e31a21eb067f790b9cc410bc06c8d14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e31a21eb067f790b9cc410bc06c8d14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6df9b852ae02044d32db41ec0316a88f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6df9b852ae02044d32db41ec0316a88f.jpg\\\" style=\\\"\\\"/><img src=\\\"http://yanxuan.nosdn.127.net/bbdf123515558da5e4cffb62dfbc4c50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbdf123515558da5e4cffb62dfbc4c50.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69ba446f41e17ac41e4872af2c03aa3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69ba446f41e17ac41e4872af2c03aa3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f15085ed43a2c43240b0599ebc5cd58e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f15085ed43a2c43240b0599ebc5cd58e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60471cae3855ce31a0a55c9c90dad5bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60471cae3855ce31a0a55c9c90dad5bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e345b6a5fb55570ae85fdddcd08d200.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e345b6a5fb55570ae85fdddcd08d200.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f85be76a1e0018a00ed1e64d7a18723c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f85be76a1e0018a00ed1e64d7a18723c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a1214d35881c724baf6281feabf49b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a1214d35881c724baf6281feabf49b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65cb9bdfb5b8a8450834c38caf928eb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65cb9bdfb5b8a8450834c38caf928eb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32f8045537d03e634e79db1c0b8d3414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32f8045537d03e634e79db1c0b8d3414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71021e6ad1d1fbe3ac40e3a42f1bc725.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71021e6ad1d1fbe3ac40e3a42f1bc725.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14919c06e49737b473eeeff20bdc8144.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14919c06e49737b473eeeff20bdc8144.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/083a822300f398d51eb801d89072cd2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/083a822300f398d51eb801d89072cd2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdfdf2ccf213c7e1a4144afefda96417.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdfdf2ccf213c7e1a4144afefda96417.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5ae066cbddfa5a4705674ae13cdc829.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5ae066cbddfa5a4705674ae13cdc829.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e876d3126cb7464c68a4150ff4edcf8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e876d3126cb7464c68a4150ff4edcf8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59bc3b22edabd57ec2a5e0cf1b5a4fe0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59bc3b22edabd57ec2a5e0cf1b5a4fe0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5fe0fc9f7bf969311b647de6a2f1c25c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5fe0fc9f7bf969311b647de6a2f1c25c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e78cb02f8704bd36802e25c73486adb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e78cb02f8704bd36802e25c73486adb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b2e7f38703e96f95898a141a832c767.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b2e7f38703e96f95898a141a832c767.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92763e94e4bde2bfdf140f53cb30fe39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92763e94e4bde2bfdf140f53cb30fe39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9c9a15013a260182333504e09e313b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9c9a15013a260182333504e09e313b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/706f9fec46c3fbf9834d408c9b69c0fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/706f9fec46c3fbf9834d408c9b69c0fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77bcc6f7b25f0a3a671c25af18935ba3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77bcc6f7b25f0a3a671c25af18935ba3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9048a396cf6474d8aa8c773a3c197b71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9048a396cf6474d8aa8c773a3c197b71.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1084003,'1084003','纯棉美式绞花针织盖毯',1008009,1001020,'[\\\"http://yanxuan.nosdn.127.net/400d5759394edc78db8006bbd459e911.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f63ac83618c3bfb00b6d27336be0485c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f5566e6a2b7e3e90472beda8e057d78a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/74817e867e569dbd06133b3eead467b4.jpg\\\"]','','美式提花，温暖舒适',1,31,'http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png','',0,1,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/489c8f0dcad41cbcfb190170b6059266.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/489c8f0dcad41cbcfb190170b6059266.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1085019,'1085019','20寸 纯PC“铝框”（非全铝）登机箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/f819d7ddd1287106efea3736817cf25f.png\\\", \\\"http://yanxuan.nosdn.127.net/f819d7ddd1287106efea3736817cf25f.png\\\", \\\"http://yanxuan.nosdn.127.net/f819d7ddd1287106efea3736817cf25f.png\\\", \\\"http://yanxuan.nosdn.127.net/f819d7ddd1287106efea3736817cf25f.png\\\", \\\"http://yanxuan.nosdn.127.net/f819d7ddd1287106efea3736817cf25f.png\\\"]','','铝质包角，牢固抗摔',1,2,'http://yanxuan.nosdn.127.net/65c955a7a98e84d44ca30bb88a591eac.png','',0,0,'件',369.00,349.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086015,'1086015','北欧极简直杆台灯',1008016,0,'[\\\"http://yanxuan.nosdn.127.net/9331158a10c79a0663e53865cd1689ec.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4706343b3817e690d778e5f8a68a8de.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7a8499c2ded7790addffb9d87fc4532b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2831d02bb34fabbcaf602fdf7a9cc409.jpg\\\"]','','北欧色彩，极简线条',1,1,'http://yanxuan.nosdn.127.net/d5c2ecfe0fb00cdd8b829975bab21a31.png','',0,0,'件',269.00,249.00,'<p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1438c1c7d5fac9ee8a957f0e498efbab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1438c1c7d5fac9ee8a957f0e498efbab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80d0037836d80ec0aa25ff641c261735.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80d0037836d80ec0aa25ff641c261735.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d527b3bb238e9399d00c94e59f067ab6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d527b3bb238e9399d00c94e59f067ab6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4004fb355802f2bf0ade96e53777f7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4004fb355802f2bf0ade96e53777f7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e2156d0593a949ef23458950a1c3b45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e2156d0593a949ef23458950a1c3b45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1670a25eb39faab38247fbbd302e1aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1670a25eb39faab38247fbbd302e1aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/488551c7d433c52a5d6511ca5dca96ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/488551c7d433c52a5d6511ca5dca96ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b3997a05bce53a3e65cc22357d09034.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b3997a05bce53a3e65cc22357d09034.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f97f5fc70124c70b56598086acf3e4f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f97f5fc70124c70b56598086acf3e4f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c48c53b8727b1d0209a1db7d03f1f50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c48c53b8727b1d0209a1db7d03f1f50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc22d8146d53d256d7972478a7858a42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc22d8146d53d256d7972478a7858a42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8592232780fdca35d29c9e9cef0e25f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8592232780fdca35d29c9e9cef0e25f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56e16e7ae04456d801533b969de58127.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56e16e7ae04456d801533b969de58127.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe7ad603619f4614c11a3afacf98e9f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe7ad603619f4614c11a3afacf98e9f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c04470af48bf83539efe1ea0380cda20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c04470af48bf83539efe1ea0380cda20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14d70de1f7ea5309e97f145a895bdd6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14d70de1f7ea5309e97f145a895bdd6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cd3c3a60d92575400098cd31cf994bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cd3c3a60d92575400098cd31cf994bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c46be17c0c367292dd3a612d277898f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c46be17c0c367292dd3a612d277898f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68e909b6bbfd4760f6d94170bb9f1e32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68e909b6bbfd4760f6d94170bb9f1e32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e2fa55c8e1f12d592d85582c8be22f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e2fa55c8e1f12d592d85582c8be22f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ccbf36677da68035d9cca9deaf53bb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ccbf36677da68035d9cca9deaf53bb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae50a463802c44ff72b340374c93cbe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae50a463802c44ff72b340374c93cbe3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7afafb4d6813b46bf0ad3e750ee150d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7afafb4d6813b46bf0ad3e750ee150d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbcb8970bf6c845ce6c47ce5b15e8c74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbcb8970bf6c845ce6c47ce5b15e8c74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0a696a54810118531e752d2f12bdfa4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0a696a54810118531e752d2f12bdfa4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28ccd9c35226d3e5c7c2911b37ed4a4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28ccd9c35226d3e5c7c2911b37ed4a4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/288c91f8d06c08ca0f7c84a7c24e73be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/288c91f8d06c08ca0f7c84a7c24e73be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a132263063ce01eb7b1aeb772343841.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a132263063ce01eb7b1aeb772343841.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e71801586b48c9c9e0fff8a839eb9cf0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e71801586b48c9c9e0fff8a839eb9cf0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87df9ec07b264d5f504a29d89ee2b383.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87df9ec07b264d5f504a29d89ee2b383.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b170f3f949467f5eb92406a6a348ae8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b170f3f949467f5eb92406a6a348ae8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d02894b6d9134f0f0246b5cf51b116e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d02894b6d9134f0f0246b5cf51b116e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b00efd8962c004cfa2ed7b1c785f090.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b00efd8962c004cfa2ed7b1c785f090.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80ecf013fd3b56477fe2473f76d46131.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80ecf013fd3b56477fe2473f76d46131.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f469a6d04a48d833f91e7c84bee11f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f469a6d04a48d833f91e7c84bee11f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c87cf3b2e6ae0f67edc0a45f71a427b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c87cf3b2e6ae0f67edc0a45f71a427b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/390276a05dabfa7578e6f7d316692732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/390276a05dabfa7578e6f7d316692732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8a5f9c29d293488c2b35453e137691a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8a5f9c29d293488c2b35453e137691a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c13b7d09ed64a8cb73970cd7b66093a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c13b7d09ed64a8cb73970cd7b66093a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6a10c6dbf2116b893cf487c2a959c82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6a10c6dbf2116b893cf487c2a959c82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d7d50e5fcd430b9ccde72cbd84addea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d7d50e5fcd430b9ccde72cbd84addea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a733fc402f2ed628c003c9f08c59f993.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a733fc402f2ed628c003c9f08c59f993.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25d64e1901953a651bc7de7e3edde87c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25d64e1901953a651bc7de7e3edde87c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c1526ed336c04ad9703d3a203d42d88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c1526ed336c04ad9703d3a203d42d88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6768f1bac041434d73bb3c30bbbed21b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6768f1bac041434d73bb3c30bbbed21b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086023,'1086023','彩色波点缓冲宠物牵引绳',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/5a16ce8c351ee6d0dc8f27bed1e29e15.jpg\\\", \\\"http://yanxuan.nosdn.127.net/eddb587eb4b502e4abb186eac0a819bb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/28844a40fc7a7ad714c796769fa54df2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f6185198a77cd6c98758b4757f17c703.jpg\\\"]','','精致合金，萌趣波点',1,25,'http://yanxuan.nosdn.127.net/121a99e896b3e332c102eb5f6f9b3406.png','',0,0,'件',39.90,19.90,'<p><img src=\\\"http://yanxuan.nosdn.127.net/04e5d14f49ea8efd77f8f3904ec9a8e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04e5d14f49ea8efd77f8f3904ec9a8e2.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086024,'1086024','夜间反光防走失宠物牵引绳',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/431b952038783b216b8a75e132025ea2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/32704d4062a4a1224ce18721519d640e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ecc74550afbf00a3d73f4b7109304f44.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9b01c6a0aa47de63a25558a0c26f8ff2.jpg\\\"]','','编织反光，夜间防走失',1,24,'http://yanxuan.nosdn.127.net/af899cfaa13f515ecb9cf9a33f41370a.png','',0,0,'件',29.90,9.90,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ad4e26dd3bac3f6ee12727e416b55cca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad4e26dd3bac3f6ee12727e416b55cca.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086025,'1086025','美式精编麻花圆绳宠物牵引绳',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/7073844c6513a8b11a6777fdcc09d1a6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a5381526f8578910804a5745e7e1f23a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/910fe6194082bcf813fa6442261398b7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ff22d298cf6835407913f257f39bf1d5.jpg\\\"]','','编织纹理，牢固精致',1,27,'http://yanxuan.nosdn.127.net/78eff56b293c8354bc9ac496fc2c5179.png','',0,0,'件',69.00,49.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e56dbbad4b60ab1d67e5cce71bc395b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e56dbbad4b60ab1d67e5cce71bc395b1.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086026,'1086026','复古实心交织宠物牵引绳',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/75b103689a95765ada0639fc5b4dee12.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f254d7b695ac6cb9a8b4593174a5e0b0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9cf92ae9057a03482b27437578c484c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/77771fc2202855c26bf58788837e8097.jpg\\\"]','','实心黑色编织仿皮质宠物牵引绳',1,26,'http://yanxuan.nosdn.127.net/caecdaa37d9cbcff980cee0968911e34.png','',0,0,'件',49.00,29.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/43a5439bce36fe1b03a48b346daa6d46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43a5439bce36fe1b03a48b346daa6d46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d122b00dc8bca99ac1e885b0e69f9990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d122b00dc8bca99ac1e885b0e69f9990.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2281e036a2d40424628634a203e7080b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2281e036a2d40424628634a203e7080b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/088f48a2753122f97fc06b5aca633b77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/088f48a2753122f97fc06b5aca633b77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21ddf0de7aa4f0d5250df66a31306957.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21ddf0de7aa4f0d5250df66a31306957.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c4c0129712f496dfa7462f32a4109f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c4c0129712f496dfa7462f32a4109f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b0c6da8e2effd5f3a129143a6236831.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b0c6da8e2effd5f3a129143a6236831.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/599f555304437146f0bac97410108790.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/599f555304437146f0bac97410108790.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92e7c71c88037b724d12f75c7f1e1541.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92e7c71c88037b724d12f75c7f1e1541.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69949db3ddb860133664f2eab13df82d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69949db3ddb860133664f2eab13df82d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/355daafda57ab5e8693cfda66ee85381.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/355daafda57ab5e8693cfda66ee85381.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b766bb2a9319b148ea3cf200d504ecc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b766bb2a9319b148ea3cf200d504ecc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f10e5ffa73b9a0ab6618a42a84ed58c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f10e5ffa73b9a0ab6618a42a84ed58c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3e393b802ff16898e38d6ec8d1100b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3e393b802ff16898e38d6ec8d1100b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9e8a4a8d3246ccaebc76799a4c99005.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9e8a4a8d3246ccaebc76799a4c99005.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90010ef3083b3df38f0b4c19b0d37ead.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90010ef3083b3df38f0b4c19b0d37ead.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49b6c3b4c6fe67cd6ab2fe7d38264d97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49b6c3b4c6fe67cd6ab2fe7d38264d97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55b308be1d87d9c3520a0e9ee95e1073.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55b308be1d87d9c3520a0e9ee95e1073.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cee97664d128933c5944873e7a6e0f5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cee97664d128933c5944873e7a6e0f5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42cc29cb0038cafd04a7b33e9dbd7368.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42cc29cb0038cafd04a7b33e9dbd7368.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b281fb8d8c60488452034933269c229b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b281fb8d8c60488452034933269c229b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89ab246237a3d28170437349a4b9d1f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89ab246237a3d28170437349a4b9d1f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edf6bae4ca3c2785a659735649dcb346.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edf6bae4ca3c2785a659735649dcb346.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d804d35c23b29bd08ab6690382f211a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d804d35c23b29bd08ab6690382f211a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17ccfe0adc84dd862c63ca68e2f09e98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17ccfe0adc84dd862c63ca68e2f09e98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e41e5c299917a6b8991756de5bd35dd2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e41e5c299917a6b8991756de5bd35dd2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb72a032f4881fa0745c45e6009288c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb72a032f4881fa0745c45e6009288c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1aafd30947a677128e9a8043ab291dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1aafd30947a677128e9a8043ab291dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a17a446018c56777cd3147db02f465d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a17a446018c56777cd3147db02f465d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7bc5638ba378685c69f7ea74397312c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7bc5638ba378685c69f7ea74397312c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c63617a28674ed000eaf070798e7b4db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c63617a28674ed000eaf070798e7b4db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97f5139f4eda2be7de5809edac674de2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97f5139f4eda2be7de5809edac674de2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59ad9a7dc48201bea7de3f56d23bc732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59ad9a7dc48201bea7de3f56d23bc732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/440465f6da539b72353160fdf413349d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/440465f6da539b72353160fdf413349d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca984508f60231479a55e9e72d41ecf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca984508f60231479a55e9e72d41ecf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/488d4b906bf632db2e69c8c638c795ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/488d4b906bf632db2e69c8c638c795ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a239f282d18839b926f88edc6c5afeaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a239f282d18839b926f88edc6c5afeaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf95c929fae93e9b563cae1cc577d2eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf95c929fae93e9b563cae1cc577d2eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d40e69553829e08d79621bdb6788d8eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d40e69553829e08d79621bdb6788d8eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/213807781dab6c53dbd8d01e096c912d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/213807781dab6c53dbd8d01e096c912d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c647de1a7fa8068452aeaa4c9adae6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c647de1a7fa8068452aeaa4c9adae6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfcddb4ca2a82345b311f407e90fb430.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfcddb4ca2a82345b311f407e90fb430.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00c3766107beb8501979746c59d00711.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00c3766107beb8501979746c59d00711.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b92d3c1c47512ff8c11f792f98e59a19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b92d3c1c47512ff8c11f792f98e59a19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/135039e530c313757144253b6843e7d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/135039e530c313757144253b6843e7d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/846dcb901853f0af9ff9b83fa98ae9ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/846dcb901853f0af9ff9b83fa98ae9ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/320d78412d985eaf6eff7fa708576618.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/320d78412d985eaf6eff7fa708576618.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1574547a1b699826966c52f5589a2ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1574547a1b699826966c52f5589a2ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcaea26f40b145becc146f79e32a94ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcaea26f40b145becc146f79e32a94ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce6346c66b227b3b59ed5f7668b44878.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce6346c66b227b3b59ed5f7668b44878.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1086052,'1086052','20寸 铝镁合金登机箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/879dde68b149091ed832980a5388304a.png\\\", \\\"http://yanxuan.nosdn.127.net/879dde68b149091ed832980a5388304a.png\\\", \\\"http://yanxuan.nosdn.127.net/879dde68b149091ed832980a5388304a.png\\\", \\\"http://yanxuan.nosdn.127.net/879dde68b149091ed832980a5388304a.png\\\", \\\"http://yanxuan.nosdn.127.net/879dde68b149091ed832980a5388304a.png\\\"]','','时尚金属箱，奢品质感',1,4,'http://yanxuan.nosdn.127.net/93171a281c4ed272c007a050816e6f6c.png','',0,0,'件',879.00,859.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1090004,'1090004','日式法兰绒格子四件套',1008009,1001000,'[\\\"http://yanxuan.nosdn.127.net/fd485228946efc3d3b54f4bf6bf9dd9e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/184ec60b12c918282cfc9c8b3d6fdff4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/63952024af0379a53ae88513b87a6a47.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1180f6fd43359f216c9b9af6339f17f2.jpg\\\"]','','气质英伦格纹，法兰绒的丰满细腻',1,17,'http://yanxuan.nosdn.127.net/a3a92057f10e5e6e804c19ef495e3dee.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c5d674aa299a695c5c4c0db81025e754.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5d674aa299a695c5c4c0db81025e754.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f26e78d93e29aab32b4629dc0ac46a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f26e78d93e29aab32b4629dc0ac46a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f56ec00fd8014106cf25a661d3ec797b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f56ec00fd8014106cf25a661d3ec797b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74ee09e3d121c21c128fda3dbb48ff93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74ee09e3d121c21c128fda3dbb48ff93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b6a5cb5e75cc5159ef19e68a68c571f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b6a5cb5e75cc5159ef19e68a68c571f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d046159b8b5940565e52d432af47fdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d046159b8b5940565e52d432af47fdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ea5cebdcf5c5b6c7b63c537c391fac0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ea5cebdcf5c5b6c7b63c537c391fac0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbe2aa2c6f479f1a2fa7c3d1168eb2da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbe2aa2c6f479f1a2fa7c3d1168eb2da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c83ea824cd0baea85933c1a7ab7a6391.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c83ea824cd0baea85933c1a7ab7a6391.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1fcea29ea7aee7b8547dab203a2f0a2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1fcea29ea7aee7b8547dab203a2f0a2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/303e723e88c7a97637b03e8b6c909228.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/303e723e88c7a97637b03e8b6c909228.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45f6d6f44148d26fda2d433b8996a023.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45f6d6f44148d26fda2d433b8996a023.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b02c994370c16d506b2816323963a05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b02c994370c16d506b2816323963a05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13b1c59a181c003ef49c089697162f11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13b1c59a181c003ef49c089697162f11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9066da74fa3268749af74d48583a3915.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9066da74fa3268749af74d48583a3915.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22d1cbe72022eeefabdebb881be7be53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22d1cbe72022eeefabdebb881be7be53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdc0bb9e30e01729ef23564b07cffe45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdc0bb9e30e01729ef23564b07cffe45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6249c39ca733c75bc8c0bb90daeeb12a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6249c39ca733c75bc8c0bb90daeeb12a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f70749f36b60bd1962ce28ed180a93e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f70749f36b60bd1962ce28ed180a93e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c55fa3317e09fe3d3e2971f768e00947.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c55fa3317e09fe3d3e2971f768e00947.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3477d90873d80315571165816991a2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3477d90873d80315571165816991a2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c24363b2cd4728d0c0ef19478bda3f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c24363b2cd4728d0c0ef19478bda3f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b92e6be5e80ff4cf55d06b284ab784ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b92e6be5e80ff4cf55d06b284ab784ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7137ebf6468571550adaa70a3c770eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7137ebf6468571550adaa70a3c770eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88b466104d4d8502c28029bd8a5852ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88b466104d4d8502c28029bd8a5852ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccf54b36177613093209b78d992f50af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccf54b36177613093209b78d992f50af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb37be13750edf70aec43d9be731eb10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb37be13750edf70aec43d9be731eb10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cdb3ef4a50634629885d163e8b91d71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cdb3ef4a50634629885d163e8b91d71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24e991af9b9704ff1b2963fd2e999763.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24e991af9b9704ff1b2963fd2e999763.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77250c6dbf13b1b2955bf2f9ae44b454.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77250c6dbf13b1b2955bf2f9ae44b454.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7dedee5ad49f66f01f88c8cd94786c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7dedee5ad49f66f01f88c8cd94786c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c302e07c426c207a88ab703fda7f244.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c302e07c426c207a88ab703fda7f244.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5285d43ecccf0d28afcacccdc3054461.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5285d43ecccf0d28afcacccdc3054461.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24cc9d53907a67ee5564611f9649121f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24cc9d53907a67ee5564611f9649121f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad70628c1f27db2afa22874e9fad72e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad70628c1f27db2afa22874e9fad72e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89277ed3ec4b8c34ae027c33d61cac53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89277ed3ec4b8c34ae027c33d61cac53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff64316933f4fa3b0991f2ddeff84f91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff64316933f4fa3b0991f2ddeff84f91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/201299d3c5ec454b605b1ea23259a999.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/201299d3c5ec454b605b1ea23259a999.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/471c49adb955692d6bf571ec78a45bed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/471c49adb955692d6bf571ec78a45bed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53b525a3b77c6a51a0f2629e1d4cec79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53b525a3b77c6a51a0f2629e1d4cec79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10ed5f6502699bd5dbf451cf503f91a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10ed5f6502699bd5dbf451cf503f91a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84b29a0e3877ce6a0c536e7de9451987.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84b29a0e3877ce6a0c536e7de9451987.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9518254ccd271857e43d5ebf8fa16cc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9518254ccd271857e43d5ebf8fa16cc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8eda4c6e16f647c122c8e1fb72a5c296.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8eda4c6e16f647c122c8e1fb72a5c296.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9fa5cfdb4911b91bbb1ed617809dfd74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9fa5cfdb4911b91bbb1ed617809dfd74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d5849257871c8cdd4cb35e8e012b4da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d5849257871c8cdd4cb35e8e012b4da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ad636afec8d03bda3074611b8b4a2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ad636afec8d03bda3074611b8b4a2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/163404e599ff0fd71396efaabb32f660.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/163404e599ff0fd71396efaabb32f660.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7189a89979d51090a2c2492b716634f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7189a89979d51090a2c2492b716634f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d28aaf8c345118e16742dde54f2a70e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d28aaf8c345118e16742dde54f2a70e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e31e9df5a49f85cc18676f4ce97d118.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e31e9df5a49f85cc18676f4ce97d118.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7aaed516f1280e923796c46b364fbc20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7aaed516f1280e923796c46b364fbc20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bbb2299807545f2c96717276feb200a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bbb2299807545f2c96717276feb200a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b6b989f53d9c5d9d5046226000c2f8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b6b989f53d9c5d9d5046226000c2f8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a04c82669e08d0f884db98a63d2d268.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a04c82669e08d0f884db98a63d2d268.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19e6c5e17ed0490eb761c4e9cc207d13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19e6c5e17ed0490eb761c4e9cc207d13.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092001,'1092001','星空原色水晶笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/9e6857c9205ddd5129c47c6e23a1b67c.png\\\", \\\"http://yanxuan.nosdn.127.net/9e6857c9205ddd5129c47c6e23a1b67c.png\\\", \\\"http://yanxuan.nosdn.127.net/9e6857c9205ddd5129c47c6e23a1b67c.png\\\", \\\"http://yanxuan.nosdn.127.net/9e6857c9205ddd5129c47c6e23a1b67c.png\\\", \\\"http://yanxuan.nosdn.127.net/9e6857c9205ddd5129c47c6e23a1b67c.png\\\"]','','140颗原色水晶，璀璨如星',1,4,'http://yanxuan.nosdn.127.net/8e35b003ce7895c39eeb073b1f61b1d7.png','',0,0,'支',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092005,'1092005','木韵檀香黄铜笔',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png\\\", \\\"http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png\\\", \\\"http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png\\\", \\\"http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png\\\", \\\"http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png\\\"]','','缅甸黑檀与黄铜的结合，彰显贵气',1,5,'http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png','',0,0,'件',59.00,39.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092024,'1092024','双宫茧纱布亲肤手工蚕丝被',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/9c42a6bac4380d79d4dccb68ac2b4bcc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18f86419d1f26597087a999b3e539b50.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2cca81110d5a9ae4a012ab69b86a2246.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c00fcd20e4147e3f5b32db47161eae81.jpg\\\"]','','手工匠心织造',1,14,'http://yanxuan.nosdn.127.net/f245a86dcb9f455217241e437b203926.png','',0,0,'件',1619.00,1599.00,'<p><video id=\\\"tmpVedio0\\\" class=\\\"edui-upload-video video-js vjs-default-skin video-js\\\" controls=\\\"\\\" preload=\\\"auto\\\" width=\\\"100%\\\" height=\\\"\\\" data-setup=\\\"{}\\\"><source src=\\\"http://yanxuan.nosdn.127.net/4bc94a640a469e2a701f4530cbf2868d.mp4\\\" type=\\\"video/mp4\\\"/></video>‍</p><p><img src=\\\"http://yanxuan.nosdn.127.net/12cc61a27bc734434a218b8cc07b214d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12cc61a27bc734434a218b8cc07b214d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/857fc6fa8911c6427797145b9bb6ae6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/857fc6fa8911c6427797145b9bb6ae6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a113e8c2e1623ed7bb40e9090cbe155f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a113e8c2e1623ed7bb40e9090cbe155f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0e4903bb5271b173cc4bb08c86f7e5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0e4903bb5271b173cc4bb08c86f7e5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d673570bf16e17d50154db6b374ac8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d673570bf16e17d50154db6b374ac8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6536dc0e19f54d7f71b3bb2ab400e81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6536dc0e19f54d7f71b3bb2ab400e81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65bfe17e25d4f99f343cd9a98872f9b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65bfe17e25d4f99f343cd9a98872f9b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b48eae0d7ea1fd323939ce05af73cbc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b48eae0d7ea1fd323939ce05af73cbc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7a6edefc081c303c9ace62b2caa7ea6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7a6edefc081c303c9ace62b2caa7ea6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e94d4d6abf57837c97c7bddfc19f2745.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e94d4d6abf57837c97c7bddfc19f2745.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42c9406a28fc6ccfa7e42a15ca01af02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42c9406a28fc6ccfa7e42a15ca01af02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f02cc82b2b34ecad3d9bdd8f2a8398c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f02cc82b2b34ecad3d9bdd8f2a8398c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c33ae57de042c04645ed74523ddfc00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c33ae57de042c04645ed74523ddfc00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6b1c85d6f7eb06e90b2ec99ebb5ce6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6b1c85d6f7eb06e90b2ec99ebb5ce6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7d4be39f58a15e3af9c57c39934b020.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7d4be39f58a15e3af9c57c39934b020.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f6c12a01a43030328db2a6fea92a1a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f6c12a01a43030328db2a6fea92a1a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6922fe294f7968453fd50f7c9418d6c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6922fe294f7968453fd50f7c9418d6c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c54d9e1d0185acf9945f05773b45e336.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c54d9e1d0185acf9945f05773b45e336.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c84e42086bda07a42ab7957e86c3e8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c84e42086bda07a42ab7957e86c3e8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97905cbf70e960208ad59529e9c9d96a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97905cbf70e960208ad59529e9c9d96a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d20ea3cf22532281f5220d68fd56644.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d20ea3cf22532281f5220d68fd56644.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4f6aa61c6cbd9d8307bbe3df248ac86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4f6aa61c6cbd9d8307bbe3df248ac86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79af898960aeeeb5db1f93bad8b4f0c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79af898960aeeeb5db1f93bad8b4f0c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7307f590b71f3c70e9190c23015f19f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7307f590b71f3c70e9190c23015f19f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70bab066f55050f2b2fa4e8f00bca265.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70bab066f55050f2b2fa4e8f00bca265.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/987835d0e28209afc539162b98a04cd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/987835d0e28209afc539162b98a04cd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f3b06b5934aeac4efe1755d3a987c30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f3b06b5934aeac4efe1755d3a987c30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e27f4183d153a8cbf1a16acdfd171fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e27f4183d153a8cbf1a16acdfd171fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3faa2a006894691dc2dd0a47718645f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3faa2a006894691dc2dd0a47718645f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/230c7610de70ed83974dd4a57d0c700d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/230c7610de70ed83974dd4a57d0c700d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecd9596f63b87c230ddab5b55a60f813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecd9596f63b87c230ddab5b55a60f813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96690003d2be2183f78e6ca88816ec8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96690003d2be2183f78e6ca88816ec8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f94a58279084fa70e89124c135aaf48c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f94a58279084fa70e89124c135aaf48c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ac85b85d16ff2953fe0183a2c3fab2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ac85b85d16ff2953fe0183a2c3fab2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b43e793f03e20d8201dac6dd01d73215.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b43e793f03e20d8201dac6dd01d73215.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/725eaaa2edfaa0fd6688bb0a16acf7fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/725eaaa2edfaa0fd6688bb0a16acf7fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a142ec7e60d0f510b8b7dffd66f8e8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a142ec7e60d0f510b8b7dffd66f8e8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a79e2c1314034c20fd77372c8f83a924.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a79e2c1314034c20fd77372c8f83a924.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ce918f1fd0486e1e3dab4ce2edbece9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ce918f1fd0486e1e3dab4ce2edbece9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/464019e51c20c47849f92a319c1c6b6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/464019e51c20c47849f92a319c1c6b6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd1ca477443ea80dd310cc0c8c903b82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd1ca477443ea80dd310cc0c8c903b82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5ed5e4827c7623fa0d4f360a10ee109.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5ed5e4827c7623fa0d4f360a10ee109.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eccc71760c31e25893235d11ff1310cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eccc71760c31e25893235d11ff1310cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/059ca713a16298bb62d8b11fd91e5b2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/059ca713a16298bb62d8b11fd91e5b2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36ae5438953dcbdb77b237d4ec6cfea1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36ae5438953dcbdb77b237d4ec6cfea1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5a1253ad74f94865c4f87ddc69ac721.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5a1253ad74f94865c4f87ddc69ac721.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/765a73c655c2636eb4c6cb30e54a076b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/765a73c655c2636eb4c6cb30e54a076b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f11a95cd2c22e3397bff05606658a2c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f11a95cd2c22e3397bff05606658a2c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b14601b0465dbfb498c8d090c6a0795.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b14601b0465dbfb498c8d090c6a0795.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b9e0ebcd78cc2b783c5a7a4ad96466a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b9e0ebcd78cc2b783c5a7a4ad96466a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/083e4d0fe87c59d1c34b9929417acfa4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/083e4d0fe87c59d1c34b9929417acfa4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dd4f4f8efc6846f7cc874e36c96a5f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dd4f4f8efc6846f7cc874e36c96a5f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24821c54966d1405a7a289475d68b78a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24821c54966d1405a7a289475d68b78a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d3e5ce1382e33bd6b323e58613dc389.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d3e5ce1382e33bd6b323e58613dc389.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092025,'1092025','Let it go男式纯棉免洗内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/3006cf6f854372683143571d3595dafc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3006cf6f854372683143571d3595dafc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3006cf6f854372683143571d3595dafc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3006cf6f854372683143571d3595dafc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3006cf6f854372683143571d3595dafc.jpg\\\"]','','伽玛射线安心杀菌',1,2,'http://yanxuan.nosdn.127.net/56a46e9a4832587471c0f9ad7c1b7d85.png','',0,0,'件',39.90,19.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092026,'1092026','Let it go女式纯棉免洗内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/203781d76d1b4dedf50fd769be857426.jpg\\\", \\\"http://yanxuan.nosdn.127.net/203781d76d1b4dedf50fd769be857426.jpg\\\", \\\"http://yanxuan.nosdn.127.net/203781d76d1b4dedf50fd769be857426.jpg\\\", \\\"http://yanxuan.nosdn.127.net/203781d76d1b4dedf50fd769be857426.jpg\\\", \\\"http://yanxuan.nosdn.127.net/203781d76d1b4dedf50fd769be857426.jpg\\\"]','','100%纯棉，出行必备',1,1,'http://yanxuan.nosdn.127.net/83433f5a7ef69abda2544a53332a0fad.png','',0,0,'件',39.90,19.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092038,'1092038','日式天然桐木材质猫抓板',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/c66754d7643f2a2436aee1195ad01251.jpg\\\", \\\"http://yanxuan.nosdn.127.net/80fbb65d15520920326e9fcd881c9725.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ff2ee56c1ebdb228591950364f209fb1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/da541d4964c64a4065ce16f08da162c1.jpg\\\"]','','天然桐木，耐磨耐抓',1,19,'http://yanxuan.nosdn.127.net/1aba9ed9c9160b9ca8e7de58ce4e46b1.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/8e51b9b1ead5c197d62182de7f62dab8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e51b9b1ead5c197d62182de7f62dab8.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1092039,'1092039','圆钵碗状高密材质猫抓板',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/b50a9a25a4bce5e5ed533dfbb79a2291.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cfb74ab8c094ef7d6ea81691ccbcd72b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d55ec11fb9f3fd8d7427de1e4e597cbe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9e1821d07934c717c3ff8a031e57ee48.jpg\\\"]','','可抓可睡，一物两用',1,18,'http://yanxuan.nosdn.127.net/d8c18953bcb05f0b07d6b48e2d159ace.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7f5a8783df659ea49722ea12304a5f63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f5a8783df659ea49722ea12304a5f63.jpg\\\"/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1093000,'1093000','月光曲·小木棉',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/e5143014acaf1831007c3a90eb4f2ed8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/70dffe9b1f565e57866c8d2cbaaf35fc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8d411259e7af9b37f859858b5cd9027a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5d467a34e978f99ad5a36b5cff7de7d9.jpg\\\"]','','仿真PU，定格典雅',1,7,'http://yanxuan.nosdn.127.net/1a22cc488390b616e75afbbd94db6584.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/5b4f7b1c7645b54fb9135631775c44d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b4f7b1c7645b54fb9135631775c44d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/215030eb837b8d81ffa35de802dfb201.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/215030eb837b8d81ffa35de802dfb201.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9746b52778ec414fe557a7e9e6bb61c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9746b52778ec414fe557a7e9e6bb61c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd8f269e2deb6d90ddb7e8f8ea2d96f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd8f269e2deb6d90ddb7e8f8ea2d96f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30e8a8c6694f40c9bef39b32e0bb7721.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30e8a8c6694f40c9bef39b32e0bb7721.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21bf19b684b80bb2d8ef8661d65d15df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21bf19b684b80bb2d8ef8661d65d15df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1fc84555c266ad2b42ea7d14809292e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1fc84555c266ad2b42ea7d14809292e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8b2d5eba9a2812870446dce43ea9111.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8b2d5eba9a2812870446dce43ea9111.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/519eb590f329bd330622a4443d52e21c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/519eb590f329bd330622a4443d52e21c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8bfe63c2eae43aab178e4eb08ae2294.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8bfe63c2eae43aab178e4eb08ae2294.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f837236ac348079f3910389c3bdadd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f837236ac348079f3910389c3bdadd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2de72436183e808a6da615cdb4743c87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2de72436183e808a6da615cdb4743c87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3138859c5896d0726e3b7186ac73f34d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3138859c5896d0726e3b7186ac73f34d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/048abf054bd0373015abe44c8455b707.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/048abf054bd0373015abe44c8455b707.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d96ec29f78f8043ec48713a11deb52d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d96ec29f78f8043ec48713a11deb52d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2493c9d7c48ee6ee53d12e946e8e4a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2493c9d7c48ee6ee53d12e946e8e4a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b937b14bf953bd64c5362353b8f5e055.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b937b14bf953bd64c5362353b8f5e055.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd6ff3a660a801918df6c01bf72ed27c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd6ff3a660a801918df6c01bf72ed27c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c215983e1f557db16b5db9f7e51ff14b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c215983e1f557db16b5db9f7e51ff14b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37730a86094625aae577ad68ebfb8253.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37730a86094625aae577ad68ebfb8253.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bde8a403526d11c307223a0253267a5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bde8a403526d11c307223a0253267a5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cd087a4443af8330dc7654648e88fec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cd087a4443af8330dc7654648e88fec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58f62a0d9ddcc8c0dd8d505005f3107c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58f62a0d9ddcc8c0dd8d505005f3107c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33d0518f396b352c061c7b695194bc0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33d0518f396b352c061c7b695194bc0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/330d0261403d9d0ad11405d19d6bc15f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/330d0261403d9d0ad11405d19d6bc15f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6974e3ab2f18401859d4391958b344a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6974e3ab2f18401859d4391958b344a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac3159d7d6cc48f952bad1c4586c04d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac3159d7d6cc48f952bad1c4586c04d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28c2321f53984accfcdc0cdf2761fbc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28c2321f53984accfcdc0cdf2761fbc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae31796c18b3ed25687e6fd12cb50c9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae31796c18b3ed25687e6fd12cb50c9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a2b3a9b6aa7117d4bc67a516365b0c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a2b3a9b6aa7117d4bc67a516365b0c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fba9ea69f30ed059eea01934157e7016.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fba9ea69f30ed059eea01934157e7016.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03b99b6c2ce16be772f09ee09356916d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03b99b6c2ce16be772f09ee09356916d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84b115d9acbaab972286dda97c1661e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84b115d9acbaab972286dda97c1661e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5602f58cda58b4e7bad9cb248732e97f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5602f58cda58b4e7bad9cb248732e97f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18ed6a3403fb96e1bd208d393b1dcc5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18ed6a3403fb96e1bd208d393b1dcc5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37369ac790686de9cf0ddea2af1d045e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37369ac790686de9cf0ddea2af1d045e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f57fa2a4c5fe4ca90480b619c0d188de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f57fa2a4c5fe4ca90480b619c0d188de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d21c94dc65efb8c92eeafb3ee1f75b79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d21c94dc65efb8c92eeafb3ee1f75b79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae0d16dfa896f2b5a4681de0621870ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae0d16dfa896f2b5a4681de0621870ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ea54974c6f8eec823382abb383057f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ea54974c6f8eec823382abb383057f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/294e9a51f1692b456dfac753b46fa4c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/294e9a51f1692b456dfac753b46fa4c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8043ad0af70f60c9df2d2969de73c409.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8043ad0af70f60c9df2d2969de73c409.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16f8a25987a31126420e3dee1c850cb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16f8a25987a31126420e3dee1c850cb1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81ada0d29e8f96a844e3adce2b850c4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81ada0d29e8f96a844e3adce2b850c4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f40c62bd5e57b10992486fd76c8c3a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f40c62bd5e57b10992486fd76c8c3a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2310c4f5f74a4fc252e8850cab0753b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2310c4f5f74a4fc252e8850cab0753b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/440ce6f17e9f55a2cb4ab75c67a11b72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/440ce6f17e9f55a2cb4ab75c67a11b72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eae892cfc10fa235e10a2146e4c62f18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eae892cfc10fa235e10a2146e4c62f18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0ef2820f6d6283cc05b968d1835cfe9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0ef2820f6d6283cc05b968d1835cfe9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ecc99d34f2974f50abcb75006eb1dee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ecc99d34f2974f50abcb75006eb1dee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/710b02daf30326f75d0029da0651c953.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/710b02daf30326f75d0029da0651c953.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07c00e8f2b7ae873c5478b80c65f247e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07c00e8f2b7ae873c5478b80c65f247e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae6cf1147c23c8b0911346923a5602cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae6cf1147c23c8b0911346923a5602cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d2a31a9030beea78d1780a607647090.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d2a31a9030beea78d1780a607647090.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee86a9cc0d7dddc47ddef5ca69a166ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee86a9cc0d7dddc47ddef5ca69a166ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9b13a8de3031bbf68600acf1060a862.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9b13a8de3031bbf68600acf1060a862.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e7e5d9292e77c82fdc20b7e2d2abfc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e7e5d9292e77c82fdc20b7e2d2abfc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52aff3d2d7f6737fed6c06e475b1a6d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52aff3d2d7f6737fed6c06e475b1a6d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bea2212caf8f2760084d06bf2f15910.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bea2212caf8f2760084d06bf2f15910.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edef2d2f9f2b032429dc141089a85664.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edef2d2f9f2b032429dc141089a85664.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/175f2c644c3238f1af8c23cf91c34d23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/175f2c644c3238f1af8c23cf91c34d23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79bd08c21f83de81caa65bf38f14c750.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79bd08c21f83de81caa65bf38f14c750.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/655320ee6dc49430442fbba81e44c41a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/655320ee6dc49430442fbba81e44c41a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28a8c402c42e9671591167ab49ba6857.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28a8c402c42e9671591167ab49ba6857.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0eb1cb510d5f338af2b595d30da49b7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0eb1cb510d5f338af2b595d30da49b7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68a6ec175d2c46f0162f8de63add1189.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68a6ec175d2c46f0162f8de63add1189.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0c72d3e82a13c65ef52d5a09f178d2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0c72d3e82a13c65ef52d5a09f178d2e.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1093001,'1093001','月光曲·马蹄莲',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/1bfba99384357392f90cd06a63d1f152.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9d9b14c89edd8ebfeb886b7aed80e79c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3aff9a88b67003e08ebe2f75c3e71aed.jpg\\\", \\\"http://yanxuan.nosdn.127.net/eee4ccfba75b991d6fc4b3a25ee253bd.jpg\\\"]','','仿真PU，定格典雅',1,8,'http://yanxuan.nosdn.127.net/71fede861c3641d570a89a65ccf4525f.png','',0,0,'件',49.00,29.00,'<p>*温馨提示：若马蹄莲有些褶皱，可将白色花朵部分放入60-70℃的水中热10秒立刻拿出，可恢复原状。</p><p>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; （注意：只针对马蹄莲白色花朵部分）</p><p><img src=\\\"http://yanxuan.nosdn.127.net/14c4de5b68fb2020a0264babd024c603.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14c4de5b68fb2020a0264babd024c603.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7d4c10f37efe62df82a9d9ddcf5391d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7d4c10f37efe62df82a9d9ddcf5391d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88704a0306ac60f7ed5465f1a52f7a97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88704a0306ac60f7ed5465f1a52f7a97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e6f63dc6bd213450ee31307d521fc50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e6f63dc6bd213450ee31307d521fc50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/843c898a55f5ba807ccfcde8171f6ab5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/843c898a55f5ba807ccfcde8171f6ab5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe488f44863e3b1b55a94a8fb7d66468.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe488f44863e3b1b55a94a8fb7d66468.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86ea4ad80d5d9eb678f5845c5bd1f3df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86ea4ad80d5d9eb678f5845c5bd1f3df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/507427743783c8ad1e1e7acefe7ab16e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/507427743783c8ad1e1e7acefe7ab16e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/087ac3cee9d8bd4656969f40ff05bde1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/087ac3cee9d8bd4656969f40ff05bde1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5756bce5084f0da0d65ee9ba2ac40a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5756bce5084f0da0d65ee9ba2ac40a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3823255dce16fc44337599b63351b02b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3823255dce16fc44337599b63351b02b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b152b2d010f933f515059e3ed9758b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b152b2d010f933f515059e3ed9758b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fa95525f3e21af9ce526d27581cec4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fa95525f3e21af9ce526d27581cec4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e997646bc2f741071b5f06fedc2a409f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e997646bc2f741071b5f06fedc2a409f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/360ca78e2b931542a920ac7219e93ad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/360ca78e2b931542a920ac7219e93ad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e17fba13878001812d33e60c53a5bb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e17fba13878001812d33e60c53a5bb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b603073a532c7d16df0b09ff196d9516.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b603073a532c7d16df0b09ff196d9516.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d14ee677f0cbad8146478f9bdf80b39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d14ee677f0cbad8146478f9bdf80b39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbb4839d17e5a4b49b16c2cb2a7a0bac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbb4839d17e5a4b49b16c2cb2a7a0bac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6e04bfeaa2be740610fb9ce274dcfed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6e04bfeaa2be740610fb9ce274dcfed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/456c0767ef28a4ffd52bfdf2339998e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/456c0767ef28a4ffd52bfdf2339998e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7fa3373676f27f95c5dff94f7bf5b42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7fa3373676f27f95c5dff94f7bf5b42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45b2e9c89455735fba95f9c75e0c99a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45b2e9c89455735fba95f9c75e0c99a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e7c23c1da969d6a92ecbad43a0f10e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e7c23c1da969d6a92ecbad43a0f10e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbad0ce217bb20c7d93292ee789492f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbad0ce217bb20c7d93292ee789492f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78b3c74a0fdf05bfcf62730c535ef2fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78b3c74a0fdf05bfcf62730c535ef2fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b76a95e96b3f862486bee6dfbaccdaab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b76a95e96b3f862486bee6dfbaccdaab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ca838cfde190a22fa2ad0f8d55971b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ca838cfde190a22fa2ad0f8d55971b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15f3d4996d1cba52763c30f26a78a04f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15f3d4996d1cba52763c30f26a78a04f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a2172c4f6744c1024079b48554907ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a2172c4f6744c1024079b48554907ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/303125108bdfd52bcab6dfb1b0bd7029.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/303125108bdfd52bcab6dfb1b0bd7029.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83d7090ea963d133103a3bfcac61484d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83d7090ea963d133103a3bfcac61484d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eea591cfebdbb6cba0ae856e9a02894e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eea591cfebdbb6cba0ae856e9a02894e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab2cca8081ab4028778789e84b4a8c07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab2cca8081ab4028778789e84b4a8c07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12b1054eef2e784a993b4ccd01f240e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12b1054eef2e784a993b4ccd01f240e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cde59e5ca29d69227359e0e326d6ff8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cde59e5ca29d69227359e0e326d6ff8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/143ab0a0996071b335a20543ce9b7859.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/143ab0a0996071b335a20543ce9b7859.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2bba82dcc5d4e446999fd2f53feea873.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2bba82dcc5d4e446999fd2f53feea873.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ed53aff4e1511efbbb44276b86c04f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ed53aff4e1511efbbb44276b86c04f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7873136c7901142199933d698f8857c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7873136c7901142199933d698f8857c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35c9d0b967485ff7f6197c2767578271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35c9d0b967485ff7f6197c2767578271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c7751f977b560b203978f53dd784f77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c7751f977b560b203978f53dd784f77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/251f3e1aa29dfeef37a2c44f315a87d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/251f3e1aa29dfeef37a2c44f315a87d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66d17ca9055cd144fea50657ea55d89a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66d17ca9055cd144fea50657ea55d89a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3351f1a84e9700554add7719325ee7d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3351f1a84e9700554add7719325ee7d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e647f67fd2581fdde7b77a6f4ba76f8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e647f67fd2581fdde7b77a6f4ba76f8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/409de727c8353a60b27545ee1f4c9f62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/409de727c8353a60b27545ee1f4c9f62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd1705c641c3d1dc20d21ca02a45d57c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd1705c641c3d1dc20d21ca02a45d57c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1baac00858cd4e174301490c05aa2547.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1baac00858cd4e174301490c05aa2547.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9233b3612f978c00ca77b2bbb6258a17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9233b3612f978c00ca77b2bbb6258a17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66925098d2c2bf8e6371395a74e5fd75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66925098d2c2bf8e6371395a74e5fd75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5d209471e5d4c7f3cd44abcd969f017.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5d209471e5d4c7f3cd44abcd969f017.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54f7aa76e034ea98467e172e5247b52a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54f7aa76e034ea98467e172e5247b52a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8871ba3e623365c2f0a5bfcbcfcc7df2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8871ba3e623365c2f0a5bfcbcfcc7df2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73353926afed90979ceb13f8db3cd789.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73353926afed90979ceb13f8db3cd789.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1093002,'1093002','月光曲·清水木棉',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/327762ee4559fb78ca99bdfec4ba2941.jpg\\\", \\\"http://yanxuan.nosdn.127.net/63014fa05d18b3b8d312c37646ac78c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0c6554fa7977ab5afb9405053f04885c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7c9340a889501907e5315a572eb0bc9f.jpg\\\"]','','仿真之美裹于精致玻璃',1,9,'http://yanxuan.nosdn.127.net/48d95e820628610fcdcda30570d4379c.png','',0,0,'件',69.00,49.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/f7344fa03430c9e7608924f2396e9a3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7344fa03430c9e7608924f2396e9a3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae8b2c0ab30afa202bb6569bc64fb05c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae8b2c0ab30afa202bb6569bc64fb05c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/260a1043d33c23222d0a643bcb78efa5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/260a1043d33c23222d0a643bcb78efa5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2ac6fa26b02ccac9e77f469f2f81627.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2ac6fa26b02ccac9e77f469f2f81627.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f7db39e5c98c07104cfb1838b3a4606.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f7db39e5c98c07104cfb1838b3a4606.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03cd25c518409a45a6c6d22a6bb36f6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03cd25c518409a45a6c6d22a6bb36f6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/baa155140eaf7efbdd7dcdba00bb1c59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/baa155140eaf7efbdd7dcdba00bb1c59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c9c6b4b7af2cf108b50d17015247429.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c9c6b4b7af2cf108b50d17015247429.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0fcd1ec7c1d0f5bf74a6ecdc288e9ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0fcd1ec7c1d0f5bf74a6ecdc288e9ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8692aa87d719cb0b6e8e850b415d33ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8692aa87d719cb0b6e8e850b415d33ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53ee60e2f229f6186f4b14ff2b28359d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53ee60e2f229f6186f4b14ff2b28359d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e348fd6476d54cedb1acbef6510e4d59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e348fd6476d54cedb1acbef6510e4d59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b70cf32a96e3ba24d7d73d0d0b573d68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b70cf32a96e3ba24d7d73d0d0b573d68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f16474f1734554a39faad2c49d3e3367.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f16474f1734554a39faad2c49d3e3367.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5b24698379ac242008ccd444c34ca37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5b24698379ac242008ccd444c34ca37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/932dea95459ae481bad1adca3f649ab4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/932dea95459ae481bad1adca3f649ab4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1961bd3fbd169f3a9da38a33a52bdb95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1961bd3fbd169f3a9da38a33a52bdb95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27122c54b2745f10b655a018ef167c94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27122c54b2745f10b655a018ef167c94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/958e02ebbde0e4e79805b0ab6cff54e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/958e02ebbde0e4e79805b0ab6cff54e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a08733dc5f74f2be9e554f8a9721623.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a08733dc5f74f2be9e554f8a9721623.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1a9b63938e248d83c6ef21db2ab5464.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1a9b63938e248d83c6ef21db2ab5464.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/acf2bc7c117b0619bcc0d4a2f77688a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/acf2bc7c117b0619bcc0d4a2f77688a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af956b451c2f5c710e5802ca264ace3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af956b451c2f5c710e5802ca264ace3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a57eebbc20487a9627ed72efbaf77e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a57eebbc20487a9627ed72efbaf77e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/811d0feee6b594580828d1c0afa87004.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/811d0feee6b594580828d1c0afa87004.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6094507a642ad35bcc6ff6094f786d46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6094507a642ad35bcc6ff6094f786d46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc959993726c6f756923ab3a7e79f8ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc959993726c6f756923ab3a7e79f8ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/847af1884da2988cb7dc72f4205bcbf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/847af1884da2988cb7dc72f4205bcbf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cb47e4ab1d7afd5a61b548007a302d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cb47e4ab1d7afd5a61b548007a302d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/947c55e2df37a5806f1a2ea87cf4a8d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/947c55e2df37a5806f1a2ea87cf4a8d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9dea6bc310ebe6872a7655c550d825fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9dea6bc310ebe6872a7655c550d825fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6890ba6f04ed5574c92cb2b24aaeb5f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6890ba6f04ed5574c92cb2b24aaeb5f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fc24ce0bb5969bd6774a8528cebfde5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fc24ce0bb5969bd6774a8528cebfde5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d2c69d95f89632b0dcf342ddfe41def.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d2c69d95f89632b0dcf342ddfe41def.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/147cb97075af63e6001701f73be05869.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/147cb97075af63e6001701f73be05869.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6006af9450c3e705aa8492102c33313.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6006af9450c3e705aa8492102c33313.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1f8b607eeca99a57915539207225fb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1f8b607eeca99a57915539207225fb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c11c60ac99591a6c38c285adc14c62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c11c60ac99591a6c38c285adc14c62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/072092ff06a84465883a9c0666bb7c41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/072092ff06a84465883a9c0666bb7c41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6075177496003cb2a873425f315c0ac0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6075177496003cb2a873425f315c0ac0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad8b5858463e737515b52fd566ce3443.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad8b5858463e737515b52fd566ce3443.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fa88a238b9d4ff1ed3c527bcb54cdbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fa88a238b9d4ff1ed3c527bcb54cdbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e73c0d99a3934634ab3f05d03c7b4bb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e73c0d99a3934634ab3f05d03c7b4bb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fe3d07b6291ad7c72fdf11df14642bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fe3d07b6291ad7c72fdf11df14642bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da37af40f71b3b5d1ace9badecc6f452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da37af40f71b3b5d1ace9badecc6f452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43c18f4ddf398f8191f32453207fd7c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43c18f4ddf398f8191f32453207fd7c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/795cb1b99501a45b51cb948132d4478e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/795cb1b99501a45b51cb948132d4478e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b83c807d156eafcd75f2302cff0c335.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b83c807d156eafcd75f2302cff0c335.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3af7559bee8204a678915ff745cb0db9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3af7559bee8204a678915ff745cb0db9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea4fb92585ea1b42f52974aeb6533359.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea4fb92585ea1b42f52974aeb6533359.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5801bc264a549ccc28c8a6cbbc586070.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5801bc264a549ccc28c8a6cbbc586070.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dab91f751ac4a3142ed4ebb5239b73b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dab91f751ac4a3142ed4ebb5239b73b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4f2fd647fd9816dc5ce9fa7520ee24b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4f2fd647fd9816dc5ce9fa7520ee24b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f693ee866e239666f5c7257f5380149.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f693ee866e239666f5c7257f5380149.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2b0154f00a81c2a4d5f2c4bdfcc2e4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2b0154f00a81c2a4d5f2c4bdfcc2e4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/078b0baa26bfe33f8517425717904217.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/078b0baa26bfe33f8517425717904217.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8722ea6b8b94a084327f43652bd36725.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8722ea6b8b94a084327f43652bd36725.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12afaa904d2bf4d1b99c952b48b41877.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12afaa904d2bf4d1b99c952b48b41877.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dba1cc41d9cba2118ef0c6acfb3bf7e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dba1cc41d9cba2118ef0c6acfb3bf7e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5cbff5bda3610d137839e60d19b70a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5cbff5bda3610d137839e60d19b70a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85db07bb2753c51424187d62baff36e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85db07bb2753c51424187d62baff36e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e85b5b64edc6e9254fa9291b58a94aa5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e85b5b64edc6e9254fa9291b58a94aa5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b64f9e066aa66161b05d2e055739599e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b64f9e066aa66161b05d2e055739599e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9ba60f428dbb09d44a0480073a96e04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9ba60f428dbb09d44a0480073a96e04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dade0ed72bae5bfa019ba89db5c91bb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dade0ed72bae5bfa019ba89db5c91bb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebc93b3376de58dd6cead7568c97a1d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebc93b3376de58dd6cead7568c97a1d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/763f44ffec9e182324b46f1c4aeb0ae0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/763f44ffec9e182324b46f1c4aeb0ae0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da4fce648e13fc32865f9eb812de0ca7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da4fce648e13fc32865f9eb812de0ca7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f435576c31011da4bfdd5eb8812f01d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f435576c31011da4bfdd5eb8812f01d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34591cf9ab39eea855ff37b4998a432e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34591cf9ab39eea855ff37b4998a432e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f84d00a688840605788645d41397849.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f84d00a688840605788645d41397849.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f8d4e0cc9f80cb99c5c2073fd31f75f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f8d4e0cc9f80cb99c5c2073fd31f75f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b099f7cc6fd06976edd575cafad2c49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b099f7cc6fd06976edd575cafad2c49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e7cb7b9ac22d6593f71672b121190c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e7cb7b9ac22d6593f71672b121190c3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097004,'1097004','原素系列实木餐桌',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/dea90e7c308bb1bd9e926cfbe493f243.jpg\\\", \\\"http://yanxuan.nosdn.127.net/308fab883bb2a72adac0e724a3d9aabd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3d13ba389f3be260c930f582545b9d5d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/524175ab6d501444ac03cb0c89963ca0.jpg\\\"]','','素雅大气，结实不易蛀',1,3,'http://yanxuan.nosdn.127.net/54f822e9c542d20566c7f70f90d52ae6.png','',0,0,'件',1719.00,1699.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c2a6e4ab8410fc01ee9772c6f90db11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c2a6e4ab8410fc01ee9772c6f90db11.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c336a3e114806ba1518ccf3c6ff896d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c336a3e114806ba1518ccf3c6ff896d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/423aad8253c881d42cd6cfde720828da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/423aad8253c881d42cd6cfde720828da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c915ce02ff7f9783ae08569f06bbb445.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c915ce02ff7f9783ae08569f06bbb445.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64bc73e530ef711c2fba02419adb0b20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64bc73e530ef711c2fba02419adb0b20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18345b24e0209b903e31220ba57db7b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18345b24e0209b903e31220ba57db7b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f82c372b1b5c9bd66d4f3369fc6e1e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f82c372b1b5c9bd66d4f3369fc6e1e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb98016f6c38442d901fa2b2b59aa763.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb98016f6c38442d901fa2b2b59aa763.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a498b82e14c46990fb162769922a3eb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a498b82e14c46990fb162769922a3eb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d6e780e10d1e056b4d3999e41818b93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d6e780e10d1e056b4d3999e41818b93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49387dc0b6355987a1d0beb2e44a1da4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49387dc0b6355987a1d0beb2e44a1da4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f18bb9ce939d41b9e4bc16cfe5bc149.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f18bb9ce939d41b9e4bc16cfe5bc149.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e29f895f252d524000649fb12d8e6b15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e29f895f252d524000649fb12d8e6b15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2aaec92e2c3eb4b5b5a4af569b0112c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2aaec92e2c3eb4b5b5a4af569b0112c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d24e2d4396e738ffce8ded6edbd6300.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d24e2d4396e738ffce8ded6edbd6300.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fba99f330ddecc723486dbdc78ad618.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fba99f330ddecc723486dbdc78ad618.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f34b5ddf302a3f19d04658183911b4e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f34b5ddf302a3f19d04658183911b4e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3db899639cb936346e9df8fe1d2a431e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3db899639cb936346e9df8fe1d2a431e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3b73b7d54b288e4c88267d13c0cbe7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3b73b7d54b288e4c88267d13c0cbe7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf008f5a39595bb04c2843a161ef3987.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf008f5a39595bb04c2843a161ef3987.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a723cce55e61ee5181fa4e9a0b9ede76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a723cce55e61ee5181fa4e9a0b9ede76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/569c07bcc8b94c489b09fedb61c7c079.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/569c07bcc8b94c489b09fedb61c7c079.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eabc085eb1720439aeea147ab30c86aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eabc085eb1720439aeea147ab30c86aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6128be9204c1ef1e3ad44a85869a5b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6128be9204c1ef1e3ad44a85869a5b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/159659f7d3bd9f9bdc6225412f3f674c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/159659f7d3bd9f9bdc6225412f3f674c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81ca9c36f02b6592a4b4a1f6cc21c0bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81ca9c36f02b6592a4b4a1f6cc21c0bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ee52e0fd46a1b9e810b6cff80080f11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ee52e0fd46a1b9e810b6cff80080f11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df2b5a4a9170a63464ffb44b1879bc96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df2b5a4a9170a63464ffb44b1879bc96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d83fff8bfa124e2ae060fe197adfaf72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d83fff8bfa124e2ae060fe197adfaf72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08badb8966fc6aa02ce4d32446e333b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08badb8966fc6aa02ce4d32446e333b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ce6669b1554d8620688be52f8fb810d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ce6669b1554d8620688be52f8fb810d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4608ddce61f123e5253dbb12a99f6b0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4608ddce61f123e5253dbb12a99f6b0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74bd89bc99b6bfaa4c214ad276a88430.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74bd89bc99b6bfaa4c214ad276a88430.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9e28bd1e7ac14e9b5647bb64c6b4a26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9e28bd1e7ac14e9b5647bb64c6b4a26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74e00c9d6aa2fc2399abefb88bdaf8a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74e00c9d6aa2fc2399abefb88bdaf8a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecb58ee8447ed2de29771847371fa3b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecb58ee8447ed2de29771847371fa3b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ff83658f2776cee2b286bd368194afc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ff83658f2776cee2b286bd368194afc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b3114ead8fe1dc825b5d62f44cda82e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b3114ead8fe1dc825b5d62f44cda82e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3a052106cf6fc407c6a8580a4e80d67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3a052106cf6fc407c6a8580a4e80d67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3db7f13c06918c55072528de4aece440.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3db7f13c06918c55072528de4aece440.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ded96e007d2170bf91c4bd4ea79bf2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ded96e007d2170bf91c4bd4ea79bf2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/951cd3cfc096254b6bf8317ab47d0fe5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/951cd3cfc096254b6bf8317ab47d0fe5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/184200ceb7b8dbdc9bae631e3a0581b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/184200ceb7b8dbdc9bae631e3a0581b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29f3f6efa3231a5e99e9a44e5a24bb4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29f3f6efa3231a5e99e9a44e5a24bb4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b35c5748efcfee1a5dc81c0810c7bd67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b35c5748efcfee1a5dc81c0810c7bd67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88f2d0356bb555fde2fb6c25ae847c05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88f2d0356bb555fde2fb6c25ae847c05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d6352f6108efbcb25254a67930145be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d6352f6108efbcb25254a67930145be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afe7d1831bb5b4531635147e2cd0e2d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afe7d1831bb5b4531635147e2cd0e2d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8855e7dfae3a75e0f93d5fab95e946e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8855e7dfae3a75e0f93d5fab95e946e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f22fc5142275af46a2acf2fe9ad74a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f22fc5142275af46a2acf2fe9ad74a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f69939e5b9d256411a0d3e511b295e7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f69939e5b9d256411a0d3e511b295e7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ea6ba739ec736547003f5bdac653093.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ea6ba739ec736547003f5bdac653093.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7360942dfe7203d20dce34fd1dc7a0ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7360942dfe7203d20dce34fd1dc7a0ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/294d34eb5d9abb585da5aab16472461d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/294d34eb5d9abb585da5aab16472461d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a9cdb30a20d61e53a00af1832a9926.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a9cdb30a20d61e53a00af1832a9926.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cde197a4dd2b0d082e71abfb31c0425c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cde197a4dd2b0d082e71abfb31c0425c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac3e7e8daac18b4e0b15e2eecde2f9bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac3e7e8daac18b4e0b15e2eecde2f9bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c6bfb287f89863151eae73cd8394099.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c6bfb287f89863151eae73cd8394099.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8a2ec3e30323ceca1ac405cbfd2170e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8a2ec3e30323ceca1ac405cbfd2170e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c58006153a790a6fec2eb5439ce2db58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c58006153a790a6fec2eb5439ce2db58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/117f9d0cd7e4977b74a27b909093ece7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/117f9d0cd7e4977b74a27b909093ece7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/770ccf0c391afca7adeac427f50c2ca8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/770ccf0c391afca7adeac427f50c2ca8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d5876d20a5f24068bc3b2bb8c4d4a63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d5876d20a5f24068bc3b2bb8c4d4a63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69cd01bdf30848dfd26a15d37bee082e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69cd01bdf30848dfd26a15d37bee082e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37b518e86767eddf31b9c82ce996d4b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37b518e86767eddf31b9c82ce996d4b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/423772dd88fabc3fe61da2e8d8e56b40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/423772dd88fabc3fe61da2e8d8e56b40.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097005,'1097005','原素系列实木餐椅（两把）',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/3dcd74c8999973a1acc95adbb36e03c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/80dda4e65f1d9773261133dcf039f7af.jpg\\\", \\\"http://yanxuan.nosdn.127.net/99e6011cd4a60538e195f006c5aaa149.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0162fbe591f22997baf27237b9d3f2c5.jpg\\\"]','','经典造型，贴合人体曲线',1,4,'http://yanxuan.nosdn.127.net/e5fd0724a05387615738173fb8f1570d.png','',0,0,'件',1219.00,1199.00,'<p><span style=\\\"color: rgb(255, 0, 0);\\\"><strong><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></strong></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/58bf6aac499c5d9d9accf761762ec7fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58bf6aac499c5d9d9accf761762ec7fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7bb654d6c2771063498221154f811b12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7bb654d6c2771063498221154f811b12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0bf43b6e826c8d16608430f5ceb787b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0bf43b6e826c8d16608430f5ceb787b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59b3b4911827999beecf5a8dc0eacfa8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59b3b4911827999beecf5a8dc0eacfa8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3300cd54cdbe61a3528f22279fd63daa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3300cd54cdbe61a3528f22279fd63daa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b36f76274e623bb591b593ebe1f99738.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b36f76274e623bb591b593ebe1f99738.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51abb9433dc0b752382d33dc21386fd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51abb9433dc0b752382d33dc21386fd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec11039995a933d728b311ff8409c203.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec11039995a933d728b311ff8409c203.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6dd084f6b918fc521ad155e4b47813bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6dd084f6b918fc521ad155e4b47813bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8f15ccb74aa20559a45b114e6b4470a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8f15ccb74aa20559a45b114e6b4470a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9898c60e890b8349c3fff64c1befea3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9898c60e890b8349c3fff64c1befea3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/645bfd1c5b1b4407f5036f38b557b32d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/645bfd1c5b1b4407f5036f38b557b32d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90ce9ce1e836641a9b011eb3ecdf0364.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90ce9ce1e836641a9b011eb3ecdf0364.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/536c516a5a169f70873eb81a5053a306.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/536c516a5a169f70873eb81a5053a306.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4015e9847e26323c38cb505c2fba729d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4015e9847e26323c38cb505c2fba729d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/068ea22c6a20cfbd31d35b5125661712.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/068ea22c6a20cfbd31d35b5125661712.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a81a479da7c9f8fd344c91603bb07ada.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a81a479da7c9f8fd344c91603bb07ada.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b3aa284f5b152ed6bf0edec0bc08eb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b3aa284f5b152ed6bf0edec0bc08eb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb1c5ba4c89d0e169cb9af89571d2fcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb1c5ba4c89d0e169cb9af89571d2fcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f479985068f12a4905d57ea70edfe6d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f479985068f12a4905d57ea70edfe6d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a381d64ce3f5f9ebca2bd40dc510e76f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a381d64ce3f5f9ebca2bd40dc510e76f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7c31b81df1919f5eccd92de190c67da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7c31b81df1919f5eccd92de190c67da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/244ebfea06e5473851891e30d7055e4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/244ebfea06e5473851891e30d7055e4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2785c4e714c30c29814550bd942415c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2785c4e714c30c29814550bd942415c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65ed10397f720580749a1c500c59240f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65ed10397f720580749a1c500c59240f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3fbbe8fd89981becd6abf7193b8f49a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3fbbe8fd89981becd6abf7193b8f49a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1297f27f945f0681481b20269994059c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1297f27f945f0681481b20269994059c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9c6d112a727b4c9707e71b9b893af2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9c6d112a727b4c9707e71b9b893af2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61b3613dd5c7c515053ebe1273e4645c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61b3613dd5c7c515053ebe1273e4645c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3153459bade75cd0b4a99170294a3ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3153459bade75cd0b4a99170294a3ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/891961cb605de819fe61dfe7b6448c93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/891961cb605de819fe61dfe7b6448c93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8d9715282d599b7fa332757703d5cee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8d9715282d599b7fa332757703d5cee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06752acfd4d6fad664d4559f253f02c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06752acfd4d6fad664d4559f253f02c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47be359052af1c5cad58031260692f6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47be359052af1c5cad58031260692f6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0203f2d63a50b7a7c710edaea4e6721.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0203f2d63a50b7a7c710edaea4e6721.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70c426b0c294bec93b0cd9c1e74ffeaf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70c426b0c294bec93b0cd9c1e74ffeaf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/063fdee70371da221e4816c757e42b48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/063fdee70371da221e4816c757e42b48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8778225dd221a88993c424681d123a72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8778225dd221a88993c424681d123a72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ff4dcabe22e555a980e4d904d757cd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ff4dcabe22e555a980e4d904d757cd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7cf7d88745db43becc47cd604d191d3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7cf7d88745db43becc47cd604d191d3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/378de7f6768ceb7364593943627cd5d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/378de7f6768ceb7364593943627cd5d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d96f8c4f9674c8e41dfd1495bea6ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d96f8c4f9674c8e41dfd1495bea6ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdf8093c4892eef9a28f5e117bb260f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdf8093c4892eef9a28f5e117bb260f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c87def69ebacf3ce9c8ece630c69c78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c87def69ebacf3ce9c8ece630c69c78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c53fe1ff2f377b4c9374cd28899928db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c53fe1ff2f377b4c9374cd28899928db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e27fb00d265e1bb0baa3f780201a69a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e27fb00d265e1bb0baa3f780201a69a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a92cef1e4963271a9a42254efd9d8899.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a92cef1e4963271a9a42254efd9d8899.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a88c5151d5a957a276596c2cab36d9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a88c5151d5a957a276596c2cab36d9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/936e13a87b280258d6be6bc2ef11e423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/936e13a87b280258d6be6bc2ef11e423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f31082e220dbb4bd6749d8624f27b7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f31082e220dbb4bd6749d8624f27b7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98c0d16db110a6e7dc6475c01d25d437.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98c0d16db110a6e7dc6475c01d25d437.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc588c1440f3ba306a3f6f3c82c2a5ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc588c1440f3ba306a3f6f3c82c2a5ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6bd50414f175e6f4db4c3ee6ee98255.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6bd50414f175e6f4db4c3ee6ee98255.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7043c897bd2076baada21f858eb8ce2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7043c897bd2076baada21f858eb8ce2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e69bde9952f85724cd28a04851d92d7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e69bde9952f85724cd28a04851d92d7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5825f1cab216275436125c5f689b6281.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5825f1cab216275436125c5f689b6281.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d85b3c1495ec3cbf540e6f9a644cdb26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d85b3c1495ec3cbf540e6f9a644cdb26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d7e3e7273c336886cbdd11512cc1892.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d7e3e7273c336886cbdd11512cc1892.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9b78fb753069669bd0eb86a586842ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9b78fb753069669bd0eb86a586842ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21d84381b85cc5a11c341814aa4e1bb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21d84381b85cc5a11c341814aa4e1bb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4270b5360a2213b3a23408c6e1158f37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4270b5360a2213b3a23408c6e1158f37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8d9432187145bf941cd0f16475b9190.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8d9432187145bf941cd0f16475b9190.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6a96e9977b61695995548d5a445b13a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6a96e9977b61695995548d5a445b13a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/564847bca40c56d50e3bb5c58fe924f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/564847bca40c56d50e3bb5c58fe924f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/050aedf6afb6e64e147f38a3948a849f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/050aedf6afb6e64e147f38a3948a849f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097006,'1097006','原素系列折角实木圆桌',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/ad2a04fdb774ab47d0b5b3dee963d723.jpg\\\", \\\"http://yanxuan.nosdn.127.net/babab8572b7c88ad774ab70bfad4a84a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6528419efacdae10bc9e44a7c73c6489.jpg\\\", \\\"http://yanxuan.nosdn.127.net/38978a1165dde6b85d5b989103a95b26.jpg\\\"]','','经典桌角，美观稳固',1,13,'http://yanxuan.nosdn.127.net/bcf2a72face2c4221dfdc9b3c97d4062.png','',0,0,'件',1019.00,999.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/d921d9fbd52e4db78d812a14850bc788.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d921d9fbd52e4db78d812a14850bc788.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d0fec31eef9b4b2abe6e66140d45750.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d0fec31eef9b4b2abe6e66140d45750.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84032eeb2d5853254041d2b09f3dfb1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84032eeb2d5853254041d2b09f3dfb1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/181e31d6232eadffe61e84e8dd661e5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/181e31d6232eadffe61e84e8dd661e5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10c32e52c88cf226837c68ea46202b12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10c32e52c88cf226837c68ea46202b12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e0bb20406c5bf1c2b4d412f7423aa77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e0bb20406c5bf1c2b4d412f7423aa77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd51593d7836e22c3379045a74728cb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd51593d7836e22c3379045a74728cb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f04213fb9494e13616aacd62ed9e233d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f04213fb9494e13616aacd62ed9e233d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b84faaea14fd448631b3c1d3a37e1fb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b84faaea14fd448631b3c1d3a37e1fb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e5e76933d2f479c7fa129ec6de6ba6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e5e76933d2f479c7fa129ec6de6ba6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39dbbeb2e7064d453266d0d5e8ed4b56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39dbbeb2e7064d453266d0d5e8ed4b56.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/058dff0add92b3ace4cdddec160c6dad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/058dff0add92b3ace4cdddec160c6dad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3a64eadda21dba3a5e7d5ad95c8bafe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3a64eadda21dba3a5e7d5ad95c8bafe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cff9ed658d697e65b4b986c544eb52c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cff9ed658d697e65b4b986c544eb52c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee42f75f692c1b9f106e8d4a50061cdb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee42f75f692c1b9f106e8d4a50061cdb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9c49cafe6ddd219aefce7dcf0240b1b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9c49cafe6ddd219aefce7dcf0240b1b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4267ba52b1e0fe247e7c70eb0104bef2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4267ba52b1e0fe247e7c70eb0104bef2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c76a5d6ef41fd022d2d642e04f2c729.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c76a5d6ef41fd022d2d642e04f2c729.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74b522306cb49e5d028b84eb06578d88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74b522306cb49e5d028b84eb06578d88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22fa66c09768c52f1d6529ee5dcbb7c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22fa66c09768c52f1d6529ee5dcbb7c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5025bd8a554a48a74c4ea39f242318e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5025bd8a554a48a74c4ea39f242318e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9a035cf11a43c9a92564615e1aa6634.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9a035cf11a43c9a92564615e1aa6634.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e26964ef91a6b3fe11c35f7c7ef1b02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e26964ef91a6b3fe11c35f7c7ef1b02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95a6dd8da01e559079b644eeaf60cfec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95a6dd8da01e559079b644eeaf60cfec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/695bd45a00710700d516daa3dd2a9045.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/695bd45a00710700d516daa3dd2a9045.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcdbe2ea52bc998a723713d31d28f0e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcdbe2ea52bc998a723713d31d28f0e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/829b9b9da00da641fab56afbf494a608.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/829b9b9da00da641fab56afbf494a608.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/306463fdf94b0b7ddc0543271e9eec1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/306463fdf94b0b7ddc0543271e9eec1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a664d56450ea41699b469e11b3191b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a664d56450ea41699b469e11b3191b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfe6a883b89e254361bc0f63106f129c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfe6a883b89e254361bc0f63106f129c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/640f28756128cd9ac1caa69a65e1d037.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/640f28756128cd9ac1caa69a65e1d037.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab0f1b1dfd0bf03f0980789a3b5b231d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab0f1b1dfd0bf03f0980789a3b5b231d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32bfb8a814466bb73730bfc29e91686a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32bfb8a814466bb73730bfc29e91686a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdb84db96ff9309924436e31c45f4c2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdb84db96ff9309924436e31c45f4c2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c01dc4a48b90fa14ed0389507f7f6f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c01dc4a48b90fa14ed0389507f7f6f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd3d400330befffaf4292590567832ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd3d400330befffaf4292590567832ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d24311e7c08d3150db1289209b006f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d24311e7c08d3150db1289209b006f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c4ac5d679937b78eb06123b1306e0cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c4ac5d679937b78eb06123b1306e0cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33c38f8f6376da9e925df8ee9453a0fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33c38f8f6376da9e925df8ee9453a0fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eed96d78a12e02e1a8166b5bea129e0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eed96d78a12e02e1a8166b5bea129e0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ee3e1d8f819a767040bcaaad018918e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ee3e1d8f819a767040bcaaad018918e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a091b92872aaa1f648d2f20dc8bc1e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a091b92872aaa1f648d2f20dc8bc1e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ed0e281deb3eb7eb8b7a852a881ca82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ed0e281deb3eb7eb8b7a852a881ca82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/185bec777e4ec73015b903c2f543c1a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/185bec777e4ec73015b903c2f543c1a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fc9b90f09ac6fd5b6a58cd4ff43fc55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fc9b90f09ac6fd5b6a58cd4ff43fc55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5fb02e7b3525962671e7737059c74adb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5fb02e7b3525962671e7737059c74adb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2203f84b325605f1a4d110d4f902b27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2203f84b325605f1a4d110d4f902b27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e301503abf99370cd578ce676e76c58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e301503abf99370cd578ce676e76c58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e27b3e29f096cfdbe7399a54feb45de5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e27b3e29f096cfdbe7399a54feb45de5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8025864e41ebf9ec17412dbc442b28cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8025864e41ebf9ec17412dbc442b28cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef5642f3926481d9896a995aebb22db0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef5642f3926481d9896a995aebb22db0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbbb88c09f63f2bbb536825a8b5b0d59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbbb88c09f63f2bbb536825a8b5b0d59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63a3e0da3faa2201b066ea643b978b0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63a3e0da3faa2201b066ea643b978b0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c939e0c60f49c0e68404de82c8715da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c939e0c60f49c0e68404de82c8715da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19b292b838a542e513a945aad4e570d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19b292b838a542e513a945aad4e570d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/685f110f22edb7f76de957dd15bde938.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/685f110f22edb7f76de957dd15bde938.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d561a175b38e6aa9edc6c28852e194f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d561a175b38e6aa9edc6c28852e194f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab5e9feb91653a8a4a42f360a46d5480.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab5e9feb91653a8a4a42f360a46d5480.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bee201c8e1874fc2e1f3ea623bce333.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bee201c8e1874fc2e1f3ea623bce333.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097007,'1097007','原素系列立式实木圆桌',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/92bd1250c8a3754514d7d2413b140e6f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a38077a8b7f2f973e0690f4a64a84dea.jpg\\\", \\\"http://yanxuan.nosdn.127.net/260dad27e017fb2d99fc41466ed43079.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c1b74831df9bf78eb866fc69669dcf80.jpg\\\"]','','优雅木纹，结实不易蛀',1,12,'http://yanxuan.nosdn.127.net/b6e132180679b0673486145decc89aa3.png','',0,0,'件',779.00,759.00,'<p><span style=\\\"font-size: 18px; color: rgb(0, 0, 0);\\\"></span></p><p><strong><span style=\\\";font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span></strong></p><p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/367118c1d5564aa47528fb65a0c29dd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/367118c1d5564aa47528fb65a0c29dd0.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc166ec8dde64dfc7ab728e281f95273.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc166ec8dde64dfc7ab728e281f95273.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65fcfb06d85562eff6846847b98ac002.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65fcfb06d85562eff6846847b98ac002.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d59f3db5fa6ee01611e673e116b2c6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d59f3db5fa6ee01611e673e116b2c6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a74f444dac37f86dacfa992a9a5316fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a74f444dac37f86dacfa992a9a5316fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5225491814eadd7596d12352adfab7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5225491814eadd7596d12352adfab7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b7ed296551aa2b6a67687d89bd1ced0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b7ed296551aa2b6a67687d89bd1ced0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdb9f42e6ac02e2f35fac16b5c59ea10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdb9f42e6ac02e2f35fac16b5c59ea10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0890c40221e0db832dfee56d31fd85f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0890c40221e0db832dfee56d31fd85f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da314ee4f81aa83f38ae3420f375e607.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da314ee4f81aa83f38ae3420f375e607.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9f91ab9db7875a2ce7d040f4dffd98e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9f91ab9db7875a2ce7d040f4dffd98e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37965f4fce6ca5de5fcc8580c16bc2b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37965f4fce6ca5de5fcc8580c16bc2b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65fc17e1d15ac6067a94677b77e134e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65fc17e1d15ac6067a94677b77e134e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40084e9ec2045dc43fed5acb8c5b89f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40084e9ec2045dc43fed5acb8c5b89f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e0df0d3fc2318263cfd3d817473a3d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e0df0d3fc2318263cfd3d817473a3d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ba21bd75e4546637ff12ec750227634.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ba21bd75e4546637ff12ec750227634.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b31e479876493cbc3da04c145ecbbbf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b31e479876493cbc3da04c145ecbbbf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a32b5093ce20aa9300fa5ccac95f281.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a32b5093ce20aa9300fa5ccac95f281.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b42c8542e5d04ddfcbc120a9ffe7b51c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b42c8542e5d04ddfcbc120a9ffe7b51c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a959e58b12d559a2fec30c945d941e27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a959e58b12d559a2fec30c945d941e27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02ce8bad5bfde1ce4df36c75113b6deb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02ce8bad5bfde1ce4df36c75113b6deb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85411c07a0d067b14325294ff9772810.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85411c07a0d067b14325294ff9772810.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04da2f032b0763db53b7a1680b37c046.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04da2f032b0763db53b7a1680b37c046.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2190737c115276814c72a3cb0158a919.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2190737c115276814c72a3cb0158a919.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/814fbb7a0893d108c7dff32c64743ab3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/814fbb7a0893d108c7dff32c64743ab3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f86402674a01e595253095a8e9907646.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f86402674a01e595253095a8e9907646.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a280df005fe14b11505c6fedacb8e44e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a280df005fe14b11505c6fedacb8e44e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51a94eee1f55de52b54c7d590c055f3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51a94eee1f55de52b54c7d590c055f3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc91b63444988fe6a948d7b08af164e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc91b63444988fe6a948d7b08af164e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8509bd077c6965429602dd39367a4d97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8509bd077c6965429602dd39367a4d97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a1f18c47c25c3a1e8014a048133cb5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a1f18c47c25c3a1e8014a048133cb5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ab093dc8ade370d55c6521a0823810c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ab093dc8ade370d55c6521a0823810c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b6e028886b3216ff76aceccd93e4125.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b6e028886b3216ff76aceccd93e4125.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4bf8df40407833ac0558c2f77f13d5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4bf8df40407833ac0558c2f77f13d5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18e4c34c66cdfa5939fc77cbfca3ed19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18e4c34c66cdfa5939fc77cbfca3ed19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a5bf1b22caa0fb02df77f23c48c0a5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a5bf1b22caa0fb02df77f23c48c0a5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28f05e88413bf95e4cbaeb049ac9aab5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28f05e88413bf95e4cbaeb049ac9aab5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4074f5c0c813f5a8134a6e3cc8b54758.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4074f5c0c813f5a8134a6e3cc8b54758.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fbddf5ea8c146eeb624203c324fcec2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fbddf5ea8c146eeb624203c324fcec2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cc22af1d34c33ed1cdca4150e1fc645.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cc22af1d34c33ed1cdca4150e1fc645.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/534d778c9455c42c57bd00ac0c259e41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/534d778c9455c42c57bd00ac0c259e41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29909b90ee2fe86c4ad37f325183fcf3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29909b90ee2fe86c4ad37f325183fcf3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e417eb47ead00163e6410edc0d59c2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e417eb47ead00163e6410edc0d59c2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/056962c567f22c2f3f9172e109923410.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/056962c567f22c2f3f9172e109923410.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41e35152ba347077604080f19c8de53e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41e35152ba347077604080f19c8de53e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5d944f6433f98554ddb145ae354605d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5d944f6433f98554ddb145ae354605d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7cee90d97a3565b9e8ea197aeeea0091.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7cee90d97a3565b9e8ea197aeeea0091.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/051901b3ba8cbb08a8382b693cd6e901.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/051901b3ba8cbb08a8382b693cd6e901.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4767dc0d2d18d2af1bb93a9096cea9e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4767dc0d2d18d2af1bb93a9096cea9e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/468e614a59bca5147c608cd45f21d488.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/468e614a59bca5147c608cd45f21d488.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07041ca071e6a8b68c3026c3d0c92d4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07041ca071e6a8b68c3026c3d0c92d4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24df4f2a5b09e0a4d627c87d198d5900.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24df4f2a5b09e0a4d627c87d198d5900.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/120860ece798ec9da64cc7cf4eb638e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/120860ece798ec9da64cc7cf4eb638e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5c17351e0082a9ea3b2aa4139706d33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5c17351e0082a9ea3b2aa4139706d33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66567f0373ba8ae7ac6ac710e3103732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66567f0373ba8ae7ac6ac710e3103732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1561e14de9f5557517da732c0e5b822.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1561e14de9f5557517da732c0e5b822.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86dd804d27210acdf6e9aa6ab9ad9a80.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86dd804d27210acdf6e9aa6ab9ad9a80.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/914ec349deb99f80f2b651b0a626dad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/914ec349deb99f80f2b651b0a626dad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3652b8995b5a389a052b917063667c5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3652b8995b5a389a052b917063667c5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8c2a25368fe117e0388c3b56bfb2f73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8c2a25368fe117e0388c3b56bfb2f73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/caa35f0dbf239856e9abefe3516f0699.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/caa35f0dbf239856e9abefe3516f0699.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4833cc47ffaa8618c1c624e75d394ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4833cc47ffaa8618c1c624e75d394ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87e94a52553c2b720fcd8d498fb132e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87e94a52553c2b720fcd8d498fb132e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3fddb7d49565ba8f5b0fcd818678fcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3fddb7d49565ba8f5b0fcd818678fcb.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097009,'1097009','原素系列实木书桌',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/afde10721fa5d6004f98a1e3a4f91db8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f10669167b6ab602064045e0c4134afd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5e0ab33f6849c890fcce2c3e61fa3fc2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a514463e8908df89cb25719ad7eaa077.jpg\\\"]','','无胶龙凤口工艺，经久耐用',1,7,'http://yanxuan.nosdn.127.net/e7b68189ef2f77a28110c3fc7ca5a697.png','',0,0,'件',1619.00,1599.00,'<p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/88132c09bb46fd56c3736a78bde5c062.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88132c09bb46fd56c3736a78bde5c062.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43171af9decffd112b6fbfdf47ea7c9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43171af9decffd112b6fbfdf47ea7c9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1299da36c3cd3b8f337e9d8c1bb7dfd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1299da36c3cd3b8f337e9d8c1bb7dfd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/725661defd33ad42cd094f27310028d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/725661defd33ad42cd094f27310028d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6c0d23a9ae2d5d51f29653645217527.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6c0d23a9ae2d5d51f29653645217527.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e8d9fb319da6309189f840a42483a6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e8d9fb319da6309189f840a42483a6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b5d5d008caee37dd093e4a97def928c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b5d5d008caee37dd093e4a97def928c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19262e7e1f5a25d58cbbc3074d9f5f46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19262e7e1f5a25d58cbbc3074d9f5f46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/156398c313dc43c534f902a9fc44282f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/156398c313dc43c534f902a9fc44282f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc0a7c483729329ce4ff40b4102600ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc0a7c483729329ce4ff40b4102600ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c24ae4580b31a8018301773b4100feef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c24ae4580b31a8018301773b4100feef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3da0e8e4fb5889646c7f7426524ae8be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3da0e8e4fb5889646c7f7426524ae8be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9eaac645f1b9a72b5c608f2097d8ae6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9eaac645f1b9a72b5c608f2097d8ae6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4953079263239d6a5d5db13bdc84ba3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4953079263239d6a5d5db13bdc84ba3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7b5f7d040dbe2b81b8afd2f750494c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7b5f7d040dbe2b81b8afd2f750494c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95840331fdbec4ddcfe23e107c3a689d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95840331fdbec4ddcfe23e107c3a689d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d32b40b09aee96c287e52e1648f54e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d32b40b09aee96c287e52e1648f54e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb4b7b9c03df2956efb1de4cef85ede0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb4b7b9c03df2956efb1de4cef85ede0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/370c4b37af7f0b172415d7a41f956ecf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/370c4b37af7f0b172415d7a41f956ecf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a8d988f501085612d40aa5a861dc600.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a8d988f501085612d40aa5a861dc600.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d32cc594b9c7f9ddb999841e47a658f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d32cc594b9c7f9ddb999841e47a658f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43d1130a30ec3b2f71198e43803ff563.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43d1130a30ec3b2f71198e43803ff563.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1f72a1b595bf4b215a2da88989daaf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1f72a1b595bf4b215a2da88989daaf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6476a6ec20137b3d2e7b5d1834d133cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6476a6ec20137b3d2e7b5d1834d133cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83a6d0c9c10d826e0216030290024224.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83a6d0c9c10d826e0216030290024224.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/831989c6e8aa9af783cc0955be193cc0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/831989c6e8aa9af783cc0955be193cc0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d9f7d0bc8fd7b9b03000d060cf95465.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d9f7d0bc8fd7b9b03000d060cf95465.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/721b53bc8fd1a0c236d45168c3f5366b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/721b53bc8fd1a0c236d45168c3f5366b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca98b9829f5a74d09e8c7cda717bc9b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca98b9829f5a74d09e8c7cda717bc9b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe3a4daa2f5b18e566387b980b57c1e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe3a4daa2f5b18e566387b980b57c1e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dabf0028ba770f1bdefddc4f4f1a226.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dabf0028ba770f1bdefddc4f4f1a226.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16338e9c712c3ec1f9103593f8be4eb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16338e9c712c3ec1f9103593f8be4eb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/791d8c24267ea09bd41aa2b91c06dbc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/791d8c24267ea09bd41aa2b91c06dbc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d7288a80b9d75a6aeb6c41dd1245788.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d7288a80b9d75a6aeb6c41dd1245788.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd59b7c730c9ca13891822ec4a47a649.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd59b7c730c9ca13891822ec4a47a649.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a0c045e21d154b18ecac752e36dac0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a0c045e21d154b18ecac752e36dac0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ea95b32db696ba29ec2f2b036693495.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ea95b32db696ba29ec2f2b036693495.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92515ffca2aaf56d7da8b083a8f2dcde.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92515ffca2aaf56d7da8b083a8f2dcde.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41397343f3bd8e21ec0c8f36f770419c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41397343f3bd8e21ec0c8f36f770419c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d60e173e42f532c17b756312b4dd0f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d60e173e42f532c17b756312b4dd0f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15770106961833c500769780ac0f05de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15770106961833c500769780ac0f05de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fd4eae67f57be5f6e8eb8d87d9ce44f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fd4eae67f57be5f6e8eb8d87d9ce44f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/685272414d85ad4ecc27d4e48feeadcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/685272414d85ad4ecc27d4e48feeadcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8e6b764dbc2ebd7dcd1d1371674484d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8e6b764dbc2ebd7dcd1d1371674484d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cb43de2db26ee4261aaa74a5b1e2c73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cb43de2db26ee4261aaa74a5b1e2c73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0241c52950f344d3ba47819fe64a809.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0241c52950f344d3ba47819fe64a809.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/695620b47efabdc9b1123a30e49e4d05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/695620b47efabdc9b1123a30e49e4d05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6dcf7e61c2d24a0cc1cc719ca95e89ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6dcf7e61c2d24a0cc1cc719ca95e89ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57de5837078cd91ffe8d8553b323637e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57de5837078cd91ffe8d8553b323637e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0925305320f94a71f1f645cc0e7691a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0925305320f94a71f1f645cc0e7691a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ccb44bb49e396c3175676ef81eca063.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ccb44bb49e396c3175676ef81eca063.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/666c01818dbbe5aeda82338fd0f7c697.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/666c01818dbbe5aeda82338fd0f7c697.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73b7998aaf4fbcc2ec2954e06ac31c6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73b7998aaf4fbcc2ec2954e06ac31c6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5383e7be82613881d7177a64804323be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5383e7be82613881d7177a64804323be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d9c0ed671c167b633e7c657524422f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d9c0ed671c167b633e7c657524422f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b944b0ab2f7f9f5ccbd09f445f2d3a41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b944b0ab2f7f9f5ccbd09f445f2d3a41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b84a7b8388d8a9e4441534339b42f412.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b84a7b8388d8a9e4441534339b42f412.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c1223dcdb4e71f09a518801cf3e1832.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c1223dcdb4e71f09a518801cf3e1832.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/197ce8b7030968369f86b0a0e066f423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/197ce8b7030968369f86b0a0e066f423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45f326c8baddfaddd5af24addd675063.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45f326c8baddfaddd5af24addd675063.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7ad2b6157dc6662f523e91e2ed30d06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7ad2b6157dc6662f523e91e2ed30d06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25228437f15a686d5087f0287d3adedd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25228437f15a686d5087f0287d3adedd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2b784f461b4a1b31b201310ff2582b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2b784f461b4a1b31b201310ff2582b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2c5a90c31ee82a862abf51b8a6ac73c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2c5a90c31ee82a862abf51b8a6ac73c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9796cd6f11c1f26dc96406f2a17cd9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9796cd6f11c1f26dc96406f2a17cd9c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db9cfbd40e7d9eb20dfaeaf6f5d7faf3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db9cfbd40e7d9eb20dfaeaf6f5d7faf3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097011,'1097011','原素系列1.8米实木床',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/181897e9942cb5331442e5f6b9dee863.jpg\\\", \\\"http://yanxuan.nosdn.127.net/303deaccd2b467ab0ac796348da2f6c2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/86bf916dd76e5a855fbc8aa49d4557b2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1a734852ebcca0a0a328f82b15be2cd8.jpg\\\"]','','优选实木，环保喷漆',1,8,'http://yanxuan.nosdn.127.net/fea36ef2514c904f4f45f1975f37f289.png','',0,0,'件',3919.00,3899.00,'<p><strong><span style=\\\"font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span></strong></p><p><strong><span style=\\\"font-size:19px;font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span></strong></p><p><strong><span style=\\\";font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span></strong></p><p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/25b48074ebc6b7819a694e825b4a1675.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25b48074ebc6b7819a694e825b4a1675.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/443f573c96e998c45a148ae928044d68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/443f573c96e998c45a148ae928044d68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e35ee3265475cd294ccb239298aa601.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e35ee3265475cd294ccb239298aa601.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84637fca3838f302f994bb01fcf373e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84637fca3838f302f994bb01fcf373e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6561b8db485f04e17f1e983315e1b3ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6561b8db485f04e17f1e983315e1b3ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/caeeea9996d4394a8c0f5f6e6de13220.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/caeeea9996d4394a8c0f5f6e6de13220.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69fb823bc30d13933fdfb4419992ca2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69fb823bc30d13933fdfb4419992ca2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95ef650961f9650d22aa44a47a61f2d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95ef650961f9650d22aa44a47a61f2d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa0c6b0e9b41c37b00ef04491fd51f62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa0c6b0e9b41c37b00ef04491fd51f62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6118bb435efa9623650801d6d248e03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6118bb435efa9623650801d6d248e03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25c6c5e2044dc6012f23782546243dbf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25c6c5e2044dc6012f23782546243dbf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6ca845173f260a9304ae2c36f7fb286.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6ca845173f260a9304ae2c36f7fb286.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/375a682e134f438139f1c79a9879c035.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/375a682e134f438139f1c79a9879c035.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e58c21fc0fd54cd6dcad4b2a34aa9b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e58c21fc0fd54cd6dcad4b2a34aa9b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb2c3f51c58101ced4e0114c20228187.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb2c3f51c58101ced4e0114c20228187.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54b4350b0a3e2d4f32aac2297a95f960.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54b4350b0a3e2d4f32aac2297a95f960.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d6829e37e9a99d7d40814375efabbc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d6829e37e9a99d7d40814375efabbc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ee4cb66e726b8af96bb8fcb95f2e097.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ee4cb66e726b8af96bb8fcb95f2e097.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1583759ecedb69d3e145f5aa30e83322.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1583759ecedb69d3e145f5aa30e83322.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7742363de23c364a479a059497d20621.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7742363de23c364a479a059497d20621.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e2b07a00c072d7eda424389eb4b2c98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e2b07a00c072d7eda424389eb4b2c98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97e1dd6398f8d929dc22fa77b3af3048.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97e1dd6398f8d929dc22fa77b3af3048.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/165f05d010a1ca0fd107bb49761c7871.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/165f05d010a1ca0fd107bb49761c7871.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a62b372ebe917afe660b86baf1bc4ed7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a62b372ebe917afe660b86baf1bc4ed7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee262ad88b9947ed502a999b16ce0fae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee262ad88b9947ed502a999b16ce0fae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9087dcde6bd8018568fac07513fc5736.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9087dcde6bd8018568fac07513fc5736.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d6e0f85847cf8d32a1ada5166ac5b4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d6e0f85847cf8d32a1ada5166ac5b4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb5c0235162c2ea23ab2d41a5728d738.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb5c0235162c2ea23ab2d41a5728d738.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/171c6873ffc09e4749587202d5b90283.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/171c6873ffc09e4749587202d5b90283.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65ae6c826d0a2881986e0d6c79ce88c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65ae6c826d0a2881986e0d6c79ce88c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/239c0532fc74277e37eb48d30a1ffdcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/239c0532fc74277e37eb48d30a1ffdcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dc0992efc50819e5bcd8ded67f72b21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dc0992efc50819e5bcd8ded67f72b21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79f835dee51dfebff826322e02702536.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79f835dee51dfebff826322e02702536.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12faaa008eb01af33a7290013cef9432.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12faaa008eb01af33a7290013cef9432.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e4273ea5f8db5f22aa7e528869809f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e4273ea5f8db5f22aa7e528869809f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef16497eb1ff1c3d6d5b5e9b2846b5c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef16497eb1ff1c3d6d5b5e9b2846b5c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37ba0ca96d08ddd6539f641f6ae104cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37ba0ca96d08ddd6539f641f6ae104cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b1525ac453dca22948124139a965adf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b1525ac453dca22948124139a965adf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/734f333508e556b9dbbbd13dcbd55165.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/734f333508e556b9dbbbd13dcbd55165.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a3b49adb1e143e1d85f20c4bd08c771.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a3b49adb1e143e1d85f20c4bd08c771.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/122848144b1a5ab8f0549b9e2b58797c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/122848144b1a5ab8f0549b9e2b58797c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4eefa34083fdc0095e079484a079ec9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4eefa34083fdc0095e079484a079ec9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c5c2ed91c345083c36c04edac3017d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c5c2ed91c345083c36c04edac3017d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8efcd5370561d2a9aa7e38036dc9f26a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8efcd5370561d2a9aa7e38036dc9f26a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/485de6226b63772f9da8c74d66e1a785.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/485de6226b63772f9da8c74d66e1a785.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32c8b4bf19bae3aef7064aa0d9043c3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32c8b4bf19bae3aef7064aa0d9043c3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3af4220eed1c8b875bee478f4f12b5f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3af4220eed1c8b875bee478f4f12b5f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9a31eb8c7221442e29fdd7bedff777d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9a31eb8c7221442e29fdd7bedff777d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfa80c2bb4b41ad1f4f2d9b3379c23e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfa80c2bb4b41ad1f4f2d9b3379c23e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dd8138a57410e080139be38c9151549.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dd8138a57410e080139be38c9151549.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef479caa6cade6fad11b472e7d88b32d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef479caa6cade6fad11b472e7d88b32d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca1274dba63b3724363013f0889d27d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca1274dba63b3724363013f0889d27d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef8630d2570b39482323005f17856f2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef8630d2570b39482323005f17856f2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4310dae760926e986ad306497b75d502.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4310dae760926e986ad306497b75d502.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8fc3b621830f3250b178c0280338d3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8fc3b621830f3250b178c0280338d3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7dd45ccd5d58ad39cf689c8c0fc3421.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7dd45ccd5d58ad39cf689c8c0fc3421.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd84fa8e26379ed62b898d37f38b2966.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd84fa8e26379ed62b898d37f38b2966.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b6c3fc3cdb1a8094a6b996ea7e1b2f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b6c3fc3cdb1a8094a6b996ea7e1b2f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3563863f4c84f7bb03ee7149040703a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3563863f4c84f7bb03ee7149040703a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86a88e931b695c0debba11096c6c147c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86a88e931b695c0debba11096c6c147c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/378a2655e2eb74b1acb53bec21990328.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/378a2655e2eb74b1acb53bec21990328.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c211cf4c59a1e130ab95ddaf349a2d9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c211cf4c59a1e130ab95ddaf349a2d9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fe46e709449593e186603f018b9d523.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fe46e709449593e186603f018b9d523.jpg\\\" style=\\\"\\\"/></p><p><span style=\\\";font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097012,'1097012','原素系列实木床头柜',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/01b5b444615b342c554d22c58d044e35.jpg\\\", \\\"http://yanxuan.nosdn.127.net/90eb435f5c0e4f98977a4c1fea3bd537.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8d9922c1f2a3cea91f0b5e808ca9245d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/89ee10d06789cda29a697446c014ef70.jpg\\\"]','','优选实木环保喷漆',1,9,'http://yanxuan.nosdn.127.net/d659d5ce0efaa9baa43abb6e34a1d9fe.png','',0,0,'件',1019.00,999.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/238979c72b45c63ef0c26cc3f208c24a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/238979c72b45c63ef0c26cc3f208c24a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6a6406660c4bb14aa5aa32ced2475d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6a6406660c4bb14aa5aa32ced2475d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c6f4a141b15b9d5fb09081e2ee007c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c6f4a141b15b9d5fb09081e2ee007c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/899dbf43caa50235a4c718a801b4f64d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/899dbf43caa50235a4c718a801b4f64d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9591f4fa45d1cef7ecff6d3247b53a78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9591f4fa45d1cef7ecff6d3247b53a78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/509fa0f4c705a906b456c16681418cb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/509fa0f4c705a906b456c16681418cb1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9f46c0f718844a88102e9bfe1b3d501.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9f46c0f718844a88102e9bfe1b3d501.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5f8bbffd2090ecdbe92d53d9ce61953.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5f8bbffd2090ecdbe92d53d9ce61953.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0650a0798bdddede6022860db1e6f4a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0650a0798bdddede6022860db1e6f4a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51d71823797efe66fb69f6de3ceca2bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51d71823797efe66fb69f6de3ceca2bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9cb565e337069f9e51f39404aeaf1b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9cb565e337069f9e51f39404aeaf1b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9009e63d05b4d89efd0965b8b5e23b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9009e63d05b4d89efd0965b8b5e23b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f75e1707d99f9422534e58a959fee95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f75e1707d99f9422534e58a959fee95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fd8d9b751a18c54324d585419ab1bd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fd8d9b751a18c54324d585419ab1bd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19ee4851b74de9c57ad61f735f375d92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19ee4851b74de9c57ad61f735f375d92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/654f10d84c0497f3ae5e041eb97f4c05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/654f10d84c0497f3ae5e041eb97f4c05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/915c6a22fdf515046fa91af4691defe4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/915c6a22fdf515046fa91af4691defe4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df0c8dcdfabd8a95fa29a867e3255c29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df0c8dcdfabd8a95fa29a867e3255c29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/582c0162501a42e0e0a7328d5feb3106.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/582c0162501a42e0e0a7328d5feb3106.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c42982318f69d3346ec2a82a14540e29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c42982318f69d3346ec2a82a14540e29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e3ac2d640de7f07d154fbfdc1cc9f7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e3ac2d640de7f07d154fbfdc1cc9f7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff4a616ec16e16636438daa4c5a0aedd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff4a616ec16e16636438daa4c5a0aedd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09afec9d5a321dc66e6353ed4f1f0a88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09afec9d5a321dc66e6353ed4f1f0a88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06ac3ec8f269aafd50280d69d0ace542.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06ac3ec8f269aafd50280d69d0ace542.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13390514772fa5c0511cf877384c5967.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13390514772fa5c0511cf877384c5967.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5def98ab674d3e7ba552f7953b4d0ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5def98ab674d3e7ba552f7953b4d0ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c0a68da2c5bc6dfe2edb083c4e6857.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c0a68da2c5bc6dfe2edb083c4e6857.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/984dc2d147c24a010d834faab8c1b490.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/984dc2d147c24a010d834faab8c1b490.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc9af77bb88eed9a275f62d54d253565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc9af77bb88eed9a275f62d54d253565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf45035c5ad6ab556a323e9394a5a343.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf45035c5ad6ab556a323e9394a5a343.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/092b9c36d92c0b934f0f735f6a002870.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/092b9c36d92c0b934f0f735f6a002870.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a254dc606f602a0b6b2c6d44bdc469d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a254dc606f602a0b6b2c6d44bdc469d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/105f9d8225bb1419ad74f1d086bd6e5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/105f9d8225bb1419ad74f1d086bd6e5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a44ec7f133fe4287b13826b57c5abffd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a44ec7f133fe4287b13826b57c5abffd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/030796ac206bcd42b67978845b447b12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/030796ac206bcd42b67978845b447b12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a94af3b8d46322ac6462a5f82956b40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a94af3b8d46322ac6462a5f82956b40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6265c235aea2e46abb491893f03f140e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6265c235aea2e46abb491893f03f140e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8ae1848d01a8838e45a6e617eef1688.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ae1848d01a8838e45a6e617eef1688.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e15ff8e4623cd04d7b00f8ef4d8e483.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e15ff8e4623cd04d7b00f8ef4d8e483.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a3d1531a63dd4759e0d9f7ac95867c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a3d1531a63dd4759e0d9f7ac95867c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f79dd58a774e67c00130d627fa27432f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f79dd58a774e67c00130d627fa27432f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d21aed141eec8a35473421c944bc11f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d21aed141eec8a35473421c944bc11f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84a05603d247ac7844e34303c331cda7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84a05603d247ac7844e34303c331cda7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04e9e06a31fefbf7367ea1b2f6568f13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04e9e06a31fefbf7367ea1b2f6568f13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b7296733795bfaec5e8e6e4912e9a86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b7296733795bfaec5e8e6e4912e9a86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f52d17c64c1811724d6da9da99681f35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f52d17c64c1811724d6da9da99681f35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57d5404f47a37bf0b493ad221673eaf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57d5404f47a37bf0b493ad221673eaf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51aa72f915854b188685815911cb7142.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51aa72f915854b188685815911cb7142.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2c870921c25b954f0002f7ecd87f65a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2c870921c25b954f0002f7ecd87f65a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46652beff7453ea7d7a8cb328e970096.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46652beff7453ea7d7a8cb328e970096.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dca90945bcb58dbe42aae95fb2f13d05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dca90945bcb58dbe42aae95fb2f13d05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcdc8097c0601d33d0d38ddee071eac5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcdc8097c0601d33d0d38ddee071eac5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3de10373c9564e19227b36bb87b4c54c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3de10373c9564e19227b36bb87b4c54c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aed6b405c05dfb6ba99d962eb0e5595a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aed6b405c05dfb6ba99d962eb0e5595a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ee8db965663cb56bf72db129f31538e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ee8db965663cb56bf72db129f31538e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9772abcdc399359fd3c7a3d085d118f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9772abcdc399359fd3c7a3d085d118f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a02d075328c85343150f8f7bfdf7574.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a02d075328c85343150f8f7bfdf7574.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5ea9f0e6abaf5cf57507b41c87de88f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5ea9f0e6abaf5cf57507b41c87de88f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1baa7efe96e3fc9e07525e91441ea046.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1baa7efe96e3fc9e07525e91441ea046.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7375e9cb1bcf2467aba09fbecaf116f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7375e9cb1bcf2467aba09fbecaf116f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/184eb6d8a1008b7f1e5d748de8a84cff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/184eb6d8a1008b7f1e5d748de8a84cff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/730b15a3d8cce55ea086ea43554894ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/730b15a3d8cce55ea086ea43554894ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8094d38182cc2b81e18c1917bf239978.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8094d38182cc2b81e18c1917bf239978.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7942e6a1899d7a5d2948f86abdfbaba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7942e6a1899d7a5d2948f86abdfbaba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5420bc44ee4354b3e5871bc17e525cb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5420bc44ee4354b3e5871bc17e525cb8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097013,'1097013','原素系列实木五斗柜',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/397dfb128336c9054753179a04bcfb9d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a668ea514089b6825743444132e7c0ab.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdcce8f4a28fdb66f131f960055fffa4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cf35bdb41354da6243f08d0e886eb796.jpg\\\"]','','造型经典，收纳的得力助手',1,10,'http://yanxuan.nosdn.127.net/2fa8cb066a356f47a3f0814e99fee7f2.png','',0,0,'件',2719.00,2699.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc2db7dbdf8fc64ec212c7787d797584.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc2db7dbdf8fc64ec212c7787d797584.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d41eb0097f889c8a12f4017f773d4abd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d41eb0097f889c8a12f4017f773d4abd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70f7c00b74aa8b36d910a4da85235b3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70f7c00b74aa8b36d910a4da85235b3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7761512bfdfb4a193cb95341aa1ae4a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7761512bfdfb4a193cb95341aa1ae4a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b797463f12bb5eb2cbb579edf8bb944a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b797463f12bb5eb2cbb579edf8bb944a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bdb99e123342fff3ad6d81cfb1e1745.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bdb99e123342fff3ad6d81cfb1e1745.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9e1ffd4df8a56a4f9faf3f581d947dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9e1ffd4df8a56a4f9faf3f581d947dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c6d3bd8ce53ab8a4c1353859b1dde18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c6d3bd8ce53ab8a4c1353859b1dde18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/631c3fe003418edb9eb5cec8d28a2561.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/631c3fe003418edb9eb5cec8d28a2561.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bf5f009be9301d14944a2b51822e76f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bf5f009be9301d14944a2b51822e76f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b616b92608df8dd75db3735e1a22b4de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b616b92608df8dd75db3735e1a22b4de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/727a3c97d8017ab0b2060538568a4966.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/727a3c97d8017ab0b2060538568a4966.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/798be4a5f6f44c5f5ce7c1971606e906.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/798be4a5f6f44c5f5ce7c1971606e906.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c46f4165a866c879ca876b78863da6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c46f4165a866c879ca876b78863da6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67194ec73a2f07887d884ea9db3479ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67194ec73a2f07887d884ea9db3479ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6c6db271981d780292897db54dacee7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6c6db271981d780292897db54dacee7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fee182b0b2baffb54bf98962c998ce72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fee182b0b2baffb54bf98962c998ce72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfdf78844362f1be4c6e1db6b25b3695.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfdf78844362f1be4c6e1db6b25b3695.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92b7ac1f8a02d49e029563f511461b76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92b7ac1f8a02d49e029563f511461b76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6da54ea8b7832d761e8cb658953d9f2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6da54ea8b7832d761e8cb658953d9f2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24fb5114468000b0c2612edd1bef33e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24fb5114468000b0c2612edd1bef33e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ec58b360c13e517d7c8c53adcac8775.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ec58b360c13e517d7c8c53adcac8775.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d4de4815851edf7c6e4e19cc9d41ce5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d4de4815851edf7c6e4e19cc9d41ce5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ee1042a9f3b1f9ed45f75159b0c29ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ee1042a9f3b1f9ed45f75159b0c29ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afb4fe1697eaf9546f8b767443edf93e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afb4fe1697eaf9546f8b767443edf93e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72957c944e643192531839bd4e231b2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72957c944e643192531839bd4e231b2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4083055f1894143c045bfecc48b29296.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4083055f1894143c045bfecc48b29296.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/011638f8b7a1aa127867883b6388ae74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/011638f8b7a1aa127867883b6388ae74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c77c193d57081d4a8e4525439cb4a71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c77c193d57081d4a8e4525439cb4a71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1915621fa0354b5a9420c6359109a27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1915621fa0354b5a9420c6359109a27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3b3308400d5e211a81e687670810d77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3b3308400d5e211a81e687670810d77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c46c1d1402b9a77b91974c359be56f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c46c1d1402b9a77b91974c359be56f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e535a12daed7c39c4aa5570fb2625d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e535a12daed7c39c4aa5570fb2625d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/801eca75c0eb42306fd7406b2ae618a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/801eca75c0eb42306fd7406b2ae618a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0f886e08c4462409b89bd8fd396330a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0f886e08c4462409b89bd8fd396330a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c624ad00f8e30b16f849682b106efe4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c624ad00f8e30b16f849682b106efe4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6c97dd61baee5163990bba13da47bfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6c97dd61baee5163990bba13da47bfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/175b48dd90fdf48ad11fb3adb14eefb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/175b48dd90fdf48ad11fb3adb14eefb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f7b484f6f73e2219e3795ea1c703372.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f7b484f6f73e2219e3795ea1c703372.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1298aa4a32821fed86a187772f91e501.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1298aa4a32821fed86a187772f91e501.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b2ad158eaa25dfd41e5b06adbf1b407.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b2ad158eaa25dfd41e5b06adbf1b407.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d89dd00f1caf4d526249adc4181a2e99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d89dd00f1caf4d526249adc4181a2e99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3298f143fb2b26c3b7bb523a31cb1757.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3298f143fb2b26c3b7bb523a31cb1757.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fd8ecae65b6f2505b264ca213a82440.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fd8ecae65b6f2505b264ca213a82440.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9837402a142180692b46b889223cca5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9837402a142180692b46b889223cca5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a34341d9cfc27a5604a510338922f475.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a34341d9cfc27a5604a510338922f475.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a2b385526d3f2327a3a5b16febec6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a2b385526d3f2327a3a5b16febec6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff499476410f1b33271430961c863f8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff499476410f1b33271430961c863f8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e399836357b7e389da29ba89c1881f35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e399836357b7e389da29ba89c1881f35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76fe162e6babc3312560093add8fe80a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76fe162e6babc3312560093add8fe80a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7036e822a0e9ad3c58307b688116b0e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7036e822a0e9ad3c58307b688116b0e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b6a7c6e1534b312b73122ae278c3011.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b6a7c6e1534b312b73122ae278c3011.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a89a02a091760d926cb76fdb23e5f4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a89a02a091760d926cb76fdb23e5f4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fb7c5bad6e1e4d15db7a8f0d2b85968.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fb7c5bad6e1e4d15db7a8f0d2b85968.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5b686aafaa6c919b5e73e9ab7f1c3e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5b686aafaa6c919b5e73e9ab7f1c3e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23e4f3e92053652b14cc838c51cc6aa6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23e4f3e92053652b14cc838c51cc6aa6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5114b8851071720dfa1cad81bd1f4e30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5114b8851071720dfa1cad81bd1f4e30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dd7d1a57fd99b7b13afb02ae12f21ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dd7d1a57fd99b7b13afb02ae12f21ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eea52eb6087118139f01a612346a7afa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eea52eb6087118139f01a612346a7afa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b61875f598deca70970aa7f95b3f682e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b61875f598deca70970aa7f95b3f682e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d9c6c13c1e4203b1bd00879f65b9117.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d9c6c13c1e4203b1bd00879f65b9117.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef19f548f29f1025b4c99ed1bda93bb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef19f548f29f1025b4c99ed1bda93bb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62b153529c6690d937964f49f89c7efb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62b153529c6690d937964f49f89c7efb.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097014,'1097014','原素系列实木多抽柜',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/756b9ad8168b6f05faed90f010cddc13.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3b963f2d5ad9ccbf17753ccadd1d46b7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/efd1ccfdd46a2f40f9e825a6d4348252.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7fa5dc7c08d7a1b6da3f17029a93b93d.jpg\\\"]','','造型简约，拥有极高实用性',1,11,'http://yanxuan.nosdn.127.net/308184b7b1965470d58b5c92e9bcc4b0.png','',0,0,'件',4219.00,4199.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef99349c5eb83e54b478eec3fa65a310.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef99349c5eb83e54b478eec3fa65a310.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/762eb77e92abe416a06faad8ddb35583.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/762eb77e92abe416a06faad8ddb35583.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a3073565d50e6782bf0d7599156cc8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a3073565d50e6782bf0d7599156cc8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8222d9dc821459c8ad41aa7de68d558f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8222d9dc821459c8ad41aa7de68d558f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1259063900c9b116aecfccd874ddcfeb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1259063900c9b116aecfccd874ddcfeb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8529d9e746ac3a436d70e85f9161324f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8529d9e746ac3a436d70e85f9161324f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3527b3c73c93a31387391c854852abcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3527b3c73c93a31387391c854852abcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/660afcd62a4cff3f3718d5787ffcab87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/660afcd62a4cff3f3718d5787ffcab87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8afbad6710682c1cf65942d7277357d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8afbad6710682c1cf65942d7277357d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/633e43127b97ff9013e878c7e6ff582a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/633e43127b97ff9013e878c7e6ff582a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e69b288ad072eafa78d3b79ddadb50d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e69b288ad072eafa78d3b79ddadb50d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bd1b14140f2d45de97af450b2d538e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bd1b14140f2d45de97af450b2d538e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f248ed3aa76314be7e6ad9fd2e5ff05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f248ed3aa76314be7e6ad9fd2e5ff05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f56e66a67f2a67383519a5a5c3d15aca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f56e66a67f2a67383519a5a5c3d15aca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e26670843fc8c1ecb68772b1c174f776.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e26670843fc8c1ecb68772b1c174f776.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d985448edf5e42b8f2fbf398e7db73a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d985448edf5e42b8f2fbf398e7db73a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b4a4e6074cec4b33e277cd8c25e2a5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b4a4e6074cec4b33e277cd8c25e2a5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d509990b252361e8130edbf9159c2174.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d509990b252361e8130edbf9159c2174.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f92e1d8429907261fedee84659b8950.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f92e1d8429907261fedee84659b8950.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d56545b368cc333ec7c321a6143d7e6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d56545b368cc333ec7c321a6143d7e6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce66819b53a451883045d322742652c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce66819b53a451883045d322742652c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/963c3642c771fc61999ec18fb7d7eabc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/963c3642c771fc61999ec18fb7d7eabc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf2e680711049910648b4530d96e0a03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf2e680711049910648b4530d96e0a03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3ff55ea5e7beb3b0314d1e1836dc0ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3ff55ea5e7beb3b0314d1e1836dc0ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5138e0a83de877a28cd208f30ff9977e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5138e0a83de877a28cd208f30ff9977e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5465e86f2fd8887d2fdc8a780f42411.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5465e86f2fd8887d2fdc8a780f42411.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7de1f14338addd00eb6741ce73ea155a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7de1f14338addd00eb6741ce73ea155a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/920417b3dd55449942d561391f53a1bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/920417b3dd55449942d561391f53a1bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48775e406649e90fa88da650d2840d13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48775e406649e90fa88da650d2840d13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/860f0ec1334472f3afb6a2ceffb96f3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/860f0ec1334472f3afb6a2ceffb96f3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6c0733584a6a6785124c6e11331f0d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6c0733584a6a6785124c6e11331f0d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdec357b9997a5d4fdf46e2168927198.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdec357b9997a5d4fdf46e2168927198.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3181ed09c8c96a7c06f3c008b4f39185.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3181ed09c8c96a7c06f3c008b4f39185.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b87b67b653e03dc4eeaead46fa6ee94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b87b67b653e03dc4eeaead46fa6ee94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4313e76ac21af69e217f0c01da9236ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4313e76ac21af69e217f0c01da9236ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40668f39aecde7d82fed6b1aa0aae167.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40668f39aecde7d82fed6b1aa0aae167.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/859901f9e06ca2fe1f3452d3d0bdfb05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/859901f9e06ca2fe1f3452d3d0bdfb05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/705f06f1574da8e0d3426f7ddfe0c94f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/705f06f1574da8e0d3426f7ddfe0c94f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac96aaabf1ef2eabb93c0b2e37ac82bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac96aaabf1ef2eabb93c0b2e37ac82bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4343c28a9dda3e5909817ef7ec10b772.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4343c28a9dda3e5909817ef7ec10b772.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2013629b638725ec1f267bac2435c20b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2013629b638725ec1f267bac2435c20b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c55424ee7156a077a475baaa3fa65b96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c55424ee7156a077a475baaa3fa65b96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcece03933901f9ac6c4f9d9e3447ec0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcece03933901f9ac6c4f9d9e3447ec0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/417d92b9326be44d14f1b8993079ebdb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/417d92b9326be44d14f1b8993079ebdb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fb0108eae01559802740c0d01cae5bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fb0108eae01559802740c0d01cae5bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c929794b0d347bf5403d234b37db5ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c929794b0d347bf5403d234b37db5ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4aeb21ac1546937ae3945e4e11442ee8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4aeb21ac1546937ae3945e4e11442ee8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19b637e0dfc1a91aa2c399d3f38022c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19b637e0dfc1a91aa2c399d3f38022c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ece55d9b9f686a7ccfa819047929bc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ece55d9b9f686a7ccfa819047929bc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/261884870cb1b96467a44274d3e14cd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/261884870cb1b96467a44274d3e14cd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab839173c1e5ddc477f09fe141bcad05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab839173c1e5ddc477f09fe141bcad05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1686ba353fc15365a8c9ae8851e59ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1686ba353fc15365a8c9ae8851e59ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbb7b58343d252f6e390e6c691fb01b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbb7b58343d252f6e390e6c691fb01b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3687f04750278c839cbda303dc66665.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3687f04750278c839cbda303dc66665.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55e96d7f34c87fcb91ca8e6bd9d29f0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55e96d7f34c87fcb91ca8e6bd9d29f0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a184b659e8eb6044a3abb0dc268d6c75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a184b659e8eb6044a3abb0dc268d6c75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db96bea8d127274ea0b644b356189065.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db96bea8d127274ea0b644b356189065.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f1a64b6e6e7cd4402da98eaa7df1078.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f1a64b6e6e7cd4402da98eaa7df1078.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f110f01c2296fb8a5afb6683d4fa709.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f110f01c2296fb8a5afb6683d4fa709.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80d37527aa5ca88128b83d1a001c4acb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80d37527aa5ca88128b83d1a001c4acb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/040d932689fa4d9d50f605861e577c66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/040d932689fa4d9d50f605861e577c66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc0b276bc30d9b97c6a3247ea387ffe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc0b276bc30d9b97c6a3247ea387ffe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/045810b852d55f7329116c401a31b189.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/045810b852d55f7329116c401a31b189.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72be8acaecda6612ddcd72bc8c6105a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72be8acaecda6612ddcd72bc8c6105a3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097016,'1097016','原素系列1.8米实木电视柜',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/3f8eaea08de42601c4fbbbf44f57a51f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ba098f23eb7e21ecf524b7f8833d117f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c569bc70282462cae8cf948612429b33.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a5a3e4c0825751977900838aba75df90.jpg\\\"]','','经典木纹，结实不易蛀',1,6,'http://yanxuan.nosdn.127.net/a7e6df722b82ad1b0158adcbdcf30df9.png','',0,0,'件',2819.00,2799.00,'<p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/44b6e7dc5b6c81d2ab52965d4277069f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44b6e7dc5b6c81d2ab52965d4277069f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcca6fe2d34bf2f9deb0648f71520f30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcca6fe2d34bf2f9deb0648f71520f30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aabddf6f4c7a53e3eba126e4b276fff4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aabddf6f4c7a53e3eba126e4b276fff4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a3cc2cb018b860f64f4751455df03db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a3cc2cb018b860f64f4751455df03db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6c930edc71fb258e502960a17a49d60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6c930edc71fb258e502960a17a49d60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26937caee8633848c0e43ecf64159e1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26937caee8633848c0e43ecf64159e1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ce3eefbfae7df5c2ece6f9d5b1d5ddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ce3eefbfae7df5c2ece6f9d5b1d5ddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d97ae87e7f5677530ce0e23445fb6c47.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d97ae87e7f5677530ce0e23445fb6c47.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a688f1c4296e3df7b3125043e6b287b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a688f1c4296e3df7b3125043e6b287b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a22a64c9fd560a37c7368cb940cdf39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a22a64c9fd560a37c7368cb940cdf39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a37794473dc3d10bb87b1511cfb157e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a37794473dc3d10bb87b1511cfb157e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f8c08a400891e0d727cce3e02f2a9cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f8c08a400891e0d727cce3e02f2a9cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a9b95b81dc87ade2dae8455dfa70f71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a9b95b81dc87ade2dae8455dfa70f71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a318f83f7e741a57d2c371add04bdcb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a318f83f7e741a57d2c371add04bdcb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bf6a1072b4211ebe786d02f79bf9f9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bf6a1072b4211ebe786d02f79bf9f9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6366e7ee9e1d6f870d9ec224be204393.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6366e7ee9e1d6f870d9ec224be204393.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92a8acf9892bb8be48d05b00f2b06287.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92a8acf9892bb8be48d05b00f2b06287.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ac784566dbca7db0397d65511a415bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ac784566dbca7db0397d65511a415bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a63f8fc1b71bf2f2fc058be514f9bb0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a63f8fc1b71bf2f2fc058be514f9bb0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b304440c45568fdf2a884bbd7c1d862f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b304440c45568fdf2a884bbd7c1d862f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00225ba12a7b1875a3552124638b3fb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00225ba12a7b1875a3552124638b3fb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e3d391896a17264363649dbd2d230ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e3d391896a17264363649dbd2d230ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e85fff39a870f0065dcaedd7090295d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e85fff39a870f0065dcaedd7090295d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76c2eb79d09058f144770a3e3ed454da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76c2eb79d09058f144770a3e3ed454da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6984afaebcdea88c71859c6ab5c81a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6984afaebcdea88c71859c6ab5c81a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da21ae14501b6623d526c1833bf3dc1f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da21ae14501b6623d526c1833bf3dc1f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b5c29fdc5661e7eebe1ac488606bb8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b5c29fdc5661e7eebe1ac488606bb8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17be6bb120caaa67e01f4ff2f4c7bc78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17be6bb120caaa67e01f4ff2f4c7bc78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/538e87bdf30f230b75903a730f94e620.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/538e87bdf30f230b75903a730f94e620.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/126ec76486adf5fc1dc0230034726e48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/126ec76486adf5fc1dc0230034726e48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95da7cddda7a7ebf4f36fc08b06832f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95da7cddda7a7ebf4f36fc08b06832f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9fb8f3ce1ab9cd3b2e4fcd53e696a944.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9fb8f3ce1ab9cd3b2e4fcd53e696a944.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22b0e01eacf86ab7823feea43bd4d0be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22b0e01eacf86ab7823feea43bd4d0be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13972e19bcf8b0f41a68d4c274647e53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13972e19bcf8b0f41a68d4c274647e53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5e8268da72bb8ff8015a7b01bda6a8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5e8268da72bb8ff8015a7b01bda6a8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7a1aa60d75a80af1e68a744bd3e123e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7a1aa60d75a80af1e68a744bd3e123e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56a09cc322e51db98f651ea83a7ae8aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56a09cc322e51db98f651ea83a7ae8aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2c7ac5c5bd979b1954f7d333f2c1ee1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2c7ac5c5bd979b1954f7d333f2c1ee1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45bf007e71b1e95b6b3c6c6d28c0b8be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45bf007e71b1e95b6b3c6c6d28c0b8be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/313454239e6634684a0d0cc0fe3d1e32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/313454239e6634684a0d0cc0fe3d1e32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a00dcf4350a1fd53bbad22201fb18c86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a00dcf4350a1fd53bbad22201fb18c86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f3cef060508ea355880f0e20499ce2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f3cef060508ea355880f0e20499ce2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36d01093773b7f39bf5101fdc35b2213.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36d01093773b7f39bf5101fdc35b2213.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c199ec2930f47473a99b15f4391c18a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c199ec2930f47473a99b15f4391c18a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63c1381ec4738b5d4dc1acac15422e92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63c1381ec4738b5d4dc1acac15422e92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23c89550b230dee4a20921f4f0483952.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23c89550b230dee4a20921f4f0483952.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4de06540256e87372f470b3687dafdf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4de06540256e87372f470b3687dafdf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d54b68e9dafd399cee92e7ca05549380.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d54b68e9dafd399cee92e7ca05549380.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcfc93486d1c038857da4fd4520071e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcfc93486d1c038857da4fd4520071e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbb98e1c909d9dee01113698b0443c44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbb98e1c909d9dee01113698b0443c44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf5e7dad6e7f852e2e62ff9ace0cd11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf5e7dad6e7f852e2e62ff9ace0cd11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51d6247fe63d021e1c7d14eb4a88fb68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51d6247fe63d021e1c7d14eb4a88fb68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7813e01f85c84e337b0f4166684f4bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7813e01f85c84e337b0f4166684f4bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b74ef03be759d25e51db6fd0f7af132.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b74ef03be759d25e51db6fd0f7af132.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0d827799c22c17972e0efbf789ae006.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0d827799c22c17972e0efbf789ae006.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6966951b50edc83e6921fcdb6555568.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6966951b50edc83e6921fcdb6555568.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58be70e959a829f8ba297dcfc123ddc2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58be70e959a829f8ba297dcfc123ddc2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/300f3edcb171aa84c859812b5753ffdd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/300f3edcb171aa84c859812b5753ffdd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/905332c0591fc457b45fbb20359d5438.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/905332c0591fc457b45fbb20359d5438.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6060be7ea7012cbfbaf10d052d086c7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6060be7ea7012cbfbaf10d052d086c7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/051e2c5ee2245183e3e860c406de857f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/051e2c5ee2245183e3e860c406de857f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36c381f0d73d2e1ee47ce1e631bf25ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36c381f0d73d2e1ee47ce1e631bf25ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5993aa4449716cca44eb3b985fe7c083.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5993aa4449716cca44eb3b985fe7c083.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1097017,'1097017','原素系列柜式实木茶几',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/4973ea5a10f2c52ca2e2d416f1e7898d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/56993e4764ce4cdb6469bd4d963929aa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/22807c5a25e0d8d49fd46da143c1b23f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b1b8ce51e1f41d073a5ef980ef5887c.jpg\\\"]','','山形木纹，经典优雅',1,5,'http://yanxuan.nosdn.127.net/e16ff61bef76db81090db191b9d5ec15.png','',0,0,'件',2219.00,2199.00,'<p><strong><span style=\\\";font-family:&#39;微软雅黑&#39;,sans-serif\\\"></span></strong></p><p style=\\\"white-space: normal;\\\"><span style=\\\"color: rgb(255, 0, 0);\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></span></p><p style=\\\"white-space: normal;\\\"><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-weight: 700;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">温馨提示：</span></span><br/></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\">1，由于<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>，要求所有木制品办理《植物检疫证书》，因此暂停向<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽黄山市</span></span>和<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">安徽宣城绩溪县</span></span>运输家具，以上两地客户请注意不要购买，<span style=\\\"font-weight: 700;\\\"><span style=\\\"color: red;\\\">物流无法派送</span></span>，对此给您带来的不便，我们深表歉意！</span></p><p style=\\\"white-space: normal;\\\"><span style=\\\"font-family: 微软雅黑, sans-serif;\\\"></span></p><p style=\\\"white-space: normal;\\\">2，家具送货上门时请拆开包装，待组装完成后，仔细检查家具是否有磕碰，少件等问题，如有不满请拒收或进行异常签收，我们会保障您的权益。</p><p style=\\\"white-space: normal;\\\">3，因个人原因首次送货上门暂不安装，要求二次上门安装的，会额外收取费用，请您与安装服务公司进行协商。</p><p><img src=\\\"http://yanxuan.nosdn.127.net/841d0245c3c293c098a145782488282f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/841d0245c3c293c098a145782488282f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/002898cb089ad88e1abc63ddcf643b23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/002898cb089ad88e1abc63ddcf643b23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad23b01cae88f09dd983516207ce3861.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad23b01cae88f09dd983516207ce3861.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0d8e8dd42109e803133242b877fb32b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0d8e8dd42109e803133242b877fb32b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa23960ab3667c12f4e4ea859d2367cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa23960ab3667c12f4e4ea859d2367cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17e0d578f0ebe4382b82f7b611963f8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17e0d578f0ebe4382b82f7b611963f8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4444dc7a8c6a0ef8ea34a24036ebf80a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4444dc7a8c6a0ef8ea34a24036ebf80a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bad5cb0f13c145ba19a0b9bd6ce01b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bad5cb0f13c145ba19a0b9bd6ce01b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0be64c0c6a38b8bd18eeaf791a0ebd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0be64c0c6a38b8bd18eeaf791a0ebd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c77bd07085abe7f2091ba7beefd680e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c77bd07085abe7f2091ba7beefd680e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54259cd72a15918cddf08bda2a947f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54259cd72a15918cddf08bda2a947f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a55cba8c61795a33962c3c09944583c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a55cba8c61795a33962c3c09944583c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b44ef9f2febea836a4304a8c1668732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b44ef9f2febea836a4304a8c1668732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c9438b10357f0104cc34fcf34e94385.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c9438b10357f0104cc34fcf34e94385.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3cb8c4054046e9d3b29b4137d3ac12b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3cb8c4054046e9d3b29b4137d3ac12b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a2fcaba246296ecbe02efd78ce96f2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a2fcaba246296ecbe02efd78ce96f2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/806394a28ca3ae2c2764915d7782474f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/806394a28ca3ae2c2764915d7782474f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62afa297c045f34be45f70ca38cd9fa8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62afa297c045f34be45f70ca38cd9fa8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36d8d1e21236aaab71a6577885211094.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36d8d1e21236aaab71a6577885211094.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b07d3aa8633e3868ce21758511a29a2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b07d3aa8633e3868ce21758511a29a2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34d2c9575927e78edc22c5743c95e3af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34d2c9575927e78edc22c5743c95e3af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07ae428baefa5af751d9b8bd2d69b2ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07ae428baefa5af751d9b8bd2d69b2ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/628e973a1596886f63c7d615be90b235.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/628e973a1596886f63c7d615be90b235.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d6b0f8948523c65945bb61d36b90ed0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d6b0f8948523c65945bb61d36b90ed0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2734227815c9afaa127e962ef7383688.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2734227815c9afaa127e962ef7383688.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4120d4a10d0af37a6c21a93a90b313a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4120d4a10d0af37a6c21a93a90b313a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e4493cf8485e9f57d843db48f972ffc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e4493cf8485e9f57d843db48f972ffc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef76a92c0cf8546f509815e030eab5d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef76a92c0cf8546f509815e030eab5d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab2fe9eb2bdf1a14228b30bbc48b51cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab2fe9eb2bdf1a14228b30bbc48b51cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e592f842000465d9ee258796213463d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e592f842000465d9ee258796213463d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b44f0c61c5064c73159283fa083bfd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b44f0c61c5064c73159283fa083bfd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cd92b89f49e036f29fcb760ec43620d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cd92b89f49e036f29fcb760ec43620d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/344d391a8f49df91334bbd9b92ffdb74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/344d391a8f49df91334bbd9b92ffdb74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb2c7b3e0bc070c6fafa3124c0d0e1a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb2c7b3e0bc070c6fafa3124c0d0e1a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8f33436750f6979e7bc8d3b063d6b4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8f33436750f6979e7bc8d3b063d6b4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/734abf2642b4b6d1758b090da76e6bd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/734abf2642b4b6d1758b090da76e6bd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b65e79b70b7ba95b952d41fe4d6049a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b65e79b70b7ba95b952d41fe4d6049a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef22b52ba666ac6027511874cf6d2a5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef22b52ba666ac6027511874cf6d2a5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09d642d719505973c084194da921bfc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09d642d719505973c084194da921bfc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67143c94cd2d5ce3b2d98c7b44e5d82a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67143c94cd2d5ce3b2d98c7b44e5d82a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82bc7d5e4efa2cc0cf8a2f688a4cf2f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82bc7d5e4efa2cc0cf8a2f688a4cf2f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcc87da6b0b8188753898379480fef5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcc87da6b0b8188753898379480fef5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e92cf0c3678425bb5637ee506ff9e146.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e92cf0c3678425bb5637ee506ff9e146.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2052c09588cca803a6d9f741f0202e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2052c09588cca803a6d9f741f0202e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a684f5a95c259965494f989af45a2499.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a684f5a95c259965494f989af45a2499.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81cfd3f623164f158203c2d2622ad3bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81cfd3f623164f158203c2d2622ad3bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fed14ad7c4fea2f7c4da28a0b597c988.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fed14ad7c4fea2f7c4da28a0b597c988.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bda3ced5296582c66353f100ab801e7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bda3ced5296582c66353f100ab801e7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d38146b1fb1c23806d4737a3d2770cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d38146b1fb1c23806d4737a3d2770cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/837bba6263b0228b5d764fa224ac7f68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/837bba6263b0228b5d764fa224ac7f68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ade8dbc66d4c00f0bfc4c18f15d800a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ade8dbc66d4c00f0bfc4c18f15d800a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a257a7e42071267775ce1028a51641c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a257a7e42071267775ce1028a51641c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb0638aff2af73a5baed49270510e962.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb0638aff2af73a5baed49270510e962.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/005b5e2ea26484f4bf83a6a07cb45259.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/005b5e2ea26484f4bf83a6a07cb45259.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55331e0b451080d567d84540e8919279.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55331e0b451080d567d84540e8919279.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcc86d2b7f9eaed847f3af168a357796.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcc86d2b7f9eaed847f3af168a357796.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0ffd18f60560e7b3058b2741db7daee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0ffd18f60560e7b3058b2741db7daee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a07622cf90c90f3c95975f7715e877fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a07622cf90c90f3c95975f7715e877fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36e3cade2a47fef47d5499b8e6d08835.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36e3cade2a47fef47d5499b8e6d08835.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/483c0af4d43b1227d2d410153bf1a6d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/483c0af4d43b1227d2d410153bf1a6d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d8db3ba36a01a32a133e7c5f3afc228.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d8db3ba36a01a32a133e7c5f3afc228.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c326fd7fe0e301b231239ba0b3fb7b41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c326fd7fe0e301b231239ba0b3fb7b41.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1100000,'1100000','300根水洗棉缎纹纯色枕套*2',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/66bd23f2d520195c487cf6afbe1e1f82.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1ee354a7e3cf58a6317fced4107cd6a1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7419b0bf5554c3f17fe5d999d779555e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d8f74a7c9836024618a322b1da9f410f.jpg\\\"]','','水洗棉的呵护，透气亲肤',1,25,'http://yanxuan.nosdn.127.net/15e40cfb6a78f557616814a815685fd4.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2164615ef532024ac711e6296ad3d705.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2164615ef532024ac711e6296ad3d705.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61e79183390cf672ad9be0d3442041e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61e79183390cf672ad9be0d3442041e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc024462d81766a7224ab3545fb6d98f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc024462d81766a7224ab3545fb6d98f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2cf4a3a51c4b68e55d2e7f2d13ca543.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2cf4a3a51c4b68e55d2e7f2d13ca543.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5c0f96d6c54ec2a23ef365036456f6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5c0f96d6c54ec2a23ef365036456f6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e63577594a28504eec2e0197f7ddadf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e63577594a28504eec2e0197f7ddadf8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cde5c10b5076f1b92e96e1c02ca7ff48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cde5c10b5076f1b92e96e1c02ca7ff48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b035b6b8208aa9c2ad954f30fef99775.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b035b6b8208aa9c2ad954f30fef99775.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27cf1dd613ee7b01e4f90bce31a34a89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27cf1dd613ee7b01e4f90bce31a34a89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6edf415e99e2ba2beeae4e6a38da856.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6edf415e99e2ba2beeae4e6a38da856.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be546650b508f5576267423da697ccef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be546650b508f5576267423da697ccef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f387f9fbb09cb79e125efa85a3af051.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f387f9fbb09cb79e125efa85a3af051.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb0702de3a208768da04e2bcfb8dfb7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb0702de3a208768da04e2bcfb8dfb7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/520d7e3a895b1171ceba26f5a0f390e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/520d7e3a895b1171ceba26f5a0f390e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1bc14f1cf49d21c3b86e033029cb927a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1bc14f1cf49d21c3b86e033029cb927a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6cda639968622812a712d4230cefcc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6cda639968622812a712d4230cefcc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07ef76fe3850a0ef4c708fbf6698c506.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07ef76fe3850a0ef4c708fbf6698c506.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5336250c74718eb078b218820220a4c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5336250c74718eb078b218820220a4c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09fdc6f77e536aab39bc7b89a35c6959.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09fdc6f77e536aab39bc7b89a35c6959.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2500886b52d9d4fdd143fa7c2b3e5446.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2500886b52d9d4fdd143fa7c2b3e5446.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b2a4e13d9bb597131df9e1bcfe5a9b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b2a4e13d9bb597131df9e1bcfe5a9b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7fe46cf57f0d9cc349acfe7e657bcd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7fe46cf57f0d9cc349acfe7e657bcd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/deac82fd0b4571e3c13d52e50e62b302.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/deac82fd0b4571e3c13d52e50e62b302.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b36159471e198538107b92489180a4b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b36159471e198538107b92489180a4b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ac810650922fb01cdb193b31484d79d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ac810650922fb01cdb193b31484d79d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f02de2f5574a50022a9e8ffd518298b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f02de2f5574a50022a9e8ffd518298b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ae5b6a1c345825c13de51b0727cc855.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ae5b6a1c345825c13de51b0727cc855.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41149b83c142ba653b93223f9ed56301.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41149b83c142ba653b93223f9ed56301.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4f64c2bb342bd18e9d76d145b63c89a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4f64c2bb342bd18e9d76d145b63c89a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e84264a53c8a4cb00f0e5e1577b2fb01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e84264a53c8a4cb00f0e5e1577b2fb01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/055385e03a51dfef123a2d0163d75a42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/055385e03a51dfef123a2d0163d75a42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9373db501542f25f812c3fecb45b4ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9373db501542f25f812c3fecb45b4ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51e7c319c838513a20b510d989ed0080.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51e7c319c838513a20b510d989ed0080.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a4310313b7d5cb6a970b3136438aed4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a4310313b7d5cb6a970b3136438aed4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5c25568e6495ad3352388dd2c9f0719.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5c25568e6495ad3352388dd2c9f0719.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79698caf7fc4cb8f99daed2b2cdeb0ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79698caf7fc4cb8f99daed2b2cdeb0ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d3d314ed9a188abd8cf244fce029d9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d3d314ed9a188abd8cf244fce029d9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adc3da2545131a5535d2d948dbd35ff7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adc3da2545131a5535d2d948dbd35ff7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76314625178eab034fe81ccc6f8efc2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76314625178eab034fe81ccc6f8efc2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73dddf214a50cde45620c4b629b72693.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73dddf214a50cde45620c4b629b72693.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8457cc3e51cb1061e02f69c6bc16e97c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8457cc3e51cb1061e02f69c6bc16e97c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7cec5452f51eb8ca4930941da82d329.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7cec5452f51eb8ca4930941da82d329.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80c359e06e6d28c2dd2582401746dc4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80c359e06e6d28c2dd2582401746dc4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3c56725175efa21648f094d644ec879.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3c56725175efa21648f094d644ec879.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15474760d9e688b80758b23c88a7ffb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15474760d9e688b80758b23c88a7ffb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e2acf365def8ed93f62f05b3ccb2d33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e2acf365def8ed93f62f05b3ccb2d33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd4fcf9d4b37cb6146dfd32c7c2da790.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd4fcf9d4b37cb6146dfd32c7c2da790.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/070861a329f22e78579bc114dee3d51c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/070861a329f22e78579bc114dee3d51c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8ea41b6c4d1fae0986f6ec2c9f16933.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ea41b6c4d1fae0986f6ec2c9f16933.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1100001,'1100001','300根水洗棉缎纹纯色床单',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/22948407b79bf9cf67c39f111fb9024b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/14d9efa1bfbe9d0747e950bb74fa07e7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/46bf309e5ebc33f38d19957f9f2664f3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de5093b5353259604b68418fe58c6cea.jpg\\\"]','','水洗棉的柔软舒适，百分百的亲肤呵护',1,30,'http://yanxuan.nosdn.127.net/a95285853138cbaf56e4ba729f2b8749.png','',0,0,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/52a02aab5a4659f282fc638b350d7f95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52a02aab5a4659f282fc638b350d7f95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fe116f74bd0d14270c0990d1daf06b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fe116f74bd0d14270c0990d1daf06b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90882a17a426788993a81da84b4c7fbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90882a17a426788993a81da84b4c7fbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54d8848ead619164ebbfa7b67d448a47.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54d8848ead619164ebbfa7b67d448a47.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/766865b5d8124fe105cc5039521ce22f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/766865b5d8124fe105cc5039521ce22f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a91ebe3b5a7173d1540ed41114427a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a91ebe3b5a7173d1540ed41114427a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43502a858916eb140f3bfc95f90f61f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43502a858916eb140f3bfc95f90f61f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b98b6b62828b7cf8ffeba592261d6d75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b98b6b62828b7cf8ffeba592261d6d75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e40587f3bf72c40ff72fa3e1b9639e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e40587f3bf72c40ff72fa3e1b9639e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81ade842bf7a9a87313fa55e1d4a7ff5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81ade842bf7a9a87313fa55e1d4a7ff5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1369e140bea5d9d1d807ac6a2184540.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1369e140bea5d9d1d807ac6a2184540.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9dfa33237be0666a2eafcb4144c6507f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9dfa33237be0666a2eafcb4144c6507f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aebe79ce72d63dca6044d90ae42306b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aebe79ce72d63dca6044d90ae42306b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd202b7b2c6939abfd9ec86ec4fcd04c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd202b7b2c6939abfd9ec86ec4fcd04c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c90927890e763a70b7c022ae52bb3933.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c90927890e763a70b7c022ae52bb3933.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be7692bb8797f05e9ca5ecc53980bcfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be7692bb8797f05e9ca5ecc53980bcfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d719888db5c6a6d02de04fafeee52d34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d719888db5c6a6d02de04fafeee52d34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9932f0c40aa4f0683d49dd279ac8cb37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9932f0c40aa4f0683d49dd279ac8cb37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b45044e18872c3fee33abf7c9a4756a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b45044e18872c3fee33abf7c9a4756a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b1448b186b8958ec8451079b43a3fa6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b1448b186b8958ec8451079b43a3fa6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04e7d6d26a3a7793c1fcfa85ce88930a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04e7d6d26a3a7793c1fcfa85ce88930a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f8133c402129a909bcbfb1a510957b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f8133c402129a909bcbfb1a510957b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/997486762d960d57f9a60a5e927adcb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/997486762d960d57f9a60a5e927adcb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7c7488aa89d34886e1b7b94dc78aaf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7c7488aa89d34886e1b7b94dc78aaf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d426c800a38b6fd9b0e89f905d5861e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d426c800a38b6fd9b0e89f905d5861e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92bc77c3893766d512d699420043250e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92bc77c3893766d512d699420043250e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cab9c7a67ba1a816be3c3cbb6db6719.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cab9c7a67ba1a816be3c3cbb6db6719.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7809202f7f45fd5082a0899c0faa8a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7809202f7f45fd5082a0899c0faa8a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11f16921d77e740616262bb89cae747c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11f16921d77e740616262bb89cae747c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad1a0b186d1d3653788849eee22b0701.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad1a0b186d1d3653788849eee22b0701.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15e219fb1ff21dcdf1149b4728f29c38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15e219fb1ff21dcdf1149b4728f29c38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c6c27566ad4ef4db783464203ec0b17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c6c27566ad4ef4db783464203ec0b17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbaed905816e210992ff56c11515baee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbaed905816e210992ff56c11515baee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab11d74c2e950bc4926df20d2f3289c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab11d74c2e950bc4926df20d2f3289c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6caf7b9fa56455f4efaff939a0894c89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6caf7b9fa56455f4efaff939a0894c89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11e1c56f129c68f2e668f35af5647a8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11e1c56f129c68f2e668f35af5647a8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e922764d150632e8acae2280b3c61570.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e922764d150632e8acae2280b3c61570.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/450b0a0b0c624d559c27beabe6f9aeb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/450b0a0b0c624d559c27beabe6f9aeb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2bde52261504acd71ee7fd7394cc5f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2bde52261504acd71ee7fd7394cc5f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4010b0e19f9ccc01152e0004e90040ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4010b0e19f9ccc01152e0004e90040ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b848a59522b381140e6ea54381fe60f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b848a59522b381140e6ea54381fe60f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6a55c1b12fe7478e6cb502fb3a89ab2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6a55c1b12fe7478e6cb502fb3a89ab2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d04e5c6151fcd296c03e3636cc400ddf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d04e5c6151fcd296c03e3636cc400ddf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f490ab8e9bbd286e47c0a8f3bd4adeee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f490ab8e9bbd286e47c0a8f3bd4adeee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2710161ba5f0e64807a6282255bb686.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2710161ba5f0e64807a6282255bb686.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb7229e9c581b844289fe81bc0b88cb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb7229e9c581b844289fe81bc0b88cb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ff64ea78659fd39b7934247a148e04b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ff64ea78659fd39b7934247a148e04b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c18fbe31057289c95fe5afd601ae00ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c18fbe31057289c95fe5afd601ae00ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1358116cd85df0f6bb586e5714b15578.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1358116cd85df0f6bb586e5714b15578.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1100002,'1100002','300根水洗棉缎纹纯色床笠',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/b2f5fd5577d07a69e4f4f8919132901d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fb7b80643e0bc30a78688a964c3aee57.jpg\\\", \\\"http://yanxuan.nosdn.127.net/393e848f1da052784efe77f565b86dbb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8f4ed88b7550586de659a767bb409799.jpg\\\"]','','柔软水洗棉，百分百的呵护',1,29,'http://yanxuan.nosdn.127.net/edf1945ef594c00920bdc727f4c5c7fd.png','',0,0,'件',209.00,189.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b113c05377e190d731c8276e5799387c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b113c05377e190d731c8276e5799387c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1599d7e6b6912cc1d385d1eb4da29f32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1599d7e6b6912cc1d385d1eb4da29f32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33d3d8ff4e26960705bda55bd7dab175.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33d3d8ff4e26960705bda55bd7dab175.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbefed7e260fc9e54098ae9b7cfad1af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbefed7e260fc9e54098ae9b7cfad1af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c822575867fa4918096666cf661feae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c822575867fa4918096666cf661feae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6eff8d3a5ae780b159c0d9e95b63c9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6eff8d3a5ae780b159c0d9e95b63c9c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f02dc5450a320e0658a029e5190b9784.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f02dc5450a320e0658a029e5190b9784.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d93ca19fd2008710ee23112e22667072.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d93ca19fd2008710ee23112e22667072.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e6e1cce60f15101d79f4ba3ed162ff7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e6e1cce60f15101d79f4ba3ed162ff7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0102e764033c3954289920cb6e10826a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0102e764033c3954289920cb6e10826a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5274a83fe9644269f81a39d157b0885.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5274a83fe9644269f81a39d157b0885.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db217c5ee31c601dabaf53c5231d638f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db217c5ee31c601dabaf53c5231d638f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3cd27ea1974a41d88352c5359ef218b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3cd27ea1974a41d88352c5359ef218b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/449851f2dc340c54b373c28e0e28e43a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/449851f2dc340c54b373c28e0e28e43a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f758ecf146bd7ce77316d1ccb4d85136.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f758ecf146bd7ce77316d1ccb4d85136.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7d3a08f3d596f44bd144f1874f01d2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7d3a08f3d596f44bd144f1874f01d2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/701d32168cc8568cb9282fa7bac3e97f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/701d32168cc8568cb9282fa7bac3e97f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32df87bc772fbb87bbd704e6f3f9152f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32df87bc772fbb87bbd704e6f3f9152f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbccd6766fd90ef1c4b7926a6da42914.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbccd6766fd90ef1c4b7926a6da42914.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9248b70482bf6c0c08bfd7dc1825ff2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9248b70482bf6c0c08bfd7dc1825ff2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd52704b957a03bd7652a8abfc79169f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd52704b957a03bd7652a8abfc79169f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95fed81f2051ac18aed79ac65506bcc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95fed81f2051ac18aed79ac65506bcc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8ff2d10eb455e26fbd49ca8577a748e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8ff2d10eb455e26fbd49ca8577a748e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e72b42e17384d7375eae6188db4a0b3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e72b42e17384d7375eae6188db4a0b3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a19cc090a4e878096c2e9bd1aa57255c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a19cc090a4e878096c2e9bd1aa57255c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8b63b926799b86237f9da0c09d9b9b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8b63b926799b86237f9da0c09d9b9b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c42156238f6747c56169e48ed2332fbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c42156238f6747c56169e48ed2332fbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3727a66cd1faf92f17b6e42d1ac9ce5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3727a66cd1faf92f17b6e42d1ac9ce5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20706d16caf832cbbc9336e777298b2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20706d16caf832cbbc9336e777298b2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b199e8aad7dc32d9da9e2acae4a9f7f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b199e8aad7dc32d9da9e2acae4a9f7f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6171ea81148f8349f2a3e7795f9a797.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6171ea81148f8349f2a3e7795f9a797.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53c24120423d4ab3e0682b34d165cce0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53c24120423d4ab3e0682b34d165cce0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2998210b6516bb72ca4ecc552fe1c452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2998210b6516bb72ca4ecc552fe1c452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40a3b58c8994da5f68c9a70603cfc69f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40a3b58c8994da5f68c9a70603cfc69f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/676acaa002d43fe87c7f08891ce1e375.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/676acaa002d43fe87c7f08891ce1e375.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/061f47e80f9ba0b14d0f6ff1d97832b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/061f47e80f9ba0b14d0f6ff1d97832b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d68d15ac856a5f394be758f5b14472d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d68d15ac856a5f394be758f5b14472d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e17041f2ab2fd90d4d645c2b81e117ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e17041f2ab2fd90d4d645c2b81e117ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91ce73361dca495fc01ea078c63be200.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91ce73361dca495fc01ea078c63be200.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b301b6dd7ccd1476e20eb87ac93fd21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b301b6dd7ccd1476e20eb87ac93fd21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f28caeb1ae005bbbf13e445cd81d70f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f28caeb1ae005bbbf13e445cd81d70f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f96513f4cf52f2cd0caf5a49f0cf47a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f96513f4cf52f2cd0caf5a49f0cf47a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b50b75e2af4c9c60f8bbc92df33557c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b50b75e2af4c9c60f8bbc92df33557c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8dd9c0862e37cfddf42257403759c56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8dd9c0862e37cfddf42257403759c56.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c8b1b6c2dbe8c26a13b4e4ac9a5f523.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c8b1b6c2dbe8c26a13b4e4ac9a5f523.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d14380f50a2484cfbfe6d4b55e254ee3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d14380f50a2484cfbfe6d4b55e254ee3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b2c0b030495b0c1970026e643eb74d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b2c0b030495b0c1970026e643eb74d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8edef8d8fa2c866a6d37088cc4888f51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8edef8d8fa2c866a6d37088cc4888f51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2759420c8d3cb17f8df32845feb3e8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2759420c8d3cb17f8df32845feb3e8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/076653218d9bb6fbd2009edd2a7b55d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/076653218d9bb6fbd2009edd2a7b55d7.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1108029,'1108029','宠物多功能喂水喂食器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/0c8df971748c9e84759dbacaf8b6d1b9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/870481d2629256214d404cb42af00cbc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/43f94a4f78c77078194f882534c73dd1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b8f00bf92940a0f65d251df91afb586b.jpg\\\"]','','喂水喂食一体机',1,11,'http://yanxuan.nosdn.127.net/fe52cd141b4b330db5627114b0e0e550.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3bf8e67e0463e2571d37012a325db488.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bf8e67e0463e2571d37012a325db488.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4e77fa5bca0ae2f7a8958c9e140df1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4e77fa5bca0ae2f7a8958c9e140df1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36191cbd08985b5243cd772f3e9aaac5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36191cbd08985b5243cd772f3e9aaac5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29e2ae41fdc593c30ec5ec0aa626cb2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29e2ae41fdc593c30ec5ec0aa626cb2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43dca05a07c303b53fab3abc8c24859b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43dca05a07c303b53fab3abc8c24859b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62a3bfcdcfe31d37b94c19b54f3f6a9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62a3bfcdcfe31d37b94c19b54f3f6a9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7533bfcc453038ce04c41528fe21b8da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7533bfcc453038ce04c41528fe21b8da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bda204fa9f136c9cb96648b010f6a10c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bda204fa9f136c9cb96648b010f6a10c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5388fcb07fdb920e3395107edc539a40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5388fcb07fdb920e3395107edc539a40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22c61bb098f35b258c56cb125c151188.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22c61bb098f35b258c56cb125c151188.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0009cc0c641be4894ca7ad2eb783fd4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0009cc0c641be4894ca7ad2eb783fd4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7db29c859575edeb95c9441765ace2fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7db29c859575edeb95c9441765ace2fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb3b43977f90bd58c8d43ec9bc21dd39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb3b43977f90bd58c8d43ec9bc21dd39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f52aa926637aa95ab37d68a56f858b76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f52aa926637aa95ab37d68a56f858b76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96197f28360be46a045dd84f7c9c3d92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96197f28360be46a045dd84f7c9c3d92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d782399abb5589ad73cf07e334500fe8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d782399abb5589ad73cf07e334500fe8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84ca5f52f317691f9916c11f9376b730.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84ca5f52f317691f9916c11f9376b730.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de7ae0e78a5ce6912a7ef425fadf0eca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de7ae0e78a5ce6912a7ef425fadf0eca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/145e3897ee245669d592ee2565679d6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/145e3897ee245669d592ee2565679d6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03ed7555a00651cf887bbae7642166bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03ed7555a00651cf887bbae7642166bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffc5597f1d9c3c1fa4c69d35a214b035.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffc5597f1d9c3c1fa4c69d35a214b035.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/256469fef7985abc5996136246ca8b00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/256469fef7985abc5996136246ca8b00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2020ded743ca398a6842c33cb40e2877.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2020ded743ca398a6842c33cb40e2877.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d806810ce52681e6ba7d2fbbf251c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d806810ce52681e6ba7d2fbbf251c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a68e8f40bb91921ae319ec2f0f5f6c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a68e8f40bb91921ae319ec2f0f5f6c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b874965467b55c34b0f28bad35b03bf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b874965467b55c34b0f28bad35b03bf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29bd66954c53e023364968cc908f87fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29bd66954c53e023364968cc908f87fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69eaa19be01f0f5b9435ddda59015b33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69eaa19be01f0f5b9435ddda59015b33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ba111a384ac2eb2cb481d767f6645c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ba111a384ac2eb2cb481d767f6645c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cff9b886b5633c4f65218bd582999a7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cff9b886b5633c4f65218bd582999a7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccbae3f496c5330fdd213477289938e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccbae3f496c5330fdd213477289938e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c5e34fdc3c8fe76f12691b347e29664.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c5e34fdc3c8fe76f12691b347e29664.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e0483aaf7c4af0175640ecf76298c14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e0483aaf7c4af0175640ecf76298c14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1db819b96049f466652fdc6000c20d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1db819b96049f466652fdc6000c20d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edd00950d840dc7200a3fe93387ace4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edd00950d840dc7200a3fe93387ace4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f9bf5f71b81d65f3f436ecf99736a61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f9bf5f71b81d65f3f436ecf99736a61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/353d3c382ba4d106b179efacaa5b3556.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/353d3c382ba4d106b179efacaa5b3556.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6ff4ab6bbfcee7c86d3bedc55c0b46e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6ff4ab6bbfcee7c86d3bedc55c0b46e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a734c8741a07eded056745572d420366.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a734c8741a07eded056745572d420366.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a581fb66bf5b225518d68895370d0d30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a581fb66bf5b225518d68895370d0d30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89462fa746af04888e42977446b109f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89462fa746af04888e42977446b109f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa0565c8fe8106078005ef3eec6043a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa0565c8fe8106078005ef3eec6043a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4377fc275d75cbd22fd51349adf5683c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4377fc275d75cbd22fd51349adf5683c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f8ad9a23c7712936bf683ad1b426a61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f8ad9a23c7712936bf683ad1b426a61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5a7331657407c0bcd2b441f367a0b5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5a7331657407c0bcd2b441f367a0b5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/723be903fc95458184906b016023f472.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/723be903fc95458184906b016023f472.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aca7894a56492d14a66cf4489cb0101e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aca7894a56492d14a66cf4489cb0101e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64444603ae2928179b5cfd8ae92751fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64444603ae2928179b5cfd8ae92751fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d7b5fe28ee279bf0255add5693ad479.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d7b5fe28ee279bf0255add5693ad479.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a04ac95008f4ba1ca6398c724df714db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a04ac95008f4ba1ca6398c724df714db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4456c996bb369b15d1d9f47eea0ac1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4456c996bb369b15d1d9f47eea0ac1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f857dd5a5e64a02c8ae2749cd1b4d28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f857dd5a5e64a02c8ae2749cd1b4d28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91c11fb52abf61d69c19b7b1671e333b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91c11fb52abf61d69c19b7b1671e333b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1108030,'1108030','宠物便携出行圆球饮水器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/139b7be83a064eaa5f99feeea44729fd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ad6757535783bbbba22325943caad862.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3528b0ec40265759371405415b74c734.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61d995604039df8026fee4b3c15e8692.jpg\\\"]','','外出饮水必备',1,9,'http://yanxuan.nosdn.127.net/4891e60ff08ceed36d40a754e45e8742.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/65458dc2797b7b9697c8fa90b082c820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65458dc2797b7b9697c8fa90b082c820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99fd8ac254bae2b9aba09ebdc864902b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99fd8ac254bae2b9aba09ebdc864902b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28daf4d14b315c1dd59ab246beb09c70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28daf4d14b315c1dd59ab246beb09c70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba256e0b5247705a57b1473aee17bfcc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba256e0b5247705a57b1473aee17bfcc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db8b0bc40c842c7850566f3505ff318c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db8b0bc40c842c7850566f3505ff318c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3289160c3ef48abdf88210125f3602e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3289160c3ef48abdf88210125f3602e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39e4961981c7bef5cea9195f53dde52f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39e4961981c7bef5cea9195f53dde52f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd15f95156653349523af86732a46492.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd15f95156653349523af86732a46492.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/891265e3eeeaa98cffd9f347a6d19746.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/891265e3eeeaa98cffd9f347a6d19746.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6dfda7fdadfc0f2982e8a8597d985ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6dfda7fdadfc0f2982e8a8597d985ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef537acfb89fe4d7ba4ce414c2265783.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef537acfb89fe4d7ba4ce414c2265783.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0592ee31552e6546d8ef09516841761f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0592ee31552e6546d8ef09516841761f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f553056794ae5f695075ef2df287a8d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f553056794ae5f695075ef2df287a8d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df10a5ab1e5db7f8a591d2303d58ff43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df10a5ab1e5db7f8a591d2303d58ff43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/006314c83e0089a6677c792cbf03738d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/006314c83e0089a6677c792cbf03738d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df80940267b26eb2c4045ab54a532a4a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df80940267b26eb2c4045ab54a532a4a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/820795a6b0338fec5eb7b8e2a1faaa7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/820795a6b0338fec5eb7b8e2a1faaa7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/225046907f2abd2bb25e455bdcee1033.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/225046907f2abd2bb25e455bdcee1033.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d98af93b7b493a396b9197853ac3bffd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d98af93b7b493a396b9197853ac3bffd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c02c9759630701a781e17b55e52d348.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c02c9759630701a781e17b55e52d348.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b07ff9f11625098837642eab16a24b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b07ff9f11625098837642eab16a24b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62ba125cd3c6dbff548b4aea7052dfa2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62ba125cd3c6dbff548b4aea7052dfa2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63433f85d33a5ef7680a74836a57a8a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63433f85d33a5ef7680a74836a57a8a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b96e12210978aa545d16753583c9311.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b96e12210978aa545d16753583c9311.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/199cf634a730a1d2c85ba8564d5e1f30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/199cf634a730a1d2c85ba8564d5e1f30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04b3401c50ee63e48e0acaa25188072c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04b3401c50ee63e48e0acaa25188072c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab1f3b9d0b41453fa2ab69bfd8ebd609.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab1f3b9d0b41453fa2ab69bfd8ebd609.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d2282c7716b703cb8075d97ee0b1ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d2282c7716b703cb8075d97ee0b1ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18a1b4b99f3e4585b5417b4494637935.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18a1b4b99f3e4585b5417b4494637935.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49278c041256ff111e9b0d6b19f6849a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49278c041256ff111e9b0d6b19f6849a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6788d12309384b5d337976dbad1d6c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6788d12309384b5d337976dbad1d6c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c6caf545f43b018f49ee5487fc03d01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c6caf545f43b018f49ee5487fc03d01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27a36412d6ecec32db98dfa0b6e3af72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27a36412d6ecec32db98dfa0b6e3af72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7de1b5e08e34b6063c232b51b8d6ce75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7de1b5e08e34b6063c232b51b8d6ce75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c838ab94bfa6d33cfc1a04153d735ba8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c838ab94bfa6d33cfc1a04153d735ba8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc75dbcbf77c448d5387d9603b475933.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc75dbcbf77c448d5387d9603b475933.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ef8849851d3d4dcbe218462703984e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ef8849851d3d4dcbe218462703984e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ff37d4e4da2ef4de40c658a1b8f9d79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ff37d4e4da2ef4de40c658a1b8f9d79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f55a85e695408074cc0a81750edea4f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f55a85e695408074cc0a81750edea4f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83c6329af24cf5e90c9d5375526b36fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83c6329af24cf5e90c9d5375526b36fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cba8e943c2625979de604dffb0f9a845.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cba8e943c2625979de604dffb0f9a845.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f78a2b104dbf826d95acdee5067946ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f78a2b104dbf826d95acdee5067946ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3982351a58dca84398140880a9ff9af7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3982351a58dca84398140880a9ff9af7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae786e8fbcb22eb93d28af5c258ef0e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae786e8fbcb22eb93d28af5c258ef0e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f1e30c1953432fa8e917be3a60eb8d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f1e30c1953432fa8e917be3a60eb8d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8081aaebcb364348cc135507f91a6ee2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8081aaebcb364348cc135507f91a6ee2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2c7658cc55e22c82e47853cc2fe90af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2c7658cc55e22c82e47853cc2fe90af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7eb6a53ed6638c306c552f5254e4852.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7eb6a53ed6638c306c552f5254e4852.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9fb49dcb6363fae12e5c870481af5a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9fb49dcb6363fae12e5c870481af5a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb48d2684fbeefe6943cedc53c91d871.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb48d2684fbeefe6943cedc53c91d871.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/201bae3b7e499e793d2c30cf6da70d2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/201bae3b7e499e793d2c30cf6da70d2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5baec5411baf96cd0ec794b85fd1a380.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5baec5411baf96cd0ec794b85fd1a380.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8408db93439d3aea4dfbe526912de53c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8408db93439d3aea4dfbe526912de53c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f44ba45b1e8db330f9cd9861838369f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f44ba45b1e8db330f9cd9861838369f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d55f64c5d91dada75147a3e64cb75cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d55f64c5d91dada75147a3e64cb75cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/971c28886097abee11d46e73dcdef3ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/971c28886097abee11d46e73dcdef3ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a75e9cd2ab8220d5f458abd29342208f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a75e9cd2ab8220d5f458abd29342208f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72eebb97ba757e5fadc1f295899c10e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72eebb97ba757e5fadc1f295899c10e3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1108031,'1108031','宠物不锈钢圆形倾斜餐碗',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/f2c5d5f0e1628cd1e834b7b0221cf513.jpg\\\", \\\"http://yanxuan.nosdn.127.net/49c00c7cffcbc5fc6438bdac50f772e0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7ae6591eca8cedeb94270d0c73eaebd7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2d0e71288124d5ca4ba44f826b53c78b.jpg\\\"]','','15°倾斜设计，保护萌宠颈椎',1,10,'http://yanxuan.nosdn.127.net/e13e9697e01339c6cf7479eb81b3fbe2.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/fe442c6b8b05d23d83c190640065b302.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe442c6b8b05d23d83c190640065b302.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba20be368cb41c574702e6744a0c2ce8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba20be368cb41c574702e6744a0c2ce8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7092d305d9b11aa72f95038e90154fdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7092d305d9b11aa72f95038e90154fdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5347b835761722810025b9f3c6b6242.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5347b835761722810025b9f3c6b6242.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3044ad714ba17abfe7bff91852dbbb7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3044ad714ba17abfe7bff91852dbbb7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f2e55960d44c44fe16be14ca42b79b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f2e55960d44c44fe16be14ca42b79b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ab5ffee3b444a77f27ac16a823b26e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ab5ffee3b444a77f27ac16a823b26e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35f2901cbb277423113591ff6888679e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35f2901cbb277423113591ff6888679e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f6f5b1d8a683b1250bd5ebc27b833d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f6f5b1d8a683b1250bd5ebc27b833d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d12811178bd5bcbf4a8084b96d983510.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d12811178bd5bcbf4a8084b96d983510.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a91d9ab01721022697a0317d806acf1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a91d9ab01721022697a0317d806acf1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fda53f2d82de49415036a1b7f3682897.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fda53f2d82de49415036a1b7f3682897.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06ad2786bb0ed2e15db6e0ca4a7f6e9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06ad2786bb0ed2e15db6e0ca4a7f6e9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6364ac31e8f2c6dca96a15272b4bdf74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6364ac31e8f2c6dca96a15272b4bdf74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63676d91181fe828d311152cf64e7c96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63676d91181fe828d311152cf64e7c96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e3720a6ebaa9e055e13a59b949846a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e3720a6ebaa9e055e13a59b949846a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e7b6a3053033461ac16f131a144d712.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e7b6a3053033461ac16f131a144d712.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71a84329dd57b8ea6ea475dfc7d7ea45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71a84329dd57b8ea6ea475dfc7d7ea45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9aa4a346e8aaa99e5f0a8a8ddbbae52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9aa4a346e8aaa99e5f0a8a8ddbbae52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/871bf338274c5a2c12fbcf47253dee9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/871bf338274c5a2c12fbcf47253dee9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e64906f44387ba5aa1fe0a46e0e868e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e64906f44387ba5aa1fe0a46e0e868e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5aaf91ae7b9a724adbd328212717f133.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5aaf91ae7b9a724adbd328212717f133.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bac8b99202edba9e578577c8b400c27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bac8b99202edba9e578577c8b400c27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/905476e8794cb20932c79fe979d4d6e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/905476e8794cb20932c79fe979d4d6e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a390619762e9aded0830c8ef7a9019cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a390619762e9aded0830c8ef7a9019cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e6feb711c65e1df4ea4b6e219e46e5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e6feb711c65e1df4ea4b6e219e46e5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/384cf19dbc0d907658129066fbb677cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/384cf19dbc0d907658129066fbb677cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/559f367e0268c32cd9b1981fca44a194.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/559f367e0268c32cd9b1981fca44a194.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b756d95d2d65bb3f88d6d0da32000c9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b756d95d2d65bb3f88d6d0da32000c9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3b9047a5c3c574137b560899d1ee719.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3b9047a5c3c574137b560899d1ee719.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19a3db18a8023be0926479cda7bccccf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19a3db18a8023be0926479cda7bccccf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75e1ddf4c49513673cff06fb12f2fe71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75e1ddf4c49513673cff06fb12f2fe71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14115b6c7119e2f1941080b3c1d21aad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14115b6c7119e2f1941080b3c1d21aad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57fdadf97765f41fd7137ba8f1b9d67d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57fdadf97765f41fd7137ba8f1b9d67d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f240883b30ce338fcbeddcd428301ecc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f240883b30ce338fcbeddcd428301ecc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/722689c017134b67bffe74ca5449cc13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/722689c017134b67bffe74ca5449cc13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cbafb1ac8a140f33d1e1f6d187e0f14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cbafb1ac8a140f33d1e1f6d187e0f14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ee61f4cbdcf2da8e794367d22951299.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ee61f4cbdcf2da8e794367d22951299.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cebd5973ee2c12a2db2e1480b6bb247e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cebd5973ee2c12a2db2e1480b6bb247e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab3fa0823a7397d78d4ed76130d6e07a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab3fa0823a7397d78d4ed76130d6e07a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a9e54a13c48800a2540eecfea8b46e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a9e54a13c48800a2540eecfea8b46e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf08302aa55a026f7276c9ce7d7caf70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf08302aa55a026f7276c9ce7d7caf70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5074c7dd82423817b5efd1440dfe0f3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5074c7dd82423817b5efd1440dfe0f3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16ada32c3b2ba7bd3781b6cbb5fc4a71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16ada32c3b2ba7bd3781b6cbb5fc4a71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52a58f1c5fc81211f04bc23055421d3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52a58f1c5fc81211f04bc23055421d3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c73e3beb3afaf28e6293e9dd4f88f1ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c73e3beb3afaf28e6293e9dd4f88f1ba.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1108032,'1108032','宠物外出便携硅胶折叠碗',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/971ba39166439705d7a254d5d736a753.jpg\\\", \\\"http://yanxuan.nosdn.127.net/16c11f11c03b0f0e596f6c9cd85170bc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/31469f008127ea2f1c7ffed1755fff42.jpg\\\", \\\"http://yanxuan.nosdn.127.net/31376f28a3d00cfe767713b93d3a84be.jpg\\\"]','','环保材质，安全出行',1,8,'http://yanxuan.nosdn.127.net/b1f9e1f700469f71fe3c4187ef53c99f.png','',0,0,'件',49.00,29.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d8ff5ecd0e885adbfe48274ebd5d39c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ff5ecd0e885adbfe48274ebd5d39c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/386b5ab03d27baa531c954db71361794.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/386b5ab03d27baa531c954db71361794.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/854e336ce00c378a3742caf63cd646ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/854e336ce00c378a3742caf63cd646ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b50b6dcb391ad81f246ece99016d707.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b50b6dcb391ad81f246ece99016d707.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b5c13a48aaaa82e22b79fed8995cb8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b5c13a48aaaa82e22b79fed8995cb8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d61a222e292b6cccd2ed7cc6a6ffcd72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d61a222e292b6cccd2ed7cc6a6ffcd72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13a0a06993b8c3c5741161802704bab8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13a0a06993b8c3c5741161802704bab8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a92ed8e9574aeb25974200c084e6dc0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a92ed8e9574aeb25974200c084e6dc0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9144dd50cfd1e61b61134a369ebabd84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9144dd50cfd1e61b61134a369ebabd84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d61dd945035ad1d5be48237789b428e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d61dd945035ad1d5be48237789b428e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9058bda517165fe7e3ea430352c92928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9058bda517165fe7e3ea430352c92928.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20ff4399b56ea9702e2ffe383f4c3186.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20ff4399b56ea9702e2ffe383f4c3186.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/230633f83cc8f67eb8b60bba9f7344dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/230633f83cc8f67eb8b60bba9f7344dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50917a24116c0ec917300e59980dfa70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50917a24116c0ec917300e59980dfa70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f6f265dc2a7b9e92cf5e337240315f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f6f265dc2a7b9e92cf5e337240315f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec63508dc5002ea7297ceb8667c83a57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec63508dc5002ea7297ceb8667c83a57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8991ae264090f405222b022cf6ae171e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8991ae264090f405222b022cf6ae171e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bdf14e7a0438d2c0f1773fa6f40814d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bdf14e7a0438d2c0f1773fa6f40814d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/758fd7288c33ff3eb927d6cad168e7c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/758fd7288c33ff3eb927d6cad168e7c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56c6c022d74853fdf34229bd793a5eb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56c6c022d74853fdf34229bd793a5eb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/886d8bbd06fb31459300b80b5b03f20d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/886d8bbd06fb31459300b80b5b03f20d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce994fa8073259d4862ce4bda755de96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce994fa8073259d4862ce4bda755de96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1ea7ee36b77699babffe0f5d17f94af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1ea7ee36b77699babffe0f5d17f94af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e7cedeedaa49ffcbd78ba47ec0bf7a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e7cedeedaa49ffcbd78ba47ec0bf7a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d812b4e3c4ac28a63d6f1fdd1e79b89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d812b4e3c4ac28a63d6f1fdd1e79b89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99a4acbd0cf0fee6e11587311b2b8ee4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99a4acbd0cf0fee6e11587311b2b8ee4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/277a754269060561028944ead40c83c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/277a754269060561028944ead40c83c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c0c08dda4d972a5d3689654e95e05af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c0c08dda4d972a5d3689654e95e05af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5be19568b2e13c20be03aeb620ce9775.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5be19568b2e13c20be03aeb620ce9775.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3e4c54c1a94d4e073f48cdf6d153888.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3e4c54c1a94d4e073f48cdf6d153888.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2d98d50abb5f8d85f1c879bf0cc0889.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2d98d50abb5f8d85f1c879bf0cc0889.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba75182e971ad76f3ebc8bbf5378d8c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba75182e971ad76f3ebc8bbf5378d8c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b668c88d1068ece520560f482cf4742d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b668c88d1068ece520560f482cf4742d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4af4ee5f7669d7224e1cbba0b2c91b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4af4ee5f7669d7224e1cbba0b2c91b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/696c2a252e2ce5c82385a3b688a6189f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/696c2a252e2ce5c82385a3b688a6189f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/867ae15f3ad0b32c9696d67c1b0f81b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/867ae15f3ad0b32c9696d67c1b0f81b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4653f7f883e4d4415a63c049057e485.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4653f7f883e4d4415a63c049057e485.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f0ed58e5833a79f8cbb23f17197bd0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f0ed58e5833a79f8cbb23f17197bd0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e0c022efbe3356e228af952250f1f6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e0c022efbe3356e228af952250f1f6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c02896ef38cebb1aed42e2b9b7b8eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c02896ef38cebb1aed42e2b9b7b8eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f28abcfec2fc43a58bbfac47038c6cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f28abcfec2fc43a58bbfac47038c6cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f3aa08189ffd19d97d3f155b8c6394b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f3aa08189ffd19d97d3f155b8c6394b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ad916ac6db5838d6c9b0861cbfa1ec3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ad916ac6db5838d6c9b0861cbfa1ec3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/785e8d1367c02cae12c2d6e93e61acd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/785e8d1367c02cae12c2d6e93e61acd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5138c94fecd3f99579a87b7e86089bb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5138c94fecd3f99579a87b7e86089bb2.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1109004,'1109004','简日挂钟',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/ed50cbf7fab10b35f676e2451e112130.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6e13c6483850a3fb217b888ff22eee6d.png\\\", \\\"http://yanxuan.nosdn.127.net/d5d2f5173682bcd9e1d5472b7dcac591.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cb465057857eade369ace03ad95d6765.jpg\\\"]','','极简风格，精确读数',1,11,'http://yanxuan.nosdn.127.net/d25b5990f16c6d1ac168a34b7aeca681.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ed6209acc582861a4532565144bef700.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed6209acc582861a4532565144bef700.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d93a219ccd2cf7fbd0a6123794d78134.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d93a219ccd2cf7fbd0a6123794d78134.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3e1e4b0e1c00934ac0c07c4ae45a950.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3e1e4b0e1c00934ac0c07c4ae45a950.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c9c486cff57a78914ad8e4e67da3593.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c9c486cff57a78914ad8e4e67da3593.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf1894242c6f85ccc1e344bc74a7d3fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf1894242c6f85ccc1e344bc74a7d3fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/131e4470d228bab143b5430da6ec0321.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/131e4470d228bab143b5430da6ec0321.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11b92847ff14aab16ba8358dcece8abb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11b92847ff14aab16ba8358dcece8abb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57477bb84bc01af24cdf48056a2caad7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57477bb84bc01af24cdf48056a2caad7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61b9cb485b704ddb9f83a60fd09e91c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61b9cb485b704ddb9f83a60fd09e91c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa87555d481801395547dd76f5a8cfd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa87555d481801395547dd76f5a8cfd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9078b58525c6f68d0e49d1bf9b634486.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9078b58525c6f68d0e49d1bf9b634486.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99288d5715265c7db5f95374749e5210.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99288d5715265c7db5f95374749e5210.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7db2e77fc52923ac4b520755390e107.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7db2e77fc52923ac4b520755390e107.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e294cb72f4597d3483a58672036fc79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e294cb72f4597d3483a58672036fc79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dedf9275a5cb14e0e40d9a0a44e2ab7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dedf9275a5cb14e0e40d9a0a44e2ab7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fb4872d2688aef5fbff9874f67df039.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fb4872d2688aef5fbff9874f67df039.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f42e6c5d2fa6cc6769836e58ce6b204d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f42e6c5d2fa6cc6769836e58ce6b204d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ee925e530280f8ef9d2d17e2d3f6c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ee925e530280f8ef9d2d17e2d3f6c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c958c89c52482f66a2b7fe2f2ca7f86d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c958c89c52482f66a2b7fe2f2ca7f86d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5489eb22d3d00557e3e6f90af54a32d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5489eb22d3d00557e3e6f90af54a32d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b55e4bbca8dbc6ec36280243540fce36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b55e4bbca8dbc6ec36280243540fce36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e69bd0a9b72ea444a2a9597d8573d808.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e69bd0a9b72ea444a2a9597d8573d808.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1ead82c1d20e969d93714c91575891a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1ead82c1d20e969d93714c91575891a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ae0db50efe7feb7236788568143c9e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ae0db50efe7feb7236788568143c9e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3161bbead17d75b34763be4552ab06ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3161bbead17d75b34763be4552ab06ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88715f3acaec8cd8124acf8e765725c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88715f3acaec8cd8124acf8e765725c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe0a81f50cd82722f2fee0d3f2bcdccf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe0a81f50cd82722f2fee0d3f2bcdccf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a3d279a06c30bc982926000a7bcf149.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a3d279a06c30bc982926000a7bcf149.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0f481e69077703f35f542509d799426.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0f481e69077703f35f542509d799426.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86df378f128f248a591c6c972843272a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86df378f128f248a591c6c972843272a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8427432a97e187089144bacd891467dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8427432a97e187089144bacd891467dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d86f92f33c4e022fcc805aa26364b68f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d86f92f33c4e022fcc805aa26364b68f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ec0158a6100b3b28fd28026617a9979.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ec0158a6100b3b28fd28026617a9979.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1109005,'1109005','方圆木钟',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/fc5bf833a02a3be40e3e396a1c5a9c13.jpg\\\", \\\"http://yanxuan.nosdn.127.net/43870fe7ec3c7186fb093ab50d94fa3a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/66ac578985180b614c88fda44a2eb26b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/afcd8c99f588072f1ad755762294dca1.jpg\\\"]','','坚硬榉木，实木雕刻',1,12,'http://yanxuan.nosdn.127.net/7f508253f65733c7b2af52dd3943ee28.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7bb40b67df074039b7fe97dbcf448c43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7bb40b67df074039b7fe97dbcf448c43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a405e659b4249519b6d891dbf2b58c01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a405e659b4249519b6d891dbf2b58c01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11720fe8cd48a2658942b481276a3de4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11720fe8cd48a2658942b481276a3de4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fedf3620e560e8210a63493200d08c51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fedf3620e560e8210a63493200d08c51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9934ca6f2065c0383e44a0ae4b524030.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9934ca6f2065c0383e44a0ae4b524030.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7336ac68c0d262fa31fdb16040d0f8af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7336ac68c0d262fa31fdb16040d0f8af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10b7cb83b00cda576314313705fa7868.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10b7cb83b00cda576314313705fa7868.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3e73216286e1495c90e5b9c9705f19e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3e73216286e1495c90e5b9c9705f19e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/919cf6a418c3f0898d101af1640c12c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/919cf6a418c3f0898d101af1640c12c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26d59296f4e67c55e9aead03b498d4fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26d59296f4e67c55e9aead03b498d4fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b218ff0f6fc058e0306e610a160d16fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b218ff0f6fc058e0306e610a160d16fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1143d61bfe38a4fc60774aa8af009d7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1143d61bfe38a4fc60774aa8af009d7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/730c574abd298983b3ed2763f821c0fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/730c574abd298983b3ed2763f821c0fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2af0aa58c62dde1dd4875fe87a4c5a99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2af0aa58c62dde1dd4875fe87a4c5a99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec7e7448a8e296021ab462cd092a2501.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec7e7448a8e296021ab462cd092a2501.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5539a0ddef738d82cbae457f09065840.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5539a0ddef738d82cbae457f09065840.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9565467e098db81db007bade84b364a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9565467e098db81db007bade84b364a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adfbd2319e2dc365deebf0eea18a4a0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adfbd2319e2dc365deebf0eea18a4a0d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adece1b89239b86275b593c6d9ef7437.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adece1b89239b86275b593c6d9ef7437.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66c4bd6f0fd889eabb4497644bfffee5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66c4bd6f0fd889eabb4497644bfffee5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b68b8e696a281e00e7515ee5004219bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b68b8e696a281e00e7515ee5004219bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b2e59292e893aebfdf7f428569eb7e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b2e59292e893aebfdf7f428569eb7e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec90203d32e0171312f69fb4c2fa5ca3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec90203d32e0171312f69fb4c2fa5ca3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/804a3622271a95a3dd0a19524e9ebc46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/804a3622271a95a3dd0a19524e9ebc46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b14c06512fab1bca0a5a63cfc88dc8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b14c06512fab1bca0a5a63cfc88dc8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/574c9c2ed1b416362db5df5a75bd47f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/574c9c2ed1b416362db5df5a75bd47f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3495a30d87a9448899a72b0d7e81643e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3495a30d87a9448899a72b0d7e81643e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07dbd43bc04098ffc1d4264be2a236ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07dbd43bc04098ffc1d4264be2a236ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1dd028e3f58ddbd7d4c93c93cf044fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1dd028e3f58ddbd7d4c93c93cf044fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee1c77ca898e5bc28c6fc32dee421af9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee1c77ca898e5bc28c6fc32dee421af9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58d2095e21406135172ee9f7f8b15cae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58d2095e21406135172ee9f7f8b15cae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e6693f623dc6ba917a160149072550f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e6693f623dc6ba917a160149072550f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/420025a688a7e5c28b974df7573535a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/420025a688a7e5c28b974df7573535a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a31bdac2e2f75c85a3b4cc02877eee6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a31bdac2e2f75c85a3b4cc02877eee6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b995c56514fc2c293c3a39c0fad703d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b995c56514fc2c293c3a39c0fad703d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78ac837deb7634e37e053b6ba4ce1074.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78ac837deb7634e37e053b6ba4ce1074.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d39bb938c8ad37f588dcce36ed603dca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d39bb938c8ad37f588dcce36ed603dca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc32f60d12caec82201282fe3bf7c505.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc32f60d12caec82201282fe3bf7c505.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9fd482c1d56c50722e34f3f86932ffd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9fd482c1d56c50722e34f3f86932ffd9.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1109008,'1109008','云端沙发组合',1015000,1001000,'[\\\"http://yanxuan.nosdn.127.net/52e1a79197af9b1cc73c836f74b190d4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4c07ef11f91c4139411f5fff38c78750.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6ac6c255e6ad5039e903f3051b56e25e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/88aef8f37fd7be612875d93a1b3867c4.jpg\\\"]','','MUJI供应商携手打造',1,2,'http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png','',0,0,'件',4019.00,3999.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/fc48d623ad2effc32f47f70e6cba03ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc48d623ad2effc32f47f70e6cba03ee.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb4a737f74e7779d19c998a0ba63cd3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb4a737f74e7779d19c998a0ba63cd3d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/937038be185fc64572c38de8d69c01cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/937038be185fc64572c38de8d69c01cb.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40108d88fbfe752bfb7a6fc4ae8edd79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40108d88fbfe752bfb7a6fc4ae8edd79.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a28a0420050289d3e19b88d28b76bab6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a28a0420050289d3e19b88d28b76bab6.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/917acd26520c10b3c82d2beed37fddd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/917acd26520c10b3c82d2beed37fddd7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbf4e7008c33239f7cf79aa93f68ee15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbf4e7008c33239f7cf79aa93f68ee15.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54065646ecdae5f010980bfa24c4fbbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54065646ecdae5f010980bfa24c4fbbe.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff510e36a124d4c1ccce47a1e06cba30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff510e36a124d4c1ccce47a1e06cba30.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b33aa96ae830fec44aac042f1f28ddd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b33aa96ae830fec44aac042f1f28ddd8.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff74ec438ab3d7805ea2aed2c6552746.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff74ec438ab3d7805ea2aed2c6552746.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6eaff5f5a38874a6e2a9b56feeede7d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6eaff5f5a38874a6e2a9b56feeede7d7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/200c9aae4e02a75bd71a5dea29f726c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/200c9aae4e02a75bd71a5dea29f726c4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd48b3606d7bb30243eebded22617d2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd48b3606d7bb30243eebded22617d2e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcc453ac7a81cfc517a192ff00013745.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcc453ac7a81cfc517a192ff00013745.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a4e50f5936b3c0ec5b163c8ccc99e8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a4e50f5936b3c0ec5b163c8ccc99e8a.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a79d51d47fadefe7b7db72052d98337f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a79d51d47fadefe7b7db72052d98337f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ed0d597c81b9ec49b969f8357eac8bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ed0d597c81b9ec49b969f8357eac8bd.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/177f0b2f78bcccf6926c47eb7ef2b047.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/177f0b2f78bcccf6926c47eb7ef2b047.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/808241e6912a1015f94da67d80a296cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/808241e6912a1015f94da67d80a296cf.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a123c112a75dee43559674c680c941ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a123c112a75dee43559674c680c941ae.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/832eefe1435ceeaeb421ce7ec0a4fa51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/832eefe1435ceeaeb421ce7ec0a4fa51.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b6f1a00452bc026eba362e4a1d58e04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b6f1a00452bc026eba362e4a1d58e04.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/761f4fadf4c797affe42c125b29c8ec9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/761f4fadf4c797affe42c125b29c8ec9.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d927eded8a39bbb888f9994cd236cb56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d927eded8a39bbb888f9994cd236cb56.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70c47dd65c21bd3fe52f179480268b54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70c47dd65c21bd3fe52f179480268b54.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02a226a867d397c20aafae1f5449225c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02a226a867d397c20aafae1f5449225c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76c8f1702e4c8f1072eb1cba6776f7c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76c8f1702e4c8f1072eb1cba6776f7c7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36225b551bb1e85691f29aa040ab9497.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36225b551bb1e85691f29aa040ab9497.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d9ba3ce28d578267765c4d2bc62b887.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d9ba3ce28d578267765c4d2bc62b887.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/099296fb5f8e88ab1c5eaffbd37b8c70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/099296fb5f8e88ab1c5eaffbd37b8c70.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bce3a4f414e16497dd0a1301fe945732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bce3a4f414e16497dd0a1301fe945732.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e75874726dd5a742599bc96f4401b51a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e75874726dd5a742599bc96f4401b51a.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cf202434f6e7d84388eb3f00aef3cf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cf202434f6e7d84388eb3f00aef3cf7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2788c15d1fb4b12ea989b4626bf4dd42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2788c15d1fb4b12ea989b4626bf4dd42.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/988c7843cd5e3c3d41ded3f964e83f28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/988c7843cd5e3c3d41ded3f964e83f28.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8680210644f9ddacc776c086acf087c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8680210644f9ddacc776c086acf087c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06a5234e14a9a5a13cab234e338ee047.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06a5234e14a9a5a13cab234e338ee047.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6913fa996a08d015baa5dbb81c6751b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6913fa996a08d015baa5dbb81c6751b4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5559938dfbba2abfe6dc2905892048d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5559938dfbba2abfe6dc2905892048d6.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bd6c290baf02cd9d6e8f2036ad96055.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bd6c290baf02cd9d6e8f2036ad96055.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c13f0abbe2e7c8bb6d78986dcaca45a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c13f0abbe2e7c8bb6d78986dcaca45a8.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38d1037057ffb3642d518415c3c21400.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38d1037057ffb3642d518415c3c21400.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8f56ea468a1a9fc4dbb462be94b0167.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8f56ea468a1a9fc4dbb462be94b0167.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f47f956787047fc4c05107beef0fd15b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f47f956787047fc4c05107beef0fd15b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59ae5ce70d03639554b3e0d222416de1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59ae5ce70d03639554b3e0d222416de1.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e54c9882590f3dc3524229c190098b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e54c9882590f3dc3524229c190098b7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb714d5f8e9c3a0cbb063f492c94a9a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb714d5f8e9c3a0cbb063f492c94a9a7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afdf2db3aeababc5e2eacbe3e03ab505.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afdf2db3aeababc5e2eacbe3e03ab505.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e4b140b65d6da223b2e43082640715e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e4b140b65d6da223b2e43082640715e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a4feb902cbd98370508538d252985c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a4feb902cbd98370508538d252985c2.jpg\\\"/></p><p style=\\\"text-align: center;\\\"><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1109034,'1109034','LCD电子钟 升级版',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/0251bd141f5b55bd4311678750a6b344.jpg\\\", \\\"http://yanxuan.nosdn.127.net/59c2d5822cda19f8caa2d9034937f565.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3d089c7c2a04ee17767a283a9f115dd0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0421111cdef15b0c9777da80eb66f696.jpg\\\"]','','MUJI风格，清晰简明',1,10,'http://yanxuan.nosdn.127.net/c2c96acc680cbadb1787385598e1e593.png','',0,0,'件',149.00,129.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/916068b542d339d851afa9ed21cbb615.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/916068b542d339d851afa9ed21cbb615.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1772c676b8a0151a3277415147e91aea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1772c676b8a0151a3277415147e91aea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2654631d02db94d1b16f35c3386e295.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2654631d02db94d1b16f35c3386e295.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe4364bc9c185394f155ef30a9fe7a20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe4364bc9c185394f155ef30a9fe7a20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c75be07a87009da083944b52a283bf3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c75be07a87009da083944b52a283bf3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f19e7292288a347d0fa0590e22069946.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f19e7292288a347d0fa0590e22069946.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39f509f66ae98d0aca642af803abdf04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39f509f66ae98d0aca642af803abdf04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d540abac2bef015ac85083e377bbcd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d540abac2bef015ac85083e377bbcd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7468d589f382664c61275bebfaf9177.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7468d589f382664c61275bebfaf9177.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/885bb0148c6104578cd7ee31813dab44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/885bb0148c6104578cd7ee31813dab44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4ec0f7b8cabadbaca834957b65fd5ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4ec0f7b8cabadbaca834957b65fd5ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb2cf783f23f6945e961979a5cb2af27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb2cf783f23f6945e961979a5cb2af27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62c6c3025ce0a80b9cb0a214595a5a99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62c6c3025ce0a80b9cb0a214595a5a99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7be5447b74b0afd0cd3943adbf559cb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7be5447b74b0afd0cd3943adbf559cb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/840c818a1206e5ae2a01a1e8800e4b4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/840c818a1206e5ae2a01a1e8800e4b4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb8b9a45109a23285415fade5a798e27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb8b9a45109a23285415fade5a798e27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c00c0a1b4af1503a90ef691999fdf4d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c00c0a1b4af1503a90ef691999fdf4d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be93945860e951158237bbf4a1c86b96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be93945860e951158237bbf4a1c86b96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc0d8c9697cbf9303954b77761ff4a0f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc0d8c9697cbf9303954b77761ff4a0f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8abfd0b6ea2dd3106ea8678793279d6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8abfd0b6ea2dd3106ea8678793279d6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abd55ff4c1325917cca7123dfaaccf2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abd55ff4c1325917cca7123dfaaccf2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec2c42f5a7c6c2efefb16db80cf761b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec2c42f5a7c6c2efefb16db80cf761b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f394d926f4acfbd70b6ad3d733cc3e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f394d926f4acfbd70b6ad3d733cc3e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01a4b743fe1395c9797c5922dd1f3a8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01a4b743fe1395c9797c5922dd1f3a8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22115c51b22dcf614054887e6662ddd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22115c51b22dcf614054887e6662ddd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc720dc92ab05aaef2b055e5e3d27c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc720dc92ab05aaef2b055e5e3d27c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adb14137997b1a886a39e98a043ec511.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adb14137997b1a886a39e98a043ec511.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e53b80ee6104b5cea8edbff8bbe5547c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e53b80ee6104b5cea8edbff8bbe5547c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92e56e6bc6f548fae669831b38bfbc6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92e56e6bc6f548fae669831b38bfbc6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20b74a363cdb9b31e0141869fd285dbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20b74a363cdb9b31e0141869fd285dbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/031d65d8ebee352f28f614cc07935606.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/031d65d8ebee352f28f614cc07935606.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a31a92d72ea93692a5cfbcaa7a02ced4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a31a92d72ea93692a5cfbcaa7a02ced4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b897a81ca59bc7dd3aae8fe314254538.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b897a81ca59bc7dd3aae8fe314254538.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77d0fbc4678a56713ae675a9884e4158.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77d0fbc4678a56713ae675a9884e4158.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da8a7b7237f083a6561c9ffc8a97b466.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da8a7b7237f083a6561c9ffc8a97b466.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2724952293dfb4ab737640fab4b229d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2724952293dfb4ab737640fab4b229d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e10bbb914bf44916e86b446e4c563d85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e10bbb914bf44916e86b446e4c563d85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c64c103d15388c0eda01086b8b977fe5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c64c103d15388c0eda01086b8b977fe5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d21b85379acabe83c692c5ebf625578.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d21b85379acabe83c692c5ebf625578.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f5c0d32e5ef81288dc44d08d183770b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f5c0d32e5ef81288dc44d08d183770b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24dedb497122ca1a4b5bcdf10f4b9a85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24dedb497122ca1a4b5bcdf10f4b9a85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02ece671c8dbca5f5436ff9f2eaf1b81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02ece671c8dbca5f5436ff9f2eaf1b81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/348adaa1d5bfe5b12296bb28e55e7017.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/348adaa1d5bfe5b12296bb28e55e7017.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d22886559be279a0adbe787b5aae9dd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d22886559be279a0adbe787b5aae9dd0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110002,'1110002','大头风扇',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/375db2797db92b446d45b3003ca84660.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9d2c517b9da985b9c997f6d9cb597ac0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6eb39c3ee3db8d9a6a2cbf3d2d2f581c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5e230a93445d2791719f9421a66113e3.jpg\\\"]','','静音劲风，小巧灵动',1,13,'http://yanxuan.nosdn.127.net/a7a524512c34d24a4b9762766dd9d0f0.png','',0,0,'件',139.00,119.00,'<p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/203ede95fa7111d6877779d3316837b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/203ede95fa7111d6877779d3316837b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/118783171188896e5a75e078dc64330b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/118783171188896e5a75e078dc64330b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2482102c677689ad80f641040e7f12ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2482102c677689ad80f641040e7f12ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d89b04c486f855444214d037c0df165.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d89b04c486f855444214d037c0df165.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f38c7e6a66526484d34fbb8a17b4a9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f38c7e6a66526484d34fbb8a17b4a9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9920394dea895df464180e43d5f11946.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9920394dea895df464180e43d5f11946.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/933a7012100a94c8c3a664ed2adaa7e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/933a7012100a94c8c3a664ed2adaa7e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/021a4220607d345c2469f015a672bb42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/021a4220607d345c2469f015a672bb42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e91be65f64f5522cadc47c4a7037d6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e91be65f64f5522cadc47c4a7037d6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/785485e7129c77deff6a0d9c20a4ba51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/785485e7129c77deff6a0d9c20a4ba51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45706b81032aae5519417752679cc411.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45706b81032aae5519417752679cc411.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9db4ce4a3af0ecb731c5b0616b6611a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9db4ce4a3af0ecb731c5b0616b6611a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fdfa4b3536119fba27651d3b71bdb28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fdfa4b3536119fba27651d3b71bdb28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f0368808f4454e7e423ecac84f72b4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f0368808f4454e7e423ecac84f72b4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4927392968e0cd9b8ab64a9596c7781.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4927392968e0cd9b8ab64a9596c7781.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abd90c3be9111efdaf56702abc1a7d32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abd90c3be9111efdaf56702abc1a7d32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0bc613574aa2fd1f7021f132b18a570.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0bc613574aa2fd1f7021f132b18a570.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a3e0ccf6e716c970e1bca331cad4163.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a3e0ccf6e716c970e1bca331cad4163.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc74c4dfcb1231f4bcb5d6b4eca5053.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc74c4dfcb1231f4bcb5d6b4eca5053.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08cfeda8dcd77031c751c53f48091ad4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08cfeda8dcd77031c751c53f48091ad4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28208b3f32a58d5ea772b3cff5342167.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28208b3f32a58d5ea772b3cff5342167.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9955d49842ea9ae1fed75e558cc5177d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9955d49842ea9ae1fed75e558cc5177d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c494e88a27201839de03178c95c2449.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c494e88a27201839de03178c95c2449.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2647aa98774327c4285faa067dab8be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2647aa98774327c4285faa067dab8be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b8e5df31c4a80d40cb6a03528240118.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b8e5df31c4a80d40cb6a03528240118.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e19d037145db07c5250f43051ad6fc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e19d037145db07c5250f43051ad6fc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98c0f39559e242a9cbf06a336e2beb7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98c0f39559e242a9cbf06a336e2beb7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b792c614faebf92e585023513972078c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b792c614faebf92e585023513972078c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c6ed14e2f541b92f94d9d368599bd34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c6ed14e2f541b92f94d9d368599bd34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f72b85409adfe0757b147f674a61dc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f72b85409adfe0757b147f674a61dc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3509cd7bd045dcb8e283ce5b66744901.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3509cd7bd045dcb8e283ce5b66744901.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/444d6182b18f36a6db6bd9243b0cd91e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/444d6182b18f36a6db6bd9243b0cd91e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60a8f97142d9bafc49d266987a4ded55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60a8f97142d9bafc49d266987a4ded55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/618eb2c0098cb033c85e4c9cc4c99536.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/618eb2c0098cb033c85e4c9cc4c99536.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81f299cbe5157dfdac89b46d56cc8db1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81f299cbe5157dfdac89b46d56cc8db1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8ef5aebb0ec5dc06e9031b798afff6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ef5aebb0ec5dc06e9031b798afff6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/776fbe725382c6ca162ef97f535bc0d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/776fbe725382c6ca162ef97f535bc0d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fd7e45e34bee0bce296881d9db41dc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fd7e45e34bee0bce296881d9db41dc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6913605e36b412143cc474312a268272.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6913605e36b412143cc474312a268272.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec7e39a80418d88bffa4dcaf57844027.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec7e39a80418d88bffa4dcaf57844027.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13dd81aea5b40630749591aca76dd653.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13dd81aea5b40630749591aca76dd653.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/318b620975457327ce187b61f637598e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/318b620975457327ce187b61f637598e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f2f5a6d2156afb267cb23bbbd4e22db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f2f5a6d2156afb267cb23bbbd4e22db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e1ab20bad5adbf92217fb3e1409eb68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e1ab20bad5adbf92217fb3e1409eb68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19e0d90436d03fa3ebf1dd93aa966d96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19e0d90436d03fa3ebf1dd93aa966d96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08f235aacaa4597efed2f2a22a50ef40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08f235aacaa4597efed2f2a22a50ef40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0106676c68744e9f330428689a437e63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0106676c68744e9f330428689a437e63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c7dce7efe74d1054c867358a5da97d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c7dce7efe74d1054c867358a5da97d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ce1f545e4f790b8199899ade0f8d21b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ce1f545e4f790b8199899ade0f8d21b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e4b4fb01786940d4b15f7990716a67e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e4b4fb01786940d4b15f7990716a67e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22f335bf15b1f6b2222d39673ce31bdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22f335bf15b1f6b2222d39673ce31bdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ab9a0a8406256e5414c5f66643f83b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ab9a0a8406256e5414c5f66643f83b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d0c9aeeac1b5699883283d1c491851b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d0c9aeeac1b5699883283d1c491851b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c71b76d5d6332160f7cab0c8967d163.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c71b76d5d6332160f7cab0c8967d163.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c327c072a52eff26349c23274e3eba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c327c072a52eff26349c23274e3eba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3df2f3f37bc3912f016193915d2eaf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3df2f3f37bc3912f016193915d2eaf8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110003,'1110003','全棉针织条纹四件套 新款',1008009,1001000,'[\\\"http://yanxuan.nosdn.127.net/0d2a885f2219169d4b3d3181d908b2da.jpg\\\", \\\"http://yanxuan.nosdn.127.net/28f7b964e1e1b7987d17d768f4a22d1b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e78c22d19f799f135db2e32f7f6ad3a8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fc7d7e380bd62bec289526c753196d1d.jpg\\\"]','','裸睡享受，柔软透气有弹性',1,2,'http://yanxuan.nosdn.127.net/72dfb4bfc1cd1b834c064a9d1d40627d.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/51409b5b30124fcef4b15ae9bd3d1047.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51409b5b30124fcef4b15ae9bd3d1047.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ed3bbf85dc26140e5b054ea5ff8aa28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ed3bbf85dc26140e5b054ea5ff8aa28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1486e921307df5cbaf21f27d2ffb4404.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1486e921307df5cbaf21f27d2ffb4404.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8692330cd1abc6317f090ccd5d28bf9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8692330cd1abc6317f090ccd5d28bf9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e046657e9f8b523c0cd93d2fbbe566c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e046657e9f8b523c0cd93d2fbbe566c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2ca5a528cfd0c24bb97aed0c1a2fe35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2ca5a528cfd0c24bb97aed0c1a2fe35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0087be757bbb5070a9495cf32d2d7a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0087be757bbb5070a9495cf32d2d7a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bce9b677188a36b86fa40e13011a43a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bce9b677188a36b86fa40e13011a43a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a0a90deb515f06d8d1c275c2057e368.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a0a90deb515f06d8d1c275c2057e368.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d50a3a61d13163bf83774edd2db5bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d50a3a61d13163bf83774edd2db5bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/408ae6a44271a7fec18dcaaa66a66d2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/408ae6a44271a7fec18dcaaa66a66d2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/033fd7aed18e0fcd50ea695239fdf5d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/033fd7aed18e0fcd50ea695239fdf5d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/519ddc7d3c063973fbd221a8bf9fb62c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/519ddc7d3c063973fbd221a8bf9fb62c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4855bf5174f5a9c59ff92b134a9c6702.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4855bf5174f5a9c59ff92b134a9c6702.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2a6d73ee470dfc663b1ef7f45d25f0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2a6d73ee470dfc663b1ef7f45d25f0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a59172ea5938721b3a5a66b049bc31a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a59172ea5938721b3a5a66b049bc31a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c29ecaa289359d6a9ee0f553e512902.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c29ecaa289359d6a9ee0f553e512902.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/717bff823050ff266da8e0ae04eae1cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/717bff823050ff266da8e0ae04eae1cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1de5768520db342444d3cb620a9fdd4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1de5768520db342444d3cb620a9fdd4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/453b37dfd7b3ae539f7afb7e3d3fda73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/453b37dfd7b3ae539f7afb7e3d3fda73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29a9b2ac9aa56666fafd4c90b1a7fed1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29a9b2ac9aa56666fafd4c90b1a7fed1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a15810a575de26a33a5ac9983c68939.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a15810a575de26a33a5ac9983c68939.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbe607ff748b140e02946bb28578a179.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbe607ff748b140e02946bb28578a179.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02e0e40e7423fbf85ad31ccb483b519b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02e0e40e7423fbf85ad31ccb483b519b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a352d098862cc87a3de60a42147896f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a352d098862cc87a3de60a42147896f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b783bbe92f495b5d1095afe96d2a3685.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b783bbe92f495b5d1095afe96d2a3685.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a55100ca3526614393371f7f3a466dda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a55100ca3526614393371f7f3a466dda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e40fb00aec446ed6695e25d458b4a1bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e40fb00aec446ed6695e25d458b4a1bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23481a0858e9d4a62a5b707c6b3f8f4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23481a0858e9d4a62a5b707c6b3f8f4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a25526218ef089322f56b69dc12e14af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a25526218ef089322f56b69dc12e14af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7c752cfaedadc0687c5774e00a760dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7c752cfaedadc0687c5774e00a760dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/234a67ee6018ceb8660695e662fabb99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/234a67ee6018ceb8660695e662fabb99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/174b1bb41003bcddd8dc9c9ef17ce224.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/174b1bb41003bcddd8dc9c9ef17ce224.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abd9fea1d638e7a5aecc6a7adc76c711.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abd9fea1d638e7a5aecc6a7adc76c711.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e08f5def5de99f8bebe3ec6a1ae1c83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e08f5def5de99f8bebe3ec6a1ae1c83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2995438e191249bd7d084a5d6f2373c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2995438e191249bd7d084a5d6f2373c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb07fd94e9566b69757833b2633b28df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb07fd94e9566b69757833b2633b28df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8fca21912470098294ec527ea245821.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8fca21912470098294ec527ea245821.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32f2e9e3f2b68c131e3219df1d2abda0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32f2e9e3f2b68c131e3219df1d2abda0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/808917d73d100f81297b133b14976a2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/808917d73d100f81297b133b14976a2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9af0fe13111566c77485e3be2151059.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9af0fe13111566c77485e3be2151059.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/122464e4981f97f4ddb18a56e4eaae52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/122464e4981f97f4ddb18a56e4eaae52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abc8125353e8c485f68eecde6e49dddb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abc8125353e8c485f68eecde6e49dddb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8ba0e58c2ff94139b3d808c33f907a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8ba0e58c2ff94139b3d808c33f907a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6134c0363c2861e9dc0b1244eaf8cf85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6134c0363c2861e9dc0b1244eaf8cf85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fe8ed929bbf2f23b09b8359c846fbdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fe8ed929bbf2f23b09b8359c846fbdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94cf259d560b3f0d53603d261ad47d69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94cf259d560b3f0d53603d261ad47d69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d14cd06d113b7053bbc416fce83e6ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d14cd06d113b7053bbc416fce83e6ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a57ce45eccdc407c6d87d515d64c9d0f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a57ce45eccdc407c6d87d515d64c9d0f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d339a7656c240792d234e3edbb1bdd6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d339a7656c240792d234e3edbb1bdd6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f18f868fdf16912d4e89f3421fffec65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f18f868fdf16912d4e89f3421fffec65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f2bae908dc57231874edb377b95e6d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f2bae908dc57231874edb377b95e6d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efeb13be9fb6664625f37e639ec9cf67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efeb13be9fb6664625f37e639ec9cf67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c82da9f8e4b68ef552878a0ef8160e12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c82da9f8e4b68ef552878a0ef8160e12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77db454604d83b15ed289604ac0c6282.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77db454604d83b15ed289604ac0c6282.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5def4bad25b8f0105621f6151b20f29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5def4bad25b8f0105621f6151b20f29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1204e404c87dad014daebe47946c642a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1204e404c87dad014daebe47946c642a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85165ab6336f96477b5ed4f40c1f4506.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85165ab6336f96477b5ed4f40c1f4506.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76d0a15612658df2da7f90141c27575b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76d0a15612658df2da7f90141c27575b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18d88fcaa7184e70a3fe2af7a410ea92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18d88fcaa7184e70a3fe2af7a410ea92.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110004,'1110004','全棉针织纯色四件套',1008009,1001000,'[\\\"http://yanxuan.nosdn.127.net/cdae3aeda693e7cc1c4661d4f41da4d7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9a75d83304a780d04ada95c2c0a952ca.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ed832cdde16e90331f2a304c6ee43da4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/11741a9c889d09114fea3ee39031f6c3.jpg\\\"]','','日系纯色，面料轻柔舒透',1,3,'http://yanxuan.nosdn.127.net/1ffd5831e63027715445f74a28f8c4ed.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e15427b1300012152bf9d92a2bc67c99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e15427b1300012152bf9d92a2bc67c99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7428b57cf1524e25e868046a52c8c74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7428b57cf1524e25e868046a52c8c74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ba73e0fac1ddac61dac545147360f30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ba73e0fac1ddac61dac545147360f30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2132694338933fdce383149a883680ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2132694338933fdce383149a883680ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06f8db4f9ec0c46aa369e3a47334fdf6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06f8db4f9ec0c46aa369e3a47334fdf6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98ea40eb0129d0e9d8152d5db6f826a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98ea40eb0129d0e9d8152d5db6f826a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/450133053e1e892623b0c66522e4cd13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/450133053e1e892623b0c66522e4cd13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/266fe2d8d8284830ce353b717b134006.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/266fe2d8d8284830ce353b717b134006.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e79e83d77a24109e4e571e8bb327489.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e79e83d77a24109e4e571e8bb327489.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e7c40f873354dd00827a8e9a116ae9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e7c40f873354dd00827a8e9a116ae9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd63c2c2c421d9ae62e42378531eb9bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd63c2c2c421d9ae62e42378531eb9bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5d5fb2641ad2011b304a839dccfaceb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5d5fb2641ad2011b304a839dccfaceb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e44ecb22b4288445c73348aee7848e74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e44ecb22b4288445c73348aee7848e74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff2b9e9b6d07861e53c535de160c89b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff2b9e9b6d07861e53c535de160c89b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbd8db78cccec3b459cefc8403977565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbd8db78cccec3b459cefc8403977565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d33fa09d06e55946ed3ca575e1ac8ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d33fa09d06e55946ed3ca575e1ac8ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/710e44a757e0af28923c6d8451729f9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/710e44a757e0af28923c6d8451729f9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83fd15d26c23b24cdb85b56552ec1f60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83fd15d26c23b24cdb85b56552ec1f60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a6aa91581b046928b799a84f0871d6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a6aa91581b046928b799a84f0871d6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c89ac95e0681e11f04772e5f1fb55c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c89ac95e0681e11f04772e5f1fb55c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80b35361b1896d38260c3d1982c462ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80b35361b1896d38260c3d1982c462ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eee8f49786481c7ea533e8315c743f96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eee8f49786481c7ea533e8315c743f96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84eebca8658c8ed824c1b04ea5ce0262.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84eebca8658c8ed824c1b04ea5ce0262.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a17beea5ce5e36f1de3e28121b3bf90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a17beea5ce5e36f1de3e28121b3bf90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6587bb904df455610f3e2893b403ff6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6587bb904df455610f3e2893b403ff6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62d1faf12c878f8f8d0f6f90816f82eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62d1faf12c878f8f8d0f6f90816f82eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64b1010703632d102692f1cfdc329c07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64b1010703632d102692f1cfdc329c07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee9a6bd5a6d345274dfc5bd3df8f6673.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee9a6bd5a6d345274dfc5bd3df8f6673.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/924b2879cd336d3fcc5c2dd064fa563d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/924b2879cd336d3fcc5c2dd064fa563d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5627b5789c5faeb6f2f0eb319d4eb758.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5627b5789c5faeb6f2f0eb319d4eb758.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6125e2c756374638db2cff6e1f1834d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6125e2c756374638db2cff6e1f1834d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7c65c61453f6503723ca73b502b3d89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7c65c61453f6503723ca73b502b3d89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d7b28b69a8c75f0a30a9753126d03c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d7b28b69a8c75f0a30a9753126d03c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54841f38fc0883cd9ab86ac7b8345801.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54841f38fc0883cd9ab86ac7b8345801.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8703301aa06b22d2d6699745f9b15770.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8703301aa06b22d2d6699745f9b15770.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c824bc7de6471d1b07797d3c6f77a33d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c824bc7de6471d1b07797d3c6f77a33d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ce29e7160e862b4c55acb51734bbf30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ce29e7160e862b4c55acb51734bbf30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/220774e0cdc07e4448af3cb650c398eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/220774e0cdc07e4448af3cb650c398eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d660bb8f822d9f5fa9eeb2cad568ae0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d660bb8f822d9f5fa9eeb2cad568ae0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dfe8564614a61d7b040c02565211c77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dfe8564614a61d7b040c02565211c77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8b6f2ad58a4f4d159580362e4dc7625.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8b6f2ad58a4f4d159580362e4dc7625.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f42bd22e79764026659e48e40c131353.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f42bd22e79764026659e48e40c131353.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/298706644d4d54146d693bb69d0972bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/298706644d4d54146d693bb69d0972bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d77bdd18e48fd17010ebbb825bb52dcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d77bdd18e48fd17010ebbb825bb52dcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a11788ef69114eddb1dcdf4d9f8320e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a11788ef69114eddb1dcdf4d9f8320e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c36bce03ee7386ff09f913bbf0eff163.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c36bce03ee7386ff09f913bbf0eff163.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/481edda8c381a26f138e2785714de72b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/481edda8c381a26f138e2785714de72b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d8999ba08cb6002401523e55214a8fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d8999ba08cb6002401523e55214a8fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ae747c627f5a530dd1defad463fda5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ae747c627f5a530dd1defad463fda5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bb1d2df0e1e9a9713aaa4fd534f9613.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bb1d2df0e1e9a9713aaa4fd534f9613.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89bfd74e9a71117724edef87fd9d3729.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89bfd74e9a71117724edef87fd9d3729.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d9eb35c8b7fb88bf15352b9586b93f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d9eb35c8b7fb88bf15352b9586b93f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/400146bec77d8d243332c1e53a903839.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/400146bec77d8d243332c1e53a903839.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1c6b1cf18f2bf441aa90768aff1833a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1c6b1cf18f2bf441aa90768aff1833a.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110007,'1110007','日式色织水洗棉格纹四件套 新款',1008009,1001000,'[\\\"http://yanxuan.nosdn.127.net/02dc9714d67ac3aca20740e19b9a724a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/38aaf23e7a2739e45dcdd5c50c6baa7e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0dfe050d6971180cb8cb1ea721b54e1d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/51edc362a09630fd04030bcc16c2072d.jpg\\\"]','','做旧微褶感，轻柔呵护棉',1,4,'http://yanxuan.nosdn.127.net/deeb55bb45f94cb236a47d1264e883b8.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/280d74c31b9322eb956e7481bd22e9a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/280d74c31b9322eb956e7481bd22e9a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b9270ec5d66c917f2514f8d69679f6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b9270ec5d66c917f2514f8d69679f6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5126fea2c070ab454df529b7cd42171a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5126fea2c070ab454df529b7cd42171a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7020173bf8664bae6a51ec81a5045350.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7020173bf8664bae6a51ec81a5045350.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f68d38ae6dfe3b56c3e0ddf4446105e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f68d38ae6dfe3b56c3e0ddf4446105e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e401c41d6e3cc2ad655383fb83f582e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e401c41d6e3cc2ad655383fb83f582e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e0801c89d5119c02f4aad1fa2e3f79d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e0801c89d5119c02f4aad1fa2e3f79d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb11f89e6f0c41053087f0b4bbed36c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb11f89e6f0c41053087f0b4bbed36c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80bf0c6ef68f4373b3db521e7c09f0fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80bf0c6ef68f4373b3db521e7c09f0fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ec681b58c2b2281ceac667bb9416e79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ec681b58c2b2281ceac667bb9416e79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab6e782785293c93cddbbe59d41fbe58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab6e782785293c93cddbbe59d41fbe58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2974fb17474f1e75a3746cbdb9d38d08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2974fb17474f1e75a3746cbdb9d38d08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2aacbef9ae23bbda05115240a09711d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2aacbef9ae23bbda05115240a09711d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b09d8a77f61eb9c0e2598f090a9903d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b09d8a77f61eb9c0e2598f090a9903d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79277de533411ec1556af43c2214cd2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79277de533411ec1556af43c2214cd2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5223bbdf9b7f3206ae48fc41d0f8870f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5223bbdf9b7f3206ae48fc41d0f8870f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1bdede2a5332a7cf7cb988d216219c8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1bdede2a5332a7cf7cb988d216219c8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9bc8c2543a42a80d980d90bb49f761f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9bc8c2543a42a80d980d90bb49f761f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6ac4fcd6367432ea61eb2c9b972c85b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6ac4fcd6367432ea61eb2c9b972c85b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8cf923bfea6642309dd45f23cc0db014.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8cf923bfea6642309dd45f23cc0db014.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/038854293eb327038bff7f9b12ecc959.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/038854293eb327038bff7f9b12ecc959.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb39a24c1e3af6e98b04dadbd33a3fe9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb39a24c1e3af6e98b04dadbd33a3fe9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/362b2f3046711bc23186648dae74ad6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/362b2f3046711bc23186648dae74ad6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49f7de4e37e5ecd2f7164ede19d9f733.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49f7de4e37e5ecd2f7164ede19d9f733.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/569e9d6b44ca2f27a1c12509e8915e66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/569e9d6b44ca2f27a1c12509e8915e66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5dc22bfcd8a766721a4627e543ed910.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5dc22bfcd8a766721a4627e543ed910.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/713237ccefdecfdc349a112cdf19dad4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/713237ccefdecfdc349a112cdf19dad4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90fbeb1d0446c8478ff02401def15c2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90fbeb1d0446c8478ff02401def15c2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5044c7429edbfbb7b839e557fd8f818d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5044c7429edbfbb7b839e557fd8f818d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5aec8b5df3e773ee8b14113a2cdcb32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5aec8b5df3e773ee8b14113a2cdcb32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfd9bccd47e871bc7f67779bc784db51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfd9bccd47e871bc7f67779bc784db51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffa489f82e9d2aa77393cd7f65ebee86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffa489f82e9d2aa77393cd7f65ebee86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd56dc555af6f50272e7cd31e29644c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd56dc555af6f50272e7cd31e29644c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d261318f912c3b09ae24c7efdb55647.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d261318f912c3b09ae24c7efdb55647.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf1335f9646f9e3b82ad4b21540f0b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf1335f9646f9e3b82ad4b21540f0b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9881c742b4178a4096b2faf8630fdf48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9881c742b4178a4096b2faf8630fdf48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e1fb2de40eb0243aa204ea419534d9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e1fb2de40eb0243aa204ea419534d9c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4699bbb0bb64091ea65c2fcb48571f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4699bbb0bb64091ea65c2fcb48571f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31bbf71652f62fa75caaa1c17619046e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31bbf71652f62fa75caaa1c17619046e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2784a49f991209e108573e1576c737db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2784a49f991209e108573e1576c737db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/032f984b95d0557c42b381c5dac63bba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/032f984b95d0557c42b381c5dac63bba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/649c19a764f92a7f7caa2901e91fced7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/649c19a764f92a7f7caa2901e91fced7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ce2a4df0ccb346bc78507d033ed41ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ce2a4df0ccb346bc78507d033ed41ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c304880b8d2184655ad0f2fa9cb80663.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c304880b8d2184655ad0f2fa9cb80663.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6e5ff7cdff06f1489816156c75c6dd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6e5ff7cdff06f1489816156c75c6dd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/542c796e0f10192cc950bddb418b6953.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/542c796e0f10192cc950bddb418b6953.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/675bd2b57d02e966da0981017acc9ffc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/675bd2b57d02e966da0981017acc9ffc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ec3a06d23be8c6ea4bad1ab55394af2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ec3a06d23be8c6ea4bad1ab55394af2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59434b29c18dff0207a6560970335a0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59434b29c18dff0207a6560970335a0b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110008,'1110008','全棉贡缎纯色床单',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/4ded1e09f09d9eb1d2f24d87759fb232.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ce801d4915ecca7befb5e88159b3dbb3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/406423eeb3c5c5347462246767ef6bd9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4e912ca54b45f3b0cf00b5f6977d1110.jpg\\\"]','','丝滑缎纹 舒适百搭',1,26,'http://yanxuan.nosdn.127.net/255a4888161f9b4fe530cf319f14551d.png','',0,0,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ebaa153e0bc07348c7ef2b4f2f9827b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebaa153e0bc07348c7ef2b4f2f9827b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2482eac6674a83a855d7730dce63c660.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2482eac6674a83a855d7730dce63c660.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a72593f1fa2a6e309cdb04b48ffe85bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a72593f1fa2a6e309cdb04b48ffe85bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f110fbe3e1316592b5f5d9aeee606962.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f110fbe3e1316592b5f5d9aeee606962.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5b0f7b138ca35cb17a11b16475a24bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5b0f7b138ca35cb17a11b16475a24bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac9476e69430bf04273fc293c25e9656.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac9476e69430bf04273fc293c25e9656.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ab15ef2449663d23c156410fc438caf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ab15ef2449663d23c156410fc438caf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24c02f33d0012286cf1705a499993ea5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24c02f33d0012286cf1705a499993ea5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/699e6953da537bdc0df1f995a54c97cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/699e6953da537bdc0df1f995a54c97cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccb00ff92e1560084cf0aadbe78ca706.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccb00ff92e1560084cf0aadbe78ca706.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcfc9690c34ba894119b2b6f4f7542c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcfc9690c34ba894119b2b6f4f7542c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d066dd6674efd1bb8107ebf056de1ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d066dd6674efd1bb8107ebf056de1ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5af6869a6398f6d95a85b4cbac0148ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5af6869a6398f6d95a85b4cbac0148ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60ddcb218b694c29208612c7a64f80b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60ddcb218b694c29208612c7a64f80b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fd7be46a7fd75bc0ad4e9ab61c3e2c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fd7be46a7fd75bc0ad4e9ab61c3e2c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6bcbf89419738e2b91556b618cac2fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6bcbf89419738e2b91556b618cac2fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0512ff7b481928c196e479796c461f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0512ff7b481928c196e479796c461f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f9ff350d6d35cd4515b9c3a5ea46820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f9ff350d6d35cd4515b9c3a5ea46820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8419284a2c2c9f3ffb775ef697b33a34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8419284a2c2c9f3ffb775ef697b33a34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5adf5661416fcf6abaab177743ebfe17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5adf5661416fcf6abaab177743ebfe17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37ae6bef484400f584cced0cf672ec08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37ae6bef484400f584cced0cf672ec08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73b8074583dc432bb68669de4532bb36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73b8074583dc432bb68669de4532bb36.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02c7022da23d3444f41f6845bdd3d837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02c7022da23d3444f41f6845bdd3d837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f3da708372b5107ad0eb0e65613929b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f3da708372b5107ad0eb0e65613929b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2fde409216ba1b4ae3a1087daf40c90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2fde409216ba1b4ae3a1087daf40c90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13ebbd1cfd212b2df22cbd317061086e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13ebbd1cfd212b2df22cbd317061086e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/059a495310c1d6da4d586acb84f9bbed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/059a495310c1d6da4d586acb84f9bbed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b114ef2f9ff05d0a56a920d92ab32623.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b114ef2f9ff05d0a56a920d92ab32623.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c54eb0cb4bba2074c4c28acd193e0cb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c54eb0cb4bba2074c4c28acd193e0cb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d701c6b5902a9b78c34817eff7a3bd60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d701c6b5902a9b78c34817eff7a3bd60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c30bdf9866848a30b26bc54fd5b34de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c30bdf9866848a30b26bc54fd5b34de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/361a51703b77da12f0a94313aa8b26a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/361a51703b77da12f0a94313aa8b26a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/386c6c4fe63058f8d05b3befa070e752.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/386c6c4fe63058f8d05b3befa070e752.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e3caeb5786494d326babf301d7eea1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e3caeb5786494d326babf301d7eea1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8c0fd896618d26cac6a6a6c784af23e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8c0fd896618d26cac6a6a6c784af23e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca1467358f3c9724fe26e1fc39d5b24e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca1467358f3c9724fe26e1fc39d5b24e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a091d160764dbeb25d426f0e23089687.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a091d160764dbeb25d426f0e23089687.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7aa64a705ba6ee2d0cfee1a13ce168c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7aa64a705ba6ee2d0cfee1a13ce168c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09b1628b63d9c3efaa63ba321f174525.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09b1628b63d9c3efaa63ba321f174525.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0033560795459993074a19578a23977e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0033560795459993074a19578a23977e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a43c91fd16654007be3fd0fdbf59115.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a43c91fd16654007be3fd0fdbf59115.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e069a5efd07a739efaf27de6e436082.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e069a5efd07a739efaf27de6e436082.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4ab4383f7ae6a91ae2fb5b7b69d2c9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4ab4383f7ae6a91ae2fb5b7b69d2c9c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110013,'1110013','悦动纯色自动伸缩牵引器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/26500a7b609debb80a022aa256ee2b36.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2672ee0f40415c9b1fea5801f05d6a76.jpg\\\", \\\"http://yanxuan.nosdn.127.net/128554ea9fa7e86d19fff59266fe4546.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a89db6a94e7a9cd260fa8de0152ff36c.jpg\\\"]','','最大承重50KG， 乐享自由',1,21,'http://yanxuan.nosdn.127.net/6eb8d1c37142a5951b6242791c78146b.png','',0,0,'件',79.00,59.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/9a9167323cfc952e1d274215d0af65d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a9167323cfc952e1d274215d0af65d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49b48b3fb6270003adbca5e77a170eb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49b48b3fb6270003adbca5e77a170eb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57f48b72bc6e352eb894714a1f8a8b91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57f48b72bc6e352eb894714a1f8a8b91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc2894eb0345138575ab504d333594e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc2894eb0345138575ab504d333594e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f80519f4057fe2b770518353c1e54ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f80519f4057fe2b770518353c1e54ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac693fcd5c8215931679e79165d5e296.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac693fcd5c8215931679e79165d5e296.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6393eba575ce70cea073d029634ebbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6393eba575ce70cea073d029634ebbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5d61a3a391dd9cdbf925a22c64b9e5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5d61a3a391dd9cdbf925a22c64b9e5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c20e1cd9cb20290e790c5940f527a87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c20e1cd9cb20290e790c5940f527a87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce02f5f0ff3745732e3a12148c3a5d5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce02f5f0ff3745732e3a12148c3a5d5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54dc6d01688e7d83d893141fc2e6b22b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54dc6d01688e7d83d893141fc2e6b22b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d5fca316ce1e6e1af7f102325b841c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d5fca316ce1e6e1af7f102325b841c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb5b1c04f30e91c65e65c32b0771983e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb5b1c04f30e91c65e65c32b0771983e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81e341e9a18ef59cfa7b9327209acbad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81e341e9a18ef59cfa7b9327209acbad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c7820d2fe56934457ef0d280bb8ccaf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c7820d2fe56934457ef0d280bb8ccaf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bada6cd54c0255fea7b71ed31c1501aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bada6cd54c0255fea7b71ed31c1501aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32ce5d7d1f5f8af8f9ca46704b54887c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32ce5d7d1f5f8af8f9ca46704b54887c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1022f8cd66dab75a19b796ba3c0a33c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1022f8cd66dab75a19b796ba3c0a33c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2e0fd5471a38c2a1fcc3a98b37901df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2e0fd5471a38c2a1fcc3a98b37901df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c000ee5caa53c3c3fc3fcf4ca70d15c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c000ee5caa53c3c3fc3fcf4ca70d15c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c615fbe583f71ec737a5370e3ec62704.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c615fbe583f71ec737a5370e3ec62704.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c75a501b0dd26128711eaaf1473a702.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c75a501b0dd26128711eaaf1473a702.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64ec846024ab5dfb31af8f31adc318d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64ec846024ab5dfb31af8f31adc318d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4187be4baa967deb4ace52357d57d0e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4187be4baa967deb4ace52357d57d0e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64ff91bfba9b6d654cd4e8778ca7a377.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64ff91bfba9b6d654cd4e8778ca7a377.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/203171c691368d07fce079b57951ad55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/203171c691368d07fce079b57951ad55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f277f7bed9e144f306b039762524f1a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f277f7bed9e144f306b039762524f1a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/112ddf960d5664082067149ab5711259.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/112ddf960d5664082067149ab5711259.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/525d4fc773bd6466c0a80922b50a31e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/525d4fc773bd6466c0a80922b50a31e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16be6e7f96c5f7d04b3279624d799744.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16be6e7f96c5f7d04b3279624d799744.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43566985315fa49b9bed3848d7e9e642.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43566985315fa49b9bed3848d7e9e642.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5c7d39f993cb84e30e440686d1f1a1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5c7d39f993cb84e30e440686d1f1a1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d602e6c0dcebd8a3213a1303d7d1fbf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d602e6c0dcebd8a3213a1303d7d1fbf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4033d4dab273a494e40f1d9348430e3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4033d4dab273a494e40f1d9348430e3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b50222a722da3cd1762ad5d2391e6aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b50222a722da3cd1762ad5d2391e6aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8bc9fe72c796662a9d927a020826301.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8bc9fe72c796662a9d927a020826301.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2168c4a161398d34db58ad4557a64f56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2168c4a161398d34db58ad4557a64f56.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1490dd0048e08f5bd5853a0fecd5e79d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1490dd0048e08f5bd5853a0fecd5e79d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d42861b593a6714dfad7aa2e7c3a8b6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d42861b593a6714dfad7aa2e7c3a8b6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32c3f6773aba55547d81129b08a5b791.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32c3f6773aba55547d81129b08a5b791.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74a562662ac5a7ec66d02a4155fc1929.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74a562662ac5a7ec66d02a4155fc1929.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e9ff03ebcca5fdc0fc0bf8b1f2dd4cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e9ff03ebcca5fdc0fc0bf8b1f2dd4cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2bb640bbfb144b053b38c4b7ab743c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2bb640bbfb144b053b38c4b7ab743c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95f16488ee14a8034bb50157b89ad954.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95f16488ee14a8034bb50157b89ad954.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79646ad2e9c4895c073f3416f39feddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79646ad2e9c4895c073f3416f39feddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ee65bd5c278cc78aaf6310fc93997a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ee65bd5c278cc78aaf6310fc93997a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1495a1fcfd02a89a99dec80a3e877204.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1495a1fcfd02a89a99dec80a3e877204.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17203fa91613acfc92871b66bcc6b4e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17203fa91613acfc92871b66bcc6b4e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3c039d856971f842bae005aa7875654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3c039d856971f842bae005aa7875654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9b4e6f29901675d93f21d8ad927719b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9b4e6f29901675d93f21d8ad927719b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d31ae42d445e94231c351b5b8eb2f7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d31ae42d445e94231c351b5b8eb2f7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8afcf9745702cdae2bf2ab3b3044c5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8afcf9745702cdae2bf2ab3b3044c5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61891461006ee565d46ca289a24ca314.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61891461006ee565d46ca289a24ca314.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110014,'1110014','日式气质木纹自动伸缩牵引器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/ca37e1842a65ac4a062180078505687d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/962a87f554c0f75d835900726608bb1b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d296eb099d54186e4b71f13aa63f71b7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4c10c26db96847b86ffe12cb4bd3c47b.jpg\\\"]','','高强耐拉，乐享自由',1,22,'http://yanxuan.nosdn.127.net/cb4f78bd887059416c3df485e3f31366.png','',0,0,'件',89.00,69.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/deefd1e1e47f5f5173de67f44388c59b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/deefd1e1e47f5f5173de67f44388c59b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/794f0bb940d8d950d1b3e0ee69d899de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/794f0bb940d8d950d1b3e0ee69d899de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dea8ebd578148db7041a1e4dafc97c27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dea8ebd578148db7041a1e4dafc97c27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cbc622172384759c19f44e2aa206bc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cbc622172384759c19f44e2aa206bc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a4802702df0df04b9213245dd06dee0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a4802702df0df04b9213245dd06dee0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebf1a8d7cda41905526be8673e14f341.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebf1a8d7cda41905526be8673e14f341.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0706a184a0c0160dde897b8e00d8a32e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0706a184a0c0160dde897b8e00d8a32e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/555396fbc4c6d8926c952fa05a75ac58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/555396fbc4c6d8926c952fa05a75ac58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd7dd0e3db90c2da6bc940c5b7e536d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd7dd0e3db90c2da6bc940c5b7e536d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8784690c2c3f83b64834c1178741f98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8784690c2c3f83b64834c1178741f98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d89656b94a10f9e5e67781d3ca600b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d89656b94a10f9e5e67781d3ca600b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7308e055a79a2c83dfc6d6cf2c0a3dd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7308e055a79a2c83dfc6d6cf2c0a3dd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c84a144a5e1159c1cff296ac193b203b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c84a144a5e1159c1cff296ac193b203b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/799e3dda5d38de73aa84ba0355505755.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/799e3dda5d38de73aa84ba0355505755.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e75a5d307e7e0d21e3a4b3e8372e09b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e75a5d307e7e0d21e3a4b3e8372e09b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/267760e491d92e8b7e1c259933bfc400.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/267760e491d92e8b7e1c259933bfc400.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b99e02d2eae0df02712f348463c27274.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b99e02d2eae0df02712f348463c27274.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff808a3d431c1b0717a54ac20a5a922c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff808a3d431c1b0717a54ac20a5a922c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7071fc30d982a7e4aa92299f652bddcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7071fc30d982a7e4aa92299f652bddcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ca6aa2604ca0a8937e4576d2bce61b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ca6aa2604ca0a8937e4576d2bce61b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5f1915e0b9bd2c21a734de45207ddcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5f1915e0b9bd2c21a734de45207ddcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4a6d76267f9eafb45cb9765a44ae7e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4a6d76267f9eafb45cb9765a44ae7e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8258477ab7b59b9820b8940f10518cfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8258477ab7b59b9820b8940f10518cfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2020b32805ac08c2ddbad061af4f84e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2020b32805ac08c2ddbad061af4f84e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f937890dd7b40d042f5fcb2242b4317f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f937890dd7b40d042f5fcb2242b4317f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e290d03307d69686f597a1a0601bbb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e290d03307d69686f597a1a0601bbb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cba60c91dd25960bb65efbc9f83c251.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cba60c91dd25960bb65efbc9f83c251.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5009c0ca55ab97e4e5122075b6e1b30c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5009c0ca55ab97e4e5122075b6e1b30c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac90c373104c8abf3d825efac4cc729e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac90c373104c8abf3d825efac4cc729e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7a167fddbaf4d713ee99a429640ba99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7a167fddbaf4d713ee99a429640ba99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06e16e9d3ccba84fc7df990653e37785.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06e16e9d3ccba84fc7df990653e37785.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19be4fe0fd855545ed4e51587646ae35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19be4fe0fd855545ed4e51587646ae35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efc8c66e46107c1c8eb2392d0d8a1ba1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efc8c66e46107c1c8eb2392d0d8a1ba1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33b11b17fc15336d3fa231d7684985f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33b11b17fc15336d3fa231d7684985f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a613f8fb5b16bc1a973898a34088869.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a613f8fb5b16bc1a973898a34088869.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f25203077ed714d566121044b79a6c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f25203077ed714d566121044b79a6c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52f085a9923e513bf1b2d23d3484d845.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52f085a9923e513bf1b2d23d3484d845.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ace9393853eca8a75e09185a20bbbd82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ace9393853eca8a75e09185a20bbbd82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c58723d159ab4f9ac95a17cbbe53e9b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c58723d159ab4f9ac95a17cbbe53e9b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d356893914da91bd41fe34b6625fa429.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d356893914da91bd41fe34b6625fa429.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f87ca94f03bb95f4dff3083dd50480b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f87ca94f03bb95f4dff3083dd50480b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26033b57b7d4cd29be6d710d90faa1c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26033b57b7d4cd29be6d710d90faa1c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/302250c5116534d843b10c94e352bb98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/302250c5116534d843b10c94e352bb98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2aa6cd1857b3bdae08a60f41223fa6ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2aa6cd1857b3bdae08a60f41223fa6ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d4967bc254bd4074b7323fa334b1247.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d4967bc254bd4074b7323fa334b1247.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fc77c93e58b8f449a86d4584452671c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fc77c93e58b8f449a86d4584452671c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/709028e78b59cb1e2a78961099d25931.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/709028e78b59cb1e2a78961099d25931.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/338f45391ca7fc9209a305574020461f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/338f45391ca7fc9209a305574020461f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/055da3a4861cc7ea9002b98a9f86ef10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/055da3a4861cc7ea9002b98a9f86ef10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4145c6411a6eaafb5dfe8ee7c6946351.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4145c6411a6eaafb5dfe8ee7c6946351.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d8d188eaaae7651e39a8d2d8c89c616.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d8d188eaaae7651e39a8d2d8c89c616.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4bbc908d7ee92b20692e4a15562eeb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4bbc908d7ee92b20692e4a15562eeb6.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110015,'1110015','迷彩宠物自动伸缩牵引器',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/34d4b8718eec825a7524934f35f6cf5b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/61bd5e5bff93731eb2996d904ef4cf50.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4a80a423a5b46efe55275518ff25040.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bc61a2ec7c87267d4a4055d47b4a9d8c.jpg\\\"]','','硬汉行军梦，乐享自由',1,23,'http://yanxuan.nosdn.127.net/56da5270172244be56c00fdc8eb24fae.png','',0,0,'件',89.00,69.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/79105794a2c452ae2c6329c6bf8c9273.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79105794a2c452ae2c6329c6bf8c9273.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57eae60064c316610543e701cfe93e96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57eae60064c316610543e701cfe93e96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce34503fef68caf6d0771ce489b664b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce34503fef68caf6d0771ce489b664b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f605d5a21c2962e417dabbffd3ac9a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f605d5a21c2962e417dabbffd3ac9a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/848b78dc0beba526d542876ef1923551.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/848b78dc0beba526d542876ef1923551.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a414b9f678c7422793e3a73d13c67c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a414b9f678c7422793e3a73d13c67c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13af8092bc30b9129f6ad0733b95162d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13af8092bc30b9129f6ad0733b95162d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d82faa9ce96ac739baa7a833bce560ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d82faa9ce96ac739baa7a833bce560ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f48181394509db903573b274d814bdba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f48181394509db903573b274d814bdba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/caa9e0c970f726b671845a46723a3723.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/caa9e0c970f726b671845a46723a3723.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95a65b931702b9bc9b8313b7e7c3f518.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95a65b931702b9bc9b8313b7e7c3f518.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c9b138462597caaf5c0660aee20bae8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c9b138462597caaf5c0660aee20bae8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7eed385b97a777f7ac412697c666247.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7eed385b97a777f7ac412697c666247.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1482587331802312edf1895e857e552d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1482587331802312edf1895e857e552d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b044d9f12bde1561c94ca8cee7f7f979.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b044d9f12bde1561c94ca8cee7f7f979.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d205e25749fb9b0d4af3dbc466d95b5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d205e25749fb9b0d4af3dbc466d95b5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e53bd1ea12008cbbb240a825c9f92bee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e53bd1ea12008cbbb240a825c9f92bee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9bd5657cb7861dba534546117d9c726.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9bd5657cb7861dba534546117d9c726.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e074eaf6455bb6a53aca5ce6943a9b3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e074eaf6455bb6a53aca5ce6943a9b3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1aaabf261cccf3af9b343731f20926d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1aaabf261cccf3af9b343731f20926d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/232ceaf8e2b7da00038a54350232e8a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/232ceaf8e2b7da00038a54350232e8a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f1907020daf59fac9c3181b02d51a55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f1907020daf59fac9c3181b02d51a55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/220eb6332bc45b1b9fa47e2dbb374256.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/220eb6332bc45b1b9fa47e2dbb374256.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62e17702cae34798f2dbe07bcaadb287.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62e17702cae34798f2dbe07bcaadb287.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c5d6c56dbde2c1653ebe5735b6190c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c5d6c56dbde2c1653ebe5735b6190c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34ca3cd8ce6a40f59b22116afdab1075.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34ca3cd8ce6a40f59b22116afdab1075.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/396af7781da470447075907394db2cca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/396af7781da470447075907394db2cca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdc20c381878009488d32a1d2912ee6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdc20c381878009488d32a1d2912ee6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42345a87ea60c34a0f8faa7e3edac8fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42345a87ea60c34a0f8faa7e3edac8fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/146ba6a499a0c499ee3f85d3855bea01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/146ba6a499a0c499ee3f85d3855bea01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c0db9c2353395945a623541f8a13271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c0db9c2353395945a623541f8a13271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85764c294ae6e5971ae40c007db161e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85764c294ae6e5971ae40c007db161e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/244d6da57df6c16cbf68ac7e87356631.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/244d6da57df6c16cbf68ac7e87356631.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f226e3bac8021f48e8f44dff22275431.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f226e3bac8021f48e8f44dff22275431.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7388734a1b04994700d7fa5f9983e4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7388734a1b04994700d7fa5f9983e4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/503498e8a0be9d83abc5316a5ea2db37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/503498e8a0be9d83abc5316a5ea2db37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6ad162098547b6ce56b87c8d40f9bfd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6ad162098547b6ce56b87c8d40f9bfd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c3b5b5e1cfa50e3c41a8846a13d1eff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c3b5b5e1cfa50e3c41a8846a13d1eff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e93b8fe15b7b16650505ae84dbd2565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e93b8fe15b7b16650505ae84dbd2565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02bab1f1168d381ca9b2a346a327d7a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02bab1f1168d381ca9b2a346a327d7a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/849f45341a365d7ec921d356cb5585e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/849f45341a365d7ec921d356cb5585e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34f38ebef5ab886068f0c445aa6cefc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34f38ebef5ab886068f0c445aa6cefc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef4a7a270d0cd1b3912dfe357eec8e96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef4a7a270d0cd1b3912dfe357eec8e96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/314fab8eb661d70a074a98c6dcdca436.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/314fab8eb661d70a074a98c6dcdca436.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63bac6f8d49471ca9e48720cc42972e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63bac6f8d49471ca9e48720cc42972e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eea9c92505b3f9f6c4eab429ad252220.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eea9c92505b3f9f6c4eab429ad252220.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c7253dcf8a0510904b33b82554548fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c7253dcf8a0510904b33b82554548fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4908c7746e5b22d1652fbbab9cf86a70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4908c7746e5b22d1652fbbab9cf86a70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddcfbe295ca6306b4f7b84c764c839bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddcfbe295ca6306b4f7b84c764c839bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc3c403bd9d0d72e762f32f8ff5e29d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc3c403bd9d0d72e762f32f8ff5e29d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2da48f8b0f54a78c1091f9ce5d7e92f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2da48f8b0f54a78c1091f9ce5d7e92f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45b29883e4d35bbe65fb9e6d23a67301.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45b29883e4d35bbe65fb9e6d23a67301.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110016,'1110016','天然硅胶宠物除毛按摩刷',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/c53c22c14524bfe91c058b2d9f93f9bf.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9c1ad6c3bf65dd9d71978e99dd9fb21f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/76485086ff248ead29955f42395f050c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4642e54295c5beac2129f351c6dfa79e.jpg\\\"]','','顺滑平面，猫狗通用，去除死毛',1,12,'http://yanxuan.nosdn.127.net/3bd73b7279a83d1cbb50c0e45778e6d6.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/349c1ba56a59c2b0bcb76dd43d84a7e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/349c1ba56a59c2b0bcb76dd43d84a7e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61b69b45c5ed2d2c1f19bdea0659379c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61b69b45c5ed2d2c1f19bdea0659379c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34f2c4fcb409862b2710d50498bca45e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34f2c4fcb409862b2710d50498bca45e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c304d4de0e654628050b6ce00e607a9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c304d4de0e654628050b6ce00e607a9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2d0a4421fba483d87423bd4fac9faec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2d0a4421fba483d87423bd4fac9faec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bd8af34c260e80bab8b8e57f6ea2183.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bd8af34c260e80bab8b8e57f6ea2183.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cda4f2efffff76d65610f614b49a202.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cda4f2efffff76d65610f614b49a202.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc124fbd43eddbe4e1463b1b6a8dd471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc124fbd43eddbe4e1463b1b6a8dd471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5b29d8235c1cbfba488ecfc3c3f27ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5b29d8235c1cbfba488ecfc3c3f27ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31b6327450d28304ea07381fe78dc973.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31b6327450d28304ea07381fe78dc973.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77693ac3498f70c0bb79b8c69396693f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77693ac3498f70c0bb79b8c69396693f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae07efe150fb2eaa356d30c1ca7fe2f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae07efe150fb2eaa356d30c1ca7fe2f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8dd8cf0bea6fce81b70e6e4415f1091.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8dd8cf0bea6fce81b70e6e4415f1091.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae3333e73593e858f65333d34bd7cd72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae3333e73593e858f65333d34bd7cd72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07deeb564de5b2b043f73157367602ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07deeb564de5b2b043f73157367602ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d684f6eef48bb1d0e8d7bf863e1d0cae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d684f6eef48bb1d0e8d7bf863e1d0cae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d793d650c04960a471f5458b2bb4afaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d793d650c04960a471f5458b2bb4afaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e46ab5cb161edb04128eb94ded48568.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e46ab5cb161edb04128eb94ded48568.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d9df69a2f4200ba68031318c84b705e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d9df69a2f4200ba68031318c84b705e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99243319ea97ec69dbcb9d724b51a58b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99243319ea97ec69dbcb9d724b51a58b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3adf64f8719faf94df0d5ae0411fc2ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3adf64f8719faf94df0d5ae0411fc2ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/181c2ce6ae97ab5d462bddf98ed59079.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/181c2ce6ae97ab5d462bddf98ed59079.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f33019d4412be955b9c390ce702658ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f33019d4412be955b9c390ce702658ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c42cdadbe4ebc7ab2b418ff8efb3025.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c42cdadbe4ebc7ab2b418ff8efb3025.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6129c768b0ffade7598ebfa5d2a4b8d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6129c768b0ffade7598ebfa5d2a4b8d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2f12e9b2a3f0a6b7b38a54fcf0993f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2f12e9b2a3f0a6b7b38a54fcf0993f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79f0d28d84fd46a221d758ac0e0d99ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79f0d28d84fd46a221d758ac0e0d99ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e30101be1840a0514734d6b2031d654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e30101be1840a0514734d6b2031d654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5ee5b7cc6cfa28ad6b428233f99ac8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5ee5b7cc6cfa28ad6b428233f99ac8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73d06bb7dda41f028f5655b0ab74e009.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73d06bb7dda41f028f5655b0ab74e009.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03a906a6316bbbf9795d84daae12ad15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03a906a6316bbbf9795d84daae12ad15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5eedbf4fbe9c27174490e6c75883996.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5eedbf4fbe9c27174490e6c75883996.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17d16de92da4306b5f8223d6ffbc20f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17d16de92da4306b5f8223d6ffbc20f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58999595a9df116b75047c762c5b9353.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58999595a9df116b75047c762c5b9353.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fb309858224aaad9f715e931e17941f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fb309858224aaad9f715e931e17941f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58338ee2fcc1475ff85a5228b0d6d2ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58338ee2fcc1475ff85a5228b0d6d2ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46578b36864ff3c0d65e57d54e6afafd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46578b36864ff3c0d65e57d54e6afafd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f4f4b26d6f5539843f5c849fce3aab4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f4f4b26d6f5539843f5c849fce3aab4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a7a8f6c77d6777c469509ddb682b3b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a7a8f6c77d6777c469509ddb682b3b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9c655f6a4696f1f8af5ae74dce48136.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9c655f6a4696f1f8af5ae74dce48136.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/567cb6067f482a0904676b42f9485525.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/567cb6067f482a0904676b42f9485525.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3674e1135b78465fd9cc89ae2cc29513.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3674e1135b78465fd9cc89ae2cc29513.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c831a877d84f3416df1944253b8b5b17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c831a877d84f3416df1944253b8b5b17.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110017,'1110017','耐用材料猫咪护理清洁套装',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/0f8d2e25768ef00d8ad328fbd92a1d4b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9bfd2f6191e26c276fd9d99f8530e150.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3558e5371c834f01406dc8bf8d21ea8a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5db8e913ce14b68e4edf9bc6097ee7a9.jpg\\\"]','','精致钢材，美容清洁',1,14,'http://yanxuan.nosdn.127.net/534231583f82572398ec84bad425cdaf.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b83b83d029769ba43eb604d0822cf3fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b83b83d029769ba43eb604d0822cf3fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/117eaaa0bbcb04f976f03eeb05472db0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/117eaaa0bbcb04f976f03eeb05472db0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e939bfcf69341567ec7d9aaa21fb8c50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e939bfcf69341567ec7d9aaa21fb8c50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2db912941720c76c078cab943c065ac7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2db912941720c76c078cab943c065ac7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c6f1289733e6310e36f0c8c1c38c2ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c6f1289733e6310e36f0c8c1c38c2ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2e2d5be411026b73d248462680bb17a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2e2d5be411026b73d248462680bb17a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47c36e0d9a1b6dbc9c43423b11ae1f78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47c36e0d9a1b6dbc9c43423b11ae1f78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b91df47b5111fbba6021c5393523827e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b91df47b5111fbba6021c5393523827e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/284322e6bf6f9f58dc1ea6b6d78f4934.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/284322e6bf6f9f58dc1ea6b6d78f4934.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c083051cd5caba0853d6b9c53df7efc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c083051cd5caba0853d6b9c53df7efc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3d8bbc6f7f0ff2a083d1e071787d693.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3d8bbc6f7f0ff2a083d1e071787d693.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a5ebb8710abd6a9bc722c47e52fc316.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a5ebb8710abd6a9bc722c47e52fc316.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e00b00f4d2e7273dc10eb6ed72fcb81f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e00b00f4d2e7273dc10eb6ed72fcb81f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/179a14fafea43cacfc20359365205bbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/179a14fafea43cacfc20359365205bbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd40961ca226fab994e32b69f50ec9a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd40961ca226fab994e32b69f50ec9a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57d6b84e80212d250f3dd6075245626d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57d6b84e80212d250f3dd6075245626d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e15d760de63f08f07bed93f23ec05f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e15d760de63f08f07bed93f23ec05f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb194af37a6171d2a01bf62b9f050e8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb194af37a6171d2a01bf62b9f050e8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/884320d6edcc611d24ad21b1141c25b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/884320d6edcc611d24ad21b1141c25b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba72d5d988de555c409567c169a84dde.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba72d5d988de555c409567c169a84dde.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2a07e2087bbf898d06fdd81dfca2df8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2a07e2087bbf898d06fdd81dfca2df8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c56478dc47d57ad8e9975bc3f56d8a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c56478dc47d57ad8e9975bc3f56d8a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/646b5e65aa8e103ad53520a651708b42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/646b5e65aa8e103ad53520a651708b42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14553a06674418536634641341ba2279.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14553a06674418536634641341ba2279.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b01dbd307c437639b37bbf595fa221f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b01dbd307c437639b37bbf595fa221f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/597ebc5225250483d119412011236fbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/597ebc5225250483d119412011236fbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/def4b6a46e8cfc94d1406364217674b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/def4b6a46e8cfc94d1406364217674b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/861e9e9daac7cfe608c8b97a714bcc18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/861e9e9daac7cfe608c8b97a714bcc18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0f60034e88744709f095c96709b17af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0f60034e88744709f095c96709b17af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d107a65c0c7099ba6cf5d1b961d7463.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d107a65c0c7099ba6cf5d1b961d7463.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2863cd9018abe484803b09cf9445c35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2863cd9018abe484803b09cf9445c35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a898b97d00a5d1c0d02893dbce8e3b0f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a898b97d00a5d1c0d02893dbce8e3b0f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4af6b2c9a95ec988fd818a7f3ef182ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4af6b2c9a95ec988fd818a7f3ef182ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23c5eb669a232ec8beb8f5f16c90546f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23c5eb669a232ec8beb8f5f16c90546f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/070e38033dc3a05012e7eb509f88aadb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/070e38033dc3a05012e7eb509f88aadb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8036939f9edbcbdeb5927c911802ac2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8036939f9edbcbdeb5927c911802ac2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c35fd3d43a7dbe1d2517867ff622339.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c35fd3d43a7dbe1d2517867ff622339.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d4c5c234ccc8b158270174b8d2d875b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d4c5c234ccc8b158270174b8d2d875b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb3868ecac5f9eb338a199fca0470ed1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb3868ecac5f9eb338a199fca0470ed1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26878b0d7aa87ea6ca14e9ad5a1e7e28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26878b0d7aa87ea6ca14e9ad5a1e7e28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2d42e7df82105f2fa0725a5d1f9e967.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2d42e7df82105f2fa0725a5d1f9e967.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dd59366d29dd79d94bdf1a015d13340.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dd59366d29dd79d94bdf1a015d13340.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69ae431632b8f6cd7fd6169b248c755a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69ae431632b8f6cd7fd6169b248c755a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7cc2339764709b17ba30ab09c088ba2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7cc2339764709b17ba30ab09c088ba2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/baaf875d2f9113049ecdfe4368ae997e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/baaf875d2f9113049ecdfe4368ae997e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8899a3367f43543e7990fe00d27ef6a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8899a3367f43543e7990fe00d27ef6a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d640655f288850e49e385ca62553b423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d640655f288850e49e385ca62553b423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5be64320b03f6c68cfb89481b3127529.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5be64320b03f6c68cfb89481b3127529.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba6c788e03d06929b105209c07646106.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba6c788e03d06929b105209c07646106.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37a3cab46afb1afb717fc5536cb5bd81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37a3cab46afb1afb717fc5536cb5bd81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/807c872ecb54480af96f46ca1dd5b8d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/807c872ecb54480af96f46ca1dd5b8d2.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110018,'1110018','耐用狗狗清洁美容护理套装',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/ac5f93bd705e97e96d18c44729adf111.jpg\\\", \\\"http://yanxuan.nosdn.127.net/863069f626e8093858bd944961672116.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3f54aad95403f6763d2971cf64ee0f02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/95fd3351c1be18c3b9ed445ef0a38434.jpg\\\"]','','精致钢材，耐咬美容',1,15,'http://yanxuan.nosdn.127.net/d93aa5d6e7a296101cf4cb72613aeda6.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3854994be7c4da17e5a2f316b8e0a115.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3854994be7c4da17e5a2f316b8e0a115.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/875e35f196d220324fa1d1448c635852.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/875e35f196d220324fa1d1448c635852.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60ed2b973f7be99c217d2a7cebbd4296.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60ed2b973f7be99c217d2a7cebbd4296.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff5e0e33fd75703190ae409c6d21e366.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff5e0e33fd75703190ae409c6d21e366.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be57569f669c85a9b0187a66e1572178.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be57569f669c85a9b0187a66e1572178.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/191dc75b06fa04bef578f0e848d17d07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/191dc75b06fa04bef578f0e848d17d07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbf0148a77e3441b68939abb092496e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbf0148a77e3441b68939abb092496e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac2fa1219b362841a6d1dc241a51d2c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac2fa1219b362841a6d1dc241a51d2c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c27a79ce5a90f227ff4e50f3fb619e1b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c27a79ce5a90f227ff4e50f3fb619e1b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ce899dc8db6d3353d9c34b50a24a111.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ce899dc8db6d3353d9c34b50a24a111.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2c7d9ad1e857941277f82f9874c2081.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2c7d9ad1e857941277f82f9874c2081.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28edef9e1654a433a400ca200d7c7c55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28edef9e1654a433a400ca200d7c7c55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ba3171699b0d6c2f695e6cdcf8e598e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ba3171699b0d6c2f695e6cdcf8e598e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0d29d0225d53e8922260018b0c86642.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0d29d0225d53e8922260018b0c86642.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70a629edf4e3d395ba12c96a1e6d7180.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70a629edf4e3d395ba12c96a1e6d7180.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6c160891c4df84eda72a641f86cadd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6c160891c4df84eda72a641f86cadd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e96a60883b2bd0145f8af51168c547a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e96a60883b2bd0145f8af51168c547a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a45dd7da46705aee759e95d0d8587f06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a45dd7da46705aee759e95d0d8587f06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7f20607c2e7a2780e2b37cae44b52af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7f20607c2e7a2780e2b37cae44b52af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8efd5ead32d88db8fcd944dd1f72f9d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8efd5ead32d88db8fcd944dd1f72f9d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1032f7228911b42dbfae13d3a7093b9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1032f7228911b42dbfae13d3a7093b9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b96b094cedf2ddceb42c273477cc3717.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b96b094cedf2ddceb42c273477cc3717.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c7bc21e4bc28e894d58cbd7c66706eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c7bc21e4bc28e894d58cbd7c66706eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/491b83a15dda113d32f03807ca005684.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/491b83a15dda113d32f03807ca005684.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/625930a2fa643787da5d7f2f8b7403a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/625930a2fa643787da5d7f2f8b7403a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd061b996d5bfa2b0ff4cb0252fc193a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd061b996d5bfa2b0ff4cb0252fc193a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/433c5a8317a3806cc81e14c3f8cb84a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/433c5a8317a3806cc81e14c3f8cb84a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2bace2645a1676f402168453afe0abc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2bace2645a1676f402168453afe0abc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f71c354f48548663f30b982b56dffd2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f71c354f48548663f30b982b56dffd2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47d6aeeefdeb2c16fc0fb5e3dfadf5d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47d6aeeefdeb2c16fc0fb5e3dfadf5d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9950b6e3db69079542793ff1a5767e7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9950b6e3db69079542793ff1a5767e7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30b8844248a0063ac6242f0c71be15ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30b8844248a0063ac6242f0c71be15ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66c73c753f1071a23b0d9a1b2557726a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66c73c753f1071a23b0d9a1b2557726a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/448f60c3e39778df00dc650374005029.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/448f60c3e39778df00dc650374005029.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d02115e001d27a057cfe22c7d5aebf2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d02115e001d27a057cfe22c7d5aebf2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38af331901526fa722a8287481fb926c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38af331901526fa722a8287481fb926c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab8fdd7ef8d01c0130b53095d6497a94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab8fdd7ef8d01c0130b53095d6497a94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ecabbfba3838ec15af9f0599943f47a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ecabbfba3838ec15af9f0599943f47a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d502d68633f2c4ea2b4c5d0ab80c5a5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d502d68633f2c4ea2b4c5d0ab80c5a5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a45df861c4167e26960694ddc076401.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a45df861c4167e26960694ddc076401.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d1aabd78848eea2965f9668e5335d5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d1aabd78848eea2965f9668e5335d5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbb869169b8b23830e324f96779424c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbb869169b8b23830e324f96779424c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd9ce065fe1563d5520de468a1179b65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd9ce065fe1563d5520de468a1179b65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b89dfd9f8acd2b5cd2782d1a648c5e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b89dfd9f8acd2b5cd2782d1a648c5e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70876851a29e0e910842ac894f96eba8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70876851a29e0e910842ac894f96eba8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ace99aa398960caeb7ca6c5b766be6e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ace99aa398960caeb7ca6c5b766be6e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7f4307003805e93698588edee29c130.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7f4307003805e93698588edee29c130.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fecdb7d78e8301c026397575a661d02e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fecdb7d78e8301c026397575a661d02e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f3a1391596df218f87ee68336bb3074.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f3a1391596df218f87ee68336bb3074.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1110019,'1110019','宠物合金钢安全除菌指甲护理组合',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/af0a2d9555caec30d2af98cdcdeb77e8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4189295e3a005a63caddd72504381aa0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/baf8d25090cebda506f461ae7224378c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/93c84592192c3b89b7df46b51e7c5ab6.jpg\\\"]','','猫狗皆可用，保护家具',1,13,'http://yanxuan.nosdn.127.net/1e7e392b6fc9da99dc112197b7444eec.png','',0,0,'件',89.00,69.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ddc3b83c0849e81d292991b65df5aa60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddc3b83c0849e81d292991b65df5aa60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1015c576df64e0676520bf6e150aa491.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1015c576df64e0676520bf6e150aa491.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b31db06b2dfa8da6ae97c5c49e0efc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b31db06b2dfa8da6ae97c5c49e0efc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b3515f46bb6f9159faf77c8c0cbb2f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b3515f46bb6f9159faf77c8c0cbb2f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3457351f5689883379142f404f51e400.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3457351f5689883379142f404f51e400.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1b1e7315c2486cd112de7f9fc479012.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1b1e7315c2486cd112de7f9fc479012.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9afdd4bf281e983d5519feb39326a670.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9afdd4bf281e983d5519feb39326a670.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c178d019321a1573e54cd15e192177a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c178d019321a1573e54cd15e192177a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07073287b255e8a425369cdc893f5f20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07073287b255e8a425369cdc893f5f20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/293d2a36e7185e7f66b896e25c2c8305.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/293d2a36e7185e7f66b896e25c2c8305.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d80991ea2ce193d597e2eee242bc9a80.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d80991ea2ce193d597e2eee242bc9a80.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e5e9936313a9c60240056405ee2ba04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e5e9936313a9c60240056405ee2ba04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72f3065c41af1565f7a532382fc79ef4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72f3065c41af1565f7a532382fc79ef4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea7ed70f911913fcb0f9c82c0f7144d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea7ed70f911913fcb0f9c82c0f7144d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d3c4a51893f1cab2790ef8bb415b874.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d3c4a51893f1cab2790ef8bb415b874.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a102958c5c967148d2ddc829928e128.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a102958c5c967148d2ddc829928e128.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eba4e71d802b4a643aa8d1b6f1ef538d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eba4e71d802b4a643aa8d1b6f1ef538d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2bc8520fe40de2d7476fe1798080f28a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2bc8520fe40de2d7476fe1798080f28a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74cd885cd96572e9a130b128f9f67f06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74cd885cd96572e9a130b128f9f67f06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/368eab0ae5725751b99059da17d1fe40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/368eab0ae5725751b99059da17d1fe40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0b19f0579e1e6a83137aac04731b897.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0b19f0579e1e6a83137aac04731b897.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ae42c7dc053d8fe3ec9f3c55dfbd775.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ae42c7dc053d8fe3ec9f3c55dfbd775.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1e422c2778e752789c04187cd021f41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1e422c2778e752789c04187cd021f41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea2a040b902d957500aa9b34a46c9ab6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea2a040b902d957500aa9b34a46c9ab6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5761b8ff0a8585edef490a4d4ac301ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5761b8ff0a8585edef490a4d4ac301ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/839c1f5686172cf0412e5d3eaba8a82c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/839c1f5686172cf0412e5d3eaba8a82c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3985040baac585a6f0934e2b05e2e6ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3985040baac585a6f0934e2b05e2e6ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/014628292ae6101a20bbb92866b63f25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/014628292ae6101a20bbb92866b63f25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8347e039b379c389b74789fe0f50b7d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8347e039b379c389b74789fe0f50b7d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a11a6cc14c6c289b329e186b92009e25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a11a6cc14c6c289b329e186b92009e25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3f2434dfe4be243056e58123eee6a7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3f2434dfe4be243056e58123eee6a7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/774f19c00df4da1e0c7909add91a1370.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/774f19c00df4da1e0c7909add91a1370.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e69dfd820c7abf9825fb94ebce881244.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e69dfd820c7abf9825fb94ebce881244.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7ec56aeda2b7ab12758e7d1c7806cc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7ec56aeda2b7ab12758e7d1c7806cc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a537ccc12aed9a406c392a7d862cb1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a537ccc12aed9a406c392a7d862cb1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b14cfaad56ea13375db5996e8fd755f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b14cfaad56ea13375db5996e8fd755f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1498337acf06675f75910ce5aa5aed94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1498337acf06675f75910ce5aa5aed94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/874ffbe6adf9a5441434ff9f6a6f18f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/874ffbe6adf9a5441434ff9f6a6f18f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00750da19e23f4503a15186b49426093.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00750da19e23f4503a15186b49426093.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9d2b56d241ce7bed1995e1eff43c376.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9d2b56d241ce7bed1995e1eff43c376.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f36cf5f4dd5285d52d5e3d00356dc67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f36cf5f4dd5285d52d5e3d00356dc67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b90d5200ab88c58ffedd0674202163e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b90d5200ab88c58ffedd0674202163e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0654bc2c783d15611855a7785b119650.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0654bc2c783d15611855a7785b119650.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8858b07274e515c941876822ed90ed24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8858b07274e515c941876822ed90ed24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/819a3d7d46c9de4def544dc901cda509.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/819a3d7d46c9de4def544dc901cda509.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a48c7640b69a38257223bb54e9222bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a48c7640b69a38257223bb54e9222bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd5f7266799709dc96e3d9336b565171.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd5f7266799709dc96e3d9336b565171.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1111007,'1111007','妙曲奇遇记曲奇礼盒 520克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/b5b25363daed8cc56f8b455564538fd5.png\\\", \\\"http://yanxuan.nosdn.127.net/b5b25363daed8cc56f8b455564538fd5.png\\\", \\\"http://yanxuan.nosdn.127.net/b5b25363daed8cc56f8b455564538fd5.png\\\", \\\"http://yanxuan.nosdn.127.net/b5b25363daed8cc56f8b455564538fd5.png\\\", \\\"http://yanxuan.nosdn.127.net/b5b25363daed8cc56f8b455564538fd5.png\\\"]','','六种口味，酥香脆爽',1,4,'http://yanxuan.nosdn.127.net/8d228f767b136a67aaf2cbbf6deb46fa.png','',0,0,'件',98.00,78.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1111010,'1111010','静谧森林简欧色织提花面巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/4eeea55e7c6a0cf15c8a9574dcfa5e1d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4eeea55e7c6a0cf15c8a9574dcfa5e1d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4eeea55e7c6a0cf15c8a9574dcfa5e1d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4eeea55e7c6a0cf15c8a9574dcfa5e1d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4eeea55e7c6a0cf15c8a9574dcfa5e1d.jpg\\\"]','','静谧神秘，亲肤耐用',1,9,'http://yanxuan.nosdn.127.net/ef7efe55839e66993fb604dc3c2d9410.png','',0,0,'件',89.00,69.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1113010,'1113010','男式丝滑莫代尔平角内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/e1fa80ecf411c0740927cebbe6546920.png\\\", \\\"http://yanxuan.nosdn.127.net/e1fa80ecf411c0740927cebbe6546920.png\\\", \\\"http://yanxuan.nosdn.127.net/e1fa80ecf411c0740927cebbe6546920.png\\\", \\\"http://yanxuan.nosdn.127.net/e1fa80ecf411c0740927cebbe6546920.png\\\", \\\"http://yanxuan.nosdn.127.net/e1fa80ecf411c0740927cebbe6546920.png\\\"]','','Jockey供应商，亲肤贴合',1,6,'http://yanxuan.nosdn.127.net/2d0920b51331bb1636330ad8e07d1b97.png','',0,0,'件',79.00,59.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1113011,'1113011','女式丝滑莫代尔三角内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/4788f548071f24219faf943b1fb28a79.png\\\", \\\"http://yanxuan.nosdn.127.net/4788f548071f24219faf943b1fb28a79.png\\\", \\\"http://yanxuan.nosdn.127.net/4788f548071f24219faf943b1fb28a79.png\\\", \\\"http://yanxuan.nosdn.127.net/4788f548071f24219faf943b1fb28a79.png\\\", \\\"http://yanxuan.nosdn.127.net/4788f548071f24219faf943b1fb28a79.png\\\"]','','Jockey工厂，顺滑爽肤',1,5,'http://yanxuan.nosdn.127.net/7a683f68fc988df299b5cfe6273d6fb7.png','',0,0,'件',69.00,49.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1113019,'1113019','20寸 PC膜拉链登机箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/2687b2a39cd77cf184cf387dc4cbb6af.png\\\", \\\"http://yanxuan.nosdn.127.net/2687b2a39cd77cf184cf387dc4cbb6af.png\\\", \\\"http://yanxuan.nosdn.127.net/2687b2a39cd77cf184cf387dc4cbb6af.png\\\", \\\"http://yanxuan.nosdn.127.net/2687b2a39cd77cf184cf387dc4cbb6af.png\\\", \\\"http://yanxuan.nosdn.127.net/2687b2a39cd77cf184cf387dc4cbb6af.png\\\"]','','热卖9万只，网易人手1只',1,1,'http://yanxuan.nosdn.127.net/ad504bb389039ff35c4cd6ae912be87e.png','',0,0,'件',228.00,208.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1114011,'1114011','104升 纯PC拉链斜纹拉杆箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/7e622b47c4d28dc5e7f97be57ba17b84.png\\\", \\\"http://yanxuan.nosdn.127.net/7e622b47c4d28dc5e7f97be57ba17b84.png\\\", \\\"http://yanxuan.nosdn.127.net/7e622b47c4d28dc5e7f97be57ba17b84.png\\\", \\\"http://yanxuan.nosdn.127.net/7e622b47c4d28dc5e7f97be57ba17b84.png\\\", \\\"http://yanxuan.nosdn.127.net/7e622b47c4d28dc5e7f97be57ba17b84.png\\\"]','','104升的体积，90升的价格',1,5,'http://yanxuan.nosdn.127.net/196b5ce11930b4eadaec563cb0406634.png','',0,0,'件',319.00,299.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1115023,'1115023','新年礼盒 双宫茧纱布美肤手工蚕丝被',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/fc0291ab325830575c58b281c6e4ee09.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d22a24b970152c1aa25386ec8d8b6db3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3d3aa5935fa24e083f2deb2697b89e93.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ef5ef16cc4ddd39127e4f6d66874544a.jpg\\\"]','','手工匠心织造',1,13,'http://yanxuan.nosdn.127.net/f3d1f0217ed250a37ea807f456351a51.png','',0,0,'件',1619.00,1599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/4c43f2c47b3c9add17fae31e7fe26a13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c43f2c47b3c9add17fae31e7fe26a13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dde334e64507ecb2020bece8632256ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dde334e64507ecb2020bece8632256ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d0ac4805b5cbba2c99494aaa095b96c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d0ac4805b5cbba2c99494aaa095b96c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4b7fade54796fac479d3512632f53c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4b7fade54796fac479d3512632f53c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c1b9410c37aa278b27b1c1c9d688332.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c1b9410c37aa278b27b1c1c9d688332.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69027eeafd9ce6f9c28f8e9eacccac1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69027eeafd9ce6f9c28f8e9eacccac1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17945f8075ec3d09cc9b3b45c1b23954.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17945f8075ec3d09cc9b3b45c1b23954.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdcc84a9987078f47428bc9802f52a71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdcc84a9987078f47428bc9802f52a71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/454b63ab7133ec9fea35b8b09e823922.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/454b63ab7133ec9fea35b8b09e823922.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/217f38b044ca468b5078114b18bffdf1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/217f38b044ca468b5078114b18bffdf1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eaa60f902992461dacdd7e941afd6ce1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eaa60f902992461dacdd7e941afd6ce1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ed15f21fffb449f371059235876e382.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ed15f21fffb449f371059235876e382.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/686e234a86c089de50d3e25aa9ad9bdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/686e234a86c089de50d3e25aa9ad9bdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c5876107596920d047902bc20512f87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c5876107596920d047902bc20512f87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13f310f8a94423864b3c927dbae63dd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13f310f8a94423864b3c927dbae63dd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2ddc5e7c65eb108c0963399a577d027.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2ddc5e7c65eb108c0963399a577d027.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c805b24ed55349a58d0fb9cf5d6c261f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c805b24ed55349a58d0fb9cf5d6c261f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a230022fb66841c03150cf3fe89c818e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a230022fb66841c03150cf3fe89c818e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40f1ce851c58791fcae3caae74c8f0d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40f1ce851c58791fcae3caae74c8f0d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df61ff302af83280e8e2c36c4e80a393.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df61ff302af83280e8e2c36c4e80a393.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1672e49a265eac0d2fb319e7f5088ff0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1672e49a265eac0d2fb319e7f5088ff0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b444408fbe681615abfb77bbe6e516df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b444408fbe681615abfb77bbe6e516df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0debfd075ce1c7894c4a992fa4b00eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0debfd075ce1c7894c4a992fa4b00eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00b4174990e426b43dcddc69716833e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00b4174990e426b43dcddc69716833e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec68bbed4061fb2b49ff26f5e3a204f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec68bbed4061fb2b49ff26f5e3a204f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f65623230b18f1040bc42ab410cebea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f65623230b18f1040bc42ab410cebea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12c57280d771639226579355e3508225.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12c57280d771639226579355e3508225.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94f0d4b78a6e055a3bc933b38cde4676.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94f0d4b78a6e055a3bc933b38cde4676.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/377023664a1ecc7ae02de53a4c393493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/377023664a1ecc7ae02de53a4c393493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94bbae92dc9bc96cc262201c28443354.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94bbae92dc9bc96cc262201c28443354.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59fbd18f4669bc5dd44a6dcce78a592d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59fbd18f4669bc5dd44a6dcce78a592d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99794ca0ea180fa5b61c6e8e9652234a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99794ca0ea180fa5b61c6e8e9652234a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c263493b621abf732f0f471b0f863f94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c263493b621abf732f0f471b0f863f94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e765a0f7f98ed029e50d82e5031c525.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e765a0f7f98ed029e50d82e5031c525.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02224d48e5035a0927979e91003514d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02224d48e5035a0927979e91003514d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6dd2913a65cdf895816c4d131b1fcc1b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6dd2913a65cdf895816c4d131b1fcc1b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46d2edf60200fee3c56bcc1b2e67d5d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46d2edf60200fee3c56bcc1b2e67d5d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42fb7948dd89a4563c365fb75c35fc5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42fb7948dd89a4563c365fb75c35fc5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44ecec55301bac953355e425b833c4b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44ecec55301bac953355e425b833c4b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdc9c3ef74e64d5992f382e9e10f5147.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdc9c3ef74e64d5992f382e9e10f5147.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57145f6ce36ba8be808db121b29508e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57145f6ce36ba8be808db121b29508e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/995ed62fb2f43ba14026b33f592dfbd8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/995ed62fb2f43ba14026b33f592dfbd8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b4c9fa91ce933a10e0961c462e991d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b4c9fa91ce933a10e0961c462e991d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f597f53ff837012a84c70f607478bb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f597f53ff837012a84c70f607478bb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82987ce707f21ec0e3855d365e2ffc38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82987ce707f21ec0e3855d365e2ffc38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1ca5c866a9f1035c1f220a2df9ef989.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1ca5c866a9f1035c1f220a2df9ef989.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/028a65df8b5cd56e2f02a13d210652b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/028a65df8b5cd56e2f02a13d210652b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/683072f00fa3a3a8fb656d239a941da2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/683072f00fa3a3a8fb656d239a941da2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b087f76096d58c93035cb9a5252e242d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b087f76096d58c93035cb9a5252e242d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dc6c83e63cda0b42ccdd796f101703e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dc6c83e63cda0b42ccdd796f101703e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5166cd7c4f2083b5c7ef9c0e2fe39bff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5166cd7c4f2083b5c7ef9c0e2fe39bff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c37c9000c45935834f7102ddd438ba60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c37c9000c45935834f7102ddd438ba60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e6639ec9703eba5814155ee2adb3358.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e6639ec9703eba5814155ee2adb3358.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb6879fa88e498a12b7ebdc3109b5c3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb6879fa88e498a12b7ebdc3109b5c3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d91b86efaabd244e1cfecf75033511f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d91b86efaabd244e1cfecf75033511f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/217cbc83a7fab144b45a191e08dffdc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/217cbc83a7fab144b45a191e08dffdc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e65816dcd382d520dcd54fd7a17b242d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e65816dcd382d520dcd54fd7a17b242d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc47abd7279a420920aceda815321575.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc47abd7279a420920aceda815321575.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66c4dd6abb1a48d315c621a1c0d921bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66c4dd6abb1a48d315c621a1c0d921bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b7300878dca46c3bcdb6149af3ad348.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b7300878dca46c3bcdb6149af3ad348.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5c40a9f499e5ade62e2e29daade5d08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5c40a9f499e5ade62e2e29daade5d08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb9f8961bcda56e9820c4145b52c14f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb9f8961bcda56e9820c4145b52c14f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0b2e8fc816ab6f9436e2f2aa31b479c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0b2e8fc816ab6f9436e2f2aa31b479c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3261f979d8f60c3dc3b2fbf445a9b2ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3261f979d8f60c3dc3b2fbf445a9b2ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44bbc9ca537c22ecbb2a70e4f33ce951.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44bbc9ca537c22ecbb2a70e4f33ce951.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31231ed6c10173f61fa7557a62dadb0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31231ed6c10173f61fa7557a62dadb0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd654bed4757dca27da1e22795004a81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd654bed4757dca27da1e22795004a81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6441397fb853ce2f84bb14a057b757c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6441397fb853ce2f84bb14a057b757c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4781f226a98fd5cd7b9495f1fc7b360.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4781f226a98fd5cd7b9495f1fc7b360.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae422e9f55e752cff9482178ea066280.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae422e9f55e752cff9482178ea066280.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1115028,'1115028','日式色织水洗棉条纹四件套',1008009,1001000,'[\\\"http://yanxuan.nosdn.127.net/dcc215390ba15aa8673c5cc4c56b6fae.jpg\\\", \\\"http://yanxuan.nosdn.127.net/aa8d17bcd7c0d5fa18b5b862a3484948.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c99a4ecf10ca320714b437b40a68c82c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a020bf35bfa7c1b6dc75ea790c07b3d0.jpg\\\"]','','纯棉水洗感，柔软吸汗',1,5,'http://yanxuan.nosdn.127.net/3d0045e8f43439c7004fae052b2162ed.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c7a4904d00fec84dcb8d024acf9c9124.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7a4904d00fec84dcb8d024acf9c9124.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ca8260a0e668703f99b76d2b5febe39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ca8260a0e668703f99b76d2b5febe39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a8001ac179af2b6a9710754ab3be0a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a8001ac179af2b6a9710754ab3be0a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4565564e3359df7c1bfa3ad75d482fff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4565564e3359df7c1bfa3ad75d482fff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd7ace2c6a2c4324ef5e1f9355e89268.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd7ace2c6a2c4324ef5e1f9355e89268.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb9241fa90a48c6f9820785c728d2bff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb9241fa90a48c6f9820785c728d2bff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fae72fff469beacc683209a4514a41f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fae72fff469beacc683209a4514a41f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/395d99acde8e480bde8dc765ac1eb580.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/395d99acde8e480bde8dc765ac1eb580.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f5a5bc28c4db2fffc72228668a09534.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f5a5bc28c4db2fffc72228668a09534.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/849c44ecb9149dbe4186fd2a7176c2b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/849c44ecb9149dbe4186fd2a7176c2b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85c02b7f73716798a07078ca99a84dcc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85c02b7f73716798a07078ca99a84dcc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02e8ed22c5110a71db1bbe3ea911246d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02e8ed22c5110a71db1bbe3ea911246d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d668a817a0c0fbf2c550fb2732e3278.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d668a817a0c0fbf2c550fb2732e3278.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7504ed0982387d5837de6f146aeae2a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7504ed0982387d5837de6f146aeae2a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5825013e93079cd9389a1a85db9ea986.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5825013e93079cd9389a1a85db9ea986.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9895d59d2ce2c2f05b7d7d342edf8b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9895d59d2ce2c2f05b7d7d342edf8b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85c29c4c8fb2db231665bcbf2322671d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85c29c4c8fb2db231665bcbf2322671d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57615e82ddcb6f5b4eb1239d3948d8fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57615e82ddcb6f5b4eb1239d3948d8fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/518b4a422d10e1075a76bb79232391e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/518b4a422d10e1075a76bb79232391e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5928965b398160fdfef1a1a826bac75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5928965b398160fdfef1a1a826bac75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6271c3f5120f19b42bb913e6945cbf95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6271c3f5120f19b42bb913e6945cbf95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/674aee6d3a58fb51551f6766689bc7ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/674aee6d3a58fb51551f6766689bc7ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29f78e78e62742cff9b760a9b97e4347.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29f78e78e62742cff9b760a9b97e4347.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/755ac0784730b54dc44fc2a3fc97d941.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/755ac0784730b54dc44fc2a3fc97d941.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0cd4cc9a627be11362be64fa4bcbf06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0cd4cc9a627be11362be64fa4bcbf06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3205cd14570da7022b1943da198763f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3205cd14570da7022b1943da198763f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f263b42fc5808f4de777410befd094cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f263b42fc5808f4de777410befd094cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93d0a8bea9bd2f52941628dff09ef381.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93d0a8bea9bd2f52941628dff09ef381.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97e43d6548d7215956380ffd0c5a1810.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97e43d6548d7215956380ffd0c5a1810.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3e8b023e2dbf472c8889456c00cf9be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3e8b023e2dbf472c8889456c00cf9be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/158be4bab49629d527bd8e27e55c77d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/158be4bab49629d527bd8e27e55c77d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d345c8615953a60a424e5a47c0cd16a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d345c8615953a60a424e5a47c0cd16a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff89423e056191c2d4a12196b900d7f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff89423e056191c2d4a12196b900d7f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e953286fce6c89f74ce7150f2f478d64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e953286fce6c89f74ce7150f2f478d64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff0d95c718fe73cd66dff1de8a43d7a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff0d95c718fe73cd66dff1de8a43d7a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2009a46185b6bd5463528971ef2c2af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2009a46185b6bd5463528971ef2c2af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f08bae55ef68af811f57ff105ec5ec3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f08bae55ef68af811f57ff105ec5ec3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84ac737dabdb85482f2ce39df119c753.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84ac737dabdb85482f2ce39df119c753.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc95259418359a519d7f604af79d6f19.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc95259418359a519d7f604af79d6f19.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b673c4829dceec9488b5bddacc3ae7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b673c4829dceec9488b5bddacc3ae7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da72e531c1bc3bba73d61456396dcaba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da72e531c1bc3bba73d61456396dcaba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10e489150f5b12c3fed27560df0cb391.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10e489150f5b12c3fed27560df0cb391.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc42020bc2b630c1be212b734bf70e53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc42020bc2b630c1be212b734bf70e53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f27be3e26b925f26d81e5f90b12cd1cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f27be3e26b925f26d81e5f90b12cd1cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33e9cfb394b44658be3ab3fbae977638.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33e9cfb394b44658be3ab3fbae977638.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/008e03c492bf5b1cf9a3b94c525e3920.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/008e03c492bf5b1cf9a3b94c525e3920.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4bc8cbbb6b937bb0b122649a4560e1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4bc8cbbb6b937bb0b122649a4560e1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbee4d90772a3e0c40811de3fd2cfdea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbee4d90772a3e0c40811de3fd2cfdea.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1115052,'1115052','日式和风蔺草蒲团坐垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/f6ebbc20006a323db3aea566eced761c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/82f2e4d1e138b3d336570de8f2c5ba1c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/feff39d9bf8340aa3ecddc8ae23d5167.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cc0ccf5d41022439f0d8eb6a4830b094.jpg\\\"]','','龙眉蔺草编织 日式茶禅风',1,18,'http://yanxuan.nosdn.127.net/39dea35a3ea2361e4b054ee2f421af53.png','',0,0,'件',106.00,86.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c5c39ed4982045a32efde6f8e4b3d327.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5c39ed4982045a32efde6f8e4b3d327.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/385b1a317b993c403f5b1532bf714592.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/385b1a317b993c403f5b1532bf714592.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97c44d5c2411a2b8bb39ee34957783bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97c44d5c2411a2b8bb39ee34957783bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/489a326e13a5bb3ce44a40fc71ccbc40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/489a326e13a5bb3ce44a40fc71ccbc40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2d6eb8e6ba1de0db4bdc1d4ef8d124d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2d6eb8e6ba1de0db4bdc1d4ef8d124d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e723ef50260b98666955796f6dab4c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e723ef50260b98666955796f6dab4c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cd9585a68c6b746f509408c2c16783a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cd9585a68c6b746f509408c2c16783a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/582bdb6e01ad3b8f2d76d0124dfdcf8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/582bdb6e01ad3b8f2d76d0124dfdcf8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8dd281a87afd1ae88dc05e1db35142a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8dd281a87afd1ae88dc05e1db35142a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73a608d337ac09b75b4bd14d8170b6d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73a608d337ac09b75b4bd14d8170b6d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fdc10bae153b0dda81dd53b57c2b9e10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fdc10bae153b0dda81dd53b57c2b9e10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cccdb8b1831f0b70306a4b4eed8859db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cccdb8b1831f0b70306a4b4eed8859db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5baf78b4175b0fdb0132b5d83bb7e279.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5baf78b4175b0fdb0132b5d83bb7e279.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e613832e2b3e0cfcad1c42e6cf3d6d3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e613832e2b3e0cfcad1c42e6cf3d6d3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de9c7cedfd555ceb5adfed1c0c96b9b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de9c7cedfd555ceb5adfed1c0c96b9b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61a0ecae290671c15ac857e0f5b8fb5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61a0ecae290671c15ac857e0f5b8fb5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8f15359576d133d55457f69c05aeab8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8f15359576d133d55457f69c05aeab8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aae2ff89028e265b06656aa63a94c58e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aae2ff89028e265b06656aa63a94c58e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbecb94e2a020007505cad42c4e8553a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbecb94e2a020007505cad42c4e8553a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4adb8529010d4348b90cdc445f37d241.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4adb8529010d4348b90cdc445f37d241.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/953207acdb90210c681deb18b59fdadb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/953207acdb90210c681deb18b59fdadb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa5b73dea7f39614c01de4ee8acdc216.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa5b73dea7f39614c01de4ee8acdc216.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b7ccd3a548618f2fadb20aee9ab9531.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b7ccd3a548618f2fadb20aee9ab9531.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecde950588789c70df2222f1ded0f579.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecde950588789c70df2222f1ded0f579.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/597505ee5976bf7f68646ef2321c5b39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/597505ee5976bf7f68646ef2321c5b39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f317d788383403a224a191452183b9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f317d788383403a224a191452183b9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ca568894e24f4aa5d6eaf4174667ffa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ca568894e24f4aa5d6eaf4174667ffa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdbf86365486d602bc2c2b1aa4bd8781.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdbf86365486d602bc2c2b1aa4bd8781.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa9db3d211c93fa9d2914754464e679c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa9db3d211c93fa9d2914754464e679c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58e5cd852682d404200f57471e883485.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58e5cd852682d404200f57471e883485.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14cc6189a160dcf8f0d2f0d0bd0b7f27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14cc6189a160dcf8f0d2f0d0bd0b7f27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c49b33afea38804de07fc9a6bb80dda9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c49b33afea38804de07fc9a6bb80dda9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8cf4bc3c1b476cba2ec6290b02c698be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8cf4bc3c1b476cba2ec6290b02c698be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3d5eb1291c79204e2e23dede15b8cac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3d5eb1291c79204e2e23dede15b8cac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38791f147ef4ee52bfee5e240f2a5f52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38791f147ef4ee52bfee5e240f2a5f52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9756648996576857cabe3740da2edaa6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9756648996576857cabe3740da2edaa6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4247a5ccb0f39be52a8c99cb15f92f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4247a5ccb0f39be52a8c99cb15f92f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40d0ceae7b2300246501b72540727505.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40d0ceae7b2300246501b72540727505.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14603e5d6e54d7e1abaae04ea713de08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14603e5d6e54d7e1abaae04ea713de08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06d66618b49e447645e3650dc6cb11ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06d66618b49e447645e3650dc6cb11ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ef12ad1adb0d16743a0054489846a13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ef12ad1adb0d16743a0054489846a13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99d648a6665d2a25f790a469c464d34b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99d648a6665d2a25f790a469c464d34b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76e121103fb90fdf267eb204af59c0d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76e121103fb90fdf267eb204af59c0d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d92a1874c26534262643772dbdef1d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d92a1874c26534262643772dbdef1d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cb04ad36ddc0b45066f8233ab9cf888.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cb04ad36ddc0b45066f8233ab9cf888.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdb4947e9c035fea2bb271c9f0b43d2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdb4947e9c035fea2bb271c9f0b43d2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55c1446b40d52e2da86f92fccc47ea2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55c1446b40d52e2da86f92fccc47ea2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/339c0d5acef5c3029fd3c0d500883ce5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/339c0d5acef5c3029fd3c0d500883ce5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11dc59302185026721eaa23509c333ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11dc59302185026721eaa23509c333ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81ed48a7099d3bfa9860fcdd4e546b60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81ed48a7099d3bfa9860fcdd4e546b60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c615061f6c675ba67897e03e1f9cee17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c615061f6c675ba67897e03e1f9cee17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e30a5c3df143363971c97e75f254818d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e30a5c3df143363971c97e75f254818d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b33a8b54250cf02206d1d9fa5674725.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b33a8b54250cf02206d1d9fa5674725.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf292ce53420b314368494c36b189ce1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf292ce53420b314368494c36b189ce1.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1115053,'1115053','日式天然蔺草席三件套',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/41287cc5618eb5e2c01db90f569d58b7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5518a8efdbad43a695a979dc6669261d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f401c84a0b444bd4b3057aff4bf01170.jpg\\\", \\\"http://yanxuan.nosdn.127.net/253d95942c92f2ee44fa598a17288d41.jpg\\\"]','','龙眉蔺草密经编织 爽滑沁凉',1,11,'http://yanxuan.nosdn.127.net/fabf9ac36751a2e1322135c56f1dc338.png','',0,1,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1101093b92cac924e69bcefcf40c76e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1101093b92cac924e69bcefcf40c76e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6776cd9b430fe30d4aabcd411c89c0dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6776cd9b430fe30d4aabcd411c89c0dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc7b58c7dfa8794786643b8287de29bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc7b58c7dfa8794786643b8287de29bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8c5738275ab840d6808329d00ceb350.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8c5738275ab840d6808329d00ceb350.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f5bc2cfc6ce9c430b1802f709ebf76c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f5bc2cfc6ce9c430b1802f709ebf76c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bca29c9e21a53dd795321efffb0812dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bca29c9e21a53dd795321efffb0812dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48b5847777cc06af17803e296765fe8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48b5847777cc06af17803e296765fe8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ac8105831478e9cef9ca6621fafc926.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ac8105831478e9cef9ca6621fafc926.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74b08e41ac62e2b2ac4d4f5460e0df0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74b08e41ac62e2b2ac4d4f5460e0df0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fd64fe69b33ae2aafe4f819a664685b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fd64fe69b33ae2aafe4f819a664685b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46fe74304568a5ce8e32d1273002aca8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46fe74304568a5ce8e32d1273002aca8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7140b1208675fe3f4cdf88ea53433070.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7140b1208675fe3f4cdf88ea53433070.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94689138ad6f93014e8590af7e247803.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94689138ad6f93014e8590af7e247803.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c86acaba2c5c058fffbbdc5e002fe95a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c86acaba2c5c058fffbbdc5e002fe95a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd42872bf6525ad08c534a5badaf4b66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd42872bf6525ad08c534a5badaf4b66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/756c2e86e4f0ce987d376374614a8913.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/756c2e86e4f0ce987d376374614a8913.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81686652f491aa2bf8e3e6350a6da81a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81686652f491aa2bf8e3e6350a6da81a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee7c88390c08dd2bfe4cba481ab9a41e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee7c88390c08dd2bfe4cba481ab9a41e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8339919fcd6f1287c0403390fc5c6b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8339919fcd6f1287c0403390fc5c6b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d0f30eaf2b59c891275f0227c090db4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d0f30eaf2b59c891275f0227c090db4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3468d31e225a394811dc5dc7dbfe0982.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3468d31e225a394811dc5dc7dbfe0982.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00b9c24ff917bd437d1f4d1ece0d6629.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00b9c24ff917bd437d1f4d1ece0d6629.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2a81e7940224cdb166250e719584f72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2a81e7940224cdb166250e719584f72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac0b69a3422113c220e8e3cbc442a1f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac0b69a3422113c220e8e3cbc442a1f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c95c80f7e6d87f29902c08f1c60ac738.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c95c80f7e6d87f29902c08f1c60ac738.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/631ee88cd7236f84b0b98c73d50796fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/631ee88cd7236f84b0b98c73d50796fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cede72de2ecc4b359eb8854fc6508517.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cede72de2ecc4b359eb8854fc6508517.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6611f225c11ec3bea660dcc578465651.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6611f225c11ec3bea660dcc578465651.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2e5c23264a8f4a50300b0dd5d8fd94f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2e5c23264a8f4a50300b0dd5d8fd94f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee98563912792d365ab59650dfaea696.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee98563912792d365ab59650dfaea696.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a50d584c6047756a5af6b62846842741.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a50d584c6047756a5af6b62846842741.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a175dd64f5674e734daa9a6bc9735955.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a175dd64f5674e734daa9a6bc9735955.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7aace408f3eeb3243d6afe6c6a7b296c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7aace408f3eeb3243d6afe6c6a7b296c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90ac2e08bc3f730bb95539f53b2bb20e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90ac2e08bc3f730bb95539f53b2bb20e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e390e497fd481f621ab539f209c0ae0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e390e497fd481f621ab539f209c0ae0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b48987038ed6af0b8953549bd751990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b48987038ed6af0b8953549bd751990.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0eb6cb3a72b990b98e31440b663c2111.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0eb6cb3a72b990b98e31440b663c2111.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1df4c2d1c331ef6e100bb53b501e6d9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1df4c2d1c331ef6e100bb53b501e6d9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b690644dbb7167aebdb353d7d5a0928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b690644dbb7167aebdb353d7d5a0928.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac5acdb025c3a82113037c3357101827.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac5acdb025c3a82113037c3357101827.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/890eb4575249e74dd8a06767a05b248d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/890eb4575249e74dd8a06767a05b248d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e479eff62a3907fa2aed7330a6640432.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e479eff62a3907fa2aed7330a6640432.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/129476d180036152278d9bf3001ec869.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/129476d180036152278d9bf3001ec869.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a403b6ae33aa215095f9d7400f56f9c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a403b6ae33aa215095f9d7400f56f9c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1985869d88e77119e45fcf09c18781ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1985869d88e77119e45fcf09c18781ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40a54361f841fa9da9691949866e3eaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40a54361f841fa9da9691949866e3eaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53fe39319189dbf28392a965b836e896.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53fe39319189dbf28392a965b836e896.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77d8c21cb8be3e393559e450efe8b65d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77d8c21cb8be3e393559e450efe8b65d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10f4168ff6c6557ad962db0a0464a16c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10f4168ff6c6557ad962db0a0464a16c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48d368fdee1649b11a650fcc8e6b386d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48d368fdee1649b11a650fcc8e6b386d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bb06f567d4c4c7491353a3d9ddae20c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bb06f567d4c4c7491353a3d9ddae20c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e99a9027b337c789bc23aeb8b351c70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e99a9027b337c789bc23aeb8b351c70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4eb55207d6bf571fa254992984d2cd20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4eb55207d6bf571fa254992984d2cd20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbc0ffd84c8e782ef6f10a3231d00b60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbc0ffd84c8e782ef6f10a3231d00b60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c202d3f7a4b2342f0e5df9db4fc09cb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c202d3f7a4b2342f0e5df9db4fc09cb3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116004,'1116004','条纹长袖海魂衫（男婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/69e2463f7fb6b606f29af9f2b85c9562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/69e2463f7fb6b606f29af9f2b85c9562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/69e2463f7fb6b606f29af9f2b85c9562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/69e2463f7fb6b606f29af9f2b85c9562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/69e2463f7fb6b606f29af9f2b85c9562.jpg\\\"]','','A类一等品，无荧光承诺',1,6,'http://yanxuan.nosdn.127.net/14d3a47ccf52815baf6df308be6db5a6.png','',0,0,'件',99.00,79.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116005,'1116005','条纹长袖海魂衫（女婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/24db6b40ecc02d111f136918a3ee0e29.jpg\\\", \\\"http://yanxuan.nosdn.127.net/24db6b40ecc02d111f136918a3ee0e29.jpg\\\", \\\"http://yanxuan.nosdn.127.net/24db6b40ecc02d111f136918a3ee0e29.jpg\\\", \\\"http://yanxuan.nosdn.127.net/24db6b40ecc02d111f136918a3ee0e29.jpg\\\", \\\"http://yanxuan.nosdn.127.net/24db6b40ecc02d111f136918a3ee0e29.jpg\\\"]','','纯棉亲肤娃娃衫',1,5,'http://yanxuan.nosdn.127.net/71937456c3cd654f936f619201a79c09.png','',0,0,'件',99.00,79.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116008,'1116008','棉双层纱波点娃娃裙（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/1fafe089c873ba699797fe6a41f566bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1fafe089c873ba699797fe6a41f566bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1fafe089c873ba699797fe6a41f566bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1fafe089c873ba699797fe6a41f566bd.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1fafe089c873ba699797fe6a41f566bd.jpg\\\"]','','波点娃娃裙搭配面包裤',1,9,'http://yanxuan.nosdn.127.net/149a09a391ea5a888debf50b9dc4ed7b.png','',0,0,'件',119.00,99.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116011,'1116011','蔓越莓曲奇 200克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/1900349493220bfebcc67b2b6466e9f5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1900349493220bfebcc67b2b6466e9f5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1900349493220bfebcc67b2b6466e9f5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1900349493220bfebcc67b2b6466e9f5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1900349493220bfebcc67b2b6466e9f5.jpg\\\"]','','酥脆奶香，甜酸回味',1,5,'http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png','',1,1,'件',56.00,36.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116030,'1116030','罗马假日 永生花',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/30ed774f89cd6f59b4f0ed5d9e6cbc77.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f079e52277f71656936a0350451ffad2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/26c25328c6e044f47534b3e9582d1f2a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9dad4607a678e730230b68bf4fbf5255.jpg\\\"]','','黑粉的性感结合',1,4,'http://yanxuan.nosdn.127.net/9d59a22b5aff348b5aba5fc7e451ea4d.png','',0,0,'件',459.00,439.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/52119891a3013b0bc5bb7acb96f27b09.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52119891a3013b0bc5bb7acb96f27b09.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7aad301c49e4b4ac31b6a5c2ff961084.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7aad301c49e4b4ac31b6a5c2ff961084.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/acda526adc6f8c69fe78629508a9ff83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/acda526adc6f8c69fe78629508a9ff83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0ba77f8820b98d3d14b6288457e4ba6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0ba77f8820b98d3d14b6288457e4ba6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/763516409d3720a57aef6130e6162bd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/763516409d3720a57aef6130e6162bd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1135909130ce5e577b3bfba553b765da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1135909130ce5e577b3bfba553b765da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71b1a285d4b205679cff83d5a845e496.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71b1a285d4b205679cff83d5a845e496.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/262488c9a83012a73cb4cf2033ddcbd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/262488c9a83012a73cb4cf2033ddcbd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f28f2144fffc730d0fa1649f62d90e55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f28f2144fffc730d0fa1649f62d90e55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4617c511270ad4a83b4c43dea2a91ee6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4617c511270ad4a83b4c43dea2a91ee6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d17cd0be9cfc4624fb058662fd898515.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d17cd0be9cfc4624fb058662fd898515.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58a038c6be056de449bc79a8c102286f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58a038c6be056de449bc79a8c102286f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78f6119baa644d598d6b5a35df27a0d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78f6119baa644d598d6b5a35df27a0d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47fa5da3b3f490f321fe86331ab10d6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47fa5da3b3f490f321fe86331ab10d6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ddaca5bbbbbf0b606764233b2282b25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ddaca5bbbbbf0b606764233b2282b25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eabab9779be18dae3ac805293d4216fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eabab9779be18dae3ac805293d4216fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1890ad60a18c4f692aa192536a36c48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1890ad60a18c4f692aa192536a36c48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00df2f6498b721ff0e7e2107787e37e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00df2f6498b721ff0e7e2107787e37e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6124ba09896786076cbdd12fb07c652c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6124ba09896786076cbdd12fb07c652c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89614d0d2194aa2539a984056b8bf639.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89614d0d2194aa2539a984056b8bf639.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/050ac06f91828d346a4711c0773e7d51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/050ac06f91828d346a4711c0773e7d51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3caa9b2882b9d9b73faefad3e41891fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3caa9b2882b9d9b73faefad3e41891fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aba134af8719641e3fd14692fdb49f88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aba134af8719641e3fd14692fdb49f88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd15551913bace0793c191e86e63412f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd15551913bace0793c191e86e63412f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be891d204e489ba2547f1dd375414b42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be891d204e489ba2547f1dd375414b42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d716679f74749a7a096680bd8a532166.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d716679f74749a7a096680bd8a532166.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d7fe2b7729237d8aa281f4c7128e469.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d7fe2b7729237d8aa281f4c7128e469.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/920006e3a4fdace47bad39791e2be18d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/920006e3a4fdace47bad39791e2be18d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9f436666176242cd083deac7a1f974d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9f436666176242cd083deac7a1f974d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fe7fb69bde12c318347e13892ee8835.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fe7fb69bde12c318347e13892ee8835.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0232b217577ebd39c402599a6a2831d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0232b217577ebd39c402599a6a2831d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de8a88d4be8764dcf28bb82e5add05bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de8a88d4be8764dcf28bb82e5add05bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20588fcd422660d6ed5cfd66b20614b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20588fcd422660d6ed5cfd66b20614b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a30b5785696d64c18d462d02a98ef220.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a30b5785696d64c18d462d02a98ef220.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c93666cbdc49307a29c115fdfbf2b0fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c93666cbdc49307a29c115fdfbf2b0fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0432fb444a253ae95bbc944223d241b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0432fb444a253ae95bbc944223d241b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/174cef303a1ccb3c3c7b3abcc6d69a79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/174cef303a1ccb3c3c7b3abcc6d69a79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df1933e20477d0b12194865c8a395acc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df1933e20477d0b12194865c8a395acc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68efb1f9ff10ccb5355121a2e7a103b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68efb1f9ff10ccb5355121a2e7a103b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/941b363c45519392d1f08af67fc0aeb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/941b363c45519392d1f08af67fc0aeb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d542ea99bca443dd8823592a0f6ca6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d542ea99bca443dd8823592a0f6ca6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1c2a753686766d97002d30658611327.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1c2a753686766d97002d30658611327.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc6a7179190ce7963006dba0547531c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc6a7179190ce7963006dba0547531c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df8cd196d673f7616aa55e12aca45fb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df8cd196d673f7616aa55e12aca45fb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67017cf2f13209590998f84128df1011.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67017cf2f13209590998f84128df1011.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b39df196ae3603ba6ec6647e9f326837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b39df196ae3603ba6ec6647e9f326837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd2eed622687250febea37bb62b64b16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd2eed622687250febea37bb62b64b16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c2230bc26cdc64f4277d61d4c1374f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c2230bc26cdc64f4277d61d4c1374f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dea4422a864f4e10b9095433117cb1f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dea4422a864f4e10b9095433117cb1f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56d863eb01d39f9185fdd88659eb0684.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56d863eb01d39f9185fdd88659eb0684.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95faa6f6cb97f2c55b7050328494de12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95faa6f6cb97f2c55b7050328494de12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c04cd28fc106614baca4abe505a7629.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c04cd28fc106614baca4abe505a7629.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c711766e6969a41f9560cd76f49d90b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c711766e6969a41f9560cd76f49d90b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/341dff60f8cb4d6b60ac4bbd48260b10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/341dff60f8cb4d6b60ac4bbd48260b10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0973bbfd9d85273e21e74a30ba1d1b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0973bbfd9d85273e21e74a30ba1d1b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73d8985fddd28371b0387076e6d39e70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73d8985fddd28371b0387076e6d39e70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/262f2a347ce86ca2dc16c0bdb94a1446.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/262f2a347ce86ca2dc16c0bdb94a1446.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9366d8851805dd04a022e7ccc4cb794.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9366d8851805dd04a022e7ccc4cb794.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f2fb72b90019f51b45389e9f1111583.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f2fb72b90019f51b45389e9f1111583.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116031,'1116031','怦然心动 永生花',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/562ef1acdc8c2a7d5c1fd1de8d778074.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2c74a79d58a9f77cc5214bfdc807d4be.jpg\\\", \\\"http://yanxuan.nosdn.127.net/46a7feb93c24ce74b6a686053e2ddbc8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7b3084f82ec3a4389f5e5db63a82b087.jpg\\\"]','','音乐与花的浪漫碰撞',1,2,'http://yanxuan.nosdn.127.net/f88c3dc42f3e4d7da1ded8c1ee6a97ba.png','',0,0,'件',459.00,439.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1f8fde879eca2c5da12d42065a6a7c92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f8fde879eca2c5da12d42065a6a7c92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e83253d44444e00c22dc2854b25382a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e83253d44444e00c22dc2854b25382a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/231af05c4c520e6c09969cb93618b275.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/231af05c4c520e6c09969cb93618b275.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6a0f0b81b8ccd226be51a5db145bb13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6a0f0b81b8ccd226be51a5db145bb13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64eb0d46084c93410fb4bff14e1fe8a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64eb0d46084c93410fb4bff14e1fe8a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b1d5203bb18d0c4e3534bf41c610002.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b1d5203bb18d0c4e3534bf41c610002.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3668e49363f10b8442476d0c62e4c1b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3668e49363f10b8442476d0c62e4c1b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a93897c61b4a7b8ce77dbb5e80fe1d74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a93897c61b4a7b8ce77dbb5e80fe1d74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32598f5b1b77543b85fbfdb1a1f7a2ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32598f5b1b77543b85fbfdb1a1f7a2ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbd6c51e27f944c73ba85e1a6701b762.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbd6c51e27f944c73ba85e1a6701b762.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14b873f6a9efff885a4b799e0b7c48f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14b873f6a9efff885a4b799e0b7c48f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7de96c6f0e6884656bb655a7d16fab17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7de96c6f0e6884656bb655a7d16fab17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23642bec39f7a3d43c1c41fa75096671.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23642bec39f7a3d43c1c41fa75096671.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4da6db8ecc03fd2eb08dd73d3db2c1a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4da6db8ecc03fd2eb08dd73d3db2c1a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8b31f9da5e8b70e344d43c647a7dfb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8b31f9da5e8b70e344d43c647a7dfb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e36833de623d2280db9372dce636564e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e36833de623d2280db9372dce636564e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/035ad8e4e650aa656698badd2742300e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/035ad8e4e650aa656698badd2742300e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27713a06a7c720c057231dabaa257f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27713a06a7c720c057231dabaa257f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e9a60403dbb41d9f3d390c261b37514.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e9a60403dbb41d9f3d390c261b37514.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ab0ad63ae7cf999de2a90b970ce88de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ab0ad63ae7cf999de2a90b970ce88de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0ab6efedce6b0f7840421f9e9576845.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0ab6efedce6b0f7840421f9e9576845.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f2c6964649681cff624261ce2651298.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f2c6964649681cff624261ce2651298.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e6ddfbccd07eb8062eee005ecdfe132.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e6ddfbccd07eb8062eee005ecdfe132.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7be5e5bad19b16ea8df4ed3779c0c71a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7be5e5bad19b16ea8df4ed3779c0c71a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/964980d2361fdb0cdbc81d6a9f96088e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/964980d2361fdb0cdbc81d6a9f96088e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/616db1683eb6635e8c32c768d721f436.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/616db1683eb6635e8c32c768d721f436.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7b14c2ba90064f3f6232faee6b0725c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7b14c2ba90064f3f6232faee6b0725c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86f0a8a9691c4611dd0fe1e9a5c84bd5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86f0a8a9691c4611dd0fe1e9a5c84bd5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4875d80c0b2b7aafa04e00539f39637f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4875d80c0b2b7aafa04e00539f39637f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7ec652544724ba8bbb714e552bd4f97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7ec652544724ba8bbb714e552bd4f97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edb9b4e1b864bb8c81d56b013566a88c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edb9b4e1b864bb8c81d56b013566a88c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a89ecd98fa4ab7ab63c0fd10d9ef31a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a89ecd98fa4ab7ab63c0fd10d9ef31a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbf4fd1d2b73b4bce7b7ba4e99562ad1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbf4fd1d2b73b4bce7b7ba4e99562ad1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbb46b9ce6174088b879950f2a3ec851.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbb46b9ce6174088b879950f2a3ec851.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0ba5de59fa74bd35cabf5d57c9be1fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0ba5de59fa74bd35cabf5d57c9be1fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c12862d30dae922563d886e2a740e281.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c12862d30dae922563d886e2a740e281.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78f584abdf567cfc8a65012e111bd173.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78f584abdf567cfc8a65012e111bd173.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d07018e220531306755d9aff3e88b5fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d07018e220531306755d9aff3e88b5fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cfa16826c4d55bcfb23643a6e07b5b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cfa16826c4d55bcfb23643a6e07b5b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ec9c0c398115a803b6f1cdf6ddd25f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ec9c0c398115a803b6f1cdf6ddd25f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/093d3941f2ac24bd5fef654d4ddc72ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/093d3941f2ac24bd5fef654d4ddc72ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2f72361252cd006faa0220683a45dbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2f72361252cd006faa0220683a45dbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60118d449ed00ae28fcd0a7a970d185b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60118d449ed00ae28fcd0a7a970d185b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2f39559f1d635dad8a8e238178f6704.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2f39559f1d635dad8a8e238178f6704.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1123c946875caa552ec8d26103828f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1123c946875caa552ec8d26103828f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b83441ec460295662adfad5bb375967b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b83441ec460295662adfad5bb375967b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/172db1c1d303f0cfb2f74bf95422da78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/172db1c1d303f0cfb2f74bf95422da78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f9816aec40f2de91ebc5925ef8d7330.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f9816aec40f2de91ebc5925ef8d7330.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d0cb944c7bd57a65f9a50678771cc02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d0cb944c7bd57a65f9a50678771cc02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3616ccc1b81e11add08967cf29ba1bf3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3616ccc1b81e11add08967cf29ba1bf3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e464578c2c484a5fed8c62136b695f02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e464578c2c484a5fed8c62136b695f02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5131472582e8e698c4862eca958662f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5131472582e8e698c4862eca958662f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00b86dc531883833cc924143d1b7af61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00b86dc531883833cc924143d1b7af61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63461dbf9068e5fbbfcb27bb46140cc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63461dbf9068e5fbbfcb27bb46140cc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3cb76e13daa99464c9026b74679891b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3cb76e13daa99464c9026b74679891b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8cba57e902fb6a3f714c1e289de4c6ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8cba57e902fb6a3f714c1e289de4c6ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df2fc3df57586246497b42f105befb7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df2fc3df57586246497b42f105befb7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ee008ef606dbbc78da9a2b81a3fd76c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ee008ef606dbbc78da9a2b81a3fd76c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a676cc3d44822ad4df474651a65822b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a676cc3d44822ad4df474651a65822b0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116032,'1116032','怀抱休闲椅组合',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/25e3cedac39679c138abbe24826aaa89.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d8ec444138673ac90b7932aee798b0ae.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e1c3a86d25d7865d8bd25330d55044ac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8ba91bc71a0d9670d2b3436bfc802376.jpg\\\"]','','敦厚包裹感 葛优躺神器',1,1,'http://yanxuan.nosdn.127.net/45176a783387751fc07a07f5031dd62c.png','',0,1,'件',3519.00,3499.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/88d52c4926392aa6653c45d1388e3280.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88d52c4926392aa6653c45d1388e3280.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/668187f24a64b4d8fcd44d224741e714.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/668187f24a64b4d8fcd44d224741e714.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/574615fed83af630261df73b98da707f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/574615fed83af630261df73b98da707f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cae837e54bc33d821551054ab68862ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cae837e54bc33d821551054ab68862ce.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13fd44d78b82f4e6a74d3312531ea8a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13fd44d78b82f4e6a74d3312531ea8a8.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67a377423dc9bf6837210ef4146eb286.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67a377423dc9bf6837210ef4146eb286.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8a679b7e44eaeeae77022347c8e491e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8a679b7e44eaeeae77022347c8e491e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf9045bec58bf0bf60ccc5362746d6fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf9045bec58bf0bf60ccc5362746d6fb.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a317543d10929b8a1d2dad955264a1e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a317543d10929b8a1d2dad955264a1e3.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c00736edc5a48031dcb09785007884f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c00736edc5a48031dcb09785007884f0.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c55e7b8a4f4ea6980667d7c61a36e66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c55e7b8a4f4ea6980667d7c61a36e66.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b0f3f57248f3b823aef76b0ed91214b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b0f3f57248f3b823aef76b0ed91214b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b780bba60d8a56055c87ce0c6fdbe89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b780bba60d8a56055c87ce0c6fdbe89.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0eb69b9d33c756bb77e392dcf0bb597c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0eb69b9d33c756bb77e392dcf0bb597c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b585e58a719503db9b8eca8fdccb352.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b585e58a719503db9b8eca8fdccb352.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dde4f43a23d4f0e1a3b9efefe8d265ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dde4f43a23d4f0e1a3b9efefe8d265ac.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c0ecf0409ea9eda721535a82dca4746.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c0ecf0409ea9eda721535a82dca4746.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72d61ccfc27ac87dedecf8486be3b64b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72d61ccfc27ac87dedecf8486be3b64b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c0cde5c4c095ebba2e028a83ae2efdc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c0cde5c4c095ebba2e028a83ae2efdc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8106e6013e8fd26af4e3c77093a7670d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8106e6013e8fd26af4e3c77093a7670d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc04391abc45187476824dd8bae45d64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc04391abc45187476824dd8bae45d64.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/518ea06314e2c087567b0740c4215565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/518ea06314e2c087567b0740c4215565.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0953e49fca6fe0df017d95e6cbba6415.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0953e49fca6fe0df017d95e6cbba6415.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3d734b26b4264dd0a12637a4bdf5421.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3d734b26b4264dd0a12637a4bdf5421.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/025c947c2166a9866fe83a1ec55766cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/025c947c2166a9866fe83a1ec55766cc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb2bb395dbea5e15a10410680b31b1fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb2bb395dbea5e15a10410680b31b1fc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e731e9ba13f1bd3de2550bb4658921ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e731e9ba13f1bd3de2550bb4658921ba.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6904c0eab54fe8dede20794373640d18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6904c0eab54fe8dede20794373640d18.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0a1f01da92b00576e3d95353ba00afc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0a1f01da92b00576e3d95353ba00afc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06a4080c4c1c095c22090234f96ed226.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06a4080c4c1c095c22090234f96ed226.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46e76c1e1ac52b512e23e1ff621b5aa1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46e76c1e1ac52b512e23e1ff621b5aa1.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f61bbbcc5827cbf2ff68c7950622414f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f61bbbcc5827cbf2ff68c7950622414f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb6cb2a0ed0de99b5ee6692618ed8342.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb6cb2a0ed0de99b5ee6692618ed8342.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/333707fd687185d03c828e5518ff13d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/333707fd687185d03c828e5518ff13d6.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25124a2a017492df6fced6dad85c1911.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25124a2a017492df6fced6dad85c1911.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10b8919cfd9084deefc26be2bd3576f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10b8919cfd9084deefc26be2bd3576f6.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef9d385bef82407d14d8c4970181e789.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef9d385bef82407d14d8c4970181e789.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1106a8e1cd4fe8accd800517609a825a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1106a8e1cd4fe8accd800517609a825a.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b97c0ccbdba3fa51eeedb68041124c88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b97c0ccbdba3fa51eeedb68041124c88.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a64f226818e68fb61add735577606126.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a64f226818e68fb61add735577606126.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f271ee33c5989a60ed932ab031403937.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f271ee33c5989a60ed932ab031403937.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/317d03a5d1fe21e1f2109dd47c8d64dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/317d03a5d1fe21e1f2109dd47c8d64dd.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3979ba529061bddc53546ba35fc3423e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3979ba529061bddc53546ba35fc3423e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0cfaccfe5688dddcc0cfeb483657df4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0cfaccfe5688dddcc0cfeb483657df4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bb0d52ee071bc0785c8520beb7e0186.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bb0d52ee071bc0785c8520beb7e0186.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9432f203fb8201ef2163fbdc9733bf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9432f203fb8201ef2163fbdc9733bf8.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1fde4a66048448168323c750a00eb252.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1fde4a66048448168323c750a00eb252.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eaf1344d59e4abc904944927ef0ed456.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eaf1344d59e4abc904944927ef0ed456.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96d7acf75b95077be963b4bfbbac1567.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96d7acf75b95077be963b4bfbbac1567.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a3975461a987e25f6245842599539fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a3975461a987e25f6245842599539fe.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e30f6a3e529b0f3c20952be4e6a7db95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e30f6a3e529b0f3c20952be4e6a7db95.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a59d1eb6f3e7dbc9e736eeeff66ab14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a59d1eb6f3e7dbc9e736eeeff66ab14.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/996b0dfc0047f527a6405f307a123783.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/996b0dfc0047f527a6405f307a123783.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb4c00b89e2b9f97a63c82b0284e8055.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb4c00b89e2b9f97a63c82b0284e8055.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dffecb54355d3e772355b84dedcea2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dffecb54355d3e772355b84dedcea2d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7212745591c3a80dc9548a0d9e34a796.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7212745591c3a80dc9548a0d9e34a796.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef390be5fc6cf4cda5461bddb12cb87b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef390be5fc6cf4cda5461bddb12cb87b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ea1314f11d6c90e77d51b799c2cc3b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ea1314f11d6c90e77d51b799c2cc3b9.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3224b07340abf6a8f51d4e9f06bae9c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3224b07340abf6a8f51d4e9f06bae9c2.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/843c954c1320f8481e5cfc802f51eb60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/843c954c1320f8481e5cfc802f51eb60.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9171e66174ae921b8a0a575704afc5af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9171e66174ae921b8a0a575704afc5af.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93927264f8848f36e5796cc178dd1b81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93927264f8848f36e5796cc178dd1b81.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1116033,'1116033','多功能人体工学转椅',1015000,0,'[\\\"http://yanxuan.nosdn.127.net/dc4b2d5ddc48557bd9bdce6742b66562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/72cb7039372e43b4dbb9394d08374933.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c8633b2b24e03bf7d5d43e39d34af757.jpg\\\", \\\"http://yanxuan.nosdn.127.net/22c0a95be135ea04bf1133e566906f4e.jpg\\\"]','','预计5月10号开始发货',1,14,'http://yanxuan.nosdn.127.net/f1dbf1d9967c478ee6def81ed40734a2.png','',0,0,'件',1419.00,1399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/a35c2f6c405130457f07485d8110c5fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a35c2f6c405130457f07485d8110c5fe.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d49df12f1c65dbce39b70a230d829900.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d49df12f1c65dbce39b70a230d829900.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abe704206a3d57e44625cc1793ada434.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abe704206a3d57e44625cc1793ada434.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8683d0333725186cbdd05a8038ce77b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8683d0333725186cbdd05a8038ce77b3.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a5149be65741bcc63788b8bd54daa27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a5149be65741bcc63788b8bd54daa27.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c91550c140f150270e7d79791844928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c91550c140f150270e7d79791844928.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/091afce4f8e25191eec74c9e1e9dbd79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/091afce4f8e25191eec74c9e1e9dbd79.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d42023d5c13d600bb2452234519ff0a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d42023d5c13d600bb2452234519ff0a4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c58578f82e3cb240f0d52c7fddc27bac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c58578f82e3cb240f0d52c7fddc27bac.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/236429032fea116515784b192735c0ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/236429032fea116515784b192735c0ac.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/975e7e104e2ae217584763b9c75cd4ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/975e7e104e2ae217584763b9c75cd4ef.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be50421c492237297e7e8bb2fcc6a9cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be50421c492237297e7e8bb2fcc6a9cf.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76442972358a4eeeed620810d2f574b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76442972358a4eeeed620810d2f574b5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73f51a64113eb1a5e9559971f8b94e5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73f51a64113eb1a5e9559971f8b94e5c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b29317f0d378c2c7f0ba2bdb6527277.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b29317f0d378c2c7f0ba2bdb6527277.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9afe14c0dad5e49d5a798478df5f8b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9afe14c0dad5e49d5a798478df5f8b6.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f205e6de0fcdd91368ccac1275235a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f205e6de0fcdd91368ccac1275235a5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99648e1b4fd46cd46fc791be63781e36.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99648e1b4fd46cd46fc791be63781e36.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5549d39568ed01630b7774412c98034b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5549d39568ed01630b7774412c98034b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3965b5d4e8c1130ad619df283acece41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3965b5d4e8c1130ad619df283acece41.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12cdcfdad4e2647c353d305977aae6e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12cdcfdad4e2647c353d305977aae6e0.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc14e35c75f4cf35a614c4db06a841ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc14e35c75f4cf35a614c4db06a841ec.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d09628d897a9451ea78f101aeab8e3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d09628d897a9451ea78f101aeab8e3d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fcc8864a72677e66a171ba9974f0ca4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fcc8864a72677e66a171ba9974f0ca4.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d8b46aa87dedb72385e1719eb65a6d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d8b46aa87dedb72385e1719eb65a6d9.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ffa698dd8a3fb2ae2fdb1c6ec160617.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ffa698dd8a3fb2ae2fdb1c6ec160617.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2da2809ff213e248b1408e661ae8d925.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2da2809ff213e248b1408e661ae8d925.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7756ac7e9a82e97b6b4b674e4e366685.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7756ac7e9a82e97b6b4b674e4e366685.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/baa8d3ed6847041f3b4e8c32af9c95a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/baa8d3ed6847041f3b4e8c32af9c95a3.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/691d27d43d2532297e3266c9e0e56525.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/691d27d43d2532297e3266c9e0e56525.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea4c78203418892d2ada3e39497f6521.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea4c78203418892d2ada3e39497f6521.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/535974f413df30de66e1211008ea26e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/535974f413df30de66e1211008ea26e7.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba9b8932741a8a391ea4039f3907d86b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba9b8932741a8a391ea4039f3907d86b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41cde8cf7bcc7800f47a10d9e06a5e20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41cde8cf7bcc7800f47a10d9e06a5e20.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4d3f83bb6fa700f0f12f4c5b3197720.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4d3f83bb6fa700f0f12f4c5b3197720.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1ea50299d2b58c7b77ee3029e249133.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1ea50299d2b58c7b77ee3029e249133.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b08dea5b4563eb49bdd9aad1e1c9f433.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b08dea5b4563eb49bdd9aad1e1c9f433.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97e66d00e3a2a5bd2421f9974ae51efa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97e66d00e3a2a5bd2421f9974ae51efa.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/781a0089cedbd5772ca82c1738ea8e55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/781a0089cedbd5772ca82c1738ea8e55.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e5d0797adbbef9f6eb3af266748ae39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e5d0797adbbef9f6eb3af266748ae39.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d8e44dad25c8b9f7f3234a2cc62b6af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d8e44dad25c8b9f7f3234a2cc62b6af.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d643dc0a24767f0ec81234f9722bbf83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d643dc0a24767f0ec81234f9722bbf83.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c122aafba3a0588b6e37c5f2a63796ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c122aafba3a0588b6e37c5f2a63796ad.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4985c059ff618a7c74b47f22ca291a49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4985c059ff618a7c74b47f22ca291a49.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de6a54cddf00cfb25fdd226ec89befb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de6a54cddf00cfb25fdd226ec89befb1.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eda812fa7f6b2254111602e17ee66764.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eda812fa7f6b2254111602e17ee66764.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb64397692cff14073cfc67ee7b8f970.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb64397692cff14073cfc67ee7b8f970.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/200d95892946f8eedc5ff1ae8fb8a3e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/200d95892946f8eedc5ff1ae8fb8a3e2.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c55a38a436f7f0e893959db4ead2c6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c55a38a436f7f0e893959db4ead2c6a.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91f4362e02d4860a8e707ff837a68b0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91f4362e02d4860a8e707ff837a68b0a.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da351ce650737304c47f50529048ce35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da351ce650737304c47f50529048ce35.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee474a5b5d85ae9f6013ed7b628b71ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee474a5b5d85ae9f6013ed7b628b71ec.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36bc5b0e74bec3554fc61c1df1608148.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36bc5b0e74bec3554fc61c1df1608148.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2826a1846567c28964e44834f4a75585.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2826a1846567c28964e44834f4a75585.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/623f2742c0e4c422ab4994846ea1e4df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/623f2742c0e4c422ab4994846ea1e4df.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a7671e8e21e8d0433648e9c1a5dce7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a7671e8e21e8d0433648e9c1a5dce7e.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abafb52fdef5cd3a2c95834c9708c0b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abafb52fdef5cd3a2c95834c9708c0b9.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f95931a53b8fb862a88cf2ae74f4976b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f95931a53b8fb862a88cf2ae74f4976b.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9d2665980ed7dd5282ea62d1dd6612f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9d2665980ed7dd5282ea62d1dd6612f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65f16f5fc693da8910be533c35039254.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65f16f5fc693da8910be533c35039254.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1aca96b7e433529c8c8b322790301c9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1aca96b7e433529c8c8b322790301c9c.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2270078225ce988b17ff74e243c3991.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2270078225ce988b17ff74e243c3991.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e18275185da4383a63538cccf511094f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e18275185da4383a63538cccf511094f.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d768713b91aa6f8e55838c6391910cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d768713b91aa6f8e55838c6391910cc.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b782a2b46bd3a4b9e1759c2d27d7c386.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b782a2b46bd3a4b9e1759c2d27d7c386.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19640c76822d0ea2800d5d85ab010a88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19640c76822d0ea2800d5d85ab010a88.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cba52e53018cc367f8dc1113275800c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cba52e53018cc367f8dc1113275800c1.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13f27ff5bd17aa084b2966dd1b025d04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13f27ff5bd17aa084b2966dd1b025d04.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/550cfd3e8d44686f03e2d7ac92b09fa3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/550cfd3e8d44686f03e2d7ac92b09fa3.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc8199816c961fc76467ad5b9e3b3684.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc8199816c961fc76467ad5b9e3b3684.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2ed2dc26da3fcc47fc1cf36dc3db093.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2ed2dc26da3fcc47fc1cf36dc3db093.jpg\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1125010,'1125010','格纹棉质褶皱娃娃裙（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/cdd7640a18e30a9477e361070aa1f8d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdd7640a18e30a9477e361070aa1f8d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdd7640a18e30a9477e361070aa1f8d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdd7640a18e30a9477e361070aa1f8d5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cdd7640a18e30a9477e361070aa1f8d5.jpg\\\"]','','彼得潘领 内搭短裤',1,7,'http://yanxuan.nosdn.127.net/f82995ccb2a2f6beddd4ad794f5da2a1.png','',0,0,'件',179.00,159.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1125011,'1125011','格纹棉质衬衣（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/4bdb2505c78946143da20543fc318749.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4bdb2505c78946143da20543fc318749.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4bdb2505c78946143da20543fc318749.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4bdb2505c78946143da20543fc318749.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4bdb2505c78946143da20543fc318749.jpg\\\"]','','法式翻领 气质格纹',1,8,'http://yanxuan.nosdn.127.net/be9740b734087f294f59a6560b932bc1.png','',0,0,'件',159.00,139.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1125016,'1125016','大丰收收纳摆件',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/16dd2a12b4ab2651dc7450127eed6d68.png\\\", \\\"http://yanxuan.nosdn.127.net/fe0f0fbc76283801b5b565c629f9cf35.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1d316791256871884416a4ae770e0a00.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6617f833f475070d3302644032c82f03.jpg\\\"]','','兼具设计感与实用性',1,14,'http://yanxuan.nosdn.127.net/46f3059b020eb3900e9af8e8c1af8a97.png','',0,0,'件',159.00,139.00,'<p><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae27e0a0c0ab324a41f8b2d248780ad9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae27e0a0c0ab324a41f8b2d248780ad9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/987d4a3348e3ebe7f2c1440226fb4cb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/987d4a3348e3ebe7f2c1440226fb4cb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13e4aa784b0eb73bfb6b5b3e5977b243.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13e4aa784b0eb73bfb6b5b3e5977b243.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6db31027e707b02234f23c756be58af2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6db31027e707b02234f23c756be58af2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cc9ee906052c55216cb39bf8486dc4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cc9ee906052c55216cb39bf8486dc4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3147f03dbe5a1c4c2ffefb029447eefc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3147f03dbe5a1c4c2ffefb029447eefc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04528ccb2039eedf2ee402fee77301c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04528ccb2039eedf2ee402fee77301c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fa302f9f9c7184d664dc1e54d59f417.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fa302f9f9c7184d664dc1e54d59f417.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4672db948312ed04f3e6d15aa38b458a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4672db948312ed04f3e6d15aa38b458a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98d129cece00b5ce0463d28b98b40a02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98d129cece00b5ce0463d28b98b40a02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e323f9d77edd608b1e5e8e198b0edf4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e323f9d77edd608b1e5e8e198b0edf4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2200ffe2ab0a7fbef6d7fc6156259bda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2200ffe2ab0a7fbef6d7fc6156259bda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/809f7fa3f0946e0f071f2a8cf6f04d30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/809f7fa3f0946e0f071f2a8cf6f04d30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bcef4f852c8e352402b9505e92b1d98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bcef4f852c8e352402b9505e92b1d98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dc8f9234990ef09bcbca29095c3454e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dc8f9234990ef09bcbca29095c3454e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b78ea3f7063792c1d8eaa14e31da7416.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b78ea3f7063792c1d8eaa14e31da7416.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c836ec4710bf71a67c7347530e708974.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c836ec4710bf71a67c7347530e708974.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef4691a37792a9a91e1e9495f10eee2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef4691a37792a9a91e1e9495f10eee2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/423d98ad66c3e43960d613c9392a94ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/423d98ad66c3e43960d613c9392a94ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d82731aeadfa5991f9afb47cd85c7263.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d82731aeadfa5991f9afb47cd85c7263.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70763b7fb7facddc6e2f053e596cf879.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70763b7fb7facddc6e2f053e596cf879.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/437ad106a1fd0f8f84c5ff52568e56a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/437ad106a1fd0f8f84c5ff52568e56a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21fbefc6cdff6874487678915a57bc50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21fbefc6cdff6874487678915a57bc50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb4184aa045e950887fcb49d9c1ff850.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb4184aa045e950887fcb49d9c1ff850.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47c2ca629524b9f4f57f5ea83d9397c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47c2ca629524b9f4f57f5ea83d9397c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f9f766b6cde02b09d1d757bad857b16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f9f766b6cde02b09d1d757bad857b16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2a5fd13539ec6952af8a1500b01d194.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2a5fd13539ec6952af8a1500b01d194.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0580fde8988f4f549aeea35adbb379bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0580fde8988f4f549aeea35adbb379bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1627cb343db58af5e477a493c5579d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1627cb343db58af5e477a493c5579d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80372df184a4486aac0b9bc7d64179eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80372df184a4486aac0b9bc7d64179eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/357e9f911d22e61b0bf316bd9a60e813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/357e9f911d22e61b0bf316bd9a60e813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd5ffb54d54ad9cd45a2bb093878aebc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd5ffb54d54ad9cd45a2bb093878aebc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41511325b5f2d1809937d656c4436539.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41511325b5f2d1809937d656c4436539.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0ae5c4f81d44a7e39be64e22b20fb9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0ae5c4f81d44a7e39be64e22b20fb9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85620c4bbf824adaad9357ebcf63100f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85620c4bbf824adaad9357ebcf63100f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20c40764fa85e99b9957ec1ab9ef47f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20c40764fa85e99b9957ec1ab9ef47f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/824167c4acb7f568a207de964c9e3950.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/824167c4acb7f568a207de964c9e3950.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a009b2ba646a28ec871e280cfda71970.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a009b2ba646a28ec871e280cfda71970.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff81e9f5d4e2f7cd9bdf1ca8b8716590.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff81e9f5d4e2f7cd9bdf1ca8b8716590.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2b8815482e71297b5d866093d84899f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2b8815482e71297b5d866093d84899f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6db10a758905d3e85231a35f1f10a2fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6db10a758905d3e85231a35f1f10a2fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96bfe146d6c11c42fdca1d609f326536.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96bfe146d6c11c42fdca1d609f326536.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4d890102d42ff9c6467ab23cddbaa8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4d890102d42ff9c6467ab23cddbaa8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1199aadeb28c7373a4bd7d2408790620.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1199aadeb28c7373a4bd7d2408790620.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bb6be9a67727515fa270bf9628fb4a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bb6be9a67727515fa270bf9628fb4a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/015c9f8d18232f2fd932d77e89ef5127.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/015c9f8d18232f2fd932d77e89ef5127.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a43c8b6676832dc4ff37cd4183e9e7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a43c8b6676832dc4ff37cd4183e9e7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7cd095a43dca96f64994e6e29092c33a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7cd095a43dca96f64994e6e29092c33a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43d1f07be1aee43e1730bec251c430f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43d1f07be1aee43e1730bec251c430f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/145e05fcee62c4c61cb1081b15133422.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/145e05fcee62c4c61cb1081b15133422.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1125017,'1125017','天鹅船创意摆件',1011004,0,'[\\\"http://yanxuan.nosdn.127.net/c8527661e3c87a530e30bd110a14faa9.png\\\", \\\"http://yanxuan.nosdn.127.net/fbef44dbf82b0b92c60e71b41c447f72.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0890a572df4316f7020c84535b696bfe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cb3615bf2bcbc52b1f2ef1c64e2b3cac.jpg\\\"]','','造型可人，精巧实用',1,15,'http://yanxuan.nosdn.127.net/ae63fed274187e3e572043c53fefd836.png','',0,0,'件',119.00,99.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/a51dfc28aa51d1b4771cd67040e606bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a51dfc28aa51d1b4771cd67040e606bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0aa16773f6637c6d03e031491a828fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0aa16773f6637c6d03e031491a828fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15b29314162f7a4058c2546e7704fefb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15b29314162f7a4058c2546e7704fefb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b89e060a6a1fdbe350784ff7e39d2f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b89e060a6a1fdbe350784ff7e39d2f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0906675208be301e4fce31d761366ef1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0906675208be301e4fce31d761366ef1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f7bd4bc1d95ac4fefa49bc4011fa18e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f7bd4bc1d95ac4fefa49bc4011fa18e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41fa6ebead02bcde81a7b7c1ad51d199.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41fa6ebead02bcde81a7b7c1ad51d199.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fb341ce2b44d9cac286ee3573bd1448.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fb341ce2b44d9cac286ee3573bd1448.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/446aa2f61b820732aec4387464ba6eec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/446aa2f61b820732aec4387464ba6eec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d65185d342b039333d4914d06f26b3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d65185d342b039333d4914d06f26b3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2185e0d078235feebd200752601e14a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2185e0d078235feebd200752601e14a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/281ae1164e204a908f15159bbc55d682.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/281ae1164e204a908f15159bbc55d682.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c2fbd771452be4375466eca773d5b71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c2fbd771452be4375466eca773d5b71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f9a5117024408d2ef4175e570e31b6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f9a5117024408d2ef4175e570e31b6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/889b4854a059e7aebdc02f9cd7b3d4a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/889b4854a059e7aebdc02f9cd7b3d4a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ee93a187a8048b4a45d92481d76d69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ee93a187a8048b4a45d92481d76d69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc9f7d810b79157d293927cd8b9bd6af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc9f7d810b79157d293927cd8b9bd6af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/facdaec0774f7bd948b44cff20601cc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/facdaec0774f7bd948b44cff20601cc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26b9a61917f842b65a20d71c7ce9eeb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26b9a61917f842b65a20d71c7ce9eeb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f3cd2ffbcde3c2515e971b627cf92f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f3cd2ffbcde3c2515e971b627cf92f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bddd887a78dcce7105b69bc4b7278403.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bddd887a78dcce7105b69bc4b7278403.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ae5da1a932d09bae158e27107140213.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ae5da1a932d09bae158e27107140213.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad5270a07e24be663407702d93b1726e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad5270a07e24be663407702d93b1726e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7ae98eed18dae98c68633c0b3faadd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7ae98eed18dae98c68633c0b3faadd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/349d8491cbf7df8209ff3648c8aaff56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/349d8491cbf7df8209ff3648c8aaff56.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc7b3d5b3b866b7f797c9116451174d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc7b3d5b3b866b7f797c9116451174d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf42f7ccdaba23f767b3bbbd57c8f9a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf42f7ccdaba23f767b3bbbd57c8f9a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14b8fda555eb3792186cac4ada29547b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14b8fda555eb3792186cac4ada29547b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d6eb01d8614d2301365c4af07eb3f62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d6eb01d8614d2301365c4af07eb3f62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25f9940e2cdc70a3698aca1bdd0c13fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25f9940e2cdc70a3698aca1bdd0c13fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7863d339f85ec1cabea6ffdbbb7cde5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7863d339f85ec1cabea6ffdbbb7cde5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea2478d43f3478ebe89688e49a479522.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea2478d43f3478ebe89688e49a479522.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8cd1f58b12bdcc4e583b582f19b26996.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8cd1f58b12bdcc4e583b582f19b26996.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65b153479f9a7ba1dac5f55c1045e143.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65b153479f9a7ba1dac5f55c1045e143.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36570da498aea05ab30da0b062c4f18e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36570da498aea05ab30da0b062c4f18e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4f6d9bf0f69dc04391b5e114025a144.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4f6d9bf0f69dc04391b5e114025a144.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f11681610b750c9df77971695bca463.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f11681610b750c9df77971695bca463.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d7458ad28a8c7dd09937789625d623d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d7458ad28a8c7dd09937789625d623d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3eade836202126955fef56da3094ac18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3eade836202126955fef56da3094ac18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2d2b70f33d4e49b95a116ceece3fff5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2d2b70f33d4e49b95a116ceece3fff5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2edc095b18e555ac4885151019df8700.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2edc095b18e555ac4885151019df8700.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c0e54da96db752c4ba4299efe73f543.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c0e54da96db752c4ba4299efe73f543.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bd47f5860de32e185b1bf64d2a92aa0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bd47f5860de32e185b1bf64d2a92aa0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0976af88cba94c894fd18c4405959dd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0976af88cba94c894fd18c4405959dd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fab77fe01f06d7cf816d1b29cef412ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fab77fe01f06d7cf816d1b29cef412ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51c96503b34613aefb25e8e173bba736.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51c96503b34613aefb25e8e173bba736.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9019d59726e02ee0e0160766c70aaa6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9019d59726e02ee0e0160766c70aaa6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db22ecba52a1cc7accce3d9deb2a2a3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db22ecba52a1cc7accce3d9deb2a2a3b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1125026,'1125026','中国红满月百天礼盒',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/7676cbbd83506834b9a614ae5721bc62.png\\\", \\\"http://yanxuan.nosdn.127.net/7676cbbd83506834b9a614ae5721bc62.png\\\", \\\"http://yanxuan.nosdn.127.net/7676cbbd83506834b9a614ae5721bc62.png\\\", \\\"http://yanxuan.nosdn.127.net/7676cbbd83506834b9a614ae5721bc62.png\\\", \\\"http://yanxuan.nosdn.127.net/7676cbbd83506834b9a614ae5721bc62.png\\\"]','','新生满月，送礼中国红',1,1,'http://yanxuan.nosdn.127.net/6308c120c441fd3e47658167ad944156.png','',0,0,'件',179.00,159.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127003,'1127003','AB面独立弹簧床垫 进口乳胶',1008008,0,'[\\\"http://yanxuan.nosdn.127.net/6bd1ea1d237244d05e8fafea82f90c5b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/15efb5c5c2510fe797551abaded09ae0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/71c211ce909a414279004c244997f6e9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/677f5d85fdd17be748446cb082def361.jpg\\\"]','','双面可用，抗菌防螨',1,23,'http://yanxuan.nosdn.127.net/6ad1813d123f7a80f84c2cfa5f8c7caf.png','',0,0,'件',2619.00,2599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b95a717cef75bb52dd5994fd67ffcc90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b95a717cef75bb52dd5994fd67ffcc90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73a4a6b2ac1b8187d76514248a54ec5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73a4a6b2ac1b8187d76514248a54ec5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e38da697cc92266ed49b5d958b4c4b8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e38da697cc92266ed49b5d958b4c4b8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66e01d77739c71631590ec06a1db7ca4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66e01d77739c71631590ec06a1db7ca4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/713ed12beda8f667fc27910470226f3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/713ed12beda8f667fc27910470226f3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58dc4c9ec7b19aa04112c8f8f2d473ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58dc4c9ec7b19aa04112c8f8f2d473ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b11a06d8d10a42b300fa8b2a3f162bec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b11a06d8d10a42b300fa8b2a3f162bec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e112fd089f47c7f7824bbc75f0a23668.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e112fd089f47c7f7824bbc75f0a23668.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/848a78a655a528df4bac6889e78ae477.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/848a78a655a528df4bac6889e78ae477.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39f8848e3163584230c3743d6f899f33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39f8848e3163584230c3743d6f899f33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca7dc2e2f3ad071b48a72712263e233d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca7dc2e2f3ad071b48a72712263e233d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84b2676ed4473b2de555a1e0793d6ca7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84b2676ed4473b2de555a1e0793d6ca7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48f55844d8c68e56d25605e3c5ab3554.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48f55844d8c68e56d25605e3c5ab3554.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f1d0b7d4a4ea0732d5c224df8228327.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f1d0b7d4a4ea0732d5c224df8228327.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4615214340b545d6137d73bbc73b351.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4615214340b545d6137d73bbc73b351.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/706a3d3f9428268704d0702f267f623f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/706a3d3f9428268704d0702f267f623f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac5f9987ef6fdc4c18749f1a18ffb143.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac5f9987ef6fdc4c18749f1a18ffb143.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b8b4a730b0ca5858b9b5731b9b67d7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b8b4a730b0ca5858b9b5731b9b67d7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3304028a2523a1e624addbc15cf081ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3304028a2523a1e624addbc15cf081ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a6ad47236678c8bfdd6d9a1dd93d483.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a6ad47236678c8bfdd6d9a1dd93d483.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28efa2ff28e18fa09efda046a1488409.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28efa2ff28e18fa09efda046a1488409.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ebbc6e7f14b77dff9ffaeb6e7a3647d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ebbc6e7f14b77dff9ffaeb6e7a3647d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/506a349755bd30fb9f2a615719285e83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/506a349755bd30fb9f2a615719285e83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d07f141b1bcefc8a13123687c75243c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d07f141b1bcefc8a13123687c75243c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/629437964fc07f341e1550a3ea4fb76a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/629437964fc07f341e1550a3ea4fb76a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c1f7a665aa181fbf8ae12f12dc87876.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c1f7a665aa181fbf8ae12f12dc87876.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/173ae031e53c6909e23e60b585944b4b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/173ae031e53c6909e23e60b585944b4b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79d8bad209250a11bc5c2ee2c643db54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79d8bad209250a11bc5c2ee2c643db54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f77cce8d53a99c059071c73e8e33edf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f77cce8d53a99c059071c73e8e33edf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/048d5401f4cecb7401c1d220db5eefae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/048d5401f4cecb7401c1d220db5eefae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba7866947baf43b145a79fe7fa67fb83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba7866947baf43b145a79fe7fa67fb83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d7b44b507729675b2181cf15ae211a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d7b44b507729675b2181cf15ae211a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/363fe4f5922b6fa176b609c668049914.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/363fe4f5922b6fa176b609c668049914.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52312d8fceae2fc18c90e02aa6c4ffac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52312d8fceae2fc18c90e02aa6c4ffac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/205dbbba79eea2b27d6d45958045c908.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/205dbbba79eea2b27d6d45958045c908.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edb8ad6c0b4d62148b0cd9004cd3d1db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edb8ad6c0b4d62148b0cd9004cd3d1db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42ab3bbbe8ed4a443fbceaee41145ede.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42ab3bbbe8ed4a443fbceaee41145ede.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d16c8a4bbaf471a686b55ccf29a2c7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d16c8a4bbaf471a686b55ccf29a2c7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9f1e20d2b38ce93810ce63fd7e1103b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9f1e20d2b38ce93810ce63fd7e1103b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11d1c180a723af71b1d0a0586116ed8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11d1c180a723af71b1d0a0586116ed8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7751fa7dc992c50200c8b32eba5aeb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7751fa7dc992c50200c8b32eba5aeb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/113a1934b4bc7ad4055c3b4d34dbbbee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/113a1934b4bc7ad4055c3b4d34dbbbee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67401e03df5d88c285a63f2b89deae1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67401e03df5d88c285a63f2b89deae1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b793c2a0462399faeab3af6cde683454.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b793c2a0462399faeab3af6cde683454.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b54481d5181fd561feed03571cad4888.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b54481d5181fd561feed03571cad4888.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77b754c2e9d9d5c09093d9807fa63734.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77b754c2e9d9d5c09093d9807fa63734.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e31bf5b249224ed2eb0bd048a86cf966.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e31bf5b249224ed2eb0bd048a86cf966.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e587e4e7e11d9b1e8e00e7d38daa5dc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e587e4e7e11d9b1e8e00e7d38daa5dc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e24c2bfe4c302c607294ef157606fe9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e24c2bfe4c302c607294ef157606fe9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2cd43adef5bd4dd071ac1f83b328f94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2cd43adef5bd4dd071ac1f83b328f94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/effb35400027c184faa19220e72442f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/effb35400027c184faa19220e72442f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9df9d77101b451fe21b691f116ec0601.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9df9d77101b451fe21b691f116ec0601.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a10d1d1ba06b48e0696cc4a4b0a8df0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a10d1d1ba06b48e0696cc4a4b0a8df0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769c99f34bb990c8d42996cf396b2c46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769c99f34bb990c8d42996cf396b2c46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87899b9996a6b206ab0ccdc7e7e4fb48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87899b9996a6b206ab0ccdc7e7e4fb48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42c6b1be44d139766943795555eab673.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42c6b1be44d139766943795555eab673.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e56ba8ef9f964e0546cf8b0b08d015d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e56ba8ef9f964e0546cf8b0b08d015d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f57d0a5872b78b6f9317a13f60dae6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f57d0a5872b78b6f9317a13f60dae6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d6159d064520042a93c3cfbf25e3e13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d6159d064520042a93c3cfbf25e3e13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d88111c77c0c2bb4a3f71ea298ee4d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d88111c77c0c2bb4a3f71ea298ee4d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edb887378ba184a6faa6798bc53106ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edb887378ba184a6faa6798bc53106ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70df83cacd175e0aa535f638b403b429.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70df83cacd175e0aa535f638b403b429.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7829dc581defeaa3f9c7da72bad58cda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7829dc581defeaa3f9c7da72bad58cda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a98b4fb2bcd05f907a15667daa4640e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a98b4fb2bcd05f907a15667daa4640e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba248e4314309eaa657496f6b70ee355.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba248e4314309eaa657496f6b70ee355.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d384f2d446ef4e1783f553a27e045c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d384f2d446ef4e1783f553a27e045c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d581fd6450333516afdd8fb504af8ace.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d581fd6450333516afdd8fb504af8ace.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c22e4a8469385ebf284e14303f89e1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c22e4a8469385ebf284e14303f89e1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb7aa9149316c892d9786ec592e7981a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb7aa9149316c892d9786ec592e7981a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/670e23fa6425857af92595ceeeeb18c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/670e23fa6425857af92595ceeeeb18c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd3a747f6396fa61d61f80bd47235b8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd3a747f6396fa61d61f80bd47235b8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50b6b3532e0a58f69d3b6cb3151fc017.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50b6b3532e0a58f69d3b6cb3151fc017.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cb3cc0e82e16296aed016874eef94b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cb3cc0e82e16296aed016874eef94b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2a8f742ce79310b5b7becbe8283d6fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2a8f742ce79310b5b7becbe8283d6fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c07b513138af7a8da082bb76163dff8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c07b513138af7a8da082bb76163dff8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b675855909ab078264ce433a51d8ca58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b675855909ab078264ce433a51d8ca58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8752779994188ed8b2c265a728f00c7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8752779994188ed8b2c265a728f00c7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7349ec413588d56c53669402a86ed271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7349ec413588d56c53669402a86ed271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0c4068e8c4b14b13245ecc8297dfb5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0c4068e8c4b14b13245ecc8297dfb5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e895f3dcee8229d6bad4c02a22d7d12d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e895f3dcee8229d6bad4c02a22d7d12d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecb93934355f7623558324662ec3d837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecb93934355f7623558324662ec3d837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35eab1fb0eea3014718d9b75ac85dab2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35eab1fb0eea3014718d9b75ac85dab2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e5eaa839044afbccbf50150943c422b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e5eaa839044afbccbf50150943c422b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf5d1f44c8b0c93207dbb32fee55ce0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf5d1f44c8b0c93207dbb32fee55ce0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6ea1672b4d39680256fce2cdc31e792.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6ea1672b4d39680256fce2cdc31e792.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f901e6f246a20b51a76f3560ed827543.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f901e6f246a20b51a76f3560ed827543.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e409a52ea928208c0b1fe177e5b42b1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e409a52ea928208c0b1fe177e5b42b1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b308ebcbf6ecf128f991dc8e8b17e03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b308ebcbf6ecf128f991dc8e8b17e03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d5a1c5352dcb45d83fc44a61bef5809.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d5a1c5352dcb45d83fc44a61bef5809.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c47d2ab68c6c268425161733870d6ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c47d2ab68c6c268425161733870d6ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b633ba1712acc453d44c057c5d82ea9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b633ba1712acc453d44c057c5d82ea9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56571537fcf26ce769d585c09e4ddd97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56571537fcf26ce769d585c09e4ddd97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a21829fd29c29415df950697277d1c2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a21829fd29c29415df950697277d1c2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d5feaa6c01cf70337073b6a65244fe7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d5feaa6c01cf70337073b6a65244fe7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7a337545b721791bd5ab3651bf08e44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7a337545b721791bd5ab3651bf08e44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/657fed4e75739e8e12644b32f3848136.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/657fed4e75739e8e12644b32f3848136.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/400681bcddf290322afab3d7b5f98f64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/400681bcddf290322afab3d7b5f98f64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39882ed24db5429e95c733700b94a9cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39882ed24db5429e95c733700b94a9cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bff7bdc580c061ba82a482a66159495.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bff7bdc580c061ba82a482a66159495.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/473feafcaefbad481fb18d4aab66dc28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/473feafcaefbad481fb18d4aab66dc28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8512bbb77646f5f0722ecad870a1f403.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8512bbb77646f5f0722ecad870a1f403.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9dd43ef3354a41f2a07eef54bd7a2fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9dd43ef3354a41f2a07eef54bd7a2fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2e0ba6a2260be7a1c3952eab0dbf285.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2e0ba6a2260be7a1c3952eab0dbf285.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f27b6b88f6569df22a07afac34fff1f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f27b6b88f6569df22a07afac34fff1f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e38a52f11b9b3a6a53096f23fb928bd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e38a52f11b9b3a6a53096f23fb928bd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33b39bfe036addb764257e3d75104ae4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33b39bfe036addb764257e3d75104ae4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/235669621a523dc06eeb4fd38894dd5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/235669621a523dc06eeb4fd38894dd5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c12663edd2618c17cfc2f15ec17556de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c12663edd2618c17cfc2f15ec17556de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/28d3e932300cc1db7e889847f808ccac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/28d3e932300cc1db7e889847f808ccac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6c97ce71400a01dccb702c25dc4ca14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6c97ce71400a01dccb702c25dc4ca14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5745b0bae532c14d5b20e1784f0f9437.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5745b0bae532c14d5b20e1784f0f9437.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d908757dd73fc3d3193dff6f3b021eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d908757dd73fc3d3193dff6f3b021eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0406eaf05ac2d762ee397281832e0190.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0406eaf05ac2d762ee397281832e0190.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da5a8dae4990f51d2725bfc8a4aa2205.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da5a8dae4990f51d2725bfc8a4aa2205.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/376952f135f0fec9837c561986c7eec0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/376952f135f0fec9837c561986c7eec0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ea87aa58473f63c4004c67068480efd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ea87aa58473f63c4004c67068480efd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe12c356c5c5e7baddc1925eaa62c034.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe12c356c5c5e7baddc1925eaa62c034.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66c2119db74e22cab6299281f147ef52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66c2119db74e22cab6299281f147ef52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f865899cc61a1e907a32e1b52f7952dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f865899cc61a1e907a32e1b52f7952dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e325e9d0551ea5f4d67baf467f068612.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e325e9d0551ea5f4d67baf467f068612.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cda22b9035b7af93c63ac2e26202bfa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cda22b9035b7af93c63ac2e26202bfa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36a54a7eef96a552395e3e885c71a4d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36a54a7eef96a552395e3e885c71a4d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85c389a1b1d058e9192cad2834123375.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85c389a1b1d058e9192cad2834123375.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc6fddb574f98c5d889429062ad0ac1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc6fddb574f98c5d889429062ad0ac1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdd8df716353b8e9c67cd0c1663aa22f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdd8df716353b8e9c67cd0c1663aa22f.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127024,'1127024','女式无痕真丝内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/a89fcd110c582c28a5f6cd821effb37a.png\\\", \\\"http://yanxuan.nosdn.127.net/a89fcd110c582c28a5f6cd821effb37a.png\\\", \\\"http://yanxuan.nosdn.127.net/a89fcd110c582c28a5f6cd821effb37a.png\\\", \\\"http://yanxuan.nosdn.127.net/a89fcd110c582c28a5f6cd821effb37a.png\\\", \\\"http://yanxuan.nosdn.127.net/a89fcd110c582c28a5f6cd821effb37a.png\\\"]','','德国热帖工艺无痕无缝',1,4,'http://yanxuan.nosdn.127.net/0a70f12a712e90d7d93beec4f686fe8e.png','',0,0,'件',59.00,39.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127025,'1127025','女式蝶边真丝内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/4b18824270819e1590e84671f6f2517f.png\\\", \\\"http://yanxuan.nosdn.127.net/4b18824270819e1590e84671f6f2517f.png\\\", \\\"http://yanxuan.nosdn.127.net/4b18824270819e1590e84671f6f2517f.png\\\", \\\"http://yanxuan.nosdn.127.net/4b18824270819e1590e84671f6f2517f.png\\\", \\\"http://yanxuan.nosdn.127.net/4b18824270819e1590e84671f6f2517f.png\\\"]','','养肤蚕丝，蝶翼无痕',1,3,'http://yanxuan.nosdn.127.net/b2fe79c872a8a7f647264b5e51bcc802.png','',0,0,'件',59.00,39.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127038,'1127038','简约知性全棉四件套 星空蓝',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/ea16e3e56b5e59b1e9ed06794d1b2c40.jpg\\\", \\\"http://yanxuan.nosdn.127.net/41bd77e384f61ebc93d8233709ba13f1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/baf5b87ba6a481defecdc5742c9ca515.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e5a5058060355b4e4c2f653ab7fbadb7.jpg\\\"]','','静谧深邃蓝 沉稳中充满张力',1,8,'http://yanxuan.nosdn.127.net/addc278cf9c301dd535791df2e03b2ea.png','',0,0,'件',379.00,359.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e8e3a3e5ef76185d9a24d7d1fdca6205.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8e3a3e5ef76185d9a24d7d1fdca6205.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c26d7316d33e3949573d482ba7fe51e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c26d7316d33e3949573d482ba7fe51e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adf85bd8f3cff1ee39908ca6b8ad4f3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adf85bd8f3cff1ee39908ca6b8ad4f3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fca5a2fd89e5c1bed65d3b2aa166ae58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fca5a2fd89e5c1bed65d3b2aa166ae58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e220d44ff5c83e90b1c0a7173b9f0f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e220d44ff5c83e90b1c0a7173b9f0f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4813e15d906ec228951fe62904d3d98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4813e15d906ec228951fe62904d3d98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e2fc6fb0d7169796095f1443a1e60b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e2fc6fb0d7169796095f1443a1e60b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7609e717c43e3cda99a2e581bcd268f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7609e717c43e3cda99a2e581bcd268f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ddd7042327097b67605a46e3456458b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ddd7042327097b67605a46e3456458b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4707c34a21bb7eef2501329e87c92e49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4707c34a21bb7eef2501329e87c92e49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63796fbd3e3c0e90b629454a540059cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63796fbd3e3c0e90b629454a540059cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edb0a4f0384e69ebad91342c6ff9c2f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edb0a4f0384e69ebad91342c6ff9c2f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7cc92ac4d74635f150642335a6ad837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7cc92ac4d74635f150642335a6ad837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f69ba0c6e52dfa8ee4dbdcd470306fd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f69ba0c6e52dfa8ee4dbdcd470306fd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4620bc82e5686631548824845e41e2d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4620bc82e5686631548824845e41e2d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71a7f99f49aea5d284e4f30fd705e5fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71a7f99f49aea5d284e4f30fd705e5fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cc7a9af75047a22e56a41d3703d208e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cc7a9af75047a22e56a41d3703d208e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc883f1d39071228263d8a4c3884446f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc883f1d39071228263d8a4c3884446f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5343658eae0b55702debcf866380427f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5343658eae0b55702debcf866380427f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a85419630ecbe7a39ff0c10da84d420.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a85419630ecbe7a39ff0c10da84d420.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a26206ae59b95cc7b63ea3782d392880.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a26206ae59b95cc7b63ea3782d392880.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d825f838237550a2cb3b2e07ed67c68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d825f838237550a2cb3b2e07ed67c68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7046dd88025e249ea5ccc1641c020c58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7046dd88025e249ea5ccc1641c020c58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fbe3423c2eb67a05db596450a2e60b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fbe3423c2eb67a05db596450a2e60b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05be800e060b4ee293fa18c6578d406c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05be800e060b4ee293fa18c6578d406c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dca514263bfaeba4387ec1585d189acc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dca514263bfaeba4387ec1585d189acc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bd9c0919910ca927d038502f7b0b74e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bd9c0919910ca927d038502f7b0b74e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa1dd1dd30b5a52db2fa62cc8b0cbe45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa1dd1dd30b5a52db2fa62cc8b0cbe45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/213f1d5e588af63e2116b75106c43447.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/213f1d5e588af63e2116b75106c43447.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79d99f1d776f67f6f4d2458a3211ceda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79d99f1d776f67f6f4d2458a3211ceda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6247cbd3bb2ca2a1e11c2328303ac3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6247cbd3bb2ca2a1e11c2328303ac3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a36497c3f3598d66dd87e8bbbe486ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a36497c3f3598d66dd87e8bbbe486ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f442d65fc76b11faa12f4330b6e0c03f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f442d65fc76b11faa12f4330b6e0c03f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/945df523b806a4a32c585a3e0da1e523.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/945df523b806a4a32c585a3e0da1e523.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19fb36c7ef20de83b87b850cb914e7ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19fb36c7ef20de83b87b850cb914e7ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54e25196e2ec8c482569dd458084b1cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54e25196e2ec8c482569dd458084b1cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96b70460779fbe8ed61dd9700b6d62c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96b70460779fbe8ed61dd9700b6d62c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03dd7fddbe60be1dea52a9e6d5feff93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03dd7fddbe60be1dea52a9e6d5feff93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c966a24f3f5f8dcf18c259f5c296aff9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c966a24f3f5f8dcf18c259f5c296aff9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f22c0d86b59ee3453789def93816bbe4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f22c0d86b59ee3453789def93816bbe4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51b48309ba61717d0b0e2480f659cab9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51b48309ba61717d0b0e2480f659cab9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5327b64a52e49124a0d8c5c7695cdcf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5327b64a52e49124a0d8c5c7695cdcf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbdff49f92a400c7a010ee0288534cbf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbdff49f92a400c7a010ee0288534cbf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/310ec51ce5c1ae38e71df8d13f436631.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/310ec51ce5c1ae38e71df8d13f436631.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/faeb5e1d960b51cac995766ab60f5b9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/faeb5e1d960b51cac995766ab60f5b9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4349f92481aebcf318e5a99cb9a8b814.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4349f92481aebcf318e5a99cb9a8b814.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0c0af16829312d97d22e99fc811291f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0c0af16829312d97d22e99fc811291f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff6b65f53c08ede76c11c6ebf45a011b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff6b65f53c08ede76c11c6ebf45a011b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2ceb429b91744f4f48cd37104d9089b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2ceb429b91744f4f48cd37104d9089b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f0b280463ae6c3df3a8bd0513cf1a24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f0b280463ae6c3df3a8bd0513cf1a24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5b1d678db7517dd188515e9f24cd82b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5b1d678db7517dd188515e9f24cd82b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e74e4a91396a972307e809a8ad380a17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e74e4a91396a972307e809a8ad380a17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/623714f78c4b9a98fe6940b0461703e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/623714f78c4b9a98fe6940b0461703e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae414d8c0b794b35df80db84dc5be540.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae414d8c0b794b35df80db84dc5be540.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127039,'1127039','清新趣粉全棉四件套 青粉拼接',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/5da516d917bf7a02251ff40bd9a153c7.jpg\\\", \\\"http://yanxuan.nosdn.127.net/13c0996e62c82f00b0ba010d49447747.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bd0c6fff729b4d4fa859441262d88c4c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0e8093d4a27ee7a1d0c81e3a82a49c27.jpg\\\"]','','精梳长绒棉,亲肤舒适',1,11,'http://yanxuan.nosdn.127.net/be64df0a04ade4cfd75bf7d4e8509ecc.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/43a852a45f4a56d3392f1ddea87eb8eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43a852a45f4a56d3392f1ddea87eb8eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c9c1934bce0b69ec220ff981ec738fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c9c1934bce0b69ec220ff981ec738fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56aa71cb1c36013a6d4e7f884af010fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56aa71cb1c36013a6d4e7f884af010fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8aab18bfc5b668651064d29cfcd4fcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8aab18bfc5b668651064d29cfcd4fcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/caf48b811fb86d6a4ee47a849afbc3f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/caf48b811fb86d6a4ee47a849afbc3f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a23bed5db163248ef7d5f696bde6923.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a23bed5db163248ef7d5f696bde6923.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d2c20eff38f2b10631fdaf45363642f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d2c20eff38f2b10631fdaf45363642f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/902eb2eefa3cfb7104755cf8fc7b7d33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/902eb2eefa3cfb7104755cf8fc7b7d33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e1a836f6969eb1694d62ce99ea70e5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e1a836f6969eb1694d62ce99ea70e5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1413c155daac6279deb6400671798da6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1413c155daac6279deb6400671798da6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ecdabedeeae302bfeed80572ca51490.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ecdabedeeae302bfeed80572ca51490.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6ff45ee262e8d486f17134a9dbc0a3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6ff45ee262e8d486f17134a9dbc0a3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be082ed4addbd787bb44fae512fb55fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be082ed4addbd787bb44fae512fb55fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd32aac49141d87b7a983fe4646a7a75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd32aac49141d87b7a983fe4646a7a75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62fd7c2f44ceccc4ee33bdde2ee998f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62fd7c2f44ceccc4ee33bdde2ee998f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91e4e6bc20051706e74a6f65684e97cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91e4e6bc20051706e74a6f65684e97cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f47723ba3ffdf2ee107b497c560aef88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f47723ba3ffdf2ee107b497c560aef88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95836389e457d1a2c6810e104c907f93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95836389e457d1a2c6810e104c907f93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/871322a2bd8b44226d597af3f0c52249.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/871322a2bd8b44226d597af3f0c52249.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/891195e7bb58a6782f0f1da15ff34176.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/891195e7bb58a6782f0f1da15ff34176.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c232a44890a7e2c1312c214ee4aaead5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c232a44890a7e2c1312c214ee4aaead5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7ee91d512fc23f83a9cde92bcc9663d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7ee91d512fc23f83a9cde92bcc9663d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1649cd095c5299283d9d307c337f36ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1649cd095c5299283d9d307c337f36ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f0e3f5422a1e605d2cb0c66d03389e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f0e3f5422a1e605d2cb0c66d03389e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1e90d6bc0b48db9859944113ef36a49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1e90d6bc0b48db9859944113ef36a49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e12296776ba8d5b6c0c18fac593772a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e12296776ba8d5b6c0c18fac593772a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eab9452b80d2c4e4cc68e309c7de50a8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eab9452b80d2c4e4cc68e309c7de50a8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ac44a0026be72d166cd4c00824d600b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ac44a0026be72d166cd4c00824d600b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f98ab8b23724f26fd3a2db9e539e2e4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f98ab8b23724f26fd3a2db9e539e2e4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/579e35893568aa03920e05eb16d4009d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/579e35893568aa03920e05eb16d4009d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8921d7ddfe11cb12db4f05a6f120632.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8921d7ddfe11cb12db4f05a6f120632.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8398cca3432ace05b02234ff47cbb25f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8398cca3432ace05b02234ff47cbb25f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1296cacff7a32d6fea465ff1859e52e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1296cacff7a32d6fea465ff1859e52e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ab0a51959ae1ac64818d568e64dc6c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ab0a51959ae1ac64818d568e64dc6c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f0d167aa533ecf32abaf3521b744402.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f0d167aa533ecf32abaf3521b744402.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7bdb1e96d56ca8542a130a4ddbba7ac9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7bdb1e96d56ca8542a130a4ddbba7ac9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66c8b538d430b7e4a9772aa9375d284f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66c8b538d430b7e4a9772aa9375d284f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3410feb14590c53cd31c24c69a875732.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3410feb14590c53cd31c24c69a875732.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc3fa3cbe0657feaf771a9703635fbc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc3fa3cbe0657feaf771a9703635fbc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b44910a98624d648d266ef44922fb7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b44910a98624d648d266ef44922fb7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8eddee7e749deb33c8ca8c28f56f2568.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8eddee7e749deb33c8ca8c28f56f2568.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adfe104a5b1132e734647dc0c950e8af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adfe104a5b1132e734647dc0c950e8af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be8ef89cf818a4aeba8d0ddf413cbcf9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be8ef89cf818a4aeba8d0ddf413cbcf9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3829f4ed5b477680f169d390c8220c15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3829f4ed5b477680f169d390c8220c15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/126768f1680c147b7e11f853074d5289.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/126768f1680c147b7e11f853074d5289.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1321f2e495b39212ff2b50c2d0a84b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1321f2e495b39212ff2b50c2d0a84b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/125bfac27b6596ebe50535ceb87ced60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/125bfac27b6596ebe50535ceb87ced60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a93ed3b3caf85e8fd26ad79d771fb69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a93ed3b3caf85e8fd26ad79d771fb69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efbe7ce1c9de4da97ca143a3566d4c48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efbe7ce1c9de4da97ca143a3566d4c48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/943384ff66cec540eb1c14c6b6a3ce2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/943384ff66cec540eb1c14c6b6a3ce2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06ade0cd8bfe76fc980199281bf0073d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06ade0cd8bfe76fc980199281bf0073d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/075c4bd0119df63479696ee151aa0bfc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/075c4bd0119df63479696ee151aa0bfc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65f98f9eb6cc47f603a27200335ed0bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65f98f9eb6cc47f603a27200335ed0bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b904f6f9f30b6eea98ee14116291573.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b904f6f9f30b6eea98ee14116291573.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1127047,'1127047','趣味粉彩系列笔记本',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/fad166a4742ab3681808c80120eb452a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fad166a4742ab3681808c80120eb452a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fad166a4742ab3681808c80120eb452a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fad166a4742ab3681808c80120eb452a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fad166a4742ab3681808c80120eb452a.jpg\\\"]','','粉彩色泽，记录生活',1,2,'http://yanxuan.nosdn.127.net/6c03ca93d8fe404faa266ea86f3f1e43.png','',1,0,'件',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0);\nINSERT INTO `litemall_goods` VALUES (1127052,'1127052','纯棉水洗色织格夏凉被',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/be1c0672aa4f82de4179ff25c9728359.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a0451cd98141887b78a48414d82f1a9a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9cdc625066ff4124e5b3dc2518529706.jpg\\\", \\\"http://yanxuan.nosdn.127.net/398686c2483deb75ca4afeee62250fc9.jpg\\\"]','','100%棉填充，透气排汗，双面可用',1,1,'http://yanxuan.nosdn.127.net/4f483526cfe3b953f403ae02049df5b9.png','',0,1,'件',189.00,169.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/f328e0e5475565edb64afe2c85b5a831.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f328e0e5475565edb64afe2c85b5a831.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1bade2c06be043cd0995bc7646c26a2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1bade2c06be043cd0995bc7646c26a2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c445c2e64e0596d7c07604a44701bb4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c445c2e64e0596d7c07604a44701bb4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/716b5e66b3feed4210b299e3d2990bf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/716b5e66b3feed4210b299e3d2990bf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1b0013ce52475d9e9fcbb212b420dc0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1b0013ce52475d9e9fcbb212b420dc0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffc759c940069f9ac9371d09c2dc8bcf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffc759c940069f9ac9371d09c2dc8bcf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84b85b9c8718eec01297822235b92494.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84b85b9c8718eec01297822235b92494.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6050d830f0937527572bd50c1071dc69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6050d830f0937527572bd50c1071dc69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e14438c3c3d20136f1b6eb72a20bcfad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e14438c3c3d20136f1b6eb72a20bcfad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5c2eb2db9e7bff8b5e4c30eb79f5d5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5c2eb2db9e7bff8b5e4c30eb79f5d5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7612761039ffd30cd5f42db483306602.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7612761039ffd30cd5f42db483306602.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0cfee5d390dd47d970b3f341697a3bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0cfee5d390dd47d970b3f341697a3bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa1e2bf21b89336e6b17375472aaf15d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa1e2bf21b89336e6b17375472aaf15d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/444af3e9d80252fe5ccb1cd755ce9dd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/444af3e9d80252fe5ccb1cd755ce9dd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e03fb8f1bac6d99768aaba5bac1af679.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e03fb8f1bac6d99768aaba5bac1af679.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c966e10b0c50ab4b7a1cce4fd2c2c87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c966e10b0c50ab4b7a1cce4fd2c2c87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fab1152955f4f048cb1c58f30f96f5b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fab1152955f4f048cb1c58f30f96f5b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d22180e80aa005d7c8f56d8e721e091f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d22180e80aa005d7c8f56d8e721e091f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/700be173c782fd45fc9e1713e3e96d89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/700be173c782fd45fc9e1713e3e96d89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9041fd6f229c1941ad7792d35b06837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9041fd6f229c1941ad7792d35b06837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe5de03e655ce1bc2e3ec5bf272f759e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe5de03e655ce1bc2e3ec5bf272f759e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3e398e9397126ddccee6c9a87629efe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3e398e9397126ddccee6c9a87629efe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ce9d30c469b766fbfa10c7ea6b27748.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ce9d30c469b766fbfa10c7ea6b27748.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cfb73042491d3174bbb9373d873bb54e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cfb73042491d3174bbb9373d873bb54e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/beb828e58a5ba65e6bb2189bfe592731.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/beb828e58a5ba65e6bb2189bfe592731.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b257b7fdebe5327636b64b8a4f654608.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b257b7fdebe5327636b64b8a4f654608.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa2c803e52e3240515c60dd136dfcf10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa2c803e52e3240515c60dd136dfcf10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/576203295fd33346e32e674ce5537cd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/576203295fd33346e32e674ce5537cd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b9f4f9a24d72852f20ec3de3f7f4a26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b9f4f9a24d72852f20ec3de3f7f4a26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fda63607d59d0f119b72a76ea1d50bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fda63607d59d0f119b72a76ea1d50bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdd6d99258ce22ccf5246e4a4d02e97c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdd6d99258ce22ccf5246e4a4d02e97c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25a5e8ef2f8f45e993f26a0f670fb282.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25a5e8ef2f8f45e993f26a0f670fb282.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ca6747879000f08fd3d90ef30d546c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ca6747879000f08fd3d90ef30d546c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1de9b2d85d826a048db3bc4dfeb6007e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1de9b2d85d826a048db3bc4dfeb6007e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edddf949d4406d805b45465f7e425ac3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edddf949d4406d805b45465f7e425ac3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/994df23b1aa0098ffaa544a1aeecae24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/994df23b1aa0098ffaa544a1aeecae24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbdba951ded641604c15774c74b8bb53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbdba951ded641604c15774c74b8bb53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72533c3c5775fedcf06b94f94fabc5f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72533c3c5775fedcf06b94f94fabc5f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/854bdcb9d4ece16adb5bc5751a2cad3e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/854bdcb9d4ece16adb5bc5751a2cad3e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6209f21bce639b2c2b71927046a956d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6209f21bce639b2c2b71927046a956d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a42e2905f51f6889239792d615dd467.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a42e2905f51f6889239792d615dd467.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54d45e3240736dc5e58d697c676a1d12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54d45e3240736dc5e58d697c676a1d12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80558a43c5b91b9ec76eeb5de23fe4d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80558a43c5b91b9ec76eeb5de23fe4d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f379b8d7cd4a6d6dcb2826c13dcf3b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f379b8d7cd4a6d6dcb2826c13dcf3b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/94208d3cb011e82b3e134cbed8fda099.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/94208d3cb011e82b3e134cbed8fda099.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba245f1964d7b1afcca24c32c07183cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba245f1964d7b1afcca24c32c07183cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9fe6ca05da9c5e2da9c04f3a9ca56e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9fe6ca05da9c5e2da9c04f3a9ca56e7.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1128002,'1128002','清新趣粉系列居家地毯 青粉拼接',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/15a42a487b167c83a3e4f2ea099088c5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2996456487cd6e916319ad80e41c935f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fb6d907e5fa419c6b3706ed07d7343c9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a4a58f132454ba2e4bd657458c10d89b.jpg\\\"]','','清新撞色 细腻柔软',1,27,'http://yanxuan.nosdn.127.net/a1094a808ffb3a52a6cb13565a283d98.png','',0,0,'件',619.00,599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/191b701367615b452976b4c740ef1c52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/191b701367615b452976b4c740ef1c52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f83f2a2b556d9d0b4b4a65ca76f4689.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f83f2a2b556d9d0b4b4a65ca76f4689.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/119231f5f75494b2249cd14009b452aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/119231f5f75494b2249cd14009b452aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/085c0b2b140f9b3e499209f3ca2b3b16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/085c0b2b140f9b3e499209f3ca2b3b16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac2cdba24df037dfe0704bd47c73d3e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac2cdba24df037dfe0704bd47c73d3e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35def50dabd355332d47a994e29a53c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35def50dabd355332d47a994e29a53c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0378678601a27aa2e0fea8fcd757ae51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0378678601a27aa2e0fea8fcd757ae51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c3d214fea7c5a768c7a0f77172a70d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c3d214fea7c5a768c7a0f77172a70d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bec41337e525e74998290e7378f3bb8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bec41337e525e74998290e7378f3bb8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5d50c46c26a0c2be14d2c845a4e15c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5d50c46c26a0c2be14d2c845a4e15c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c138155947879f4af0e7ce3c7d4713d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c138155947879f4af0e7ce3c7d4713d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da7c0824e22218d320719560989d537e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da7c0824e22218d320719560989d537e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bf35a5b2a1747108cb8d225f0da227d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bf35a5b2a1747108cb8d225f0da227d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e93c3ee67c2f953fae54295b0f4a7173.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e93c3ee67c2f953fae54295b0f4a7173.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa47796942f2ba1f6bf0032fe316ac27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa47796942f2ba1f6bf0032fe316ac27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f116e257387af4f48bf2ddb8c840132.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f116e257387af4f48bf2ddb8c840132.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a756a78742cd1e018a66e40e0cf3f5ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a756a78742cd1e018a66e40e0cf3f5ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/567a0391d29b41c75216203f0327360d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/567a0391d29b41c75216203f0327360d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e3bb469a99952ad770a1782ebabe0a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e3bb469a99952ad770a1782ebabe0a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98e4edc31d260fcfdff9d74527a36361.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98e4edc31d260fcfdff9d74527a36361.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8f9871f90756a1833bea06961285087.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8f9871f90756a1833bea06961285087.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa9d442de4aa9b93b48fefafe0f869b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa9d442de4aa9b93b48fefafe0f869b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c3c00ea6a2f13c5ce37b6dec024edf5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c3c00ea6a2f13c5ce37b6dec024edf5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d83a1dc525bb6aa23d456efd5a2c74c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d83a1dc525bb6aa23d456efd5a2c74c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7397347cfc3d7ce697386941201d1615.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7397347cfc3d7ce697386941201d1615.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e40e07ef01e1950ddb708d6ed56eea3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e40e07ef01e1950ddb708d6ed56eea3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb59b7f4df5d97e9ac407fe75e095e81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb59b7f4df5d97e9ac407fe75e095e81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6660e07c91870230941f9bfe160f9f49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6660e07c91870230941f9bfe160f9f49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e40bb0099d592ca0f1335eabe43570cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e40bb0099d592ca0f1335eabe43570cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7310efd4551e1a851668d01733711d39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7310efd4551e1a851668d01733711d39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c7ab57bdf16a7a88e526e82deba2879.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c7ab57bdf16a7a88e526e82deba2879.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e1a120dc4898e9e871d4005d30c7937.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e1a120dc4898e9e871d4005d30c7937.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22fe678cf2b8e594c15fba60f86b717e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22fe678cf2b8e594c15fba60f86b717e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7e4053e6340d8fc377babc65cd40823.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7e4053e6340d8fc377babc65cd40823.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ae576390b96e274b10c71104e210d33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ae576390b96e274b10c71104e210d33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/425feec1ad943958c28edaf1504af645.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/425feec1ad943958c28edaf1504af645.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e8d1bd0e0277e74509d074f2a931f1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e8d1bd0e0277e74509d074f2a931f1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e67f6b3d18df8ddf931b4468f35d4fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e67f6b3d18df8ddf931b4468f35d4fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33951c6621e5b91ee1c1b9958f9bb57a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33951c6621e5b91ee1c1b9958f9bb57a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e80772f6663a57de51494fec4369524b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e80772f6663a57de51494fec4369524b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e2516cafe760408782a8427a5015b98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e2516cafe760408782a8427a5015b98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fe4275c5b83193c1562e2f5dbf72442.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fe4275c5b83193c1562e2f5dbf72442.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1d4aa2f956ef90e826b50cb16db731a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1d4aa2f956ef90e826b50cb16db731a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c9afc1b180779690891a23e9adb2265.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c9afc1b180779690891a23e9adb2265.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d4323b01083e2aa3eec9e28402b612b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d4323b01083e2aa3eec9e28402b612b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1128010,'1128010','趣味粉彩单面纱布亲肤毛巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/18761a86131e57fdff80f33c4f49b4c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18761a86131e57fdff80f33c4f49b4c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18761a86131e57fdff80f33c4f49b4c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18761a86131e57fdff80f33c4f49b4c6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18761a86131e57fdff80f33c4f49b4c6.jpg\\\"]','','单面毛圈，萌动生活',1,5,'http://yanxuan.nosdn.127.net/a84e8e6979f00efd9a728ed36b154753.png','',0,0,'件',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1128011,'1128011','趣味粉彩单面纱布超柔浴巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/e5e31cc4dea24ad1d9a80d7ae080475e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e5e31cc4dea24ad1d9a80d7ae080475e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e5e31cc4dea24ad1d9a80d7ae080475e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e5e31cc4dea24ad1d9a80d7ae080475e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e5e31cc4dea24ad1d9a80d7ae080475e.jpg\\\"]','','野兽派制造商，透气瞬吸',1,6,'http://yanxuan.nosdn.127.net/d6e25ec5b4ad7aa37e077ce751b56f46.png','',0,0,'件',99.00,79.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1129015,'1129015','阿瓦提长绒棉超柔弱捻浴巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/933a3af9d07b7bc0adf01ccacbe7fb02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/933a3af9d07b7bc0adf01ccacbe7fb02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/933a3af9d07b7bc0adf01ccacbe7fb02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/933a3af9d07b7bc0adf01ccacbe7fb02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/933a3af9d07b7bc0adf01ccacbe7fb02.jpg\\\"]','','瞬吸亲肤，0掉毛率',1,4,'http://yanxuan.nosdn.127.net/fc11a482efeece9630548d8b350e7f54.png','',0,0,'件',109.00,89.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1129016,'1129016','新疆阿瓦提长绒棉弱捻超柔毛巾',1008001,0,'[\\\"http://yanxuan.nosdn.127.net/bd9f656b8d200eb99e5cec104d18afd2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bd9f656b8d200eb99e5cec104d18afd2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bd9f656b8d200eb99e5cec104d18afd2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bd9f656b8d200eb99e5cec104d18afd2.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bd9f656b8d200eb99e5cec104d18afd2.jpg\\\"]','','瞬间吸水，亲肤不掉毛。',1,3,'http://yanxuan.nosdn.127.net/a7c7eec41194e65d64931a2d08ef4f8c.png','',0,0,'件',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130037,'1130037','帆布丝羽绒多用坐垫',1008002,1001000,'[\\\"http://yanxuan.nosdn.127.net/b0ba668ae100729eb7e64926d7770780.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b4f245f54e4e98f064e7fefac6a16642.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f8cb009f605f1d0425627452ec8c1fd8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de3bf0eef433d216b782b9cb0830e66e.jpg\\\"]','','柔软蓬松，透气防螨。',1,17,'http://yanxuan.nosdn.127.net/19ecd7c6f6f31219cf75117238d95139.png','',0,0,'件',59.00,39.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/96eb609f4f459ab9c502eca7d6e7e204.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96eb609f4f459ab9c502eca7d6e7e204.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a86dcf95f3a56db6b7f99f35585dbf2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a86dcf95f3a56db6b7f99f35585dbf2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bced9d39bcb740a4655ce725f4823e96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bced9d39bcb740a4655ce725f4823e96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11213e448a23292458adc934a643c076.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11213e448a23292458adc934a643c076.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9116d858fd59f1ed32fc8a692dfc3fed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9116d858fd59f1ed32fc8a692dfc3fed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b5982e9a43ccaa724f397c9e777b026.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b5982e9a43ccaa724f397c9e777b026.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4397bee1cf9589eaaf06b8fe9d0a778.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4397bee1cf9589eaaf06b8fe9d0a778.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/740affd3cef0ef40378c2cb265322f15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/740affd3cef0ef40378c2cb265322f15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6aeacc205ef12e2a475eb7a8e8d1eedc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6aeacc205ef12e2a475eb7a8e8d1eedc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/119709a17d08f2c1c48d95d24b34ca3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/119709a17d08f2c1c48d95d24b34ca3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8332210d4b81d04f42612fc097db259a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8332210d4b81d04f42612fc097db259a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be1775926acb0e26b6012cba7893e979.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be1775926acb0e26b6012cba7893e979.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c6463b2f53c89273f1f79b22dd9e399.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c6463b2f53c89273f1f79b22dd9e399.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38ad3258ebf23df5164854fe403d1ecf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38ad3258ebf23df5164854fe403d1ecf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dc5f238dcb73c249f813233d81156c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dc5f238dcb73c249f813233d81156c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb132e2e8a254b8cbc345900f6fe3c39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb132e2e8a254b8cbc345900f6fe3c39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0603f40fefd14ee24e83102c5f09100a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0603f40fefd14ee24e83102c5f09100a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45966f38135adc1280a667040d8e02c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45966f38135adc1280a667040d8e02c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1064a54404b6c795eae261334697e050.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1064a54404b6c795eae261334697e050.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ef89417a81ac1893c95179585bf1140.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ef89417a81ac1893c95179585bf1140.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2cd2da4d75a63ada7c655e53c223a0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2cd2da4d75a63ada7c655e53c223a0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e942519448a5de394885730e0e3e4694.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e942519448a5de394885730e0e3e4694.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d016a18c381916813c2eaf46c3f791c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d016a18c381916813c2eaf46c3f791c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6935f94bc80c11c89c3f8a2aa02c4273.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6935f94bc80c11c89c3f8a2aa02c4273.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9dedb80199b09770b98fa46cd8a8752d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9dedb80199b09770b98fa46cd8a8752d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f447537304e43a44b1e75272d3334899.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f447537304e43a44b1e75272d3334899.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10d901511a3d5f03be68bd64dbadfe1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10d901511a3d5f03be68bd64dbadfe1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b03a90f7bb697a9bc6e0be9d9997b11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b03a90f7bb697a9bc6e0be9d9997b11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62b277f50e7cca075cd2565a4f2b4466.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62b277f50e7cca075cd2565a4f2b4466.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e304f8f1ea10792be9072d3c7a4a8359.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e304f8f1ea10792be9072d3c7a4a8359.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d7c39350bee7fdc8bdb78a27eb83a17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d7c39350bee7fdc8bdb78a27eb83a17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/742927f31cadc641a7b9bb3fc5eebfe3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/742927f31cadc641a7b9bb3fc5eebfe3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2562d7d1a0fa4b9497e4ec719f08a8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2562d7d1a0fa4b9497e4ec719f08a8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/430442f4524e66347fbbf10aaf213a07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/430442f4524e66347fbbf10aaf213a07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/620ec1f6387fa84f5518ad2484ebaa91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/620ec1f6387fa84f5518ad2484ebaa91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/455f215b9a402ed9c0c0972c0abddbb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/455f215b9a402ed9c0c0972c0abddbb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1def5c3403bdf5cd7e11b85354542452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1def5c3403bdf5cd7e11b85354542452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97348238ae3c27a56ff46e1b6c3deb3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97348238ae3c27a56ff46e1b6c3deb3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3739461a5eb338a70e7d34a86ff26d1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3739461a5eb338a70e7d34a86ff26d1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96fae2f2cc374d459c3969e7a7cc1a83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96fae2f2cc374d459c3969e7a7cc1a83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1654fc509c8c77e9fe4c75ffc099f24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1654fc509c8c77e9fe4c75ffc099f24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf95ab8945e61c7180eba1e01721b15a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf95ab8945e61c7180eba1e01721b15a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b054e088382a0cb32a529082c52745e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b054e088382a0cb32a529082c52745e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53d517d1ca7532cde5cc74ad2a10dc17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53d517d1ca7532cde5cc74ad2a10dc17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6222e1fd9b42422e8454cc087a0e0358.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6222e1fd9b42422e8454cc087a0e0358.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8995022af1826e846b7a143e7b8b325.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8995022af1826e846b7a143e7b8b325.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a12c940956234db2f60a2b5b51d6a35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a12c940956234db2f60a2b5b51d6a35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4be7d3058e6eec27a4be033642359535.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4be7d3058e6eec27a4be033642359535.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2eca2f02d4ec269cc1893876fb17511a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2eca2f02d4ec269cc1893876fb17511a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf761716e3b430f63e059a891703200e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf761716e3b430f63e059a891703200e.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130038,'1130038','贝壳型凉感蓬松宠物窝垫',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/39de8ddff1b400d9a97f1e5f9e9dbfeb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3e26ee5ec4d49970a0325ca7cc2cea15.jpg\\\", \\\"http://yanxuan.nosdn.127.net/993bb3da9f03945eaef6e6199efc86c9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d39ad81f2e6babc693edaf08817bd308.jpg\\\"]','','日本面料，简约条纹',1,1,'http://yanxuan.nosdn.127.net/4d77296e02896675558f1a8a83742132.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/545ac949704206b612a27c06b3b45a7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/545ac949704206b612a27c06b3b45a7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d87c04d5b5029619c8953063b77b1d90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d87c04d5b5029619c8953063b77b1d90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86c5aafe4ebaaf8873f058a95779a644.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86c5aafe4ebaaf8873f058a95779a644.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9505782ae7ad8aead0bed93bc3bef320.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9505782ae7ad8aead0bed93bc3bef320.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a748fa6e68989b8ff84fd52612fe8608.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a748fa6e68989b8ff84fd52612fe8608.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0420b8360175be459f3fb9d8b3cc248c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0420b8360175be459f3fb9d8b3cc248c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/869f4247c47870c5c2c68c18128fe757.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/869f4247c47870c5c2c68c18128fe757.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/987f1b250927a4014c32e017271a4501.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/987f1b250927a4014c32e017271a4501.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ad8a01ab92d5a2e4c8608ac7e8795d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ad8a01ab92d5a2e4c8608ac7e8795d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/525ae0c9d57c23e4ecdc580c14a7e131.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/525ae0c9d57c23e4ecdc580c14a7e131.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38c8db4f00f08129f273e68bd32ec198.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38c8db4f00f08129f273e68bd32ec198.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/761a985445ef78b90086cb6859d9bdf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/761a985445ef78b90086cb6859d9bdf8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3dd23a95041d74929be15980c98428a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3dd23a95041d74929be15980c98428a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78f4f4d31f371afb68b0c6d3c97b2d65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78f4f4d31f371afb68b0c6d3c97b2d65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/565511c989dd547a8ab0c96b07e62f96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/565511c989dd547a8ab0c96b07e62f96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c975b4b450ff0a74bd6fbecab30d9df3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c975b4b450ff0a74bd6fbecab30d9df3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d20fc1e38aa5a06ad69bc29cc5830d8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d20fc1e38aa5a06ad69bc29cc5830d8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52d9b09959f12d763280b739b8d87dc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52d9b09959f12d763280b739b8d87dc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c54c2b65ee0092ba1fd59ee32e02a7cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c54c2b65ee0092ba1fd59ee32e02a7cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ce9a67b75be30d50c3202d5c51e2f68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ce9a67b75be30d50c3202d5c51e2f68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7cb9425926733c9c613aa8ccdffb187a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7cb9425926733c9c613aa8ccdffb187a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9652752c245ed56b3e56113539be1b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9652752c245ed56b3e56113539be1b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8224650ec0bdaa8516667c8619cc62e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8224650ec0bdaa8516667c8619cc62e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8140b6c569f59abfcccbab84eca17413.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8140b6c569f59abfcccbab84eca17413.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/953dcf965848117d902a47619c265a57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/953dcf965848117d902a47619c265a57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79226349a13d75000c91c3d0e0a0aee8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79226349a13d75000c91c3d0e0a0aee8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a86670d0a301950c5757981e3e880ce1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a86670d0a301950c5757981e3e880ce1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c4e4f21a1a9b76b7a9518eac83137d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c4e4f21a1a9b76b7a9518eac83137d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69f33bf7c070b4bd840f34c82954e37b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69f33bf7c070b4bd840f34c82954e37b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f24980484da04693a1342beba9a51232.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f24980484da04693a1342beba9a51232.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fdeb95ea2b3ffa3609b9af5008d8659.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fdeb95ea2b3ffa3609b9af5008d8659.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7073524abd55a465000547056d4abacd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7073524abd55a465000547056d4abacd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49db4719ae509a1dda40472d2df890ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49db4719ae509a1dda40472d2df890ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3e7474fd0de3ef734e36f5a7485ce0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3e7474fd0de3ef734e36f5a7485ce0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31d772a387be443059342ad1449c301d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31d772a387be443059342ad1449c301d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75745fca365647ee004ba97cf6055736.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75745fca365647ee004ba97cf6055736.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2fd8597c7a4e23e9b11b9d514a0a8dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2fd8597c7a4e23e9b11b9d514a0a8dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c896ffccc3bed33ee0bb483ea4feebf5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c896ffccc3bed33ee0bb483ea4feebf5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea6805e0bb5330b933ce22e5f1cb2758.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea6805e0bb5330b933ce22e5f1cb2758.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/554b21340d448179d1fcad2b792e5b01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/554b21340d448179d1fcad2b792e5b01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb03cc76d3e5cf17fdb76b83535b7926.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb03cc76d3e5cf17fdb76b83535b7926.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef7b14e40a2d38bafbf913db130610a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef7b14e40a2d38bafbf913db130610a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3990b39fd45879eebb3c9554c41fcc38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3990b39fd45879eebb3c9554c41fcc38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68a096edd4be2ab309082b64c6a3b77c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68a096edd4be2ab309082b64c6a3b77c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b59e89067c7cda1c96d8861f1be43921.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b59e89067c7cda1c96d8861f1be43921.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b50717ecab23f410a4c4e48c8d947903.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b50717ecab23f410a4c4e48c8d947903.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ad6c023319424b6338e30fb0080a429.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ad6c023319424b6338e30fb0080a429.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b275c93292ceda05a951fdead26e1b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b275c93292ceda05a951fdead26e1b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e59adfa080fdfd074af2190f59542951.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e59adfa080fdfd074af2190f59542951.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f6fb13653c84f361996a99ab0aa25959.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f6fb13653c84f361996a99ab0aa25959.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c832f7d3ea6b43bf04be53261405a049.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c832f7d3ea6b43bf04be53261405a049.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c3f3393a1379de835849999b81b3e12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c3f3393a1379de835849999b81b3e12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/905d0724aaed70d92ab9a55b89260b9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/905d0724aaed70d92ab9a55b89260b9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a7031eadda74fc87fd936a2086e1f93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a7031eadda74fc87fd936a2086e1f93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dca2e02343e1acb7335664673bd81ddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dca2e02343e1acb7335664673bd81ddc.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130039,'1130039','房型封闭式凉感条纹宠物窝',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/19b1375334f2e19130a3ba0e993d7e91.jpg\\\", \\\"http://yanxuan.nosdn.127.net/aba31dea912ac4fa9526ddf6a014876e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7046f8b5eb83dea640eea187c6a43b11.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a3d635f82a5bae0c4fa29a49367f3451.jpg\\\"]','','日式面料，四季可用',1,3,'http://yanxuan.nosdn.127.net/03c73e1f1ce1d2365e83b3230e507030.png','',0,0,'件',109.00,89.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2e60bc695ec19eb5f68c0d323f315986.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e60bc695ec19eb5f68c0d323f315986.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47f959a579fccb31dd8f43f378a4642c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47f959a579fccb31dd8f43f378a4642c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd69887384e3a47c48f3a96a89dbc860.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd69887384e3a47c48f3a96a89dbc860.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df0f383d44bf5a434d495554dada9d68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df0f383d44bf5a434d495554dada9d68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5666f8baee48295b10326d7c4bbaf5f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5666f8baee48295b10326d7c4bbaf5f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d67ba2c88a98f4c128b18a48d0813f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d67ba2c88a98f4c128b18a48d0813f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08de797e6dcb46246731e4f27d53aed4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08de797e6dcb46246731e4f27d53aed4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/835ab4094a214b31c9a38690188c6f18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/835ab4094a214b31c9a38690188c6f18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00710ccdd9545eff77c5b48ffc12ce35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00710ccdd9545eff77c5b48ffc12ce35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe0e441beb8db4ebd61f88f8666bb01d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe0e441beb8db4ebd61f88f8666bb01d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96523bb2d102ca5bd4c039625ac787ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96523bb2d102ca5bd4c039625ac787ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4aafa566ae813f6209b7cb191bac318.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4aafa566ae813f6209b7cb191bac318.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc73bce3f2615a7d4940df0069d2a371.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc73bce3f2615a7d4940df0069d2a371.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6b9fafaaa8f407c1e95037632a6b527.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6b9fafaaa8f407c1e95037632a6b527.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f047a0b9ef5adb0cb3d279d943ba67ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f047a0b9ef5adb0cb3d279d943ba67ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fd45ae1c96714c2f708f6c90a820dc3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fd45ae1c96714c2f708f6c90a820dc3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1184cc1635b79cea484683d89e1dc107.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1184cc1635b79cea484683d89e1dc107.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c4bcf07a8c152006aeea1dbcef9f6e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c4bcf07a8c152006aeea1dbcef9f6e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc099d360d6eba103ab35fb79ad1989.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc099d360d6eba103ab35fb79ad1989.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/411b4738ea1a8676bb02f6dd150455b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/411b4738ea1a8676bb02f6dd150455b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c80b63dad938193a29d5d79a2b279b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c80b63dad938193a29d5d79a2b279b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c479654ce5c8308ffa850b2baabff4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c479654ce5c8308ffa850b2baabff4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3bb717930ebf0bc908f37b6e25f76a90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3bb717930ebf0bc908f37b6e25f76a90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8841053574ac6ec5123c8ecc7f31016a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8841053574ac6ec5123c8ecc7f31016a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/87f2f7b4c08bec75c6d334f08170e504.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/87f2f7b4c08bec75c6d334f08170e504.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bb5731d33e08ed46b42914e287aa130.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bb5731d33e08ed46b42914e287aa130.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a1b7ec870bc558e8d58827832d4cc2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a1b7ec870bc558e8d58827832d4cc2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/67626b790405d8bda762bb7b71abad72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/67626b790405d8bda762bb7b71abad72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e397ec0bc1e138759b77dd17b466b565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e397ec0bc1e138759b77dd17b466b565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5541fc204f73f4e2b5800ca1e20c74ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5541fc204f73f4e2b5800ca1e20c74ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c87ed19400338de755d8c9a263781b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c87ed19400338de755d8c9a263781b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/317595b21489f43d0bdcdf04b498b453.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/317595b21489f43d0bdcdf04b498b453.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cfe2a70989e10e1c526193807b2a5156.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cfe2a70989e10e1c526193807b2a5156.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4776216f6490fedc6a660d787895915.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4776216f6490fedc6a660d787895915.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa976e6d0460daa3f22d4a9ddbb85655.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa976e6d0460daa3f22d4a9ddbb85655.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0554b5974d419d2d398bb4abfc3c58fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0554b5974d419d2d398bb4abfc3c58fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2cc642bcb1f97d742bc6a2e51ec4278.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2cc642bcb1f97d742bc6a2e51ec4278.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79c4e4d513f40805a51dd7bf31e34cdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79c4e4d513f40805a51dd7bf31e34cdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/155589dad685c2dac737bd52bf6578d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/155589dad685c2dac737bd52bf6578d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e25b510ff8c50488509aba0555dcabf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e25b510ff8c50488509aba0555dcabf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0ab6ec0bc3217f56490672543bcbe3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0ab6ec0bc3217f56490672543bcbe3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3541f1cf3c2d8a10d52dea8fc804562.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3541f1cf3c2d8a10d52dea8fc804562.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bf9a5ece1d5e1b3fb6002fc4a33c12b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bf9a5ece1d5e1b3fb6002fc4a33c12b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fccf95a9a92cc4ef478ec43cb5ccc5c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fccf95a9a92cc4ef478ec43cb5ccc5c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8cd32d1dacedd385d80fc2a9a186306.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8cd32d1dacedd385d80fc2a9a186306.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b751308cbb3ebbaa919994889bedd8ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b751308cbb3ebbaa919994889bedd8ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a9a8fa5c7530885ac59b14fde6e43f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a9a8fa5c7530885ac59b14fde6e43f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3860b5c02fc81d76da85d952ea6afd49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3860b5c02fc81d76da85d952ea6afd49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3dc6361930475090bb701f0b0594e89b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3dc6361930475090bb701f0b0594e89b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/236950202693dd70bd6d0d441a5b1887.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/236950202693dd70bd6d0d441a5b1887.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0968d338c1dd5b630c8d9c36bcc6bfc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0968d338c1dd5b630c8d9c36bcc6bfc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6160c1cf012984fdfce72143a4229bca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6160c1cf012984fdfce72143a4229bca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c92c4834d33b34a133365c6b790270a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c92c4834d33b34a133365c6b790270a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83dad41c5b7b09e973d6e60c18e8b3ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83dad41c5b7b09e973d6e60c18e8b3ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27ef4ef4212b48031865533d538db321.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27ef4ef4212b48031865533d538db321.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e57d45af1e54c2f408aa96493e7e15b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e57d45af1e54c2f408aa96493e7e15b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c9ebfcc5539e4cee23b77a0613d1208.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c9ebfcc5539e4cee23b77a0613d1208.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/959e2bbd613279b43e42046acf3408f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/959e2bbd613279b43e42046acf3408f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b9293e40c5ff4d38feb97267c5fe6f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b9293e40c5ff4d38feb97267c5fe6f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdb0cbd93e4b12d14d93be7d7263f8ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdb0cbd93e4b12d14d93be7d7263f8ab.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130041,'1130041','皮毛一体多用长毛坐垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/173d269f6c7b875bc433640a7cf12be4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ccec1687cfa1a47c26d5eb952074bba9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0de6c515b07b96f902b42eb4262a0c6c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f3d5ec834ce5028f306e1e1d47d868ab.jpg\\\"]','','澳洲羊毛的细腻触感',1,19,'http://yanxuan.nosdn.127.net/442b9d99c0e7f39efd7967e0e5987374.png','',0,0,'件',129.00,109.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/a83b7218bebd4a83c0b9f6f8a5ea6d08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a83b7218bebd4a83c0b9f6f8a5ea6d08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7eb4d058e83cd9b6aadf5c20c63bcb1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7eb4d058e83cd9b6aadf5c20c63bcb1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/731f44716c3c585f563196c887544f52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/731f44716c3c585f563196c887544f52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59afb77cc310a6fde3eabd6401e8bab1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59afb77cc310a6fde3eabd6401e8bab1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db3c78a5adad2a0ea8d219083e8547b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db3c78a5adad2a0ea8d219083e8547b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/267cc4ac41d6632aec5b18e2026739dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/267cc4ac41d6632aec5b18e2026739dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76a367af57d38c0bc77086e784c2b1d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76a367af57d38c0bc77086e784c2b1d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c092b3925ee7b5b7dbea29c528ad8db8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c092b3925ee7b5b7dbea29c528ad8db8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aac2f3d5806016fb150d85bebc93b2e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aac2f3d5806016fb150d85bebc93b2e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cfeb9a9bfcf4338db92e6d8709aef44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cfeb9a9bfcf4338db92e6d8709aef44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/453d3f8a6e61298886c3fa4361b59605.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/453d3f8a6e61298886c3fa4361b59605.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d25fcc0a95baeba59f30b59afa3ff159.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d25fcc0a95baeba59f30b59afa3ff159.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ee00ea5c06c29973db9cf3c499ef0ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ee00ea5c06c29973db9cf3c499ef0ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23c51b8a7d25e88cc510609363f254a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23c51b8a7d25e88cc510609363f254a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07a632e4319a4cc45df6404975a4856a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07a632e4319a4cc45df6404975a4856a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f20bda3dd2f724c3871226efc8ab3e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f20bda3dd2f724c3871226efc8ab3e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e237eaaad9484fa1ab1f4a8050df712.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e237eaaad9484fa1ab1f4a8050df712.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68be7318cc3708254004b1f25abca889.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68be7318cc3708254004b1f25abca889.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c0aabf924bbb70486bb38bdf0fe0b9ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0aabf924bbb70486bb38bdf0fe0b9ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/938abacde4b46e5fce40c8cb6b5a31f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/938abacde4b46e5fce40c8cb6b5a31f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/560dc26811c85df2a81425ccc80f2daf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/560dc26811c85df2a81425ccc80f2daf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea86c3ab570b110f24322dc88a2bf67c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea86c3ab570b110f24322dc88a2bf67c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20b35a848e5b3e68039d8825ebaf0a92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20b35a848e5b3e68039d8825ebaf0a92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/613568156bb735d4e826fadf9b14f30a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/613568156bb735d4e826fadf9b14f30a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c2626064e1a840a3fd0d8937092a2a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c2626064e1a840a3fd0d8937092a2a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4710cebed0fec2581f6c9d7a0ad35f4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4710cebed0fec2581f6c9d7a0ad35f4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab23943bde5aee5a2f4db6305a638d06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab23943bde5aee5a2f4db6305a638d06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f1722c1d44e6791a239d20ae2a84cb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f1722c1d44e6791a239d20ae2a84cb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec18f626b235961bba578d8726ab5d80.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec18f626b235961bba578d8726ab5d80.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f7c162a729f465edd62b2489af405820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f7c162a729f465edd62b2489af405820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de81035e3a2a44ad0420d25b374b248a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de81035e3a2a44ad0420d25b374b248a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92fcfcee4d8a828fcbda97ecd4ac7c61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92fcfcee4d8a828fcbda97ecd4ac7c61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c98e8d8abc2f97df7fa1ed3e8a19e793.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c98e8d8abc2f97df7fa1ed3e8a19e793.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/505355f028aafae9ac04ef604c46a89d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/505355f028aafae9ac04ef604c46a89d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3439e5f1fce7f602ae8fabce64e3bafa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3439e5f1fce7f602ae8fabce64e3bafa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ceea236ef9f0b2198dfce82e9265c06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ceea236ef9f0b2198dfce82e9265c06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/784fe3f5f7fdeebdb26b2dab8542d1f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/784fe3f5f7fdeebdb26b2dab8542d1f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15e4f99d5d272b0680868d2007d64382.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15e4f99d5d272b0680868d2007d64382.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99c09fe7b0d3ca49a81c7df0cc0a9dc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99c09fe7b0d3ca49a81c7df0cc0a9dc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65c12643b55584e3e0474292c42088ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65c12643b55584e3e0474292c42088ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d8d75b4b195d6086a44f2ee6d906d12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d8d75b4b195d6086a44f2ee6d906d12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c52456cd1b25174f0222273b7394a5b7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c52456cd1b25174f0222273b7394a5b7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a089ad7a18777861c80d185b090dedc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a089ad7a18777861c80d185b090dedc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/671ddba19da9b13492dbb5e3126fc018.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/671ddba19da9b13492dbb5e3126fc018.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f60ed6e112c17e1ddbb301181477e8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f60ed6e112c17e1ddbb301181477e8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2a5a06bac71ceb645b47a322bef9588.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2a5a06bac71ceb645b47a322bef9588.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f612db88ffb6d1b7287039c8d3aee82d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f612db88ffb6d1b7287039c8d3aee82d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27daed7f1faba0f42c1b0987eca43e1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27daed7f1faba0f42c1b0987eca43e1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20a180e85c13f5ece01875ad91842193.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20a180e85c13f5ece01875ad91842193.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d42ca472ca07af1e8037673a2d1159e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d42ca472ca07af1e8037673a2d1159e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b161c4bf4b6937ed473449b21c61b8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b161c4bf4b6937ed473449b21c61b8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76b268744bf751b5783ada179c343474.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76b268744bf751b5783ada179c343474.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18606e0a3c59f2a26585fbdd6a5dcedd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18606e0a3c59f2a26585fbdd6a5dcedd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8636692d4819117b12b27f77506562d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8636692d4819117b12b27f77506562d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8d7e96b6cf7fc8dd7a4b9136c9c9c37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8d7e96b6cf7fc8dd7a4b9136c9c9c37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a69f5909a0ebf3450db5117530fbe339.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a69f5909a0ebf3450db5117530fbe339.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00e9909b758d7585ac99423105b6d4a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00e9909b758d7585ac99423105b6d4a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ba5974ae02618ba26ff2bb17f3f13ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ba5974ae02618ba26ff2bb17f3f13ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bea1ce19478453bbbe46607b7a7880c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bea1ce19478453bbbe46607b7a7880c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec70f25fdeab6b03b4b8f01dc070f5d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec70f25fdeab6b03b4b8f01dc070f5d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50bbfa868ba0fc8d424bf1ec82f78ac6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50bbfa868ba0fc8d424bf1ec82f78ac6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b634157638fba9765dd10caf729e27e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b634157638fba9765dd10caf729e27e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79ccb6cc4a76e2b69976d3f279539b94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79ccb6cc4a76e2b69976d3f279539b94.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130042,'1130042','皮毛一体多用单张长毛皮垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/b07878f08b72752e382aabb5f3e2953a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/686fcb1f88a347074e403100b11bbfab.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d63f27a42ba184ae7b901a8b325f3647.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2ff09addcb19551f5b988a1ec2b436b3.jpg\\\"]','','盖毯、沙发垫、椅垫、地垫',1,20,'http://yanxuan.nosdn.127.net/dc9d09334eb201fe9408ed604e549941.png','',0,0,'件',259.00,239.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d4ace79c311683de546aba0830b13cef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4ace79c311683de546aba0830b13cef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18f00b15f815b2d3b37f2348f51ce341.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18f00b15f815b2d3b37f2348f51ce341.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a17fcbf654cc3a60c107555af325f0fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a17fcbf654cc3a60c107555af325f0fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6feee80476170267af6d71cdfc0b37dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6feee80476170267af6d71cdfc0b37dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/124b182a0a67835b4200cff8176c2b02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/124b182a0a67835b4200cff8176c2b02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd74be4a87738afaa04399b4d6d9a870.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd74be4a87738afaa04399b4d6d9a870.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e556cbed463186c4bd99726067b923af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e556cbed463186c4bd99726067b923af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20688f897c671755758786d3040b5c07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20688f897c671755758786d3040b5c07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/260894bbf0796d65bebe0b8af28b6c95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/260894bbf0796d65bebe0b8af28b6c95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56c59db0a7a2edb57f79cd4ce4725ebd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56c59db0a7a2edb57f79cd4ce4725ebd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9abac8c992347562001de711510bb03.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9abac8c992347562001de711510bb03.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dfd5efde1a9607ad69344f3feb07cae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dfd5efde1a9607ad69344f3feb07cae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5563d9a3bcb3063e35ff0a04ea92e0f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5563d9a3bcb3063e35ff0a04ea92e0f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7106f4f4495f0c3aea5174855ce2e54b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7106f4f4495f0c3aea5174855ce2e54b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da4e5459ca9ce74f3ed0ff5c696d2893.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da4e5459ca9ce74f3ed0ff5c696d2893.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9b673bcc593d748b37a81edea189219.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9b673bcc593d748b37a81edea189219.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a72abb429df56c56bbe23b76f9b75204.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a72abb429df56c56bbe23b76f9b75204.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb1ba0a44c42710e55d6237a34d34ed6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb1ba0a44c42710e55d6237a34d34ed6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/370e417d42332266cc31245eef4e2829.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/370e417d42332266cc31245eef4e2829.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/604f40c00f0529e948a6f6823fe3f8e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/604f40c00f0529e948a6f6823fe3f8e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9ad179d3795a8ebd43f5c9572ba2164.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9ad179d3795a8ebd43f5c9572ba2164.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2cd302f653917f33d9a2d311599ed4f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2cd302f653917f33d9a2d311599ed4f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da22ec1b12867fb95fd7614a7736f76c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da22ec1b12867fb95fd7614a7736f76c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3671bc562ca4d94dc9b87ad90de08ef3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3671bc562ca4d94dc9b87ad90de08ef3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/884bb79eb13e38ded605375476cc07e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/884bb79eb13e38ded605375476cc07e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f7fb86caeb445cf7eaf060f1df33383.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f7fb86caeb445cf7eaf060f1df33383.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90680bb4193443696a79af88cc5786a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90680bb4193443696a79af88cc5786a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ff03648c6839c642086a35143a0b5059.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ff03648c6839c642086a35143a0b5059.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f276b0dd0ca7fcdb576457a46eae4ff3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f276b0dd0ca7fcdb576457a46eae4ff3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7ec5147aee4c483754a957969029eb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7ec5147aee4c483754a957969029eb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c26d9ad8701cc643cbfc6f69177791bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c26d9ad8701cc643cbfc6f69177791bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55f4129b1fbcc20d6a0b9e2362043cb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55f4129b1fbcc20d6a0b9e2362043cb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02770843341ed31eabb0ddadc5526c52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02770843341ed31eabb0ddadc5526c52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd815b745f3c22fa4cff373d41943a86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd815b745f3c22fa4cff373d41943a86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/480e0f3996285f44e368a73e6c5fe47d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/480e0f3996285f44e368a73e6c5fe47d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/264ee5efd645ca38168ad3bef5496cc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/264ee5efd645ca38168ad3bef5496cc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c46826b7d93342f359a818e80ec44765.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c46826b7d93342f359a818e80ec44765.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaade386233b7b54edadb80675494918.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaade386233b7b54edadb80675494918.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/848aac16cd9d30ce840deb70389c907b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/848aac16cd9d30ce840deb70389c907b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c50458c6772905734ff3e7ca1bce9978.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c50458c6772905734ff3e7ca1bce9978.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61834d14a5d1d2b77ac92e1baca558c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61834d14a5d1d2b77ac92e1baca558c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56ca8b2bc8f4b5ef00b2f87939a11602.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56ca8b2bc8f4b5ef00b2f87939a11602.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cb834323e30c14d86a4c1cc9b84d894.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cb834323e30c14d86a4c1cc9b84d894.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85e5f74e7205a9328209ca25be550598.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85e5f74e7205a9328209ca25be550598.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ea202d5a703a4291495f5c0f83bed73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ea202d5a703a4291495f5c0f83bed73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf7433c7f8a437cf93ef90d1431adb57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf7433c7f8a437cf93ef90d1431adb57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbeddf135c0fe1f0ecfae5c6c057ea00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbeddf135c0fe1f0ecfae5c6c057ea00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66b9e3c4986788281dece847560367d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66b9e3c4986788281dece847560367d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e5d979ede709143d5f0f852855768c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e5d979ede709143d5f0f852855768c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce0a7f7bb447aa5148ecd03a7555c820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce0a7f7bb447aa5148ecd03a7555c820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e6b8abe385df7425ade75210724ffcc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e6b8abe385df7425ade75210724ffcc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb3266c177f530869f44f1eaaf0b2bb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb3266c177f530869f44f1eaaf0b2bb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ced47c9582a9353dc71d668467067b9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ced47c9582a9353dc71d668467067b9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae6270545f82ef2bee47fb0fa3d15e04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae6270545f82ef2bee47fb0fa3d15e04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75d28b0323f8b9586d0339ab881c4e04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75d28b0323f8b9586d0339ab881c4e04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7750e85464204a7c57f50689eec1db4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7750e85464204a7c57f50689eec1db4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/373138262298b9c59e33a7cc3fe2f1e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/373138262298b9c59e33a7cc3fe2f1e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f39bae90e169f4e5417e0be5c66ad4df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f39bae90e169f4e5417e0be5c66ad4df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f16ebd2501372da0d4b3e4e516df3fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f16ebd2501372da0d4b3e4e516df3fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f925d64a68d213867ceafc1211d59250.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f925d64a68d213867ceafc1211d59250.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eddd76fef80b87e1cf3a8d7bd6ceee3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eddd76fef80b87e1cf3a8d7bd6ceee3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b74337d99199c178ff101a912cb37212.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b74337d99199c178ff101a912cb37212.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6fc6571f3526af0d9126071bd479e35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6fc6571f3526af0d9126071bd479e35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d26b83628f5e2b2830fd49b52ba67e70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d26b83628f5e2b2830fd49b52ba67e70.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130049,'1130049','柔软凉爽天丝麻蚕丝填充夏凉被',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/c7ed6fa62ee79921ac580dc025df5f54.jpg\\\", \\\"http://yanxuan.nosdn.127.net/efc598e817aa7cb220fa7aa962162105.jpg\\\", \\\"http://yanxuan.nosdn.127.net/80082370ca7df234210a664f1915b717.jpg\\\", \\\"http://yanxuan.nosdn.127.net/91e49302cf4cfe00937972b103809836.png\\\"]','','天然恒温凉感面料，蚕丝美肤透气保护',1,6,'http://yanxuan.nosdn.127.net/d88513f85b3617d734bde93af2c766c9.png','',0,0,'件',449.00,429.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/78ab7f68b2ff7b88c934d67e1a51919e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78ab7f68b2ff7b88c934d67e1a51919e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d741a2638cdb9ff518a5e5ae6f64d340.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d741a2638cdb9ff518a5e5ae6f64d340.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c0b758b1726a8ef772baab9a3c0abcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c0b758b1726a8ef772baab9a3c0abcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9572c4793862e9cd739ac07a56629d14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9572c4793862e9cd739ac07a56629d14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90d588c7d5a7fdce64dc5178c3145f16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90d588c7d5a7fdce64dc5178c3145f16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97d1025440662b767341ba7f8a8edb51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97d1025440662b767341ba7f8a8edb51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d76a77afeb1282e266c3d57864ba6d83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d76a77afeb1282e266c3d57864ba6d83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17d9f9628ad9644f4dea42342635331c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17d9f9628ad9644f4dea42342635331c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c49c0bb5910ebdec89c2d519fa6b62bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c49c0bb5910ebdec89c2d519fa6b62bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/861d8e40f9f43a4ef68794b5b2567cf1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/861d8e40f9f43a4ef68794b5b2567cf1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f0d13769b8a3d7453a34efcae9b981d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f0d13769b8a3d7453a34efcae9b981d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb70ba625e83b1ec9f6e5ee6dd14dd27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb70ba625e83b1ec9f6e5ee6dd14dd27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b1fc1113e7b7ac9a4e03bcf5bf46d5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b1fc1113e7b7ac9a4e03bcf5bf46d5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10266307384a47f8720d217d3857d162.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10266307384a47f8720d217d3857d162.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8918fe9d86ab29def3c479ecf90a0fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8918fe9d86ab29def3c479ecf90a0fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7f1e68fec281bdd15cb1d38938dbca2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7f1e68fec281bdd15cb1d38938dbca2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d81ec7a4b77030b0789796e4dd75fb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d81ec7a4b77030b0789796e4dd75fb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b697fe55f0f9bd8e69ed0b2b8375fcc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b697fe55f0f9bd8e69ed0b2b8375fcc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a442cbe6add589159ea931adb10fa0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a442cbe6add589159ea931adb10fa0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2e5a3acf3337e8164b35de94a75cbc7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2e5a3acf3337e8164b35de94a75cbc7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74cb32f818abd6f294310ea2825f92dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74cb32f818abd6f294310ea2825f92dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1183f9927eacea303775460ccd0d1654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1183f9927eacea303775460ccd0d1654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1dd0a755c91723b274dbf690c0731fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1dd0a755c91723b274dbf690c0731fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2c1e3c36b91ef71acb01d064184b7e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2c1e3c36b91ef71acb01d064184b7e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d3ba5b141324ede316631a5efe3734a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d3ba5b141324ede316631a5efe3734a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3dad83a2caf03ad4c112b537bd0eb3bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3dad83a2caf03ad4c112b537bd0eb3bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2d97323d49e7b66a31d380d90c23054.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2d97323d49e7b66a31d380d90c23054.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea911478280a3449e5049b5128def2e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea911478280a3449e5049b5128def2e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3e0e978ab7f1e46ac2ba67beb0d6723.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3e0e978ab7f1e46ac2ba67beb0d6723.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c95362ced9bedd8397658a564d6a60c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c95362ced9bedd8397658a564d6a60c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f88603e9ca6e9c2b63048359dde7e7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f88603e9ca6e9c2b63048359dde7e7b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab31125d4367bb9bd25e7d6eac6edece.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab31125d4367bb9bd25e7d6eac6edece.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f74ee2b37c3263d9bd2ffbed037060e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f74ee2b37c3263d9bd2ffbed037060e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adfa5e35c38dc218ebae0bd1d531ef07.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adfa5e35c38dc218ebae0bd1d531ef07.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e6cabd9a970df06d89d681e3ecd34a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e6cabd9a970df06d89d681e3ecd34a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36fcbe5932dc7d7c5836146b5bd92581.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36fcbe5932dc7d7c5836146b5bd92581.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c73acdaa1ca297d7129b1d5105e64730.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c73acdaa1ca297d7129b1d5105e64730.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dd8c5d39b0355770a5f0957afa02621.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dd8c5d39b0355770a5f0957afa02621.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33c047ea719bc6f8d668d84640a8c517.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33c047ea719bc6f8d668d84640a8c517.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f499b26f646a0808497bd47570f17a61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f499b26f646a0808497bd47570f17a61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bea87d0bbe99eca680139d2f2f04fb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bea87d0bbe99eca680139d2f2f04fb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c40228144f08d743abdb69ec3e73f436.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c40228144f08d743abdb69ec3e73f436.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80dccd03379feec227f8f474bec3877a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80dccd03379feec227f8f474bec3877a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb4c789159acb31fbe34c69ace2a67fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb4c789159acb31fbe34c69ace2a67fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de96b7d37954ef8c4edfd439fccf9225.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de96b7d37954ef8c4edfd439fccf9225.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e260359f2bc7b07f66db507cd522e800.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e260359f2bc7b07f66db507cd522e800.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f858f48fdb4de20e0dab9b2a738ea1cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f858f48fdb4de20e0dab9b2a738ea1cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/754ad234cd5c6bb77196ffedb0a9d9bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/754ad234cd5c6bb77196ffedb0a9d9bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3128fed38e15a49d6e58740386c3d990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3128fed38e15a49d6e58740386c3d990.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7aa229bac27decd5ca59f48a490b1a67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7aa229bac27decd5ca59f48a490b1a67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a51aaeeed9e53603998cd97192983074.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a51aaeeed9e53603998cd97192983074.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/030ee652da5272cc7e6686bf03e24760.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/030ee652da5272cc7e6686bf03e24760.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a27818dd8c3215c7eec90d6395e8e9d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a27818dd8c3215c7eec90d6395e8e9d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f36e767c15370626b51edce7c498e7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f36e767c15370626b51edce7c498e7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82ed08b21e8323253d47aa7c1b166d33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82ed08b21e8323253d47aa7c1b166d33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2444954e7ca10c158411f2774961bebc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2444954e7ca10c158411f2774961bebc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b9773b86b4ef2ada1a95690126f0586.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b9773b86b4ef2ada1a95690126f0586.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63dc65e04deda1422041b22892596009.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63dc65e04deda1422041b22892596009.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/426135b8f8ebb50a5650290f9cf2f689.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/426135b8f8ebb50a5650290f9cf2f689.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a6a7b05fa20ff27c0690aa46cca0050.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a6a7b05fa20ff27c0690aa46cca0050.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a80d80daf071f788d6ff24667e0aacb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a80d80daf071f788d6ff24667e0aacb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05caa89d4fc3c8744adb7a07deaa99fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05caa89d4fc3c8744adb7a07deaa99fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bedd6a78be2fce23f477ea450cdcad8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bedd6a78be2fce23f477ea450cdcad8.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1130056,'1130056','奢华植鞣头层水牛皮席三件套',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/1845c55a5c2c3c04b77fcdb31b5ea7d9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1b1a13146260738645cb9c9ee022a3e5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a4d40245f7330fc95172cc7f290b9f8e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/3b9a09ffa1c18a4c28545e4dea06766a.jpg\\\"]','','三峡水牛头层皮，高端夏凉必备',1,9,'http://yanxuan.nosdn.127.net/56e72b84a9bb66687c003ecdaba73816.png','',0,0,'件',2319.00,2299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d5d2100068714156665b108041cf43ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5d2100068714156665b108041cf43ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e50096b71dd66e31bc2b6a7641108be4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e50096b71dd66e31bc2b6a7641108be4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccb2836b89d9404e8c9e2098bed6b14d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccb2836b89d9404e8c9e2098bed6b14d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab2da98998c40dbfe92fd6a10a71ff79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab2da98998c40dbfe92fd6a10a71ff79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7052623da0a26879c3d4f86ad92395f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7052623da0a26879c3d4f86ad92395f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c27298611fec130c6602b650401a149.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c27298611fec130c6602b650401a149.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4f012954639f8885a8eb7d48f92ed4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4f012954639f8885a8eb7d48f92ed4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53752eb092bc797eb8ad6936b9cdf835.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53752eb092bc797eb8ad6936b9cdf835.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38d802e9bc3803de63a5fbb0e67c6e90.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38d802e9bc3803de63a5fbb0e67c6e90.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f465c6dc8864f4ebb456b3a0ea4468b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f465c6dc8864f4ebb456b3a0ea4468b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f3fc504c1038830e0ca5e5d28055dd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f3fc504c1038830e0ca5e5d28055dd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17137f7d5e17f273db1332601714009b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17137f7d5e17f273db1332601714009b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92c6a129b352073b09a3fd3702c9e832.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92c6a129b352073b09a3fd3702c9e832.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47f99ace250610e93a161d9fb2e6ea23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47f99ace250610e93a161d9fb2e6ea23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46cc382cac65987c5c6e4de4e00dbe97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46cc382cac65987c5c6e4de4e00dbe97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a9617af664f28505eb78a7023e0cfb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a9617af664f28505eb78a7023e0cfb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdb7aa47f428da8303c8634d358b930b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdb7aa47f428da8303c8634d358b930b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51f33e92d9a6e6bb32c1621157bea4d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51f33e92d9a6e6bb32c1621157bea4d5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54853900fed7478124081f861d1a7ada.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54853900fed7478124081f861d1a7ada.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bafa71a716112f475b8bd0c468c07fe7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bafa71a716112f475b8bd0c468c07fe7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc401f88c2a542571e3ee5f0fdc6bea0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc401f88c2a542571e3ee5f0fdc6bea0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33e63f698fc737acc89fb57ce64f074f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33e63f698fc737acc89fb57ce64f074f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54646185c8f143c5610c4e628330e963.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54646185c8f143c5610c4e628330e963.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecbf08f0bd20503705c3ceef896f3cac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecbf08f0bd20503705c3ceef896f3cac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7cb076b734066337d721251ad38b3ad9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7cb076b734066337d721251ad38b3ad9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/237763b5100b713f66a68c0890c63468.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/237763b5100b713f66a68c0890c63468.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9283d5f1d1d1b9c5be5c6221c2ff4f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9283d5f1d1d1b9c5be5c6221c2ff4f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9564ccb0d24c310936e15c90de042cbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9564ccb0d24c310936e15c90de042cbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2452bf3e195ba489834a158505d1451a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2452bf3e195ba489834a158505d1451a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ff3931361ae3f64bb0e3c6456c075b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ff3931361ae3f64bb0e3c6456c075b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7be97dcafb5f21d785765c01c8116173.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7be97dcafb5f21d785765c01c8116173.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddb870cac215a6723213e6eb5dccf7d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddb870cac215a6723213e6eb5dccf7d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2496596b00a2a840e57b8ac6f93b466d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2496596b00a2a840e57b8ac6f93b466d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7a2a3c66379c9355af1e5d13df3d237.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7a2a3c66379c9355af1e5d13df3d237.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6392c2213176a1ff11e1eb8b85c2c28d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6392c2213176a1ff11e1eb8b85c2c28d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a9ce6c599399f685b1318ae7f0e4d26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a9ce6c599399f685b1318ae7f0e4d26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/566190fe5a6fe70969e677932903e8a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/566190fe5a6fe70969e677932903e8a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e064167607d8da6a6aa298d02e609155.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e064167607d8da6a6aa298d02e609155.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/219e006d81ffee6103f128fe05514a8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/219e006d81ffee6103f128fe05514a8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/340d1b45addf750ac712b8ff591e2486.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/340d1b45addf750ac712b8ff591e2486.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b17133b68a392c2e8be52a7cd0ec779.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b17133b68a392c2e8be52a7cd0ec779.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d6d6a8992e9f9e5fb2e062a3609ebe9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d6d6a8992e9f9e5fb2e062a3609ebe9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1dd6531a5e0e484261eb54b04451856d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1dd6531a5e0e484261eb54b04451856d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/595d100c5626e518d8ac8dc3cfea35aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/595d100c5626e518d8ac8dc3cfea35aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68a40df81b4caa124a3c4a9e1c450f04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68a40df81b4caa124a3c4a9e1c450f04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc818fdf0353eb5aad13c73f71e5abcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc818fdf0353eb5aad13c73f71e5abcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12dae643ecbc861c94fb206a5258bbcb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12dae643ecbc861c94fb206a5258bbcb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89a6fd88edd23b6819e4dcb530e1031e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89a6fd88edd23b6819e4dcb530e1031e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3602af88a0194c01c0dfbd8917789705.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3602af88a0194c01c0dfbd8917789705.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3e63ac2b85050a6ebbd8b0bf8dfd9ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3e63ac2b85050a6ebbd8b0bf8dfd9ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/817df5e7869b23a4d8a8d5c996ac3036.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/817df5e7869b23a4d8a8d5c996ac3036.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a680a6efe6e84f5e16152ae54533b349.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a680a6efe6e84f5e16152ae54533b349.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9209303d71fe145d798e520315b9ed7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9209303d71fe145d798e520315b9ed7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3833be42e2c884a87e01c2131ffcf68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3833be42e2c884a87e01c2131ffcf68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdd781a0d5046d6acd8b31d6162efc40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdd781a0d5046d6acd8b31d6162efc40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e3eff330730afbd75544c5b2a63bb11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e3eff330730afbd75544c5b2a63bb11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08eff696ab93111c99282fc00484d0f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08eff696ab93111c99282fc00484d0f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59e5cc526bf92e8a7bb821c77d94ef86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59e5cc526bf92e8a7bb821c77d94ef86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba1840d1073845ae14c3a49220e18fb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba1840d1073845ae14c3a49220e18fb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4aa0781419f06b3a7a42c5f1c2aa5fa7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4aa0781419f06b3a7a42c5f1c2aa5fa7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/638b6d14949dd96c8505a5166feb0c4a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/638b6d14949dd96c8505a5166feb0c4a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f0943013429fc7da50bab28d8ede661.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f0943013429fc7da50bab28d8ede661.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/344a1c099ee38c601dd4d34996ac1e65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/344a1c099ee38c601dd4d34996ac1e65.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1131017,'1131017','平滑细篾头层青碳化竹凉席',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/44af43b45ba5c2cdfcc4708cc9e2a724.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2f8fb59b6ee20eadae2534ff7872cb23.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a7896c18b39b560cec229f119d4151dc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d80addb9b62a41d3fe2c2a9036de4686.jpg\\\"]','','细篾整密，凉滑不夹肉',1,10,'http://yanxuan.nosdn.127.net/2b6e2268ed712f1a336283f013abb7a1.png','',0,0,'件',279.00,259.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/1e38709c2c358283dd71c60d1e4ede73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e38709c2c358283dd71c60d1e4ede73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c39a676561ba767a73ef0e78d75f1ad6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c39a676561ba767a73ef0e78d75f1ad6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5e727f778ee73b7d6446b37e0ead39b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5e727f778ee73b7d6446b37e0ead39b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4932fb9c538ba3e6a1028a8c05568452.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4932fb9c538ba3e6a1028a8c05568452.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d4bc8ba55a86642c09d13b33928a1dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d4bc8ba55a86642c09d13b33928a1dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a0a5ebc4548c5f20c9316be33dbf3fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a0a5ebc4548c5f20c9316be33dbf3fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6155642553be65aa8fd5ee3a72604c5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6155642553be65aa8fd5ee3a72604c5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ab410ca905fba205190add1e833eed2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ab410ca905fba205190add1e833eed2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03c3ab0b27f564f6b2fea1997ee2acd2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03c3ab0b27f564f6b2fea1997ee2acd2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a0642ba6e55d8e805e81e0abd641d11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a0642ba6e55d8e805e81e0abd641d11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbddc185e13a74ad9e532f387f978a82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbddc185e13a74ad9e532f387f978a82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbebeb5ac8a719d690267178406884cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbebeb5ac8a719d690267178406884cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a27c51f5368d95cc9aa9df8289b3fa5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a27c51f5368d95cc9aa9df8289b3fa5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c6bf490e7ceafbe8953c32f29e31bdc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c6bf490e7ceafbe8953c32f29e31bdc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76acca9ec7b71c04b48f19ee79c6104d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76acca9ec7b71c04b48f19ee79c6104d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9966e0908ec2a8ff08758fbcc08bad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9966e0908ec2a8ff08758fbcc08bad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f07ffffbf849d7c47c5eaf57b565697.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f07ffffbf849d7c47c5eaf57b565697.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e68d8a298e470707c0d932fd62d0a9a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e68d8a298e470707c0d932fd62d0a9a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fdd5c8f685af7be35d1b32dd11cc9287.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fdd5c8f685af7be35d1b32dd11cc9287.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af82df29f6d7d7c0dedf38ad31dd64db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af82df29f6d7d7c0dedf38ad31dd64db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e59f79aeaa227371cee4459580e1606.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e59f79aeaa227371cee4459580e1606.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b55a3d336c707575772b1f69c947807.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b55a3d336c707575772b1f69c947807.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/109c4c5914da09f8a6e3ec7542851d53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/109c4c5914da09f8a6e3ec7542851d53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d299febbc951ee2512c14ec4e8fe94fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d299febbc951ee2512c14ec4e8fe94fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39d6a2c52ec542173528722136a00799.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39d6a2c52ec542173528722136a00799.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4d08001915cc6aa339911851251690d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4d08001915cc6aa339911851251690d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40faadf9b1ed32a204a82f621a941cf2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40faadf9b1ed32a204a82f621a941cf2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/acddbf9da7b3d3208ee079c8dbde67a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/acddbf9da7b3d3208ee079c8dbde67a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88351962082a7b57b282bfcc21312daa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88351962082a7b57b282bfcc21312daa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89eed14fc1973e716fff9793a28dfaee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89eed14fc1973e716fff9793a28dfaee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7dbe32441f71f5a6c9f10f5f7d39c859.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7dbe32441f71f5a6c9f10f5f7d39c859.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88776cd6b0dcacf1db2a92258452c2cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88776cd6b0dcacf1db2a92258452c2cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b875e582e902567faa873287d3f4043f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b875e582e902567faa873287d3f4043f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdffef0bd249a75d290beba5a6486910.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdffef0bd249a75d290beba5a6486910.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95c791c3538dbd1792e77d11775a1e08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95c791c3538dbd1792e77d11775a1e08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef918a2928c252bbb97389534488fa7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef918a2928c252bbb97389534488fa7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b0ccd55fb0789ed22a9496b61a0ee5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b0ccd55fb0789ed22a9496b61a0ee5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63431d3ff6bede066c2858723546be55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63431d3ff6bede066c2858723546be55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/228f194c8ef6986c9a56cffb2afb10f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/228f194c8ef6986c9a56cffb2afb10f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a347550dffce12ba9e26a745f00f6e99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a347550dffce12ba9e26a745f00f6e99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b13135f7bbf530927cf7c74d83a6cfa1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b13135f7bbf530927cf7c74d83a6cfa1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39ec88409fdc1066c11ee2d805607465.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39ec88409fdc1066c11ee2d805607465.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c0d0bfe31ecfa7bb08bc9d25691cf6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c0d0bfe31ecfa7bb08bc9d25691cf6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15e0d019858809659d5e3ebaac89671a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15e0d019858809659d5e3ebaac89671a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cd4803ae8904667cad8acb24b77a37d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cd4803ae8904667cad8acb24b77a37d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19767cdceda43eac0fd381ca59e6fd5a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19767cdceda43eac0fd381ca59e6fd5a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6be4dc385396f5c25d2302e60f7de84d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6be4dc385396f5c25d2302e60f7de84d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a7adb483f565887b8221cedb2cbdd493.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a7adb483f565887b8221cedb2cbdd493.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d22857b5e59f66a117e0492ec24713b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d22857b5e59f66a117e0492ec24713b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cac8fc4bb8564c289280efcef8792c0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cac8fc4bb8564c289280efcef8792c0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0eba010b054390b2a15c8fd047731e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0eba010b054390b2a15c8fd047731e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b34cd5189f789214503824487aa6f18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b34cd5189f789214503824487aa6f18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d95c6452fdebf910c845db973fdf7a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d95c6452fdebf910c845db973fdf7a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/04c0d55392c5e5fee786f9f75ab4a9c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/04c0d55392c5e5fee786f9f75ab4a9c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f29fa3fc68602a391c0a525d06bc7851.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f29fa3fc68602a391c0a525d06bc7851.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0fc6751428469a966fc42dd550dc01c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0fc6751428469a966fc42dd550dc01c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f915f77bdc9e1c3e156aeadb7723011b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f915f77bdc9e1c3e156aeadb7723011b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6734b2acb5a39100eff65adef2777b11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6734b2acb5a39100eff65adef2777b11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/692da5374501586c90d38e89f59ad877.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/692da5374501586c90d38e89f59ad877.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d64e16a25e88ff5ee646f66e40a0a31c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d64e16a25e88ff5ee646f66e40a0a31c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc0c539e3f108cee66ada0e406608e8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc0c539e3f108cee66ada0e406608e8b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1134022,'1134022','清新趣粉防滑浴垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/64be227c6953e0bcf44a496aabd0d83f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/ce9f1dfb57b8867361dab7afcc7c8fa1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/4eb77d3e6a9d94899bad5230d189c74f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/93966bbbe3f80a41c47580d83a115741.jpg\\\"]','','清新跃动，舒适脚感',1,31,'http://yanxuan.nosdn.127.net/a2b7489b4a2b1c09b66464cede4dabd7.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d68e182e560941e807d33431ad82452e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d68e182e560941e807d33431ad82452e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/758e12cde995bc722cbab81644c29f60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/758e12cde995bc722cbab81644c29f60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b2cadfcad57975bc4b8ad4cb53ebbad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b2cadfcad57975bc4b8ad4cb53ebbad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4600c0173de7dfa48d2c7d278667312f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4600c0173de7dfa48d2c7d278667312f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e766cfe5d9f6cf74390e37c271c5193.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e766cfe5d9f6cf74390e37c271c5193.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/97d7a034074e100db15b1c94f9f4308f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/97d7a034074e100db15b1c94f9f4308f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d78fd7ec09228ed93358f187b6c12398.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d78fd7ec09228ed93358f187b6c12398.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00960ca0bd8f388fc52a493f39beac38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00960ca0bd8f388fc52a493f39beac38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb505efadcd8bb19d88b7ec1d86d5ade.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb505efadcd8bb19d88b7ec1d86d5ade.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/90ebd0a8cdd8a256b36fd26b2717a655.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/90ebd0a8cdd8a256b36fd26b2717a655.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f391c39a3455577651ea1b2f7bb4832.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f391c39a3455577651ea1b2f7bb4832.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d153c03f2acc1e3062b507c135b309d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d153c03f2acc1e3062b507c135b309d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9b6a5e8636dbfaa875b94c0221bf001.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9b6a5e8636dbfaa875b94c0221bf001.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dc971a8f5c766e3dd9f36fdfe6f9afd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dc971a8f5c766e3dd9f36fdfe6f9afd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63dd064c791211bda9f0dfcf0bfe0db7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63dd064c791211bda9f0dfcf0bfe0db7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15ecb7b4d9f3142a073eacd5506c0a2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15ecb7b4d9f3142a073eacd5506c0a2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/278235956b0cd9a3aab8933c63c923c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/278235956b0cd9a3aab8933c63c923c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84bc90dec0c6f6049a79622f7b9ef83c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84bc90dec0c6f6049a79622f7b9ef83c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9707c4a9a76f0432bb7c2d03b72f9582.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9707c4a9a76f0432bb7c2d03b72f9582.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3e75d69e0a16177a5b22a07ce0f39f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3e75d69e0a16177a5b22a07ce0f39f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ea585974061d0c9cc858bf5927f79cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ea585974061d0c9cc858bf5927f79cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aab2d28c54f55eddfeffb9fc7dc5e410.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aab2d28c54f55eddfeffb9fc7dc5e410.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9500f694389ca250f09b4f60d1be4f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9500f694389ca250f09b4f60d1be4f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8f76b4a92255fdcccd1015476cf05b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8f76b4a92255fdcccd1015476cf05b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2247af207eb3872a7057f0d3dd0a9033.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2247af207eb3872a7057f0d3dd0a9033.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5b557985c26db27b73161505ee5d768.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5b557985c26db27b73161505ee5d768.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c16b77cdd7e12a597e2b8508cfc1e3e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c16b77cdd7e12a597e2b8508cfc1e3e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf32a0024e223dd7e3953f642da5f4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf32a0024e223dd7e3953f642da5f4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/594dca141f011e7cab4af1f7a19e19f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/594dca141f011e7cab4af1f7a19e19f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a52b1804711993bd96cdc9ca1ffcd10b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a52b1804711993bd96cdc9ca1ffcd10b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/800bf6fc99f89ee6f0f8155fbd9accdb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/800bf6fc99f89ee6f0f8155fbd9accdb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55133777a4a7e79c0b13d31a81c077cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55133777a4a7e79c0b13d31a81c077cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c5a4faf6e647754c6e364dfc4d5cbad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c5a4faf6e647754c6e364dfc4d5cbad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18792955e7170d770c0f1cd559baee64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18792955e7170d770c0f1cd559baee64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2113fedc915eca6a7655f77d16f3a620.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2113fedc915eca6a7655f77d16f3a620.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4df06a31810e04bc083b71896ce9a326.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4df06a31810e04bc083b71896ce9a326.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29ce24ea1f9ba8c078b31aeaded6aa08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29ce24ea1f9ba8c078b31aeaded6aa08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38e3bf328e84f4047a6d5fd4f66ac445.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38e3bf328e84f4047a6d5fd4f66ac445.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/956559986a2e62e87e6ba423964cd0f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/956559986a2e62e87e6ba423964cd0f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e79f219a7f9bbb98cbc7120a1699881e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e79f219a7f9bbb98cbc7120a1699881e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88ef1b4cc27eec82cbd38251be88f091.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88ef1b4cc27eec82cbd38251be88f091.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7261638f3f3a7287f150a20afdf4b66a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7261638f3f3a7287f150a20afdf4b66a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebe2fcb1f43d47d335f139611bde77f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebe2fcb1f43d47d335f139611bde77f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a153e2aaff1060fae1fd6ec41fdef9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a153e2aaff1060fae1fd6ec41fdef9c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1134030,'1134030','简约知性记忆棉坐垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/97c6d4c7e80855966f0d38392b42a570.jpg\\\", \\\"http://yanxuan.nosdn.127.net/35538160e3b41ae559031fa8c82fcebb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f2107c529bcc5c51bc3ce2b5cc9948db.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9b4ee214032f7707c15943a1f1dfc881.jpg\\\"]','','慢回弹海绵，时尚设计。',1,12,'http://yanxuan.nosdn.127.net/aa49dfe878becf768eddc4c1636643a6.png','',1,0,'件',66.00,46.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3b31b3c57a7d7f42b13711bd1438d555.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b31b3c57a7d7f42b13711bd1438d555.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e92d9bad2a0339a81b47835f5530a358.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e92d9bad2a0339a81b47835f5530a358.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edabc81fa6c7e66fe1698949f3b2b9f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edabc81fa6c7e66fe1698949f3b2b9f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3444f640ec6ff6d6a8bcc3ce0f28848f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3444f640ec6ff6d6a8bcc3ce0f28848f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/317ebb6f899631d1ed52759c14170a39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/317ebb6f899631d1ed52759c14170a39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f17af0ae3d56d482cec4105d390730a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f17af0ae3d56d482cec4105d390730a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/345a9aba507ca86b34c37c29956eeb83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/345a9aba507ca86b34c37c29956eeb83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38b5c26064c4ea16ce3380bd69d2a671.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38b5c26064c4ea16ce3380bd69d2a671.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eabf8d6393d65cbd9e2e87c75dfcc066.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eabf8d6393d65cbd9e2e87c75dfcc066.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a703c316292e2c4c0b9d6551b25f1856.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a703c316292e2c4c0b9d6551b25f1856.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/734765425e21e073844c1c9e062dc35d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/734765425e21e073844c1c9e062dc35d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc24974d903f1d0e109482954f1da8e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc24974d903f1d0e109482954f1da8e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da57cdb5646fbff0cf8007f60304c30f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da57cdb5646fbff0cf8007f60304c30f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddc76ceaeddfd7b527df40e01bf7877b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddc76ceaeddfd7b527df40e01bf7877b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c158fdad4e3c80f90b02cf930b661bb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c158fdad4e3c80f90b02cf930b661bb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9682e656087dfa53c0f8365a0c300da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9682e656087dfa53c0f8365a0c300da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/567cd1355b86120b192d36b4710552a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/567cd1355b86120b192d36b4710552a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/327629df66c47aeba0cb92072cf94471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/327629df66c47aeba0cb92072cf94471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31199ec47d032c282762d8d49087c5af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31199ec47d032c282762d8d49087c5af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/169746e1e8293452b58c184db111d98b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/169746e1e8293452b58c184db111d98b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2a0cd32321cd198d67ea99fe5590120.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2a0cd32321cd198d67ea99fe5590120.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4657e1914acce0c476d756f72e40ef97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4657e1914acce0c476d756f72e40ef97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cb62e36a78ac61b587e6a9b5f9458a9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cb62e36a78ac61b587e6a9b5f9458a9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b482df93b0a173be4a7bf6c2dabd543.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b482df93b0a173be4a7bf6c2dabd543.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/533e784b613baea6c7d18ea81ce3b535.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/533e784b613baea6c7d18ea81ce3b535.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15772709fdda505c1a3a6b0e6453cce8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15772709fdda505c1a3a6b0e6453cce8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b8ffb1a51ec50d46707513e6d6cb420.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b8ffb1a51ec50d46707513e6d6cb420.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cf3463a41c5fac921cdb11c3b0c8990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cf3463a41c5fac921cdb11c3b0c8990.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2565c92fa398dd47a1458be3e9009c9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2565c92fa398dd47a1458be3e9009c9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4960bb2a74c1e22d82626ba7e33d33d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4960bb2a74c1e22d82626ba7e33d33d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c13f2fb5d0daac9ef6fab890c866dc4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c13f2fb5d0daac9ef6fab890c866dc4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/749704a3f974d419e8b59a32de540784.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/749704a3f974d419e8b59a32de540784.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1c4d8d91866700a5e8c1cd33ea75b15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1c4d8d91866700a5e8c1cd33ea75b15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c55b8dc599470be31aa0218438a36528.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c55b8dc599470be31aa0218438a36528.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80c3a1e268905658a576eccd85a65f37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80c3a1e268905658a576eccd85a65f37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c597a8dbecc1e3de31e9b8e5d420586.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c597a8dbecc1e3de31e9b8e5d420586.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/320ec6f1fcbb288e5676832dceff16aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/320ec6f1fcbb288e5676832dceff16aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc9119b2c7986bd575329d3a95abe9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc9119b2c7986bd575329d3a95abe9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/438a62f5bb789a6fa70b8ed5578cd7e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/438a62f5bb789a6fa70b8ed5578cd7e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1fe137a665f79a67359a9748de200ca6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1fe137a665f79a67359a9748de200ca6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02ad092fac2cf5da935078f01afe3ff3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02ad092fac2cf5da935078f01afe3ff3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d390285b49a6f4eb5ec9a460f77bce70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d390285b49a6f4eb5ec9a460f77bce70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/469c7bc6e70c8d3db7639dc3d6949356.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/469c7bc6e70c8d3db7639dc3d6949356.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/323b6604e88a5c748b4f7cd00ca84595.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/323b6604e88a5c748b4f7cd00ca84595.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4151a8c4cae3b9998c95ae0bd9528e93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4151a8c4cae3b9998c95ae0bd9528e93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c968e429b7a1f21ffa6281c76fd77c32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c968e429b7a1f21ffa6281c76fd77c32.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1134032,'1134032','趣味粉彩系列记忆棉坐垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/5a9050413ef325301e5e5b6bfdcc4b58.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e866882f7bb9acde7c4e1d00171741f9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/23947cb71c6c2f9635b53da910ac788d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/bf80a04940ae1cd3e6c584d26fdee6ed.jpg\\\"]','','慢回弹海绵的呵护，萌趣添彩。',1,13,'http://yanxuan.nosdn.127.net/8b30eeb17c831eba08b97bdcb4c46a8e.png','',1,0,'件',69.00,49.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/ecbd6f05e8fc71571d889324e2f0dcad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecbd6f05e8fc71571d889324e2f0dcad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcdbec6d1b2ff457a0e7513df91563f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcdbec6d1b2ff457a0e7513df91563f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcb21741c5c773e06cf4502925c81944.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcb21741c5c773e06cf4502925c81944.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86ffdbf55ae77e3c21a07a70445deda8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86ffdbf55ae77e3c21a07a70445deda8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/598afa2e998b37d2c7513e7ab3a3ab73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/598afa2e998b37d2c7513e7ab3a3ab73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91dc47775ce962a1c2a7ac5e620f058c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91dc47775ce962a1c2a7ac5e620f058c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/394b2bd47066e301a2144ab56b3b3350.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/394b2bd47066e301a2144ab56b3b3350.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80dd29542f2ecd571db647486cda4e9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80dd29542f2ecd571db647486cda4e9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a5edf27fe34192ed741ee8b011e8bcc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a5edf27fe34192ed741ee8b011e8bcc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2ee6fd1f0893f6c033b27f7353d1622.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2ee6fd1f0893f6c033b27f7353d1622.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e11dd4cdab417eba665e0ad4ebc9243e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e11dd4cdab417eba665e0ad4ebc9243e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/feb11e4b1fb22d07533f11b59d6e602f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/feb11e4b1fb22d07533f11b59d6e602f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5094e4cf95940490ffccfad5db698301.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5094e4cf95940490ffccfad5db698301.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0f9af05048828816c9a774124509dd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0f9af05048828816c9a774124509dd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82020ae739c4ba0957db83b22c102673.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82020ae739c4ba0957db83b22c102673.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09789518f58c163313d5d4b190888500.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09789518f58c163313d5d4b190888500.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d155f2f1d12b54e5dfc83e3d3496dc2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d155f2f1d12b54e5dfc83e3d3496dc2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44d1b96c7810379c6b48d58e637cba55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44d1b96c7810379c6b48d58e637cba55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2075c17cf5c447d27c89f23d2d63462.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2075c17cf5c447d27c89f23d2d63462.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3985bdbdb5899bee08137ab2300f3810.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3985bdbdb5899bee08137ab2300f3810.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe8a47c8056ed17d6e08ac715d3aee93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe8a47c8056ed17d6e08ac715d3aee93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31f98b129c846c333bb95db48c434271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31f98b129c846c333bb95db48c434271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/857e3041c75f5ffb2eeb394ca9e1211d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/857e3041c75f5ffb2eeb394ca9e1211d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b04c0a98d696e3ba0a37857bcca5ca4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b04c0a98d696e3ba0a37857bcca5ca4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33a9842b9e01b0629d56a4ae725611a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33a9842b9e01b0629d56a4ae725611a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/296263f5dc5e365662203331a940d058.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/296263f5dc5e365662203331a940d058.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25e32af7a35f9c3b1105d5e1dc163e8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25e32af7a35f9c3b1105d5e1dc163e8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6efac795f3b6207cf090846887461d65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6efac795f3b6207cf090846887461d65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9b1e2e1c90d1481c83460ff71eaa47e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9b1e2e1c90d1481c83460ff71eaa47e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ab77215a79e8d9cc93304ec139af08e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ab77215a79e8d9cc93304ec139af08e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5eaab9336750bddb5a88fddfae7d2fbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5eaab9336750bddb5a88fddfae7d2fbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7046719cdf72538e69b0313587c8565.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7046719cdf72538e69b0313587c8565.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/748836f2589106b87efec1c6be06f93d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/748836f2589106b87efec1c6be06f93d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40da8c4bed171c0fbfa9f2089a2309d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40da8c4bed171c0fbfa9f2089a2309d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/468ed6ff0bbee10ba15467bb7b75c202.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/468ed6ff0bbee10ba15467bb7b75c202.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2e1f9262f85b3301a6c9780acfcbb75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2e1f9262f85b3301a6c9780acfcbb75.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ef0c70c73bff6274be4c562e88a7d6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ef0c70c73bff6274be4c562e88a7d6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/720c18b1bd787c125d59aa8f8f4c8e61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/720c18b1bd787c125d59aa8f8f4c8e61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc80af1a2b58ac83a5d65cb3fa02f3db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc80af1a2b58ac83a5d65cb3fa02f3db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98d647cacddc7bdd7eae86050eb9f3d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98d647cacddc7bdd7eae86050eb9f3d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a091331dc2412de558446a42831b0358.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a091331dc2412de558446a42831b0358.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd6126e6eb2a4e493104f75ecbeb6e32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd6126e6eb2a4e493104f75ecbeb6e32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d15ad6abec2f8c499c0d9d036a8b524.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d15ad6abec2f8c499c0d9d036a8b524.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69a56acc851dd042a52f18c78ac8ee33.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69a56acc851dd042a52f18c78ac8ee33.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8bde0e10b1e089088ca38fd77fbf994.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8bde0e10b1e089088ca38fd77fbf994.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd9ffb9b37957549689ece880fc78b2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd9ffb9b37957549689ece880fc78b2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09ad556caef32a5c951dc7fbad1f8de3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09ad556caef32a5c951dc7fbad1f8de3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a919f989730d977f8b1745b5dc0e6a8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a919f989730d977f8b1745b5dc0e6a8d.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1134036,'1134036','凤梨酥 360克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/9d516e7b11f9ba122e115a029749b6ba.png\\\", \\\"http://yanxuan.nosdn.127.net/9d516e7b11f9ba122e115a029749b6ba.png\\\", \\\"http://yanxuan.nosdn.127.net/9d516e7b11f9ba122e115a029749b6ba.png\\\", \\\"http://yanxuan.nosdn.127.net/9d516e7b11f9ba122e115a029749b6ba.png\\\", \\\"http://yanxuan.nosdn.127.net/9d516e7b11f9ba122e115a029749b6ba.png\\\"]','','特别添加10%凤梨果肉',1,9,'http://yanxuan.nosdn.127.net/9356cc27b22bd47ad43913d13226555f.png','',0,1,'件',58.00,38.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1134056,'1134056','竹语初棉撞色四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/de53227c5300dc2a4a7e25a7d6dcf5a1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8c237329b54caeef7bd7613443796db0.jpg\\\", \\\"http://yanxuan.nosdn.127.net/99b68bf325279102597cbd2829bffc09.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a72497e9a412babf1143ab64394ca9de.jpg\\\"]','','天然竹醌成分，抑菌爽滑健康睡眠',1,14,'http://yanxuan.nosdn.127.net/c29f47f58ba1e3c2ff5a193eec0b11d6.png','',0,0,'件',449.00,429.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/79ba1029377913ad2aff06285f0fb6b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79ba1029377913ad2aff06285f0fb6b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad315f893e64a61ff80ef80a292d513c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad315f893e64a61ff80ef80a292d513c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89ae1a3a2137e96757b8b79e0242dd20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89ae1a3a2137e96757b8b79e0242dd20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd0a2c331b1b290bbae37b618e449e45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd0a2c331b1b290bbae37b618e449e45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d11919cfeff0d8c7e74bddf1d2691e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d11919cfeff0d8c7e74bddf1d2691e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cfda1ff4028e0c2deae3348d38507813.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cfda1ff4028e0c2deae3348d38507813.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb1425e3a8f2cc18080914e12664fc5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb1425e3a8f2cc18080914e12664fc5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/92947dc66812db83d4adc47d8f7a8a94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/92947dc66812db83d4adc47d8f7a8a94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6027338c777d3fc8c9fa371b21128be3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6027338c777d3fc8c9fa371b21128be3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d46ef08621b610f95d955e5173c5be81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d46ef08621b610f95d955e5173c5be81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/369953fa2ffef9298a79d0fe12775578.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/369953fa2ffef9298a79d0fe12775578.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef9e1a9d4a25469e58cfd5e0ff76eccf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef9e1a9d4a25469e58cfd5e0ff76eccf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11bb09fc9a265df62eb0bf4cd99749f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11bb09fc9a265df62eb0bf4cd99749f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80998b2fb9c6cca348e19caca983ce86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80998b2fb9c6cca348e19caca983ce86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bf53b5ed9a20e5a9e02774bf97bfd28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bf53b5ed9a20e5a9e02774bf97bfd28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cd15fc03c5a3289adf2da538c114cb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cd15fc03c5a3289adf2da538c114cb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd3b1024e1cd4c80048afb5b84323c1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd3b1024e1cd4c80048afb5b84323c1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60fde6de386a3c0e555e1b272cf15b54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60fde6de386a3c0e555e1b272cf15b54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c70ef3629ae8917158e693f5bc7ee9b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c70ef3629ae8917158e693f5bc7ee9b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5329cb330d387b1ccecaa8c68b002c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5329cb330d387b1ccecaa8c68b002c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/337b781642c8cb61faa1357c4f0e158d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/337b781642c8cb61faa1357c4f0e158d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfb06d7d54cfd02007eab155b9cf7b37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfb06d7d54cfd02007eab155b9cf7b37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f144ba9e36d9af2ad89e111ec3f63fae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f144ba9e36d9af2ad89e111ec3f63fae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba4f100da1689eaf7fecbb5c16a3cc51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba4f100da1689eaf7fecbb5c16a3cc51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b43d19cab8097f3cc6f6f25f55c2da29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b43d19cab8097f3cc6f6f25f55c2da29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9690d4f141791b1b1712744e70d48e8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9690d4f141791b1b1712744e70d48e8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3596aee4d5c35667092b9d91296aafed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3596aee4d5c35667092b9d91296aafed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee994a21d4ab1f3ca808e8e1ed7a63fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee994a21d4ab1f3ca808e8e1ed7a63fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64919bffe93c9233583af94502a0b5e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64919bffe93c9233583af94502a0b5e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e6e7c4b3c84511cb1613f2ad46a9cb6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e6e7c4b3c84511cb1613f2ad46a9cb6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/778bdc6ad9fd24fbb782776c39832ba5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/778bdc6ad9fd24fbb782776c39832ba5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9175288f3f8909ba60d36cefb350aa13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9175288f3f8909ba60d36cefb350aa13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05c1cada48dbf028b3fac1a467278412.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05c1cada48dbf028b3fac1a467278412.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be138ae76b2cac1b537b8da72a57abd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be138ae76b2cac1b537b8da72a57abd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13ef773a94d2f778d767f696cd8c4b95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13ef773a94d2f778d767f696cd8c4b95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/372030f0c8fe35e6c9cbd8c15c1a9611.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/372030f0c8fe35e6c9cbd8c15c1a9611.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/567536349f71c7fe3aee5cf0d380d55b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/567536349f71c7fe3aee5cf0d380d55b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54171cdb9d3d33727088cadfb1a142b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54171cdb9d3d33727088cadfb1a142b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22f2f338e25a1570a0edad92fdb06341.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22f2f338e25a1570a0edad92fdb06341.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6029e1838ad4d14947d45989c671acc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6029e1838ad4d14947d45989c671acc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/786692b4ac8c90f617eb3952cbc34346.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/786692b4ac8c90f617eb3952cbc34346.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffd48ca06353d09babf7520a452e2afa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffd48ca06353d09babf7520a452e2afa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f4005528a825cdd8fa44d75a315bb6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f4005528a825cdd8fa44d75a315bb6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62a2cd885b0a894bf76ab6e388bfadf6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62a2cd885b0a894bf76ab6e388bfadf6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c91b5e08e107e6ee62411ad99c3d60a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c91b5e08e107e6ee62411ad99c3d60a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c987c04acbfcdd4983f6193730662b8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c987c04acbfcdd4983f6193730662b8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/111a3701590eca6859a50e5864fde12c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/111a3701590eca6859a50e5864fde12c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18b9123780c721a612e0079568ac0686.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18b9123780c721a612e0079568ac0686.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8bc614e557b357d00279223b82f90b39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8bc614e557b357d00279223b82f90b39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7f4601f26a0edc0198348a4ffde6207.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7f4601f26a0edc0198348a4ffde6207.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5717ecb58595fb16666d616fec5e930f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5717ecb58595fb16666d616fec5e930f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5eb0742a6bda8f0b4775de41e2c7df3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5eb0742a6bda8f0b4775de41e2c7df3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78367a5a6d84e79d7555aad25b14aeda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78367a5a6d84e79d7555aad25b14aeda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/638041553c576ba9ae55676d26713128.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/638041553c576ba9ae55676d26713128.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/818dfbab1fb3de8d12e3849cdd4df996.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/818dfbab1fb3de8d12e3849cdd4df996.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b258dcf889cdf082db902f6b5836521d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b258dcf889cdf082db902f6b5836521d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9979167a9134858fc8f946b8cd0f326.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9979167a9134858fc8f946b8cd0f326.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135000,'1135000','几何印花AB面全棉四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/94d2aaf45d453e491a90ea2a12c8c119.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6a869e79b45fbc8604bda086d8d4515e.jpg\\\", \\\"http://yanxuan.nosdn.127.net/79f396a5eb345081078bf8e9c25314a8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/127286b130ba377c46550d3829aa19e2.jpg\\\"]','','几何线条，舒适的北欧线条风',1,13,'http://yanxuan.nosdn.127.net/53d0309471b570a7e12a3f01ba694491.png','',0,0,'件',379.00,359.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/5886d64bd11e739481409fd0755f27ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5886d64bd11e739481409fd0755f27ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7f3e7a7b307aa36dc368ddb035d7bf6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7f3e7a7b307aa36dc368ddb035d7bf6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f86620fabba81db05a1cd9e0d34fcc2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f86620fabba81db05a1cd9e0d34fcc2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73576599168ee4d9ca99410ed317173f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73576599168ee4d9ca99410ed317173f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2993458f7e4c013a6c3906c987e45615.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2993458f7e4c013a6c3906c987e45615.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c024bfbbde0bc78f809ca1a0a5ff86e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c024bfbbde0bc78f809ca1a0a5ff86e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7dd40693c4bfb89dce53e70ef68e2613.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7dd40693c4bfb89dce53e70ef68e2613.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dade815f5e7cb4524925fcbbb908730c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dade815f5e7cb4524925fcbbb908730c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80bdbb09ce624dc51619b6c304da4611.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80bdbb09ce624dc51619b6c304da4611.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24c7c10cb17a2e23e279f919ce8b5d64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24c7c10cb17a2e23e279f919ce8b5d64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/949346a006ab00e938a6893f07df5b15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/949346a006ab00e938a6893f07df5b15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f76f8a481af8f96b2a2833710568424.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f76f8a481af8f96b2a2833710568424.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/391c87acd895cb525af5cd27381399fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/391c87acd895cb525af5cd27381399fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2d20f3c2a11f8ac8b50f79a995ce071.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2d20f3c2a11f8ac8b50f79a995ce071.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37abae75d9c168f8f411fe22f2762b82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37abae75d9c168f8f411fe22f2762b82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e7470c29ea8f859b8cd0242b6f85b4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e7470c29ea8f859b8cd0242b6f85b4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9955094ae733643cca3fce2cafc2474.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9955094ae733643cca3fce2cafc2474.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1b1d7d675c48055c9ce049ff8eb56d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1b1d7d675c48055c9ce049ff8eb56d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/408547e9391b0d3cfd7e20a0794d7dc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/408547e9391b0d3cfd7e20a0794d7dc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16bb6695b86e9a3e0943aee9a3fea770.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16bb6695b86e9a3e0943aee9a3fea770.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c6ba7ccf5b7ba3813e845195b666656.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c6ba7ccf5b7ba3813e845195b666656.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3465000f419598594412a9117644a62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3465000f419598594412a9117644a62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2f197914a2baa0c6f691649447fb292c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2f197914a2baa0c6f691649447fb292c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52cc6d94921734850d364bc9607ee4c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52cc6d94921734850d364bc9607ee4c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f01a55f7e32bd6908dd9a9276083106.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f01a55f7e32bd6908dd9a9276083106.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5bfa8dc19d56588ea54410c46a03902.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5bfa8dc19d56588ea54410c46a03902.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd4b80cb1ae6363cbd66da405a98fc66.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd4b80cb1ae6363cbd66da405a98fc66.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b956be256bfeaa909d524663060c9b63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b956be256bfeaa909d524663060c9b63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8ea8188890ccae29e7df332038d3b17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8ea8188890ccae29e7df332038d3b17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62562eda777db6aef331786911357dc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62562eda777db6aef331786911357dc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3afa4585fab6a65a055e06a8e927bc2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3afa4585fab6a65a055e06a8e927bc2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57ed5177d964a3322248b5934aac6525.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57ed5177d964a3322248b5934aac6525.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/81fae26aceba01eda032d98f76977ad0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/81fae26aceba01eda032d98f76977ad0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5369a2bffc1bef80bb7d9ae288a5cb1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5369a2bffc1bef80bb7d9ae288a5cb1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e9b70a3e98d756876290fbc37736fd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e9b70a3e98d756876290fbc37736fd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8cfe3bb6ec0c6705bd1d574a5636490.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8cfe3bb6ec0c6705bd1d574a5636490.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1973d875f05efc544b3c47c0bb7cc4a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1973d875f05efc544b3c47c0bb7cc4a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2753c2a2129c83b379cd109d63ce248d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2753c2a2129c83b379cd109d63ce248d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc2de3ca83f8056a2a13b7ccab34946e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc2de3ca83f8056a2a13b7ccab34946e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2aacd2f200beb9eaa8215cf8f91384f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2aacd2f200beb9eaa8215cf8f91384f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/103e1c63addfe61233f99b399392bec2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/103e1c63addfe61233f99b399392bec2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc18ce8e2612652826538d27f00543b1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc18ce8e2612652826538d27f00543b1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30dc9f9df997d44cd5b69b1060bdc19a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30dc9f9df997d44cd5b69b1060bdc19a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5a0f531246c6197198334d5dc82bb3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5a0f531246c6197198334d5dc82bb3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76cf2868c5093025e4bfc0cc63161659.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76cf2868c5093025e4bfc0cc63161659.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/485b4307e5ad532095910245936526e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/485b4307e5ad532095910245936526e5.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135001,'1135001','印象森林全棉贡缎四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/ff010423d0808d21f45a052378833c8b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1eb900e90832c246c60c4cca13ccea5.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7554ea2b1723eb3b521b9825c3c35d52.jpg\\\", \\\"http://yanxuan.nosdn.127.net/39695757fe860202cf2455614576adf4.jpg\\\"]','','细腻长绒棉的柔滑',1,7,'http://yanxuan.nosdn.127.net/f82ee85933d6f0cc95382215281d3526.png','',0,0,'件',479.00,459.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/4702fbacb2b1d1019ab1ee6cbb95c923.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4702fbacb2b1d1019ab1ee6cbb95c923.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/755c5eefe4c7354b6c57802209d86497.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/755c5eefe4c7354b6c57802209d86497.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2edd5105353296066b11cb66f85c69c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2edd5105353296066b11cb66f85c69c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9d9231605ac183f0ec9f46de4904c2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9d9231605ac183f0ec9f46de4904c2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66fb02009633c24b2566dbd723f38a94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66fb02009633c24b2566dbd723f38a94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c75472036d5bd792901673006c5880c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c75472036d5bd792901673006c5880c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60181b7a9a5d691b9b53d810fad53ffb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60181b7a9a5d691b9b53d810fad53ffb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc6de6986c6632858d46a16dfcc27f46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc6de6986c6632858d46a16dfcc27f46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1795a9d8aa65e3068081e561f28a61e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1795a9d8aa65e3068081e561f28a61e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa915eb82a90aba1900a2b54b34a0231.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa915eb82a90aba1900a2b54b34a0231.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb6720be5400b0769a80ddf087ae570d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb6720be5400b0769a80ddf087ae570d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58b2ee6d2e1c5dc9c7cba6fbe1aefabf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58b2ee6d2e1c5dc9c7cba6fbe1aefabf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0570931eb6f6bc853a55a5c71bb6970.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0570931eb6f6bc853a55a5c71bb6970.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae577143f6940c288373117b5d52be63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae577143f6940c288373117b5d52be63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/993e135b0e5912b7d92d24d1d2471548.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/993e135b0e5912b7d92d24d1d2471548.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06aba6cf747a4edbbd17b046fa428258.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06aba6cf747a4edbbd17b046fa428258.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4be908f358aa8001bca227c85c28df5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4be908f358aa8001bca227c85c28df5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7dd8d4d678139989ccbb246b519c581e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7dd8d4d678139989ccbb246b519c581e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55c9acc8f5d5dc957b99b46ccbcbdcfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55c9acc8f5d5dc957b99b46ccbcbdcfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b89e9829024cf72181c57b1a85cf0e81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b89e9829024cf72181c57b1a85cf0e81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40e2d5c6f0b661ae1647930ee6aed691.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40e2d5c6f0b661ae1647930ee6aed691.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/023aecf5d7a57b8a58915123991b1f2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/023aecf5d7a57b8a58915123991b1f2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21ed6575668dbc20157452aa976b5a8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21ed6575668dbc20157452aa976b5a8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/751e860ff17939b02045c1cc0292f389.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/751e860ff17939b02045c1cc0292f389.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bbf6beda850f79e1316bb2e0457820c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bbf6beda850f79e1316bb2e0457820c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/865833614c02682bfe4274e4b2b66540.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/865833614c02682bfe4274e4b2b66540.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba51ed4bbd544ddf90f044715843d6f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba51ed4bbd544ddf90f044715843d6f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76c9e44a282dc10144dc3a0b63e557df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76c9e44a282dc10144dc3a0b63e557df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ea6bfbc62166a5de4d30c2a87020a28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ea6bfbc62166a5de4d30c2a87020a28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b878651917c2bbd381841fdbc3ac116.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b878651917c2bbd381841fdbc3ac116.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc20f1ef144dc65c267a579864fca8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc20f1ef144dc65c267a579864fca8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f9584b53c9219c5b643113a4dca04e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f9584b53c9219c5b643113a4dca04e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c13d27e2a506c3f09a0f00dfc5e0700c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c13d27e2a506c3f09a0f00dfc5e0700c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c624fc248efc08f147663c9c082638e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c624fc248efc08f147663c9c082638e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41525d1e058cc0a995a3c72c29fabe40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41525d1e058cc0a995a3c72c29fabe40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20aa7be89f9509e429ba937513f0a9da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20aa7be89f9509e429ba937513f0a9da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a0a751ff157ba0737615debb2350c4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a0a751ff157ba0737615debb2350c4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/284b656dd79635024be2a617ccdbb0d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/284b656dd79635024be2a617ccdbb0d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f8c4b7213a0d6f573371c1d8a451cad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f8c4b7213a0d6f573371c1d8a451cad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3cdaa6b699e185b1cc5fc298e71988a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3cdaa6b699e185b1cc5fc298e71988a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48f805ec011110caf42a6bcdb7a20212.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48f805ec011110caf42a6bcdb7a20212.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d036a9dde26520900f8c4c6f3c2a099b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d036a9dde26520900f8c4c6f3c2a099b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51219315766813126ef28e0efead56fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51219315766813126ef28e0efead56fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9265a6928043835fbbbaf390181d0b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9265a6928043835fbbbaf390181d0b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2110635a0148a28d13031a9a98f5841.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2110635a0148a28d13031a9a98f5841.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1ee70c2067fcd6912f4bd47b7d7d6a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1ee70c2067fcd6912f4bd47b7d7d6a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50e8f767a43bd1b664829f731223cf7c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50e8f767a43bd1b664829f731223cf7c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d42941b2a2af951b26b043ca599637f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d42941b2a2af951b26b043ca599637f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf24a9f35948cae69acc693c8756d302.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf24a9f35948cae69acc693c8756d302.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79652c19d4d290b6fc87048ddaf5911a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79652c19d4d290b6fc87048ddaf5911a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2b2a5a2a56d8ebcdf43da4ea31dedd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2b2a5a2a56d8ebcdf43da4ea31dedd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fe9ce1bd99aa9a1e6e011601fe96b63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fe9ce1bd99aa9a1e6e011601fe96b63.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135002,'1135002','宫廷奢华真丝四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/cb78d268c517c15381aeb5b5905101fe.jpg\\\", \\\"http://yanxuan.nosdn.127.net/47c131a02d5d5b97ddcd19c16b391bbb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5300c083dcc0c6a856364d883f3284e8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/586f42c66523559838fbb97b7315bab6.jpg\\\"]','','100%桑蚕丝，丝滑润肤',1,1,'http://yanxuan.nosdn.127.net/45548f26cfd0c7c41e0afc3709d48286.png','',1,0,'件',2619.00,2599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/0424fc28e47640c7c6ba75312c2ca5bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0424fc28e47640c7c6ba75312c2ca5bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8fc6f2fd12ad2ab3e88967f065ff2bbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8fc6f2fd12ad2ab3e88967f065ff2bbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22c6af025ed0d821fa457007299374b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22c6af025ed0d821fa457007299374b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4fd5bff6ec89da1b06fa816519d6e7b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4fd5bff6ec89da1b06fa816519d6e7b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/829b112ed840e85bc044f06c6ceab03c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/829b112ed840e85bc044f06c6ceab03c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8133e03d441d5cc5b76b24a08dc07d98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8133e03d441d5cc5b76b24a08dc07d98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d63f4e1398c83c683d7338d4f8342b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d63f4e1398c83c683d7338d4f8342b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/282121278c7b6955012291e22e593eb1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/282121278c7b6955012291e22e593eb1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a20f4e08ee42189505c6280deebd099b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a20f4e08ee42189505c6280deebd099b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e684e5f1a11350dda1fed29bdd3e2b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e684e5f1a11350dda1fed29bdd3e2b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/14b61c5ee99410c074e707a218eeda25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/14b61c5ee99410c074e707a218eeda25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09017d6080bd06cc61fe041abc63e595.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09017d6080bd06cc61fe041abc63e595.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ce679a19442519e3c294af05bfa489f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ce679a19442519e3c294af05bfa489f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba880116df8e433bec57a150434cf902.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba880116df8e433bec57a150434cf902.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9db45016db258bee5056e3679d7133dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9db45016db258bee5056e3679d7133dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6443ecab537c173230f5b9145e72c63c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6443ecab537c173230f5b9145e72c63c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3a2430b1b44534b42fba1bc619fe99b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3a2430b1b44534b42fba1bc619fe99b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f4ab8ef6f39d6ee1982a1b5235df01e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f4ab8ef6f39d6ee1982a1b5235df01e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/deb0bd2f9c6305edda5a913254eb0226.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/deb0bd2f9c6305edda5a913254eb0226.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f605418c295aeafbea74c080b80e1a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f605418c295aeafbea74c080b80e1a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09e488b6365dfe88c62c342bb6e2651d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09e488b6365dfe88c62c342bb6e2651d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01ae7e8310ba9d93ea0126f45827b1bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01ae7e8310ba9d93ea0126f45827b1bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3bc7467085d7e29f6361d150faa3a12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3bc7467085d7e29f6361d150faa3a12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6d9a750dc037b2d4f12caae612aca01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6d9a750dc037b2d4f12caae612aca01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71e32a86e630b8002c9107ca1f277706.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71e32a86e630b8002c9107ca1f277706.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/325da9327a2285f12ef2d5bc8c4b0b59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/325da9327a2285f12ef2d5bc8c4b0b59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3518bd7650cfe0a2a771b15b860056e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3518bd7650cfe0a2a771b15b860056e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cec68b3a090bbc20e92ab615f46b6cb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cec68b3a090bbc20e92ab615f46b6cb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/650d14dad1f859e6e3e87fd6e915023d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/650d14dad1f859e6e3e87fd6e915023d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9287025a3894cfcbb0a123943e1a7f40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9287025a3894cfcbb0a123943e1a7f40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0b50198a0849ebcc8a019574efe51f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0b50198a0849ebcc8a019574efe51f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/058aa1880bb7f810fc1f8133278c59af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/058aa1880bb7f810fc1f8133278c59af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c175f566a2a819a53872239e201cda7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c175f566a2a819a53872239e201cda7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecaad579f54b460ddbaa3daee6cdced8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecaad579f54b460ddbaa3daee6cdced8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3d70c0519f20473d4b883c5d8bf8eb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3d70c0519f20473d4b883c5d8bf8eb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18ebbb3dff05fe4c62a098aafa907adb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18ebbb3dff05fe4c62a098aafa907adb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a21ff1cef6c9b8faf725febef4978883.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a21ff1cef6c9b8faf725febef4978883.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b77ebe85aae6430206f5effc343d061b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b77ebe85aae6430206f5effc343d061b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c3e6fe69de64048833a59c95151c28c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c3e6fe69de64048833a59c95151c28c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5177ac6904222f532df28d15bc71491a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5177ac6904222f532df28d15bc71491a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/014fcb0caef743722da0bfbafcfdeb01.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/014fcb0caef743722da0bfbafcfdeb01.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c24c42a4504dc22551fda973c441638.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c24c42a4504dc22551fda973c441638.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70872946f2b39cafe51e4e252f7ffcd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70872946f2b39cafe51e4e252f7ffcd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65cda16ab3d35596eea8ab5f43443579.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65cda16ab3d35596eea8ab5f43443579.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fd06e90ca149d8a147c3c42fff7373e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fd06e90ca149d8a147c3c42fff7373e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89c0e9b6f6a514cf0c288bc31f439d6d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89c0e9b6f6a514cf0c288bc31f439d6d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0295b6e2d297ad00f9410342a43d4737.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0295b6e2d297ad00f9410342a43d4737.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d583c4150b3003726097b9bf6b02b973.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d583c4150b3003726097b9bf6b02b973.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ce855ae6a6b37e1927ca031cd4a681f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ce855ae6a6b37e1927ca031cd4a681f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21cfdd18eef2a56e136145b883fb5352.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21cfdd18eef2a56e136145b883fb5352.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e7bd322850ade4c17c09f5ea08e274ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e7bd322850ade4c17c09f5ea08e274ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aad9f78488ab2a7f1e2b2b6327b14c15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aad9f78488ab2a7f1e2b2b6327b14c15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c350416e505b658f74177c5f794c2306.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c350416e505b658f74177c5f794c2306.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5b8ad7295c3426018f850c224fa6a13.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5b8ad7295c3426018f850c224fa6a13.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78dee1c7c3d083b6e515a894db6b2c1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78dee1c7c3d083b6e515a894db6b2c1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1561f13761b5678e629f0c6b830bddd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1561f13761b5678e629f0c6b830bddd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/613c2a8fabcaffb1ad91f59b0651e0ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/613c2a8fabcaffb1ad91f59b0651e0ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57617866bd29417ea92e89c09a523b42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57617866bd29417ea92e89c09a523b42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f476dbfc3a3a5190793d6cf48bed38ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f476dbfc3a3a5190793d6cf48bed38ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ed42bff4fddcac2c1c792b09577b2d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ed42bff4fddcac2c1c792b09577b2d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1042a5564cf6cd8cde1244500b6dc59e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1042a5564cf6cd8cde1244500b6dc59e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/62817f417e4f9dcc2ffbac799c65be85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/62817f417e4f9dcc2ffbac799c65be85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73ebcb902436b1f1c2b4c65f4227b991.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73ebcb902436b1f1c2b4c65f4227b991.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e627e3b2666385e9c7687e29e2b9cae0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e627e3b2666385e9c7687e29e2b9cae0.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135050,'1135050','多功能封闭式环保除菌猫砂盆',1017000,0,'[\\\"http://yanxuan.nosdn.127.net/2a7f492c870c603bbb8619d6ff40c22b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c43ff066b17207c21bb99e261d23a40d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e3d397a574d0867906a69278741a1562.jpg\\\", \\\"http://yanxuan.nosdn.127.net/64c1dd9a8a3cb26f9105ac68c8700171.jpg\\\"]','','银离子吸附脏东西，多功能',1,2,'http://yanxuan.nosdn.127.net/366f3f3f0e8971c8cf871e2b55b74ff2.png','',0,0,'件',199.00,179.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/6f9856cef886e1578d0ba1daf06aadbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f9856cef886e1578d0ba1daf06aadbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fcce9b61ea1af9bda9b7638ac4034c97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fcce9b61ea1af9bda9b7638ac4034c97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a84c927116f566c078b1985bb60fbb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a84c927116f566c078b1985bb60fbb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5b516f6bb5b16ef1920ed1588bfa4cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5b516f6bb5b16ef1920ed1588bfa4cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ded3831f2446017a468b0e104956eb2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ded3831f2446017a468b0e104956eb2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99ec99cd3ea915ed37ed6f59c8e62adb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99ec99cd3ea915ed37ed6f59c8e62adb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f033ec89ba23c4fc3349466e6136e47c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f033ec89ba23c4fc3349466e6136e47c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e03379ee27dc7d2f98196552e7d7b47.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e03379ee27dc7d2f98196552e7d7b47.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e131e7d59c392a7eb533cdb6e777d962.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e131e7d59c392a7eb533cdb6e777d962.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab4cda6c3c129220a5791355e93e11b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab4cda6c3c129220a5791355e93e11b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f18edc32227e8b3f5617daab586a18e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f18edc32227e8b3f5617daab586a18e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf4f9a496337fcc8f3bd2c9532d2f7ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf4f9a496337fcc8f3bd2c9532d2f7ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd8cfbb3d0b39486d424aefddf12e555.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd8cfbb3d0b39486d424aefddf12e555.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2488258ec7b15f6bc8b96189a886fe7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2488258ec7b15f6bc8b96189a886fe7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77529a9626a81a9df8c5c19a41ac96c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77529a9626a81a9df8c5c19a41ac96c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3439fb6332c9ee7012d2d5994edf74f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3439fb6332c9ee7012d2d5994edf74f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6961a8a1e1398e172781617e118ae83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6961a8a1e1398e172781617e118ae83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/732ac476b83f419320492849c31fc848.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/732ac476b83f419320492849c31fc848.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a4e368f99a04df29d2f250bc0736972.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a4e368f99a04df29d2f250bc0736972.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b52a0c19568d8f765a29dd79283d6443.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b52a0c19568d8f765a29dd79283d6443.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cbb767f8be804a262ed7409636824a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cbb767f8be804a262ed7409636824a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5de865a2825e13b1ccd80de36a5765eb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5de865a2825e13b1ccd80de36a5765eb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a4920ac6fe97730ee089db970715f2e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a4920ac6fe97730ee089db970715f2e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d91316b5b392fe680106a8f7c61a2f65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d91316b5b392fe680106a8f7c61a2f65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3819f3548b43b26c4f680e6e6c7b82c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3819f3548b43b26c4f680e6e6c7b82c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c960601200e839c17631082df5e4a6b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c960601200e839c17631082df5e4a6b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e9a2bb9e1f25bc89d624936a6bd8280.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e9a2bb9e1f25bc89d624936a6bd8280.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9194503234882f2b110c99c82c9dbd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9194503234882f2b110c99c82c9dbd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/238d2ceebbeb8ebe2e863fda104c54e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/238d2ceebbeb8ebe2e863fda104c54e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2550765a86158c2549b3cc4c7156188.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2550765a86158c2549b3cc4c7156188.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d3c324c167a224c7c1117ae94a81829.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d3c324c167a224c7c1117ae94a81829.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73455e610f8852b2bb574b3bd214bad3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73455e610f8852b2bb574b3bd214bad3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18de3a806a61d06e4865b6e49a64adf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18de3a806a61d06e4865b6e49a64adf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4514f12874e8a3b4ad0441519eaf052a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4514f12874e8a3b4ad0441519eaf052a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ccec28a161de79a21b904b10c86e6634.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ccec28a161de79a21b904b10c86e6634.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31b2c3eca2dd71b21724359790d6d008.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31b2c3eca2dd71b21724359790d6d008.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b28254f776f2f254aea6f00a3f1ddbe8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b28254f776f2f254aea6f00a3f1ddbe8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5fe6c65035197a77e9887dc27b2f70d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5fe6c65035197a77e9887dc27b2f70d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad39f94fa16203561b40e70ed7a87401.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad39f94fa16203561b40e70ed7a87401.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4554c1ed5868d311541aae8927b002ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4554c1ed5868d311541aae8927b002ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a370d559bf323cc0bae895037619a42f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a370d559bf323cc0bae895037619a42f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb1118c62ab6360fa5735093e6cdf5ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb1118c62ab6360fa5735093e6cdf5ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce5994478404bf511510010a08ac82df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce5994478404bf511510010a08ac82df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a58329a1df06c244f4a06bd589e1968f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a58329a1df06c244f4a06bd589e1968f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a2c8414cfd43a130f7678a43a55f74af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a2c8414cfd43a130f7678a43a55f74af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ec67f519962351decb3790096261449.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ec67f519962351decb3790096261449.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eeaef8ff18b2c981b6c911891ffb2f3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eeaef8ff18b2c981b6c911891ffb2f3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/665714ca119b377e1b499e6840fe39d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/665714ca119b377e1b499e6840fe39d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bbc1aaea92b9c66bea37412ea46786d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bbc1aaea92b9c66bea37412ea46786d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08b4a552c1643710048eac58816a03e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08b4a552c1643710048eac58816a03e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46cf57c497b2b4224019ec21fcadebab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46cf57c497b2b4224019ec21fcadebab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d8cdb00adca3271a807e663af0ad5d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d8cdb00adca3271a807e663af0ad5d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/675ff22efc7509f1afa7b60abf1aa97d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/675ff22efc7509f1afa7b60abf1aa97d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/979e353f2676974f747048cdc8d43071.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/979e353f2676974f747048cdc8d43071.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36e5b65856b2bc83db180d2e3efd3ba8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36e5b65856b2bc83db180d2e3efd3ba8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c3c35bacfa560be63f9a993578d1368.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c3c35bacfa560be63f9a993578d1368.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b47efb83708e09fafe58255e719641c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b47efb83708e09fafe58255e719641c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/989b6751ac604e61d974530e288c1559.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/989b6751ac604e61d974530e288c1559.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4397c327aa439dafe4a353219cb9666.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4397c327aa439dafe4a353219cb9666.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/69452ed503f60fa2eebe1231e76bac18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/69452ed503f60fa2eebe1231e76bac18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/008516851ad05fc88068d1a5076d4f62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/008516851ad05fc88068d1a5076d4f62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3c21358c9003d0dffdced74729754a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3c21358c9003d0dffdced74729754a3.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135051,'1135051','日式素雅纯色流星纹窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/f3ab20a6f488fdfdadd15402f07b1794.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9afed203129a696d682eb005fdf980ed.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6436743044528b017ea8b40a276dde7d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7b2f3a9be300acdcb580fe75620d8133.jpg\\\"]','','日式素雅设计 流星纹简约肌理',1,35,'http://yanxuan.nosdn.127.net/9126151f028a8804026d530836b481cb.png','',0,0,'件',319.00,299.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/70d4eceeb3f066bd4ea015fca75f424c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70d4eceeb3f066bd4ea015fca75f424c.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebc7b596ef941847afe073a173bcfa59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebc7b596ef941847afe073a173bcfa59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c14d1ecbff1c587aefd16d65b47cae51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c14d1ecbff1c587aefd16d65b47cae51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d269aeec1f4410c68b2f2c3f77f7985.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d269aeec1f4410c68b2f2c3f77f7985.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ae8263c89b5fbc0de5df0c21d67d3d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ae8263c89b5fbc0de5df0c21d67d3d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/915f66ecc21197b4d99b5c3df5cbffab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/915f66ecc21197b4d99b5c3df5cbffab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4781c28a5295b239075883ccaa0a9c74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4781c28a5295b239075883ccaa0a9c74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91a4983796259d464e1f3795da189a17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91a4983796259d464e1f3795da189a17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3950395fcc7e7fdc388a2ccf2b6ac0e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3950395fcc7e7fdc388a2ccf2b6ac0e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9112abffdf6edd3b0ab8f9fb364d84f7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9112abffdf6edd3b0ab8f9fb364d84f7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96dcd6ccfec216bf2ce45393ca0aead1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96dcd6ccfec216bf2ce45393ca0aead1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6dffe4e2cce9fb45abe1182bcb1939e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6dffe4e2cce9fb45abe1182bcb1939e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d358645610f642ef7fd262c0101790e0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d358645610f642ef7fd262c0101790e0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb51ccf74568565ba366f0eabf54ccbd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb51ccf74568565ba366f0eabf54ccbd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7517d9dc2d70be25722a009083ed82df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7517d9dc2d70be25722a009083ed82df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11deb1b2b5efa58291c8a62355df6017.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11deb1b2b5efa58291c8a62355df6017.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/172053c17a9a97a8108f8fd170a6b07f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/172053c17a9a97a8108f8fd170a6b07f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1c0ac59021d408dcd9845c8702522a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1c0ac59021d408dcd9845c8702522a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/781d08f49d1870ac9cf8b93dacfbf711.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/781d08f49d1870ac9cf8b93dacfbf711.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b764a61f92c6db3440f6b4aed6a7625.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b764a61f92c6db3440f6b4aed6a7625.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31ec911d03541ace9eddfbf3fcdf0414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31ec911d03541ace9eddfbf3fcdf0414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d602c94b739bb01da939d75a9187a16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d602c94b739bb01da939d75a9187a16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc557a3e4478f089973519699a01c01c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc557a3e4478f089973519699a01c01c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1efdae30fe5189bb998509d446ff271.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1efdae30fe5189bb998509d446ff271.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/12116c10da83b5835a36315711640765.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/12116c10da83b5835a36315711640765.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9491370cd9c5486fd9aa22ef9fdbd6fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9491370cd9c5486fd9aa22ef9fdbd6fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37ca15cf48249bc390fcc05077741b98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37ca15cf48249bc390fcc05077741b98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99fec7d83ae7e82a4426d3859875d8c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99fec7d83ae7e82a4426d3859875d8c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9912fa7c176dc1b64c060992eb40b60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9912fa7c176dc1b64c060992eb40b60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a04c0b364a1fa322ca6a71f35708e3ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a04c0b364a1fa322ca6a71f35708e3ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8604f596b1d0703547d40608dfe16f2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8604f596b1d0703547d40608dfe16f2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b86422ab0ffe13da8f627245ec4dc98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b86422ab0ffe13da8f627245ec4dc98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b2d3c68d23acb03a3c542cccb301bfb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b2d3c68d23acb03a3c542cccb301bfb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d563205fb46fc71c3c37448673f5e714.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d563205fb46fc71c3c37448673f5e714.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18efa2d731c643a56a2976b4c793eec2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18efa2d731c643a56a2976b4c793eec2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b644146188b5ceba4b86ec82352f660.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b644146188b5ceba4b86ec82352f660.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9c51c9c2c94f28102cb516656c7c761.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9c51c9c2c94f28102cb516656c7c761.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769660ddc2ad27a1e62543460ff2bc41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769660ddc2ad27a1e62543460ff2bc41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c95e64b4454063ba74c8cb17a95d60cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c95e64b4454063ba74c8cb17a95d60cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a79d20d29a65bd010cf084c7b783d96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a79d20d29a65bd010cf084c7b783d96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18a89642689470308392fa485a633709.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18a89642689470308392fa485a633709.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/706c31eaec80f9417fbcdd40c16a7f63.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/706c31eaec80f9417fbcdd40c16a7f63.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bec2e276673ab2787f03b8bd444044af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bec2e276673ab2787f03b8bd444044af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3afb40257bc5fac38369dd465fe7732c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3afb40257bc5fac38369dd465fe7732c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5cfe30745d27efdc8080944bd8d8c927.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5cfe30745d27efdc8080944bd8d8c927.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3aabaab6a42e859c2362998f235a564.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3aabaab6a42e859c2362998f235a564.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6946e6dfe5a3026c67672c69061a06ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6946e6dfe5a3026c67672c69061a06ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/778f89a8b141f03b6fcb206692b37d7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/778f89a8b141f03b6fcb206692b37d7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b991c295b7bc2f6a6e04f7e79cede25.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b991c295b7bc2f6a6e04f7e79cede25.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e3f9724481dda6c024854750a3aeaa2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e3f9724481dda6c024854750a3aeaa2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48bc347fe73c771d19787229da647421.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48bc347fe73c771d19787229da647421.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a2a0bfe4036e4c3add5ba33313da069.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a2a0bfe4036e4c3add5ba33313da069.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ec518bd9a7f9914841cc92e3e52fa45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ec518bd9a7f9914841cc92e3e52fa45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3054be42bc630607c3a46a9fe2ce6ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3054be42bc630607c3a46a9fe2ce6ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b368f5bd63b6b59b2064af102a1fa8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b368f5bd63b6b59b2064af102a1fa8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dda7a836f7a7c54256b35253bbfba90f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dda7a836f7a7c54256b35253bbfba90f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91216189bef9aa48018bbf8e654443ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91216189bef9aa48018bbf8e654443ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10b8c1cace53090fe30a9834365ee37e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10b8c1cace53090fe30a9834365ee37e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbf5782db6be5a01de6d0cf1c64eea30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbf5782db6be5a01de6d0cf1c64eea30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c49df712817bfe30ec83a26af1b8b1de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c49df712817bfe30ec83a26af1b8b1de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/510c05dc331823949d1567c552562a9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/510c05dc331823949d1567c552562a9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c673ce9d4d825503402f1c352b8e82ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c673ce9d4d825503402f1c352b8e82ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/378135cf12f5c044871b59c060cacbb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/378135cf12f5c044871b59c060cacbb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd58aebd08f03474c7ed159c005a986c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd58aebd08f03474c7ed159c005a986c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a99049b512e9a388ffb1520827b2739.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a99049b512e9a388ffb1520827b2739.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa65626e5df752d70ae4662d1b15dc8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa65626e5df752d70ae4662d1b15dc8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84d1dcf5083fd69abf4451a660f31d59.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84d1dcf5083fd69abf4451a660f31d59.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f781abaecbfb60889be6f46f83f4069.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f781abaecbfb60889be6f46f83f4069.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26a745d26c76a4577feaf58b27ff557b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26a745d26c76a4577feaf58b27ff557b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/887eb48649e1db53f3047340404209f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/887eb48649e1db53f3047340404209f6.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135052,'1135052','日式简约素色窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/4a052c9a96ef8f424ddb35e6a1dae822.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1ad1192c393500a7d6e31036af44b0aa.jpg\\\", \\\"http://yanxuan.nosdn.127.net/de46fc2984dea187c6d95036a3ca7852.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e3fc3ff866a0ac4d588f890cdc45ab20.jpg\\\"]','','日式极简美学 舒适棉麻质感',1,34,'http://yanxuan.nosdn.127.net/63f5da1f5363af43aa91864bf66af48e.png','',0,0,'件',279.00,259.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2edc19a016d64d3b29aa71b0bf6cc928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2edc19a016d64d3b29aa71b0bf6cc928.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6bdc1fc55629dbfccbdfaa6b17ebfacc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6bdc1fc55629dbfccbdfaa6b17ebfacc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ef1e93a0d3f71d7862441ffd922e522.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ef1e93a0d3f71d7862441ffd922e522.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85a1e175e39a6576dffb2f0ca28597f9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85a1e175e39a6576dffb2f0ca28597f9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/486aedd7ce019d1c465bf8bbf77314bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/486aedd7ce019d1c465bf8bbf77314bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9f8f7045f07d1bb742f67120009afd0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9f8f7045f07d1bb742f67120009afd0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c813c0a23951007b020b9b03d0f31cb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c813c0a23951007b020b9b03d0f31cb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a87cebbc5b127abf6a6e5129d4ed20c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a87cebbc5b127abf6a6e5129d4ed20c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38e85411821a681c2dd5a5b9bd3cab92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38e85411821a681c2dd5a5b9bd3cab92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3907fa867c71f4090699898d53b937d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3907fa867c71f4090699898d53b937d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c284309b66cc8d073f528c7ebf78c5fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c284309b66cc8d073f528c7ebf78c5fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ecb27fc699a97883f7d14c7e606daa3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ecb27fc699a97883f7d14c7e606daa3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eaf351d46c216f2f3a3588b3985d18c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eaf351d46c216f2f3a3588b3985d18c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/785ab1ac578124415bbd718813413333.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/785ab1ac578124415bbd718813413333.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8605647112b62e72f78ee27d29eede3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8605647112b62e72f78ee27d29eede3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3952310896b95dcdc3adb986e5487a86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3952310896b95dcdc3adb986e5487a86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/030f115457262723b3d821987e38b111.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/030f115457262723b3d821987e38b111.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf4254e1d4962d6e9f5e4734785f57ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf4254e1d4962d6e9f5e4734785f57ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce29d7cdc0e56477a623d03856646448.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce29d7cdc0e56477a623d03856646448.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/515086ca9168f8008291e98a01f4e4c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/515086ca9168f8008291e98a01f4e4c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9bb9d186d4a364ed0c91606d561a7f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9bb9d186d4a364ed0c91606d561a7f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63204b444e0d06a7fafb6c5e35153eaa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63204b444e0d06a7fafb6c5e35153eaa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d13212d5d43f766d3f5c37ccb4e5714.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d13212d5d43f766d3f5c37ccb4e5714.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19d5b4dbb590d90c3e40525a3ef35019.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19d5b4dbb590d90c3e40525a3ef35019.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a1fcdbac2d1bf232e95389e20ed07c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a1fcdbac2d1bf232e95389e20ed07c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d230fbda487cf445cd57f4296b7a487.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d230fbda487cf445cd57f4296b7a487.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5819e9bbdeda97281990f61c531fdbbb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5819e9bbdeda97281990f61c531fdbbb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/802799f78d7069fc4dc44ff339729dc9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/802799f78d7069fc4dc44ff339729dc9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de5108481df4cbc2e064a1fcc477475f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de5108481df4cbc2e064a1fcc477475f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a94262fecc2427d613ad7cbdd0a59f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a94262fecc2427d613ad7cbdd0a59f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b18c9c41d0520d1e0f1b58a7ae13e5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b18c9c41d0520d1e0f1b58a7ae13e5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/564d7115798352b765da2633949a1818.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/564d7115798352b765da2633949a1818.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9f84553b8cfa29fb222b17bc89140fa9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9f84553b8cfa29fb222b17bc89140fa9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b01288738e632c5afda98184bb62095.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b01288738e632c5afda98184bb62095.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23088788bbfd7bf4b60ee06e9722ed74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23088788bbfd7bf4b60ee06e9722ed74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b2a400e968802cd64d31bdc038b3e2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b2a400e968802cd64d31bdc038b3e2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0e31fe278c7704fed496ea82c679044.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0e31fe278c7704fed496ea82c679044.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2054d55fc3bdaa380ce28c1fa9b4b00d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2054d55fc3bdaa380ce28c1fa9b4b00d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d03bae43ba821cd933d0e652e9d3bb7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d03bae43ba821cd933d0e652e9d3bb7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc1c458d99de149af69d8ac7582b72dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc1c458d99de149af69d8ac7582b72dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b92c88836f39dfc194d7e56cfdfcaf5c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b92c88836f39dfc194d7e56cfdfcaf5c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1446a01f9725a03ca79ab3e57fdc181a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1446a01f9725a03ca79ab3e57fdc181a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63fb7826d9f2d34f22317110d60a5b9d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63fb7826d9f2d34f22317110d60a5b9d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/91b1dced907315eb0e771a504d29e6d7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/91b1dced907315eb0e771a504d29e6d7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/985d212a97d26d4ff1029ee4efdbc4f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/985d212a97d26d4ff1029ee4efdbc4f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8978ab0059b90f8b018b1de05fa4e8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8978ab0059b90f8b018b1de05fa4e8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25f62074f6e7e3e2b95a71e32aa43311.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25f62074f6e7e3e2b95a71e32aa43311.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9e8fa97196d22fb3bbc4cd871267cc79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9e8fa97196d22fb3bbc4cd871267cc79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c3478950cc4f473849ed3ab3de21bd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c3478950cc4f473849ed3ab3de21bd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/838a150e46e5720a78f61ac48d380891.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/838a150e46e5720a78f61ac48d380891.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2abd7db65b092e91ce87c09bf4c4c17f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2abd7db65b092e91ce87c09bf4c4c17f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e603a799d802123ceaf5dbf3de02b051.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e603a799d802123ceaf5dbf3de02b051.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8460ba6d6347be878f035b7457ec9057.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8460ba6d6347be878f035b7457ec9057.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b02f932cfd15a19a2f1cebfab19b2cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b02f932cfd15a19a2f1cebfab19b2cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41fe9fb3c58a41023a74ef1740573fec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41fe9fb3c58a41023a74ef1740573fec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19cc0338b0efefe7f0140efde638c705.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19cc0338b0efefe7f0140efde638c705.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e670a47f65733d99c4884f90b49d8e6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e670a47f65733d99c4884f90b49d8e6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4859ec0aeecc39ed751f2a07daecad10.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4859ec0aeecc39ed751f2a07daecad10.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b7b2a56a1ea98119e89ae93b71e68c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b7b2a56a1ea98119e89ae93b71e68c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e9767a0f40cbaf19307bd0c1ef97df9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e9767a0f40cbaf19307bd0c1ef97df9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ca04a1436a6598858fc74db1f571529.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ca04a1436a6598858fc74db1f571529.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/738fc25303e4bb32d1efe45641f1b120.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/738fc25303e4bb32d1efe45641f1b120.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c5de7c6679cfe0361ac9d164276739ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c5de7c6679cfe0361ac9d164276739ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e1edc1ea0bcc4cd92134ce8cc775577.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e1edc1ea0bcc4cd92134ce8cc775577.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1eaacf6e5dc52fecb3e9c889db2ee32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1eaacf6e5dc52fecb3e9c889db2ee32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78cea538e5017c2782a96e215f42d6f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78cea538e5017c2782a96e215f42d6f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f268a66c2e2476c075dd87416790b761.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f268a66c2e2476c075dd87416790b761.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9f6900f77c23e57a0a2633554ce0c8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9f6900f77c23e57a0a2633554ce0c8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9db7f3c92e24143e8ece310935785e41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9db7f3c92e24143e8ece310935785e41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/923a8a571519b89b1a03e898871ef586.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/923a8a571519b89b1a03e898871ef586.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135053,'1135053','法式复古山形纹提花窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/01578bfc12384b74c0f4ce44f01ee448.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e9764d9aac2a990abe7bac475d5ce116.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9aa7059dc52afc82894e12c05dee3775.jpg\\\", \\\"http://yanxuan.nosdn.127.net/c77e566a855a84f69241d5db0939e160.jpg\\\"]','','轻奢复古，立体提花',1,38,'http://yanxuan.nosdn.127.net/1f9e34b1aadd14ea0c9c299c530d86ba.png','',0,0,'件',449.00,429.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e21a28b9c5e5203d217f54b0dec35735.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e21a28b9c5e5203d217f54b0dec35735.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49e4de111eb6cf9ba70ee5ed8c85a416.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49e4de111eb6cf9ba70ee5ed8c85a416.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba9e72450a61c5259c0e025b155d58cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba9e72450a61c5259c0e025b155d58cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41dc601d1494f0775e4763091a6671ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41dc601d1494f0775e4763091a6671ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d55bfd606020ef7de66bd70a1b93a12f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d55bfd606020ef7de66bd70a1b93a12f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bc7c6fa620e2635cced6ffbcfd4e6c49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bc7c6fa620e2635cced6ffbcfd4e6c49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a038525d854188e43cacd3ad2bf9a7a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a038525d854188e43cacd3ad2bf9a7a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6224e8afea6653f1baaf9eceb70f4d1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6224e8afea6653f1baaf9eceb70f4d1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/617f4b84e19adb6a5e81cf5c3a5574e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/617f4b84e19adb6a5e81cf5c3a5574e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5265f7746597699562be16e8cd367e78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5265f7746597699562be16e8cd367e78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7be914365886d471a418ca767e8b2432.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7be914365886d471a418ca767e8b2432.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2dce0091a62324d69685980ce463c8e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2dce0091a62324d69685980ce463c8e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f190e680db954313c315ff788c2e677.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f190e680db954313c315ff788c2e677.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/349da9942e82dcc44629781ef2254c06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/349da9942e82dcc44629781ef2254c06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9829be8b12dda40cec3c844df9e521b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9829be8b12dda40cec3c844df9e521b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/082cb3197ad814c2df6f6089fa00fa46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/082cb3197ad814c2df6f6089fa00fa46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca9038261114bdc03cb44ebabacaa67e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca9038261114bdc03cb44ebabacaa67e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5b4808db6982d4c6efb9967d3e0aad71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b4808db6982d4c6efb9967d3e0aad71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b5f9b19c256980f8948b7eec4319f7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b5f9b19c256980f8948b7eec4319f7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fbe8e4222a5dbb5a34b774374377c60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fbe8e4222a5dbb5a34b774374377c60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3981672ef8bba7d656e1f6a439b2049.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3981672ef8bba7d656e1f6a439b2049.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/389a17a26b55ebd8090514087ed8b573.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/389a17a26b55ebd8090514087ed8b573.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/577e2ba58b6c716b1f1e02d95992f8cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/577e2ba58b6c716b1f1e02d95992f8cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/deb4940d64591b194395c14f2d5407dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/deb4940d64591b194395c14f2d5407dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c0cce63ad9658252ddb9152a0801c69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c0cce63ad9658252ddb9152a0801c69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/51f7db1d8a7288aaf9712f978dd0e808.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/51f7db1d8a7288aaf9712f978dd0e808.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09c3bdf807406fe5fe345e875ac4a69d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09c3bdf807406fe5fe345e875ac4a69d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/818d25244f2dfdade6b23a4a92f55a51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/818d25244f2dfdade6b23a4a92f55a51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/310d4c4888d21f9100d36d7b19b7b841.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/310d4c4888d21f9100d36d7b19b7b841.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb8e667ad88260e90211a4f9b246f8e4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb8e667ad88260e90211a4f9b246f8e4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b75ffc95e4a5c69944b99b7d3f04837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b75ffc95e4a5c69944b99b7d3f04837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfef40e5a0861fb9e958b0a6a70c8cf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfef40e5a0861fb9e958b0a6a70c8cf8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a506fed177d609e43be43c4eb4ed0c6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a506fed177d609e43be43c4eb4ed0c6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6c905743a3c03c679c7017701399e1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6c905743a3c03c679c7017701399e1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e44ac8c851c24ff28ef3d28fca1e363.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e44ac8c851c24ff28ef3d28fca1e363.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d121846341c4eec125668560ea59606.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d121846341c4eec125668560ea59606.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbf82173395352acae173a6acac219c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbf82173395352acae173a6acac219c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8e6aff62f8304cf4c9847f1e6844407.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8e6aff62f8304cf4c9847f1e6844407.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a604d607f42ad8a1c343d604cc4c147.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a604d607f42ad8a1c343d604cc4c147.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/775d13d9704afa2a46ae2d6616ff78ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/775d13d9704afa2a46ae2d6616ff78ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65617bbfc95b22a4a6fb6060781afc70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65617bbfc95b22a4a6fb6060781afc70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79613c75ad103b7b0cc1933a62afeff7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79613c75ad103b7b0cc1933a62afeff7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9754dd885b4f1ff698b440d8582fda5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9754dd885b4f1ff698b440d8582fda5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/372bbb746116a10e5c82d2c136883472.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/372bbb746116a10e5c82d2c136883472.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79466f6b09420a3c8e8e39ab2091c32e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79466f6b09420a3c8e8e39ab2091c32e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/852fce888e2e4abd8e9256207ce8857c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/852fce888e2e4abd8e9256207ce8857c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f51d785e3ecbe7da3abfb03527900ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f51d785e3ecbe7da3abfb03527900ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bdf18ac18c0bc4a9ca2834d14bc67e40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bdf18ac18c0bc4a9ca2834d14bc67e40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64a9503d1375d2ce3cf2d3aaa8f49d0a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64a9503d1375d2ce3cf2d3aaa8f49d0a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc7ea083ed7bee671c2b34fdf0a29837.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc7ea083ed7bee671c2b34fdf0a29837.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e58086a3385b0dcb915a35607e83a676.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e58086a3385b0dcb915a35607e83a676.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/239a602da7415684a44d5421ebb71e77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/239a602da7415684a44d5421ebb71e77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c8ecca60b20a9f891c18adc051b7fbc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c8ecca60b20a9f891c18adc051b7fbc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf21f6ceb63279ceccbc35c882c9030c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf21f6ceb63279ceccbc35c882c9030c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7865fb8acee04157b94b85e62b6f2d14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7865fb8acee04157b94b85e62b6f2d14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3c1797e21327d8bff828ac761305867.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3c1797e21327d8bff828ac761305867.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d3263b186f04be03faa803dacf2bddcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d3263b186f04be03faa803dacf2bddcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0a0bfa53b619a61d143314d60e13341.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0a0bfa53b619a61d143314d60e13341.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e3ddada3bf508947a5715df6792c980.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e3ddada3bf508947a5715df6792c980.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ee6d2c940700caeec4997ff6deeca4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ee6d2c940700caeec4997ff6deeca4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3902aa67f3485894c892eef84be25952.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3902aa67f3485894c892eef84be25952.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9779fa93d513d2747aada4f83423df22.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9779fa93d513d2747aada4f83423df22.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4da023d34922ad0fc42ce5e4ac0e3431.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4da023d34922ad0fc42ce5e4ac0e3431.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5da0d3862a5e5f72b020a396fcc77423.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5da0d3862a5e5f72b020a396fcc77423.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f99a92c12c7057fd5dad948bb80cff98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f99a92c12c7057fd5dad948bb80cff98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9453c191e802aeb86241cee2e2dd70a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9453c191e802aeb86241cee2e2dd70a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/225ab93dd58a18f5878c57841c18b8ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/225ab93dd58a18f5878c57841c18b8ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57994f32bd6423bed216a80c8456eafc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57994f32bd6423bed216a80c8456eafc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9803612c814317b259e6c244fb3e191.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9803612c814317b259e6c244fb3e191.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135054,'1135054','美式田园风蜻蜓提花窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/4973d54026070f1d9083c83d5951be8b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1f6a9ce98a3e955946d52d3139b14d11.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b60b64ca87333bf3601b9e502a4b4961.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7255eb59c0cf8312d70a06c4ff818f64.jpg\\\"]','','美式蜻蜓提花 甜美田园色彩',1,39,'http://yanxuan.nosdn.127.net/30d7daa0824fbb61b6c36175c8203349.png','',0,1,'件',579.00,559.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/8b13ceefdeffbfd2b2326b9429ab7896.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b13ceefdeffbfd2b2326b9429ab7896.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8fa854947a7df61a4e063b8e2e14fd3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8fa854947a7df61a4e063b8e2e14fd3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d9681a7dd16355294e37057fa3b6c64.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d9681a7dd16355294e37057fa3b6c64.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/292b9704967295fcbf09ee7a98b40425.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/292b9704967295fcbf09ee7a98b40425.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2ba9a3fb827a7c135670655ff4060553.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2ba9a3fb827a7c135670655ff4060553.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0b12070b3da9c44102a91b34d4a289d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0b12070b3da9c44102a91b34d4a289d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27a0e45f6cb8db4e541cc09dc3f56661.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27a0e45f6cb8db4e541cc09dc3f56661.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/78c39affb31ea084aec9092a528e1000.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/78c39affb31ea084aec9092a528e1000.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1dbf236c3d1f41e23bb703be8e09d62.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1dbf236c3d1f41e23bb703be8e09d62.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8a10b18efc6670c4b5c6abfe25a5d791.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8a10b18efc6670c4b5c6abfe25a5d791.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31f310bfa2a088a865ba86d603c889e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31f310bfa2a088a865ba86d603c889e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6e1112e5c699aadb80edf862b013241.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6e1112e5c699aadb80edf862b013241.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/70e35f2b7536dcf59061fb15e6fbd7f0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/70e35f2b7536dcf59061fb15e6fbd7f0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fab87a9493b50f6372eab5d02ab58ddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fab87a9493b50f6372eab5d02ab58ddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6431ef7fa249e9e0412eceac99d77acb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6431ef7fa249e9e0412eceac99d77acb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d6a3e40285e7e1ba47fff926acd7fb02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6a3e40285e7e1ba47fff926acd7fb02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d714470698ed5f14cf21ca34f3012bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d714470698ed5f14cf21ca34f3012bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bc9c660db31968471b598a293b3c44b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bc9c660db31968471b598a293b3c44b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1bb7a825a3148cb187e8ec2d39b60f21.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1bb7a825a3148cb187e8ec2d39b60f21.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9097e4911884ae79e055d85ba0cc07b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9097e4911884ae79e055d85ba0cc07b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/49195539f093b5974392cef9f3b2c5c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/49195539f093b5974392cef9f3b2c5c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71dc1d77d97e2495dea6edd66b62e906.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71dc1d77d97e2495dea6edd66b62e906.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbb3af413fa229c94682dea4e959edbe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbb3af413fa229c94682dea4e959edbe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3a2b3bcda99806ff31844d44537f62e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3a2b3bcda99806ff31844d44537f62e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e09dbf79c01d9ec02234be2063fade0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e09dbf79c01d9ec02234be2063fade0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2838ac897fbc4339701789d3e05b176e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2838ac897fbc4339701789d3e05b176e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efe9c94a8e77081d69e8f30dfb501bc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efe9c94a8e77081d69e8f30dfb501bc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d8913b07b679efe4349802d9b0a6887.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d8913b07b679efe4349802d9b0a6887.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aad09d61a369e2828a64996e6f594331.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aad09d61a369e2828a64996e6f594331.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09a0cc37d89dc0b604a69806ea1a1ec7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09a0cc37d89dc0b604a69806ea1a1ec7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/680758fc7cf2315433ff5815b42a1620.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/680758fc7cf2315433ff5815b42a1620.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a83a5e81614a57ca3c55518130dc6e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a83a5e81614a57ca3c55518130dc6e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09474a7d70cb78b5baadd27906b09a48.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09474a7d70cb78b5baadd27906b09a48.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85ffaf2d542e988adce23e576f539a11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85ffaf2d542e988adce23e576f539a11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d56fded6471b21499e524b041fd7f409.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d56fded6471b21499e524b041fd7f409.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01d319f088e87d2c3c223467de321352.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01d319f088e87d2c3c223467de321352.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2800c131d7320919b6b02adae7e5bd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2800c131d7320919b6b02adae7e5bd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8172ab2121042e5703183b43fd195509.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8172ab2121042e5703183b43fd195509.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40dbb2286998622b9902fc704b583040.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40dbb2286998622b9902fc704b583040.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68e4e99f2a0a400bfade8cd2befd0e69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68e4e99f2a0a400bfade8cd2befd0e69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba7ed53477cc0b34a0569704be78fb7a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba7ed53477cc0b34a0569704be78fb7a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e1380ce14c595cc7c896ab6d80977c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e1380ce14c595cc7c896ab6d80977c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8625973becb30763b8185d5aed6ff2a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8625973becb30763b8185d5aed6ff2a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/38d2ba1a53807474d5d1908c38e44941.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/38d2ba1a53807474d5d1908c38e44941.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19c2742c33d946ea42525bb766b9aa50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19c2742c33d946ea42525bb766b9aa50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e38f6f972d9e0a5b1b929b00dac2ab7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e38f6f972d9e0a5b1b929b00dac2ab7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2b39cc98245fb88155269d891af0165.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2b39cc98245fb88155269d891af0165.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf6dc932f82e427196f6202d1da99fc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf6dc932f82e427196f6202d1da99fc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c90a23374fd5cf95dc05c0a687d52de7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c90a23374fd5cf95dc05c0a687d52de7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c88e300269e108c04717dbd70539aa1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c88e300269e108c04717dbd70539aa1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2c90271ed6fdd1b1cb114185962ac5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2c90271ed6fdd1b1cb114185962ac5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/517fcab43dd3c867c9861835991185a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/517fcab43dd3c867c9861835991185a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/052b5796f383987f0982bfb21c62133d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/052b5796f383987f0982bfb21c62133d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/657fece964b17cdb783bce720165c81b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/657fece964b17cdb783bce720165c81b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3627ec2a160228289e561b4c4bad1c88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3627ec2a160228289e561b4c4bad1c88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c084cdba7d998c6026b77b2bedb16c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c084cdba7d998c6026b77b2bedb16c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/609e6f0b7bcad8516f51c957c352e131.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/609e6f0b7bcad8516f51c957c352e131.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b51e43dd314866fe7b8cf1def3896b5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b51e43dd314866fe7b8cf1def3896b5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f134c68159e3c4ae1b8cd31685c4a0da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f134c68159e3c4ae1b8cd31685c4a0da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d6c3dd50f40ce4d2f23e33a10af02f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d6c3dd50f40ce4d2f23e33a10af02f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93e670375dc312a0bce884d535b49543.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93e670375dc312a0bce884d535b49543.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6ead1f50e3d5a5f7ece304975ebaf3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6ead1f50e3d5a5f7ece304975ebaf3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab5c9ba3fe26f2eac2908ff4ef0c3e38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab5c9ba3fe26f2eac2908ff4ef0c3e38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5955779f4196eacee871872e9c565237.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5955779f4196eacee871872e9c565237.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a54295c3a05ce118773f3b72a94ee198.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a54295c3a05ce118773f3b72a94ee198.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f0fb6a2b73c481dc8194efc9036daed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f0fb6a2b73c481dc8194efc9036daed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcffbd7e19cb83a129de0d1dcf70e3fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcffbd7e19cb83a129de0d1dcf70e3fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/533047cdb7474da59cb87adbe6c50e39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/533047cdb7474da59cb87adbe6c50e39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4aadd1564fd982d1f2267b49418441cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4aadd1564fd982d1f2267b49418441cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71b5a16bc159955645369c89711374c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71b5a16bc159955645369c89711374c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19a53b3e0bbbda6ee8dc2028930371a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19a53b3e0bbbda6ee8dc2028930371a6.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135055,'1135055','北欧印象几何条纹混色窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/c893004aca22660dac6b3edf8e6070cc.jpg\\\", \\\"http://yanxuan.nosdn.127.net/19f4225226cc3d044cdf22fdb5155314.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8fcd82bbd0995d31310c70bb59bab52b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0e733fc07e89bb025ff5738837cc3d5a.jpg\\\"]','','山形纹提花 北欧简约混色',1,37,'http://yanxuan.nosdn.127.net/87b6a608b99279ebf1764682e9e5fcec.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/517a42ae18dfd98e7d3f311317ba3f54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/517a42ae18dfd98e7d3f311317ba3f54.jpg\\\"/><br/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68e9db2e8f912d4993a3c912e03f5f2c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68e9db2e8f912d4993a3c912e03f5f2c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/41bc6c237355edd4d4e8dd89c504a4b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/41bc6c237355edd4d4e8dd89c504a4b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33f3534df43afd47eb9bb9e3cb85d0b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33f3534df43afd47eb9bb9e3cb85d0b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/304afcf82a46055f14f62da9dbf079e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/304afcf82a46055f14f62da9dbf079e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b28ab088bc909f9964ce3dc6b911439.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b28ab088bc909f9964ce3dc6b911439.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31bb168618d29b6088bfe880a99934c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31bb168618d29b6088bfe880a99934c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d965a3607b1a22f7f52e01261d7a507b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d965a3607b1a22f7f52e01261d7a507b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f868badfd66ad1ed70fb7abc4a71f5b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f868badfd66ad1ed70fb7abc4a71f5b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/662697d3bcdb8427452aec321d3e4c6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/662697d3bcdb8427452aec321d3e4c6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cdf2fd88a844f539f4c9873efb14a93d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cdf2fd88a844f539f4c9873efb14a93d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1792cab519f6f0b489ddf95c30023f67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1792cab519f6f0b489ddf95c30023f67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/334801d2a30855b7bf207bf295b4ecfc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/334801d2a30855b7bf207bf295b4ecfc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2c18a7d948ec0ed09d777291a5f547ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2c18a7d948ec0ed09d777291a5f547ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9bc0be56147bf743458d8df50fc5075f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9bc0be56147bf743458d8df50fc5075f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f89950e36bc4c8ac8cb53e6b4377a9e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f89950e36bc4c8ac8cb53e6b4377a9e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3322ca38b778f0a9b3ac20a049cf520d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3322ca38b778f0a9b3ac20a049cf520d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa487adfab5d685e9da06822a2ea5bb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa487adfab5d685e9da06822a2ea5bb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23425bf14b340a87dcc22c9c4390e15e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23425bf14b340a87dcc22c9c4390e15e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f1e82fc020816d3eb2ef17e24b9e5d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f1e82fc020816d3eb2ef17e24b9e5d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba7a8e956add1c16e9e49ca0d72bd30e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba7a8e956add1c16e9e49ca0d72bd30e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21635d8fed07731fe9d6e5a74bc69c41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21635d8fed07731fe9d6e5a74bc69c41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed0d59cbd62397d20b5fbf4626d41a93.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed0d59cbd62397d20b5fbf4626d41a93.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/29d5b386af4b5f6a03996655d8295bae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/29d5b386af4b5f6a03996655d8295bae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0843c621c7f7d0d36cebcc5a1caf5d94.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0843c621c7f7d0d36cebcc5a1caf5d94.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcb983612a08f762bd3bcc42dc98c709.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcb983612a08f762bd3bcc42dc98c709.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fe59f3d9cda66b0fd4a2c94e124d0ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fe59f3d9cda66b0fd4a2c94e124d0ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/31bd379ac7037b5e54ea93e4f8f833e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/31bd379ac7037b5e54ea93e4f8f833e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/331051a617e47532461c31e5ff7a16bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/331051a617e47532461c31e5ff7a16bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/443cd3bba1bc4e24a17801750b8ffd73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/443cd3bba1bc4e24a17801750b8ffd73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b408464b2167c203bd691c80badedeae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b408464b2167c203bd691c80badedeae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79107afd183d1fe4429dd84e27b1869c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79107afd183d1fe4429dd84e27b1869c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dcd5d9008ff6dbc93631ce29dab6b354.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dcd5d9008ff6dbc93631ce29dab6b354.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5f53f0045b4a770124615a12e724ced.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5f53f0045b4a770124615a12e724ced.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25ddf1a21d8d5a43ab3b1a5d505c65d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25ddf1a21d8d5a43ab3b1a5d505c65d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbf4143559b00939a44fde123c8c2888.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbf4143559b00939a44fde123c8c2888.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2dac797df342a33a30e45e365ccbbfd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2dac797df342a33a30e45e365ccbbfd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c2564a0a643c338a3ba3ca6c7e7ff58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c2564a0a643c338a3ba3ca6c7e7ff58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19cc6dc4032ac9ce30325fc92a5e345e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19cc6dc4032ac9ce30325fc92a5e345e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb623f2b464c8cec997dc021a89571b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb623f2b464c8cec997dc021a89571b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bb40f61105e0380f7fec424ca29b1fa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bb40f61105e0380f7fec424ca29b1fa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/344edfec8435287400477554e2a4fcba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/344edfec8435287400477554e2a4fcba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9f33ab114476550b418a3f0fbaeea68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9f33ab114476550b418a3f0fbaeea68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b72c8e0a58bd04c363306fbd3bf429df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b72c8e0a58bd04c363306fbd3bf429df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6a7308307c74336da7ff7330436a3dd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6a7308307c74336da7ff7330436a3dd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b1086c39d44b373a2e8cdb3062d8c30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b1086c39d44b373a2e8cdb3062d8c30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7c95781a9b95d7e01d384b410cb7a6a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c95781a9b95d7e01d384b410cb7a6a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd1f991f3beb2d9861df203c22a03b08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd1f991f3beb2d9861df203c22a03b08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a55eccfd7e14fea5c551be5b94bf8851.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a55eccfd7e14fea5c551be5b94bf8851.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af209f2726ee582a11b0adf4473963bf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af209f2726ee582a11b0adf4473963bf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb4b661f960dfab272a833732a338b84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb4b661f960dfab272a833732a338b84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0eac0f1694749e3f2ba7c3ce73234ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0eac0f1694749e3f2ba7c3ce73234ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9817135b6416cc72642ada8d285a22d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9817135b6416cc72642ada8d285a22d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54443af2a33be3579ecfff18eeabb321.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54443af2a33be3579ecfff18eeabb321.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3f79c86438c27c8c0ad9511683fb900c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3f79c86438c27c8c0ad9511683fb900c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ebdc8e8f06f2fbe11bc2765038906df7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ebdc8e8f06f2fbe11bc2765038906df7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e2cb3235a86089e75b3b848af26755e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e2cb3235a86089e75b3b848af26755e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2fef8703070e9b1be2e1367bb7c8ea00.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2fef8703070e9b1be2e1367bb7c8ea00.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c84eb4b1c7bb644faf451da2e2b0447.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c84eb4b1c7bb644faf451da2e2b0447.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7df41298392f5c0f38965e2b2097178a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7df41298392f5c0f38965e2b2097178a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d458e8bf25e7c2877ed2b1ef5637aa9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d458e8bf25e7c2877ed2b1ef5637aa9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98cbb394e2b1cae7aaa848c85dd3af18.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98cbb394e2b1cae7aaa848c85dd3af18.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0e162e4742a0865e047b3e189591ae8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0e162e4742a0865e047b3e189591ae8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dfd24919e00f6c0715ce2323507c935.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dfd24919e00f6c0715ce2323507c935.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/202ad04b025d49988cc0b4cabcca70f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/202ad04b025d49988cc0b4cabcca70f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b72277b67793dc6542783a2d0973869.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b72277b67793dc6542783a2d0973869.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75bceb04c01f9ebbe533a94b5eccb873.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75bceb04c01f9ebbe533a94b5eccb873.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/465b9fc2f115f3881e90120c738ece73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/465b9fc2f115f3881e90120c738ece73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/66dfd8708bd9d6ec229f56d22d1f1e82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/66dfd8708bd9d6ec229f56d22d1f1e82.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135056,'1135056','糖果色凹凸条纹儿童房窗帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/42d0d0b58137b50c41a472b721817110.jpg\\\", \\\"http://yanxuan.nosdn.127.net/384ab49a469f592b9c3c23bdd1d99456.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a0351b55ae128410718d9abbe048d59d.jpg\\\", \\\"http://yanxuan.nosdn.127.net/05a7288be96a45435fa942dfe73a37c7.jpg\\\"]','','灵动色彩，童趣条纹',1,36,'http://yanxuan.nosdn.127.net/536246ca4adb77274a94b18bb2f91f47.png','',0,0,'件',279.00,259.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/7c20355c62ad66dbba32b0e11f0f75d5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7c20355c62ad66dbba32b0e11f0f75d5.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35552ca10129c4ec6530fbd5b3596f5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35552ca10129c4ec6530fbd5b3596f5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba98905fc96c69c0a4bf4caec083be2f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba98905fc96c69c0a4bf4caec083be2f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08f9e46394d65290533db13e32112890.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08f9e46394d65290533db13e32112890.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b16ba0cc72ef435e2999564ec20cf6c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b16ba0cc72ef435e2999564ec20cf6c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df3a97cb4c73bc9c1036bb0446368630.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df3a97cb4c73bc9c1036bb0446368630.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c6505b769f5c54f6e66231b03d9c9919.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c6505b769f5c54f6e66231b03d9c9919.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59a6179c8b6f523bc6c67646fcf0ca08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59a6179c8b6f523bc6c67646fcf0ca08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3b4ce480059631e26ffac109aa5d18c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3b4ce480059631e26ffac109aa5d18c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/57dbe2baf75e5fa5529d1b3fd0ebdc97.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/57dbe2baf75e5fa5529d1b3fd0ebdc97.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72b5df8ead55acb75c626b7c4f22f76d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72b5df8ead55acb75c626b7c4f22f76d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2a34c76a1a5bd369b0c7acf62813746a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2a34c76a1a5bd369b0c7acf62813746a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9fb571be38cc011c8edbaff7ab7c961.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9fb571be38cc011c8edbaff7ab7c961.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae2f00a619449bbc968efbb99a0aacfd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae2f00a619449bbc968efbb99a0aacfd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe6dabb85692fd165279f626a27f9fb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe6dabb85692fd165279f626a27f9fb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f0e4d2016335e408106495abc2cf925.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f0e4d2016335e408106495abc2cf925.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfd6f2404e14e54f45f26baff796fca9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfd6f2404e14e54f45f26baff796fca9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a034ad41437cb22dc27edeb8c7ced17c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a034ad41437cb22dc27edeb8c7ced17c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d73f789cd190aaaf80d426939bfc4466.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d73f789cd190aaaf80d426939bfc4466.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a375c717468e02d130a3b335a469b4e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a375c717468e02d130a3b335a469b4e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3160e6ae5c4e0cf4809b0d7419c3bf5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3160e6ae5c4e0cf4809b0d7419c3bf5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d0f8b77d9f28c35569d92d18f72c8c27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d0f8b77d9f28c35569d92d18f72c8c27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b613b3604ded989f3aaeb1b3af5e7c60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b613b3604ded989f3aaeb1b3af5e7c60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82d1d397861c98813e93876f878ed02a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82d1d397861c98813e93876f878ed02a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/628c2aa615c30a97b2c43d829b75161f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/628c2aa615c30a97b2c43d829b75161f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/01899c4632878aa07b12e74b67259485.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/01899c4632878aa07b12e74b67259485.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82554461e3615eea2564fbb9290e57ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82554461e3615eea2564fbb9290e57ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/36b38aca196c62338811f878e18f52b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/36b38aca196c62338811f878e18f52b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a27d72b8fe9e3d533c8c448f7b4a0614.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a27d72b8fe9e3d533c8c448f7b4a0614.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e68d027072ddbb0420b21e3f0f44365.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e68d027072ddbb0420b21e3f0f44365.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c62bd7b6ce6ee1da5a27062df9363677.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c62bd7b6ce6ee1da5a27062df9363677.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76fde5b8b397c0efb12685fd8561123d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76fde5b8b397c0efb12685fd8561123d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5816b3d9fae2b1d15fc462729fe977d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5816b3d9fae2b1d15fc462729fe977d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d57f643c8d33996708bab3052144aa99.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d57f643c8d33996708bab3052144aa99.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecf67d3847b9050a377f751ce250ce34.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecf67d3847b9050a377f751ce250ce34.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e01c7dc028bedd59001e7345a5a246d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e01c7dc028bedd59001e7345a5a246d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4662d564c3b6df760dd19139a6af3060.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4662d564c3b6df760dd19139a6af3060.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2bab03382de1776e2cb9021947f44807.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2bab03382de1776e2cb9021947f44807.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/668e0c4505f9b86190207fe0d8be84ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/668e0c4505f9b86190207fe0d8be84ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19dbde9ef6edf5c1c8790049662287df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19dbde9ef6edf5c1c8790049662287df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/53464274e000ef9c108a6875a4dc7a4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/53464274e000ef9c108a6875a4dc7a4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/138ff2f3f471cf84169a16730ac61c1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/138ff2f3f471cf84169a16730ac61c1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1397ec9bc1f099328c4991b1e1ba224d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1397ec9bc1f099328c4991b1e1ba224d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/15ea2d7f9648e1e40915d3e300411994.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/15ea2d7f9648e1e40915d3e300411994.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3011b59e959f2ef7f4ce50960b45af9c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3011b59e959f2ef7f4ce50960b45af9c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e74c96c5e3bb615176591afbb20d5b3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e74c96c5e3bb615176591afbb20d5b3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe8022ad7a0af1a1d3fd775789b43871.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe8022ad7a0af1a1d3fd775789b43871.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb33363454d749da01e88d7f33d47637.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb33363454d749da01e88d7f33d47637.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b57a6785a7ca57472ead814b5e663ed9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b57a6785a7ca57472ead814b5e663ed9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58338bfd632396d37a32cc3a111e6d42.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58338bfd632396d37a32cc3a111e6d42.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3d6d7f4d4e9fd6d4b7199ec3f993056.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3d6d7f4d4e9fd6d4b7199ec3f993056.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e1bd19661b084036aef793cd04eb850.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e1bd19661b084036aef793cd04eb850.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a4a7ec58407e2c179a268c5f7d9f71b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a4a7ec58407e2c179a268c5f7d9f71b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b752ea0fa16847a196c7c72f9b3c790.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b752ea0fa16847a196c7c72f9b3c790.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2b901ebaf68371b049d87036eb8f41f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2b901ebaf68371b049d87036eb8f41f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f700d302dfb86c98afc8655526129c05.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f700d302dfb86c98afc8655526129c05.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb322b63a80aa3e44cca7d0c8fb06820.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb322b63a80aa3e44cca7d0c8fb06820.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d89b92178625b1c87406c1406c891aa7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d89b92178625b1c87406c1406c891aa7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e4a0c0718ab1f434af40220649c4776.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e4a0c0718ab1f434af40220649c4776.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8cab72015ab23ae571eb8deb0f688870.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8cab72015ab23ae571eb8deb0f688870.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9db276e7c5b8f81223da9bf2b81d146.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9db276e7c5b8f81223da9bf2b81d146.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e026d4db4dbdb745a970db7aab7a5ff.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e026d4db4dbdb745a970db7aab7a5ff.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/abb53b015f71f95844b9b645f8d2a28e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/abb53b015f71f95844b9b645f8d2a28e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fae009fcecbb3b4d387519524f991457.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fae009fcecbb3b4d387519524f991457.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/05827553784f26cf0ccc6b02c3b1c7dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/05827553784f26cf0ccc6b02c3b1c7dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16d0bf68cd235dac5b72f47d4c7ace7f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16d0bf68cd235dac5b72f47d4c7ace7f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/db55ff3fe3873426c8d047d3403387cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/db55ff3fe3873426c8d047d3403387cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df067a032a8e3f85b7b1e9f3ae4a0ed6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df067a032a8e3f85b7b1e9f3ae4a0ed6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a39eaca1d201e2f71f28c4ffa339e87a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a39eaca1d201e2f71f28c4ffa339e87a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f9ff903bc8538e43ba0de5fcd57c3e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f9ff903bc8538e43ba0de5fcd57c3e2.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135057,'1135057','梦幻系简约轻透莹白纱帘',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/86755475669812cad499b1611ea8f3e3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/1521ee48cff67a3d5170b393179d8032.jpg\\\", \\\"http://yanxuan.nosdn.127.net/28aa5ccf88a314821b0e0efe25bbd356.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0b18fd03be66943110e1541f2cdd1dd1.jpg\\\"]','','轻透柔软纱 朦胧细纹肌理',1,33,'http://yanxuan.nosdn.127.net/98c5e80b8e328687ce9c949314ebc41d.png','',0,0,'件',219.00,199.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/088e63e0e298739ce0b7ad6aa4f3bc2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/088e63e0e298739ce0b7ad6aa4f3bc2d.jpg\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44d08314b0c25796e5211b7f82d9c9cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44d08314b0c25796e5211b7f82d9c9cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7a2aede16ff390bc980e8bd485e4e6a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7a2aede16ff390bc980e8bd485e4e6a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb015656f9c0cf779739438143c7842d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb015656f9c0cf779739438143c7842d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a76c38ce3e756deba85a09fe5551abcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a76c38ce3e756deba85a09fe5551abcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f15917590cd0a049c095a2c95ccf832a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f15917590cd0a049c095a2c95ccf832a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1905c8981f963198da77643f3f774a54.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1905c8981f963198da77643f3f774a54.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2ccdfcf68dd4c0f908cfa5c48c76e3c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2ccdfcf68dd4c0f908cfa5c48c76e3c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae6093e376c8ce4b008e5eef96cd2f6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae6093e376c8ce4b008e5eef96cd2f6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5c6b8de674a14425396608d1788a6bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5c6b8de674a14425396608d1788a6bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa9780ed9a8e1a744c589005428eccb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa9780ed9a8e1a744c589005428eccb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/814d1ee43b10292e38a838e32242ff95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/814d1ee43b10292e38a838e32242ff95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbbe9bb7409bbc29285394c56fe6de65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbbe9bb7409bbc29285394c56fe6de65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/001bc932cab905300c5c00a6da69db28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/001bc932cab905300c5c00a6da69db28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8bb1b60c6a52683d4d2689894ccbf20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8bb1b60c6a52683d4d2689894ccbf20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/817206ab2ffd7946e99f2c459bb725ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/817206ab2ffd7946e99f2c459bb725ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/557da67f50abfebb9f38c066ab7b202c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/557da67f50abfebb9f38c066ab7b202c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bf68d5bcaba0405d7a3043f7ea36663a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bf68d5bcaba0405d7a3043f7ea36663a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/195cc13edfaaafa97d8f836e5d1c841a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/195cc13edfaaafa97d8f836e5d1c841a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27757a632a1b76e68b1ac520a2bfd5a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27757a632a1b76e68b1ac520a2bfd5a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c24fe54ae36bd45b741a5ba8796113a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c24fe54ae36bd45b741a5ba8796113a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/894a5ae76c69eb6759de91212a83fa04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/894a5ae76c69eb6759de91212a83fa04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b3aca05774b786d461645ec4faeefda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b3aca05774b786d461645ec4faeefda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37293874fef9660e431fbe5d2f0a1fad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37293874fef9660e431fbe5d2f0a1fad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3f6bb62defe913a888f049be018daa0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3f6bb62defe913a888f049be018daa0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35d2a4c32aa83b360cf60cb6a6c71d8f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35d2a4c32aa83b360cf60cb6a6c71d8f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6758ccc43d3a31997bcdfedad718f6e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6758ccc43d3a31997bcdfedad718f6e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d101a311f94525444c79075e6dc8a90f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d101a311f94525444c79075e6dc8a90f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d336e42a2f94454ce0078be4389d4b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d336e42a2f94454ce0078be4389d4b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dae266d530a47edde62a0424b49cfe73.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dae266d530a47edde62a0424b49cfe73.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c2d1071f14177b19d292b6887544d6e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c2d1071f14177b19d292b6887544d6e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e027ee3bc3fa0ced129d05dd85f629a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e027ee3bc3fa0ced129d05dd85f629a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5c56b8c566ae2dcc0697b4e7bb8b8630.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5c56b8c566ae2dcc0697b4e7bb8b8630.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be84eaf810654923eb06310883435942.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be84eaf810654923eb06310883435942.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b207cfccb4eda5a7278bd74c82adacda.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b207cfccb4eda5a7278bd74c82adacda.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54f86d151cf250d3a76a4cd725f9cdfe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54f86d151cf250d3a76a4cd725f9cdfe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/44d3695e8dd5286b029aa7ce19a5b97a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/44d3695e8dd5286b029aa7ce19a5b97a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c80a2af6d1d1b40d382b1f495e83795.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c80a2af6d1d1b40d382b1f495e83795.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddd6008d180e884835cfd39094a81dd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddd6008d180e884835cfd39094a81dd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b70b0bbb4933b57f7d28f517ef9c812.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b70b0bbb4933b57f7d28f517ef9c812.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/251f9ccb814f04ca5e6804b5ca60182f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/251f9ccb814f04ca5e6804b5ca60182f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad8ca0f8ffd3396ee1be6792b316d8fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad8ca0f8ffd3396ee1be6792b316d8fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/96237772643462f0c923051df580ef8b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/96237772643462f0c923051df580ef8b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/054f71961df4fca4c0260d83a5d9bc98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/054f71961df4fca4c0260d83a5d9bc98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d5cbcffbfcd3ac01e38eb3a01d0833a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d5cbcffbfcd3ac01e38eb3a01d0833a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fb4bb9f35b500e7a0a7093ddbce407f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fb4bb9f35b500e7a0a7093ddbce407f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/23a6091b704260334779826d2b858a9f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/23a6091b704260334779826d2b858a9f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aec34514179b3837429f6e4ab9f39759.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aec34514179b3837429f6e4ab9f39759.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/339a771531698027d36f917ccafadd02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/339a771531698027d36f917ccafadd02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06def276699cc40e8f281c1f0b935c04.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06def276699cc40e8f281c1f0b935c04.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2648155e986745bf2269ef0857968bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2648155e986745bf2269ef0857968bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef7a8e1db5aceba36645696895b04671.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef7a8e1db5aceba36645696895b04671.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddb0d7fee5bde51071746aef961e28d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddb0d7fee5bde51071746aef961e28d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6752bad820840f5f0b684690d35f697d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6752bad820840f5f0b684690d35f697d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aaec96a0239f848e38d79510191480a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aaec96a0239f848e38d79510191480a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ad7d5c557d09e854388d33963566712e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ad7d5c557d09e854388d33963566712e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d64a872b7b803ae2c6a3342edae85bb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d64a872b7b803ae2c6a3342edae85bb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/859f290857188c448bdca0e20cf786ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/859f290857188c448bdca0e20cf786ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cc76f812f3a2ebc107cc3d5e0c8da75.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cc76f812f3a2ebc107cc3d5e0c8da75.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135058,'1135058','日式多功能手卷午睡枕坐垫',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/45765c794a67f43ae09e2558158e99ea.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2343dfbfd4a564ce5a0c0342c754dc96.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6d8a21d7dadcac97cc0fe16f4de91b7a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8bf410efc12c23f3b6a65ba3023d2f10.jpg\\\"]','','全棉针织条纹，透气按摩粒子',1,16,'http://yanxuan.nosdn.127.net/37bc0fa3524a904ac740340fa92bd515.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/2286fb6b29d365466760ecbf2ebc8c82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2286fb6b29d365466760ecbf2ebc8c82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a9b2bd6e1049c5c4653a00b9802e6a11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a9b2bd6e1049c5c4653a00b9802e6a11.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2639883802a55490ea81fe3dcd543df3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2639883802a55490ea81fe3dcd543df3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/582b3658d2e405bd74dce301502d70f1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/582b3658d2e405bd74dce301502d70f1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba9df33cbb0003bdab7d63dd0a70d599.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba9df33cbb0003bdab7d63dd0a70d599.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24c5d1905d9c31072445d87f7a37eebb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24c5d1905d9c31072445d87f7a37eebb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e874eec46f85b846f696dd11fe61b858.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e874eec46f85b846f696dd11fe61b858.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d64ae710b7fc2c1cef03d7582515ede0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d64ae710b7fc2c1cef03d7582515ede0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ab294e2889662c548e3e283e548d7ca2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ab294e2889662c548e3e283e548d7ca2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2eb3eaef8f70960e95c67048faf1c68c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2eb3eaef8f70960e95c67048faf1c68c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11bf7eb8c196ecc361c963836b81d4ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11bf7eb8c196ecc361c963836b81d4ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef7b28262d2d7def40175ca98bde3222.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef7b28262d2d7def40175ca98bde3222.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/678ae536ac582a2923cfa8240bf66aa8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/678ae536ac582a2923cfa8240bf66aa8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32d157099c01a5c6283513849f699d0f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32d157099c01a5c6283513849f699d0f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e74c91fa555929d5493dcde5da877b02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e74c91fa555929d5493dcde5da877b02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e511841b236e95ab4ff0bf4562500ad0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e511841b236e95ab4ff0bf4562500ad0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/deb067ad58dea4f11f53b191e3d1e77f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/deb067ad58dea4f11f53b191e3d1e77f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76a6d1fc324d373f70db08ce8750cb32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76a6d1fc324d373f70db08ce8750cb32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6305c83e95ddddd661cef3d5c9ac58cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6305c83e95ddddd661cef3d5c9ac58cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9dcf3269c87105f1841aed22d0f36fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9dcf3269c87105f1841aed22d0f36fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/54d7c9813569e17cef0f1027e5a52e6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/54d7c9813569e17cef0f1027e5a52e6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d39f00c7e20a5cd1a9ee8c9a65744cc0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d39f00c7e20a5cd1a9ee8c9a65744cc0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3bcd9d4b95c77f2a61dc5e29cd804cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3bcd9d4b95c77f2a61dc5e29cd804cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f52a276d2daf93cb61be8d6b6509106a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f52a276d2daf93cb61be8d6b6509106a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d659bfb20371020a769309886aadd16f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d659bfb20371020a769309886aadd16f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43d05684abd3de808a8e35506a232c76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43d05684abd3de808a8e35506a232c76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48905901467d7f0950220b3eac766519.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48905901467d7f0950220b3eac766519.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ed5dcbd0e5d8b53cd6c4116780415af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ed5dcbd0e5d8b53cd6c4116780415af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f0e8dbe1a4acb9985534c1a1017b91ce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f0e8dbe1a4acb9985534c1a1017b91ce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5953f2c981375ea3945f368b9efcf2e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5953f2c981375ea3945f368b9efcf2e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2afc692ecef8565da94ab96d605bd8d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2afc692ecef8565da94ab96d605bd8d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b1c74ac52f6858cbaf6795bb98269a60.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b1c74ac52f6858cbaf6795bb98269a60.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1090b13b82a36d182644a78c1ade112.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1090b13b82a36d182644a78c1ade112.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8d28fba7b538217405ad66fb119e5fa0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8d28fba7b538217405ad66fb119e5fa0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22588b3bc32226a798cb1ae6106525ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22588b3bc32226a798cb1ae6106525ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9f07dcfdfa0e7a90df6e8c9ea397d17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9f07dcfdfa0e7a90df6e8c9ea397d17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00df39022e7a1c29a9c0fbf4a0e3fb38.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00df39022e7a1c29a9c0fbf4a0e3fb38.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8588aabc1bbe4475026d74052b166a51.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8588aabc1bbe4475026d74052b166a51.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22071588ec58dfd880e913908acf2544.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22071588ec58dfd880e913908acf2544.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c8f02bcd66829318d9ca39618df2f42f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c8f02bcd66829318d9ca39618df2f42f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0a72a74333e658a4da4bf886d74d739.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0a72a74333e658a4da4bf886d74d739.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e40a7ae5c9834f61408a1d31c839d79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e40a7ae5c9834f61408a1d31c839d79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af4812a2debd12fb561816f2df84fddc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af4812a2debd12fb561816f2df84fddc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8182e35711a99d7e443bd69908948e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8182e35711a99d7e443bd69908948e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82ca0181ca502c76834e528135b272e8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82ca0181ca502c76834e528135b272e8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f359915790a2bc8a399f243357da1cd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f359915790a2bc8a399f243357da1cd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fa9246460b556890c5fdd5a8cc305743.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fa9246460b556890c5fdd5a8cc305743.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5381c329f434e08e18e087ebec952a28.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5381c329f434e08e18e087ebec952a28.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8f966701c7b93490c5cebf8e9cfdffa5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8f966701c7b93490c5cebf8e9cfdffa5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/056d111c415c9db7282d8a27aeed9ae8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/056d111c415c9db7282d8a27aeed9ae8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32dc1dbca7a4922e8da3aaf90ca5f1be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32dc1dbca7a4922e8da3aaf90ca5f1be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ca114e5755a30f1557f8c75b89b1902.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ca114e5755a30f1557f8c75b89b1902.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/959c4385428233e4ec256a6646ced133.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/959c4385428233e4ec256a6646ced133.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135065,'1135065','里昂 男式防磨平角内裤',1010002,0,'[\\\"http://yanxuan.nosdn.127.net/a55e95d3efa6f04d5dae3b9f9b7ca106.png\\\", \\\"http://yanxuan.nosdn.127.net/a55e95d3efa6f04d5dae3b9f9b7ca106.png\\\", \\\"http://yanxuan.nosdn.127.net/a55e95d3efa6f04d5dae3b9f9b7ca106.png\\\", \\\"http://yanxuan.nosdn.127.net/a55e95d3efa6f04d5dae3b9f9b7ca106.png\\\", \\\"http://yanxuan.nosdn.127.net/a55e95d3efa6f04d5dae3b9f9b7ca106.png\\\"]','','19道工艺，磨绒质感',1,9,'http://yanxuan.nosdn.127.net/055eb16f95fe995108dd683f532fda22.png','',0,0,'件',89.00,69.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135072,'1135072','经典海魂纹水手裙（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/fe97cc9eb49397a608eb52671767f9a3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fe97cc9eb49397a608eb52671767f9a3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fe97cc9eb49397a608eb52671767f9a3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fe97cc9eb49397a608eb52671767f9a3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/fe97cc9eb49397a608eb52671767f9a3.jpg\\\"]','','自由海军领探索未来梦',1,3,'http://yanxuan.nosdn.127.net/43e57d4208cdc78ac9c088f9b3e798f5.png','',1,0,'件',89.00,69.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1135073,'1135073','海魂纹哈衣水手服（婴童）',1020003,0,'[\\\"http://yanxuan.nosdn.127.net/55aac61eeb39a4ac9b60741650897453.png\\\", \\\"http://yanxuan.nosdn.127.net/55aac61eeb39a4ac9b60741650897453.png\\\", \\\"http://yanxuan.nosdn.127.net/55aac61eeb39a4ac9b60741650897453.png\\\", \\\"http://yanxuan.nosdn.127.net/55aac61eeb39a4ac9b60741650897453.png\\\", \\\"http://yanxuan.nosdn.127.net/55aac61eeb39a4ac9b60741650897453.png\\\"]','','经典海魂纹自由海军领',1,4,'http://yanxuan.nosdn.127.net/53052b04ae001d289c040e09ea92231c.png','',1,0,'件',89.00,69.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1138000,'1138000','日式蓬软太鼓抱枕',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/6c077e6fdbb1097c530ec38f805bef96.jpg\\\", \\\"http://yanxuan.nosdn.127.net/18327e601ce72fce5295c3e8a4e5edb8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5599380c7fcccc15cb60d1e1f2f4ebca.jpg\\\", \\\"http://yanxuan.nosdn.127.net/aa818e0f542b19dca3dedbd82299f5d4.jpg\\\"]','','萌趣太鼓造型 软糯轻柔回弹',1,2,'http://yanxuan.nosdn.127.net/ad953e16ad8c33b714e7af941ce8cd56.png','',0,0,'件',49.00,29.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/c0433bd3aafdc44b2b5fe10ced151823.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c0433bd3aafdc44b2b5fe10ced151823.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/241526b14e760f3b327d745127b7cadd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/241526b14e760f3b327d745127b7cadd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/924f6a3a78957b404ea2ad0ea24b4d58.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/924f6a3a78957b404ea2ad0ea24b4d58.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/21b519690bf5574c6a4794fd0663fa37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/21b519690bf5574c6a4794fd0663fa37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40ce0f2d0f0331024cb5eeffd48613f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40ce0f2d0f0331024cb5eeffd48613f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/707d4c2e44903802f5181edc4d5e2aa4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/707d4c2e44903802f5181edc4d5e2aa4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a26d87e0542007a59158a814b999f67.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a26d87e0542007a59158a814b999f67.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5732b17001835e524acac7d3b75685e7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5732b17001835e524acac7d3b75685e7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/19a4e7e34b7507e1ffb7ff3a3939a0fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/19a4e7e34b7507e1ffb7ff3a3939a0fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/699bf4c433ba2bb7736401e2272a2697.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/699bf4c433ba2bb7736401e2272a2697.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb28a8cb46ffd42a39122d3f0724b3ee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb28a8cb46ffd42a39122d3f0724b3ee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43f3eeb3661f54db929a9e3c8ee8be1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43f3eeb3661f54db929a9e3c8ee8be1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37b4e61572b7c69462ae74b6a3cb4cb3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37b4e61572b7c69462ae74b6a3cb4cb3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd17986d401a93b01526b7855e722efa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd17986d401a93b01526b7855e722efa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e76a0c72a3e6cc2f15f61048ef1423c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e76a0c72a3e6cc2f15f61048ef1423c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eabbdb77f25b449b1b3bcfd740a5c85c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eabbdb77f25b449b1b3bcfd740a5c85c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c92f5747f156e0c3df3873456bfdc364.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c92f5747f156e0c3df3873456bfdc364.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fce1bbb0804c45fcedc0d407526197bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fce1bbb0804c45fcedc0d407526197bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/de893522b3454e6769d46d5d16c35ec9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/de893522b3454e6769d46d5d16c35ec9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c7ca459ec92d9f32b25c4d1681a3efdf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c7ca459ec92d9f32b25c4d1681a3efdf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd7974a599497d0830fe209f572f1d43.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd7974a599497d0830fe209f572f1d43.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a52672cac9385c1a6da086e46aead878.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a52672cac9385c1a6da086e46aead878.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/edc7589ef8d2d748b10d4fbe62d6cad9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/edc7589ef8d2d748b10d4fbe62d6cad9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769529f68aad47685e9fd8ccc88a5065.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769529f68aad47685e9fd8ccc88a5065.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6151ae4dcae5a0ed3e9194c0d994e8d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6151ae4dcae5a0ed3e9194c0d994e8d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddfb7e8eb34b476cb3a5cc6aeae1b414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddfb7e8eb34b476cb3a5cc6aeae1b414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/356742ded4619131733f009e7f44bdb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/356742ded4619131733f009e7f44bdb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d522efc0adefdf878a187d68287ccac7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d522efc0adefdf878a187d68287ccac7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd385aa80f06967d8c120ee2a73ebdea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd385aa80f06967d8c120ee2a73ebdea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4a383ec27f0d0fecf6b218a6434a6537.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4a383ec27f0d0fecf6b218a6434a6537.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd76c5d83bdfac3eaef226032e9f2f1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd76c5d83bdfac3eaef226032e9f2f1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f37bf734bedcb5fc34f96a2d3ce21362.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f37bf734bedcb5fc34f96a2d3ce21362.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9426b170263b5f2e60b4e349002fb453.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9426b170263b5f2e60b4e349002fb453.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02c8fd2d4afb11e4ebfe7e675725f8b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02c8fd2d4afb11e4ebfe7e675725f8b9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/55114d32fb55124afb57fa5f96c7aad6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/55114d32fb55124afb57fa5f96c7aad6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c812cb0cf47dfb2b0e0dbdd4e2ae2d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c812cb0cf47dfb2b0e0dbdd4e2ae2d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8491553451f68f13de7d88abd32e80bb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8491553451f68f13de7d88abd32e80bb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2358865b0b2916d7b4c85105828e6f5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2358865b0b2916d7b4c85105828e6f5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d4a761f631987bcb1542cee33c35661.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d4a761f631987bcb1542cee33c35661.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/af64442ed12ecc4ec0a8f1053f0e6c4f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/af64442ed12ecc4ec0a8f1053f0e6c4f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d00f1aa2e519c822a180024983611962.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d00f1aa2e519c822a180024983611962.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4dca882b9a0a583456f322030d96d99f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4dca882b9a0a583456f322030d96d99f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a95ed3ffbb239954cc0f1089600847cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a95ed3ffbb239954cc0f1089600847cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3783189e151670cae90114ac96208749.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3783189e151670cae90114ac96208749.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea89e25888731072a7838f367efe40cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea89e25888731072a7838f367efe40cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f3d87a044500179907d61e7984785b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f3d87a044500179907d61e7984785b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfc62369d2cebd727c24356199b3dfc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfc62369d2cebd727c24356199b3dfc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be23add374cfc9344889d449a537159c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be23add374cfc9344889d449a537159c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/113f624f32c22d14b8fe49495d275bce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/113f624f32c22d14b8fe49495d275bce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed060c62699d53a8d04451061aed0a95.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed060c62699d53a8d04451061aed0a95.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5cc33cd7c28a4c6dbb12e24c5b95e17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5cc33cd7c28a4c6dbb12e24c5b95e17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ea47a643df6b81539cb50e83585febf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ea47a643df6b81539cb50e83585febf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37bd564f186c644e582eb5056597fe2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37bd564f186c644e582eb5056597fe2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b47fe758560f31f84441a5420c2777e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b47fe758560f31f84441a5420c2777e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/079946aa8f0edab416032a761e69c874.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/079946aa8f0edab416032a761e69c874.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fab6ee083f738fe81e836f5b46345b8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fab6ee083f738fe81e836f5b46345b8c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1138001,'1138001','北欧简约山形纹绣花抱枕',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/26a98380a4bfc87e5bf1f284fa0e5326.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0aaf361547fbf53416e39577b643f37f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1162dd41523cacb74d55c2f020623f1.jpg\\\", \\\"http://yanxuan.nosdn.127.net/416067a61b4911bf7f6d26cd7adf8058.jpg\\\"]','','精细刺绣，舒适立体',1,3,'http://yanxuan.nosdn.127.net/dbc5b25b824c3b3d7ff43b56ca35eee9.png','',0,0,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/5737ca831d2cd44a2242eb0992583faf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5737ca831d2cd44a2242eb0992583faf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1160e68bcdeba98d2aada60af18c03c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1160e68bcdeba98d2aada60af18c03c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3772cb0d0f4767217726f9af7faa396.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3772cb0d0f4767217726f9af7faa396.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/715a7f19500f5c28d9f73d37ebb1c557.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/715a7f19500f5c28d9f73d37ebb1c557.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84238cd8ab59b2fe193b825a3e89fd65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84238cd8ab59b2fe193b825a3e89fd65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f4efe768f21095587d8bb4db202b2e23.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f4efe768f21095587d8bb4db202b2e23.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dbb5a935340a7ff61de6bec5fa3fd985.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dbb5a935340a7ff61de6bec5fa3fd985.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b0750c142e857a922d77999a48760cb9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b0750c142e857a922d77999a48760cb9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d742c6ee8b65f2812784e13c2efd04fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d742c6ee8b65f2812784e13c2efd04fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3aada66e84ec86907ca941fbc5235f12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3aada66e84ec86907ca941fbc5235f12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb0fd8620c6d6208773667096709ba2b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb0fd8620c6d6208773667096709ba2b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82b0a7a951c15b41eb5a4bb688dd74dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82b0a7a951c15b41eb5a4bb688dd74dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/274fea6d222c1da9c687cb73f0f4f993.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/274fea6d222c1da9c687cb73f0f4f993.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc87ced2f7b274139bb079a75f7adf91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc87ced2f7b274139bb079a75f7adf91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a7f98096222daadf9820e1075670173.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a7f98096222daadf9820e1075670173.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/26501a456d9e85980e12efe92120de56.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/26501a456d9e85980e12efe92120de56.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a9fbd6be2b2a3c2c83d4edaad2086a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a9fbd6be2b2a3c2c83d4edaad2086a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a3bf915e824b8b917c893167a99a3773.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a3bf915e824b8b917c893167a99a3773.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/211b5a457edcb05d3f3d21ff69c48398.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/211b5a457edcb05d3f3d21ff69c48398.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cc0105d79ff4744f0680cbd2f87a8060.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cc0105d79ff4744f0680cbd2f87a8060.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f1da6da8c6b7b52f958fdec1dd7769c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f1da6da8c6b7b52f958fdec1dd7769c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88ed21fc61da4f79545941fffce1f68c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88ed21fc61da4f79545941fffce1f68c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6eb4abc57dbd46d6dcc38cac3bd32c68.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6eb4abc57dbd46d6dcc38cac3bd32c68.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c54b9b585c2e03559865e086f9b45bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c54b9b585c2e03559865e086f9b45bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f88e9af10088b3a0b4669b27ef2fcadb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f88e9af10088b3a0b4669b27ef2fcadb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6b249bac9bf3aa94bf4fffb5ac4d1e70.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6b249bac9bf3aa94bf4fffb5ac4d1e70.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b7ded1405eaa6f687eeb9e31b469d5de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b7ded1405eaa6f687eeb9e31b469d5de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d072d1f04f7d94495227cf25b591744.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d072d1f04f7d94495227cf25b591744.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89f67b83d74f2a18b680bb5e6ef0d721.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89f67b83d74f2a18b680bb5e6ef0d721.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/236e948413b249b5ea4c1f6f8e835641.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/236e948413b249b5ea4c1f6f8e835641.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b799d3613b5e3b87d89a608533473df8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b799d3613b5e3b87d89a608533473df8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6d4af8873253a0b5ae097c15c3628c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6d4af8873253a0b5ae097c15c3628c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fc017dc5a790385f6a96b43cf1a5b867.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fc017dc5a790385f6a96b43cf1a5b867.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0f10cc90e368fad0bd49fafc3b9047b5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0f10cc90e368fad0bd49fafc3b9047b5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/864bf5646ba2ad778f507c224973bca7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/864bf5646ba2ad778f507c224973bca7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0443f772258e35af98be389a08fd85b8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0443f772258e35af98be389a08fd85b8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/821926b210f311717fdaa0eccb142e37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/821926b210f311717fdaa0eccb142e37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24d0ab5a259a662501e813cf21d752d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24d0ab5a259a662501e813cf21d752d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b58c263c7e090c68d77e056c9d9afe27.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b58c263c7e090c68d77e056c9d9afe27.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d50d8b9f53f54ff0c066de7b39b2601c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d50d8b9f53f54ff0c066de7b39b2601c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b382bfe1d8797e845bbcfd9dce361f76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b382bfe1d8797e845bbcfd9dce361f76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3aecb3e8d261312596727f56b54a0fa2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3aecb3e8d261312596727f56b54a0fa2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c733463829f1fe8fa61998ae7c2ae37b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c733463829f1fe8fa61998ae7c2ae37b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da2850f298b6cf4108e00a06bbc59821.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da2850f298b6cf4108e00a06bbc59821.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd0924729a92af064c2108569e9d9463.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd0924729a92af064c2108569e9d9463.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b819438a87396b0e3cc22202fc19caf0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b819438a87396b0e3cc22202fc19caf0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ea853201f8ad389ae3068f3d765aa44.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ea853201f8ad389ae3068f3d765aa44.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ef9093e1959a79178c32d5fc0fbe996.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ef9093e1959a79178c32d5fc0fbe996.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da1d1a9a1e2afe85b640d573085a3d24.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da1d1a9a1e2afe85b640d573085a3d24.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce702a9ac92d3666be5d4de2af5e03ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce702a9ac92d3666be5d4de2af5e03ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b43f6da048bbc7206990d9ff972a23ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b43f6da048bbc7206990d9ff972a23ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22eb869c0f07b55826e1e183dd498f3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22eb869c0f07b55826e1e183dd498f3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d2c6bf7e29f0e8380ebef90b3bab2294.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d2c6bf7e29f0e8380ebef90b3bab2294.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143006,'1143006','十四行诗-礼盒',1012003,0,'[\\\"http://yanxuan.nosdn.127.net/6581026507cf958241a07b38a7abb516.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6581026507cf958241a07b38a7abb516.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6581026507cf958241a07b38a7abb516.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6581026507cf958241a07b38a7abb516.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6581026507cf958241a07b38a7abb516.jpg\\\"]','','简约素雅，文艺大气',1,1,'http://yanxuan.nosdn.127.net/2b48feb65954c6739be28d15b9fbfbe3.png','',0,0,'件',119.00,99.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143015,'1143015','婴儿床蔺草席',1036000,0,'[\\\"http://yanxuan.nosdn.127.net/dee547def90dc27928f7da892059cdf4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/0eaba4e65f5842069dc3701064206bbb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b6f6f87724f792525236f243aca134ad.jpg\\\", \\\"http://yanxuan.nosdn.127.net/8267a06caded158b3d59e687f8464bdd.png\\\"]','','天然龙眉草，婴童可用',1,12,'http://yanxuan.nosdn.127.net/50e197854e0ada79c37b7215a1574450.png','',0,1,'件',99.00,79.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/5b61283878386d0a6689aaf2c7cca216.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5b61283878386d0a6689aaf2c7cca216.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/317f0172cd25cf4e3df977ae352e93de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/317f0172cd25cf4e3df977ae352e93de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ce44d9f635c9622d07b013d1ecec673b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ce44d9f635c9622d07b013d1ecec673b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1458923bf8ef1026d348b8b3836bebb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1458923bf8ef1026d348b8b3836bebb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aadf3010b98aea8b76e71311bd1817be.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aadf3010b98aea8b76e71311bd1817be.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ebd08654443994ed649268bf3e2644e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ebd08654443994ed649268bf3e2644e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4d8ebfb3b325c5860593111853b4cf0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4d8ebfb3b325c5860593111853b4cf0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a82ab7d28d583d0ee1589839d4bbd4ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a82ab7d28d583d0ee1589839d4bbd4ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4d5b0f2a189b762dbfa30d17d9c2000.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4d5b0f2a189b762dbfa30d17d9c2000.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ced9250cbae3d8aab59cce10097f604.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ced9250cbae3d8aab59cce10097f604.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/defc1c7c003db33e3a59f516a2d8d325.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/defc1c7c003db33e3a59f516a2d8d325.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d771d0983bf9e4c8fa9e1884670bd0f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d771d0983bf9e4c8fa9e1884670bd0f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd34242238006e1025979957f8c3472a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd34242238006e1025979957f8c3472a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e92d5f81f62dc8fe04637d2c7cb547cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e92d5f81f62dc8fe04637d2c7cb547cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ea5b8208c72f4c24e34eb7c60eaa08ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ea5b8208c72f4c24e34eb7c60eaa08ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/07313180371a891db51584f4f9a8c7f8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/07313180371a891db51584f4f9a8c7f8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0c5eda0ef4b1531769bba85577da55a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0c5eda0ef4b1531769bba85577da55a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1a8cbadb11977682e7ee27cf91641f3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1a8cbadb11977682e7ee27cf91641f3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68c44468e16975d51f0a0681ffc9bc20.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68c44468e16975d51f0a0681ffc9bc20.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/235d44c2f70e56eac52e42d7e9394f08.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/235d44c2f70e56eac52e42d7e9394f08.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed95f47c5d824989cb194f6a07f254f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed95f47c5d824989cb194f6a07f254f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e398e17d2d87162f1bef8a2bc8a5811.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e398e17d2d87162f1bef8a2bc8a5811.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0061713aac984a6d87141be2228b8530.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0061713aac984a6d87141be2228b8530.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c090d3a13c075d6156c0ea944e1f1a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c090d3a13c075d6156c0ea944e1f1a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09420e2f06e599d083664957b8b884aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09420e2f06e599d083664957b8b884aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bb477e3a351f4e40ca76bf354dff70a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bb477e3a351f4e40ca76bf354dff70a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/68f2f21b876d694ff1af0ffcde990bee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/68f2f21b876d694ff1af0ffcde990bee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/957d8bfbd1854f3a92ec2fc0749dc6da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/957d8bfbd1854f3a92ec2fc0749dc6da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/84134ea83eb50206ee0c3ef0ab52d78f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/84134ea83eb50206ee0c3ef0ab52d78f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/379692b42214d136c3a445d45a5b1b1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/379692b42214d136c3a445d45a5b1b1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a25c517680858162dea24d0b37d64b53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a25c517680858162dea24d0b37d64b53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c04b31c04e1d9889253d567a6ce32a4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c04b31c04e1d9889253d567a6ce32a4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b05310ce60fafbb1f0b6c7627a67196.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b05310ce60fafbb1f0b6c7627a67196.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1cf0d8858292a9bb20f80dd774637613.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1cf0d8858292a9bb20f80dd774637613.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72e3d6e2e01c5b9548f3439abe7969fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72e3d6e2e01c5b9548f3439abe7969fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/904a4481b60969252a60f3c190344bc8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/904a4481b60969252a60f3c190344bc8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98ece1c30eb8d7b16aa11af48b03553c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98ece1c30eb8d7b16aa11af48b03553c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39dd6d55d20f56ca1795e3d45935adb0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39dd6d55d20f56ca1795e3d45935adb0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/039e0ac85d9acf414c44863f39ad8929.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/039e0ac85d9acf414c44863f39ad8929.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a336c7b499f5426bcea6b3ab31a5f93f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a336c7b499f5426bcea6b3ab31a5f93f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e697f9bb8a793a4d3663147ceb1d8b57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e697f9bb8a793a4d3663147ceb1d8b57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/64d57a4fb77a24a2df5bd1c14d7f4da0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/64d57a4fb77a24a2df5bd1c14d7f4da0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/13ac7026c48e61f9f1b25117ea1b9e40.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/13ac7026c48e61f9f1b25117ea1b9e40.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61bdc294c3231090b937b7d5328277da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61bdc294c3231090b937b7d5328277da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2af5948114532c7170ffeaedfda5da49.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2af5948114532c7170ffeaedfda5da49.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e43b9131d81764e1ef81458de7bb798.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e43b9131d81764e1ef81458de7bb798.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ef58e9ed789f86a985ab9439a95a6c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ef58e9ed789f86a985ab9439a95a6c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/45c8b928bc8cf670051e446a252a4960.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/45c8b928bc8cf670051e446a252a4960.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e15246213d7633d34c33fe214a53e8c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e15246213d7633d34c33fe214a53e8c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/084e90368fdadcc1f87c594d22f2b9de.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/084e90368fdadcc1f87c594d22f2b9de.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cd8018baef4c8839ef169fef88c871d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cd8018baef4c8839ef169fef88c871d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7e7c26b5a006575d26c9b65afb716ac2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7e7c26b5a006575d26c9b65afb716ac2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a0e06716327075b050026390e4ca2f0b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a0e06716327075b050026390e4ca2f0b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/03a7fa7173433ce47ff48eeb69682d0d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/03a7fa7173433ce47ff48eeb69682d0d.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143016,'1143016','112升 纯PC拉链斜纹拉杆箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/122e27c15197386f454f74176183d202.png\\\", \\\"http://yanxuan.nosdn.127.net/122e27c15197386f454f74176183d202.png\\\", \\\"http://yanxuan.nosdn.127.net/122e27c15197386f454f74176183d202.png\\\", \\\"http://yanxuan.nosdn.127.net/122e27c15197386f454f74176183d202.png\\\", \\\"http://yanxuan.nosdn.127.net/122e27c15197386f454f74176183d202.png\\\"]','','容量升级，全家一箱搞定',1,6,'http://yanxuan.nosdn.127.net/e56c6239ee4a641ce2a4565c6babb43e.png','',0,0,'件',339.00,319.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143018,'1143018','粽情乡思端午粽礼盒 640克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/e34581a51939ceaf69ac71fe19c1cc45.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e34581a51939ceaf69ac71fe19c1cc45.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e34581a51939ceaf69ac71fe19c1cc45.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e34581a51939ceaf69ac71fe19c1cc45.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e34581a51939ceaf69ac71fe19c1cc45.jpg\\\"]','','五种口味，寄情端午',1,1,'http://yanxuan.nosdn.127.net/d1fd69cee4990f4de1109baef30efeeb.png','',0,0,'件',88.00,68.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143019,'1143019','粽夏冰晶端午粽礼盒 480克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/2b88be4b0e9acfa83d5d95fa19f13a1f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b88be4b0e9acfa83d5d95fa19f13a1f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b88be4b0e9acfa83d5d95fa19f13a1f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b88be4b0e9acfa83d5d95fa19f13a1f.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2b88be4b0e9acfa83d5d95fa19f13a1f.jpg\\\"]','','五味冰粽，清凉一夏',1,2,'http://yanxuan.nosdn.127.net/277b07c1e5e6fb57cf9ca47fcd3903d5.png','',0,0,'件',118.00,98.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1143020,'1143020','粽横四海端午粽礼盒 800克',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/9465a0076a665f3937269685879cdbb9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9465a0076a665f3937269685879cdbb9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9465a0076a665f3937269685879cdbb9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9465a0076a665f3937269685879cdbb9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9465a0076a665f3937269685879cdbb9.jpg\\\"]','','八方风味，粽香礼赞',1,3,'http://yanxuan.nosdn.127.net/200d4d59763af9a0781cca4a06175de7.png','',0,0,'件',188.00,168.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1147045,'1147045','清新趣粉系列居家地毯 灰黄条纹',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/fc2cc85988f5dff0cb279f71defb70e9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e4bd418068967198c004c553baeb96ea.jpg\\\", \\\"http://yanxuan.nosdn.127.net/80c19798d0c56e1c10b7b8221d6decd9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/9160dde4aa5d7f961607d3e6c9d04843.jpg\\\"]','','条纹色块拼接 软糯温馨',1,28,'http://yanxuan.nosdn.127.net/5cda4a0c4c4ff9728d03186bd053c9ca.png','',0,0,'件',619.00,599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/baa3d2e8841117edfdf0b77ba4b923a3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/baa3d2e8841117edfdf0b77ba4b923a3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c629e309184f5e1e51cdb10193bf993.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c629e309184f5e1e51cdb10193bf993.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e9f6e41af564fd0cc40a123dce69db4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e9f6e41af564fd0cc40a123dce69db4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61df354d45227bd4d1870a792cc69b65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61df354d45227bd4d1870a792cc69b65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb315d87c9b79db279e8fe1f0a4ff351.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb315d87c9b79db279e8fe1f0a4ff351.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b43def579fe53f8b3d55f3838a5e98dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b43def579fe53f8b3d55f3838a5e98dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4844c8fcd50ebca556d83c3b79563e30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4844c8fcd50ebca556d83c3b79563e30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d8ec64be5f5e18d9c7c3f8031f843928.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d8ec64be5f5e18d9c7c3f8031f843928.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/76b3c0e01553f16457d2d86c7a4fcfd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/76b3c0e01553f16457d2d86c7a4fcfd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fef2ca1994a2fdb6a2ed15c6fcd55e71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fef2ca1994a2fdb6a2ed15c6fcd55e71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/02cc37f70c3eb52657303293f20d7273.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/02cc37f70c3eb52657303293f20d7273.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e9970f5e3649225e7922cd16e2552f92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e9970f5e3649225e7922cd16e2552f92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/73be44d027e0869444fabcf8455f7c41.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/73be44d027e0869444fabcf8455f7c41.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4b032b74be52d7f848073d847c4ad2e5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4b032b74be52d7f848073d847c4ad2e5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39422d211ff45305b433f52be48ba594.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39422d211ff45305b433f52be48ba594.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/253b600c627a913f11621c4b0efabd9b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/253b600c627a913f11621c4b0efabd9b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0615bcf15f2a5c242cf8ac8b25954e9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0615bcf15f2a5c242cf8ac8b25954e9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75c6bb3e19f57b854f3f1c81aebb12a5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75c6bb3e19f57b854f3f1c81aebb12a5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d8903b362c483a6a361e25db45efad4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d8903b362c483a6a361e25db45efad4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/861fb97fb4debc078419692924514e82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/861fb97fb4debc078419692924514e82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/743398e0811fd6d35b89c8a381596b78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/743398e0811fd6d35b89c8a381596b78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e9e0833fcc2817458548985fc82743a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e9e0833fcc2817458548985fc82743a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fc6a7297e038f54bdd793fa4d46b7f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fc6a7297e038f54bdd793fa4d46b7f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f9d1f2c5711307a84e2ef3a804eb124e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f9d1f2c5711307a84e2ef3a804eb124e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d43ea14ec1e6a520d204fef585bc2ced.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d43ea14ec1e6a520d204fef585bc2ced.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca2cab985f7089ad1d6a94d6dd32ff79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca2cab985f7089ad1d6a94d6dd32ff79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/adaf13c5db73ab4617b6fa0523281cb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/adaf13c5db73ab4617b6fa0523281cb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7adf7694a6b17807ef8d209b762019ac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7adf7694a6b17807ef8d209b762019ac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e240ae9175c7038ba5aea852ba8d79b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e240ae9175c7038ba5aea852ba8d79b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f996a3aedda46c7035c7e62f15de1b12.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f996a3aedda46c7035c7e62f15de1b12.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b8d1f9feac00c6f0400cf1398075afe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b8d1f9feac00c6f0400cf1398075afe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da97979f5eb5ebc72258275a4dc4f811.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da97979f5eb5ebc72258275a4dc4f811.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/836c4651e2517b6fec9378f5b402ee52.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/836c4651e2517b6fec9378f5b402ee52.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aabd8aebb5ba1e110e83549fc4731695.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aabd8aebb5ba1e110e83549fc4731695.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b9044c606ecc9f38abbf0221e3ebbd4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b9044c606ecc9f38abbf0221e3ebbd4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f16bc374ca38229922d2045a665e2748.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f16bc374ca38229922d2045a665e2748.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71061c570c309fa87cc40be92015ddc2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71061c570c309fa87cc40be92015ddc2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a96dbfd80979f937ea12a3af9320967f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a96dbfd80979f937ea12a3af9320967f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/108f41fb93d0b1b4a126e5a9f1e4c36b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/108f41fb93d0b1b4a126e5a9f1e4c36b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/082055188b9b80a9280d87f0da63f071.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/082055188b9b80a9280d87f0da63f071.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/16785ca3b958e7f7285e60d83cb642dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/16785ca3b958e7f7285e60d83cb642dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ddddc261de8e4000c8172e2541375167.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ddddc261de8e4000c8172e2541375167.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/59e2121b4fded2ec47e9b5465fd3e019.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/59e2121b4fded2ec47e9b5465fd3e019.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/df574a0bb679353a6dc1fb0ddc5f3eb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/df574a0bb679353a6dc1fb0ddc5f3eb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09ad34f2c245395cf95d6bfe90e178da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09ad34f2c245395cf95d6bfe90e178da.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1147046,'1147046','清新趣粉系列居家地毯 条纹间粉',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/bf827be7365ce9cbf63e5c09a3d02c03.jpg\\\", \\\"http://yanxuan.nosdn.127.net/dba153ee3fd18775ba79b34cfedbe7f4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b92912b2c65d2a62fcdd1167fb1aec03.jpg\\\", \\\"http://yanxuan.nosdn.127.net/efb43b046cc0102a65b967b835c3cdd9.jpg\\\"]','','多色拼接 舒柔静音',1,26,'http://yanxuan.nosdn.127.net/655d718df8107f8e7fd1dc6140e29039.png','',0,0,'件',619.00,599.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/b3e30fd4547bd74e73f6de777eb64bcd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3e30fd4547bd74e73f6de777eb64bcd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c224fa76981b3ee07645807d1ad0ab1c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c224fa76981b3ee07645807d1ad0ab1c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77835aad8abf7f76f0c7d3a2733aae69.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77835aad8abf7f76f0c7d3a2733aae69.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2062742ccf38bdb099123db791cda7a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2062742ccf38bdb099123db791cda7a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/952b3584258aae0d3e05ef6b62acdce5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/952b3584258aae0d3e05ef6b62acdce5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d30e5094f3a9f6649d70680cbf0b3926.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d30e5094f3a9f6649d70680cbf0b3926.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b08dc18762700d9bf8cf76fbe25f2a5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b08dc18762700d9bf8cf76fbe25f2a5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c86c5e807cde9caeb442c7f38ec0150.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c86c5e807cde9caeb442c7f38ec0150.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d698add3680c26585135789f6017aac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d698add3680c26585135789f6017aac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/308bba84a93420ab84dcf137c1ed40cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/308bba84a93420ab84dcf137c1ed40cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d99cfdded9ca4eaf4b8893a02990a66e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d99cfdded9ca4eaf4b8893a02990a66e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fc5684fa24b379ab34a348305a771d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fc5684fa24b379ab34a348305a771d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/539f5536b64206e201ac52a9812685d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/539f5536b64206e201ac52a9812685d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a9cb4fd76ff556c5d3dede50366c94e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a9cb4fd76ff556c5d3dede50366c94e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4198d8a1ac1b9f8dec283041d4fd2995.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4198d8a1ac1b9f8dec283041d4fd2995.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/426ea47932152aea6bc507f3e7e45419.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/426ea47932152aea6bc507f3e7e45419.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39a503db110fd6af417f2a4f8c69e0dd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39a503db110fd6af417f2a4f8c69e0dd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/33c5cbd2a8b3f6e822411bd1c3ad7a8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/33c5cbd2a8b3f6e822411bd1c3ad7a8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08dc7ac6cf5bd20b14306161ad801f89.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08dc7ac6cf5bd20b14306161ad801f89.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dd0c4ae24186570c49ecb6ea6bc4d223.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dd0c4ae24186570c49ecb6ea6bc4d223.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46eaed18b282b3177df608f9e410cfac.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46eaed18b282b3177df608f9e410cfac.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2e4a411c483653141471eec5c9c9f6fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2e4a411c483653141471eec5c9c9f6fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e013bfa3e6a997fcce4e526efa5d68fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e013bfa3e6a997fcce4e526efa5d68fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50bc2637bd5ea29d1d787df548e494c3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50bc2637bd5ea29d1d787df548e494c3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef7aebd62895db555aec269d55cbe14a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef7aebd62895db555aec269d55cbe14a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb53d78a085c29a0c12ec4c608db20a2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb53d78a085c29a0c12ec4c608db20a2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b887ad166e42363fe84e7a7a74971b88.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b887ad166e42363fe84e7a7a74971b88.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e57ab2325bfacc46a536d2e9f774814b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e57ab2325bfacc46a536d2e9f774814b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2bf04434da86c3ef8f46e034164836a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2bf04434da86c3ef8f46e034164836a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfa1f11efc7d868ae038fadc5f55096b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfa1f11efc7d868ae038fadc5f55096b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dd4b31cc78d7f9047948b224221b643.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dd4b31cc78d7f9047948b224221b643.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39a3bc4e36427106682402c687addb1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39a3bc4e36427106682402c687addb1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ae019d3a06a02983f26de10b3b415830.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ae019d3a06a02983f26de10b3b415830.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f8fef320814c866e80295655a8bcbd81.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f8fef320814c866e80295655a8bcbd81.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/980c7827076572b35c5c4c7bb2e65108.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/980c7827076572b35c5c4c7bb2e65108.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/65f907cc355fe1701f3e2822bf631d55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/65f907cc355fe1701f3e2822bf631d55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d27625f9111c8fd1bf19bc428b87a6d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d27625f9111c8fd1bf19bc428b87a6d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/714ea85d22a65a2a7698a20ac9cb3320.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/714ea85d22a65a2a7698a20ac9cb3320.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8ee12c729cf07679d4135ac314c1b37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8ee12c729cf07679d4135ac314c1b37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0bcb12fdd8d835705ee9ac88b764b441.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0bcb12fdd8d835705ee9ac88b764b441.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79124540860c5a26842803b62b46fc8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79124540860c5a26842803b62b46fc8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca54c7438b6cfe4c139f9a07e9c0b055.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca54c7438b6cfe4c139f9a07e9c0b055.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a4eede58b9d7b516b708bd1bfb18e9df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a4eede58b9d7b516b708bd1bfb18e9df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/25db36db73d7b38380b3c829a12770d3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/25db36db73d7b38380b3c829a12770d3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c86f1f43a2cc6f25c0d162601fa143b9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c86f1f43a2cc6f25c0d162601fa143b9.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1147047,'1147047','简约知性系列居家地毯 蓝粉拼接',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/014530f37555bba33eec154a36b78a02.jpg\\\", \\\"http://yanxuan.nosdn.127.net/7e1e516c116a663e587fc5dd3cd2f47b.jpg\\\", \\\"http://yanxuan.nosdn.127.net/db03baeb92ec4be50203dc690b793830.jpg\\\", \\\"http://yanxuan.nosdn.127.net/a9239c7e79510a1218f94da58a278a8d.jpg\\\"]','','三角几何拼接 超细绒感',1,29,'http://yanxuan.nosdn.127.net/bda805b0a2464b6ec33c18981565e50e.png','',0,0,'件',579.00,559.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/e56e30a2c6cbdeadb1a2b6d00f2e877f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e56e30a2c6cbdeadb1a2b6d00f2e877f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d14496c74886e92b3a3f30692756e77a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d14496c74886e92b3a3f30692756e77a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0a371e340849de0ca0c628021cbc0014.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0a371e340849de0ca0c628021cbc0014.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a5a80c783e941991414cd8ede724312.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a5a80c783e941991414cd8ede724312.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37a49c90311b2661a24887ff2de448c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37a49c90311b2661a24887ff2de448c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e25787020a28bbb6e9f2a220aa2dd442.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e25787020a28bbb6e9f2a220aa2dd442.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/52b8beb545c2ae0115522908ac352a39.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/52b8beb545c2ae0115522908ac352a39.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/afaa8978308f2531ada6aaaf63c56347.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/afaa8978308f2531ada6aaaf63c56347.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18789d3aacac9d2de6a6b21cfb7aec53.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18789d3aacac9d2de6a6b21cfb7aec53.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/154e9f3504ada7cdadcb906ee01450c7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/154e9f3504ada7cdadcb906ee01450c7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3326e16fbfee855392404e970bd5aa4c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3326e16fbfee855392404e970bd5aa4c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b5b0d22fc526776cef8e756dff60dd1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b5b0d22fc526776cef8e756dff60dd1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/48dd357aa1abc60c01b3fbf8dacb2694.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/48dd357aa1abc60c01b3fbf8dacb2694.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27e574eab03093d302f01e5ceb42d0af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27e574eab03093d302f01e5ceb42d0af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30228bd984383c97633eef50ca556406.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30228bd984383c97633eef50ca556406.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/baa3cc805dc0afb4257c30466771535a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/baa3cc805dc0afb4257c30466771535a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/daa37937c3440919e597e4954e68f646.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/daa37937c3440919e597e4954e68f646.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/82df87910187f081e2a4d5f5a06df4cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/82df87910187f081e2a4d5f5a06df4cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eaa197c3d63c8479e38f46595df50a5e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eaa197c3d63c8479e38f46595df50a5e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56cf9f1b8de8627ad0d064843d97cd96.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56cf9f1b8de8627ad0d064843d97cd96.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99ad88418c88c550b183dc12a9280a1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99ad88418c88c550b183dc12a9280a1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a84aafb6ddbe25f32bddc4f843ad35d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a84aafb6ddbe25f32bddc4f843ad35d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9ce402bfb9d08603259264e9115166b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9ce402bfb9d08603259264e9115166b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1a7248d14d630770dfff1b17350219ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1a7248d14d630770dfff1b17350219ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/43113bc52b7eece12f777092d9b04c3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/43113bc52b7eece12f777092d9b04c3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fbe65886e9405ceb1a43fb3097fd709a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fbe65886e9405ceb1a43fb3097fd709a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e098163e428171418a77c077a8330299.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e098163e428171418a77c077a8330299.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cbb9a88692c9621652244844bf0b299d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cbb9a88692c9621652244844bf0b299d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d8264c945ccb68d432dcaeb86e3e4ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d8264c945ccb68d432dcaeb86e3e4ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e0a467456d69bc746e6bd7797f6963b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e0a467456d69bc746e6bd7797f6963b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a58d0c630b0e2f51fa49aef8687a9e16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a58d0c630b0e2f51fa49aef8687a9e16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1de7c562962e54da6a63e749634eb008.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1de7c562962e54da6a63e749634eb008.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8931ee6e2b4b3ed3454184093b6471ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8931ee6e2b4b3ed3454184093b6471ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b032ca9815193ec258be3ffa0a25da3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b032ca9815193ec258be3ffa0a25da3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bfd12f882162e93008c97bff3187f694.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bfd12f882162e93008c97bff3187f694.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79d69e15728310ec458ec665a287fc87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79d69e15728310ec458ec665a287fc87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e10b0c8d89689483eceea36aa330deb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e10b0c8d89689483eceea36aa330deb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88c5b10b0916839ae7cf6ca1b8c8d83f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88c5b10b0916839ae7cf6ca1b8c8d83f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/17b3ace86142f2b8c7f29ed10d1dba55.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/17b3ace86142f2b8c7f29ed10d1dba55.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83f9993c4dda4898693ba3fe9f313c1f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83f9993c4dda4898693ba3fe9f313c1f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9310f4e403eb5db6107bfc280c3e6cf8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9310f4e403eb5db6107bfc280c3e6cf8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ba895b4d7507984a26344d7c03db550.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ba895b4d7507984a26344d7c03db550.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34f3faaad28a93f140f3f1b78def4bce.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34f3faaad28a93f140f3f1b78def4bce.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/355dc9d6e4a8a1a8561183641ef2890a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/355dc9d6e4a8a1a8561183641ef2890a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2b6a2155e30bf99750756ec4fb99f11.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2b6a2155e30bf99750756ec4fb99f11.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1147048,'1147048','简约知性系列居家地毯 蓝灰格',1008002,0,'[\\\"http://yanxuan.nosdn.127.net/cb0fc84a590f63e61b0eb3ee0833fcff.jpg\\\", \\\"http://yanxuan.nosdn.127.net/cab7242933b1d129f4f66b05e1652641.jpg\\\", \\\"http://yanxuan.nosdn.127.net/e65c7df582c401681bdaa31925cf86e4.jpg\\\", \\\"http://yanxuan.nosdn.127.net/586bdb8102b0fa378e554055a5aa58aa.jpg\\\"]','','沉稳双拼色 居家温柔伴护',1,30,'http://yanxuan.nosdn.127.net/fd7920a2eadd10fa10c0c03959a2abe0.png','',0,0,'件',579.00,559.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/037e5909a5bec975c67bf61d193d7b72.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/037e5909a5bec975c67bf61d193d7b72.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/88486bfa3d7bd68c7780df5cc01e7a7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/88486bfa3d7bd68c7780df5cc01e7a7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77c2d1819d99dde7cad8c140048a46aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77c2d1819d99dde7cad8c140048a46aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f49aed0ebcd5c54f3edb8240921e3a46.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f49aed0ebcd5c54f3edb8240921e3a46.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60b923642f98ca62ca3d9a6fe0db8800.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60b923642f98ca62ca3d9a6fe0db8800.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/782d6edfc30d1a53711d5f0f6145f8fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/782d6edfc30d1a53711d5f0f6145f8fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3b10a5a5f29340056cb6b1673420f46c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3b10a5a5f29340056cb6b1673420f46c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e2e721a8f26030ba31f0b290c47ba232.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e2e721a8f26030ba31f0b290c47ba232.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77d18b39a7d8b603b869ca4cb8d7235b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77d18b39a7d8b603b869ca4cb8d7235b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c266d8f75bc074531033430882a93d8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c266d8f75bc074531033430882a93d8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ceb7a59b3c56f7ced051cae61d70daf6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ceb7a59b3c56f7ced051cae61d70daf6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0db841700c868c08d627f01c354b013c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0db841700c868c08d627f01c354b013c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/008ea04b11a0f68116e5eb180ca8a6a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/008ea04b11a0f68116e5eb180ca8a6a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/dfa3513280704216372dade1751b2bc6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/dfa3513280704216372dade1751b2bc6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1287987157d7a1767ccaec835bb82b17.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1287987157d7a1767ccaec835bb82b17.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/041f4c058fd201716c456d32588e0611.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/041f4c058fd201716c456d32588e0611.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22832d570b7eaf8153d5038d9095b990.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22832d570b7eaf8153d5038d9095b990.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5651dedb8b4d5c1d40345f13a4ad622.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5651dedb8b4d5c1d40345f13a4ad622.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0b988f3146c079e488eeb05ba03cae37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0b988f3146c079e488eeb05ba03cae37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d53d4374b9a800da1eb215b6215b403.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d53d4374b9a800da1eb215b6215b403.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1abd7dd665582e0eb1c8e4bd6196b6cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1abd7dd665582e0eb1c8e4bd6196b6cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39561bb5901a7a80bf362bf4b7b96d30.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39561bb5901a7a80bf362bf4b7b96d30.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/99eff53c1440f72152c2b264c22244a7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/99eff53c1440f72152c2b264c22244a7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8e54bd5c82506db1eed358edcdbd6ef8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8e54bd5c82506db1eed358edcdbd6ef8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83ca52b41e1907932bc55330fd5a5cad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83ca52b41e1907932bc55330fd5a5cad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6f58dc91de46bbf93fbf054de64958aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6f58dc91de46bbf93fbf054de64958aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/08d20c7dc0ae462a176ac52a58e7b297.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/08d20c7dc0ae462a176ac52a58e7b297.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca1db2649c0a5c67ed319cb212332380.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca1db2649c0a5c67ed319cb212332380.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2feac4d0a9ef0053863b81e37f7fe9fe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2feac4d0a9ef0053863b81e37f7fe9fe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b9d2fa42d4fec3abd1c151a8dbdab0ef.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b9d2fa42d4fec3abd1c151a8dbdab0ef.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e78a8555da079fb963f78fc9149f93cd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e78a8555da079fb963f78fc9149f93cd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b5384e883e1e96640d1adfca1c2e511f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b5384e883e1e96640d1adfca1c2e511f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9c8ec5307f7f0c5a3dcea9916bbbf091.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9c8ec5307f7f0c5a3dcea9916bbbf091.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c59d89c8b46e0e740fd6d8f40071422.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c59d89c8b46e0e740fd6d8f40071422.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f5640cac8b41175cf3fb620f25ed7ec.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f5640cac8b41175cf3fb620f25ed7ec.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20ab37f417610381659ad47de48aa42f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20ab37f417610381659ad47de48aa42f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f676f5243a835cb63d76e20423666337.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f676f5243a835cb63d76e20423666337.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8b9e1a348d1766c803f9b31221f94553.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8b9e1a348d1766c803f9b31221f94553.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a49199ab0ee762df58a2dce4bd26b1e3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a49199ab0ee762df58a2dce4bd26b1e3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4635e2b0daeca9d6dbaf66dc6a74b2f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4635e2b0daeca9d6dbaf66dc6a74b2f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2d05ee8ffcca5df74090153c8892cb4d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2d05ee8ffcca5df74090153c8892cb4d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/60c532e803c2d4a75c3da1200797d29c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/60c532e803c2d4a75c3da1200797d29c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/75b9feace19e5c3c2e5a9e8dca01a0f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/75b9feace19e5c3c2e5a9e8dca01a0f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7f5ef8ad3f27f9f6dd1826afe0494c29.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7f5ef8ad3f27f9f6dd1826afe0494c29.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/50aab2e77e905e1f0c1a71ec25739207.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/50aab2e77e905e1f0c1a71ec25739207.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1151012,'1151012','简约知性全棉四件套 素雅灰',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/a0d154954426b63e3b52f772e94d67d3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f5d8ad0faa0259483f9449de25c75060.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d22ce947923b8a0411c20f603bca30cb.jpg\\\", \\\"http://yanxuan.nosdn.127.net/f7fa2262219eab101a9ae4be2f8f9376.jpg\\\"]','','素净优雅灰 彰显平和知性',1,10,'http://yanxuan.nosdn.127.net/cb65635dbcef42b68ba21433f4948f5a.png','',0,0,'件',379.00,359.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/22b812da7dca97361b40aa96e81cc888.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22b812da7dca97361b40aa96e81cc888.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e36aff5bf628fd263767a204463ff886.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e36aff5bf628fd263767a204463ff886.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca854ced3282b74d91557b27aeb1fd6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca854ced3282b74d91557b27aeb1fd6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6c7a0be81b70367577f1e73ae65c5ab0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6c7a0be81b70367577f1e73ae65c5ab0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/841c04848a1539e4410dd8b85716f164.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/841c04848a1539e4410dd8b85716f164.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a5fda1d7f117edb5f79e2730df10e834.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a5fda1d7f117edb5f79e2730df10e834.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a79348c76f19c3d40eda77fa18c02e1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a79348c76f19c3d40eda77fa18c02e1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98325c35ebb3ac8d3f70c6029c11298c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98325c35ebb3ac8d3f70c6029c11298c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2ce12ff241eaef9cabda8a52399a293.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2ce12ff241eaef9cabda8a52399a293.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4d650259ce6110cb11b0ec0d94ba6e1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4d650259ce6110cb11b0ec0d94ba6e1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f3fd996afeb88689c99af8d77ce83ec1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f3fd996afeb88689c99af8d77ce83ec1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/823196c2a231fcc5cf935b25dfe2a79f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/823196c2a231fcc5cf935b25dfe2a79f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b38389192126c4c984e1ab6f684774ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b38389192126c4c984e1ab6f684774ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5deb581119cf457296927bab32257057.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5deb581119cf457296927bab32257057.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5957305e9660f58bb72484b7e6070aab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5957305e9660f58bb72484b7e6070aab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9d12bd0bd727852d5ca880f7125ade26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9d12bd0bd727852d5ca880f7125ade26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b79d56a55903858f6a356fbaee3a2dd7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b79d56a55903858f6a356fbaee3a2dd7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0cd64b23754a7d992166e73b30837ad1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0cd64b23754a7d992166e73b30837ad1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20d65ca8f1edf8fc0298991aa59913cf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20d65ca8f1edf8fc0298991aa59913cf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/35524cf9b68887afd1cf30b4938ca0c5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/35524cf9b68887afd1cf30b4938ca0c5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e8885bbe79ffe39e4368f41149cf986.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e8885bbe79ffe39e4368f41149cf986.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0d17a1679797ecd8dabfe5282a0206c2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0d17a1679797ecd8dabfe5282a0206c2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a48049c6029bf32f88923a25b21460ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a48049c6029bf32f88923a25b21460ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3888e5201d789cd286a7dd328fd29371.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3888e5201d789cd286a7dd328fd29371.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f2137422baf040a7084d77b18c2fe1c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f2137422baf040a7084d77b18c2fe1c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b5b91b4da409b1431b0eef63eb3038e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b5b91b4da409b1431b0eef63eb3038e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/39f8df7f3b93b6c9b63f7f418cdcd78f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/39f8df7f3b93b6c9b63f7f418cdcd78f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b96828bdccde8d8b56f5d1574f6f4b1a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b96828bdccde8d8b56f5d1574f6f4b1a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e313d74ec293f40fe97b12dc189a03d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e313d74ec293f40fe97b12dc189a03d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4f1e5877dac306a9f1dab7ab30ebf5fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4f1e5877dac306a9f1dab7ab30ebf5fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/00dc42047dc2374574c26efeeb17110a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/00dc42047dc2374574c26efeeb17110a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9412d261ee5576f74d2be2b5acbc9e37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9412d261ee5576f74d2be2b5acbc9e37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1115ae6d8b672861dcc61007aa65f57.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1115ae6d8b672861dcc61007aa65f57.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c38bc6b03fc8c0dee0c77c7dccce717e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c38bc6b03fc8c0dee0c77c7dccce717e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d47729e2be12050e5543d25a211c3363.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d47729e2be12050e5543d25a211c3363.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4540c62850a2e3c31b5ece17465cc579.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4540c62850a2e3c31b5ece17465cc579.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffea480abb4375dc2948b22f0211a4d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffea480abb4375dc2948b22f0211a4d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/20fdaa641b27197044e1e803e0b9ee06.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/20fdaa641b27197044e1e803e0b9ee06.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1662355a190f5b850357250b506f88a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1662355a190f5b850357250b506f88a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6d1501046b469427df1b9f29aca69934.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6d1501046b469427df1b9f29aca69934.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2904850c1eb778078909a971498ec669.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2904850c1eb778078909a971498ec669.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37eb43cb6429ec8c0677f64108dda627.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37eb43cb6429ec8c0677f64108dda627.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7103fcee303c117423a8b1e3fe56c7d9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7103fcee303c117423a8b1e3fe56c7d9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d4c06ec49c9483be17adf3e61c22b97a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d4c06ec49c9483be17adf3e61c22b97a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9b77eaeee7b84d199b2a0fa4b5935085.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9b77eaeee7b84d199b2a0fa4b5935085.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b30fa4346ed575a84bf51d108a9aebb5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b30fa4346ed575a84bf51d108a9aebb5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/822226fa01bdd7831aa9609803318655.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/822226fa01bdd7831aa9609803318655.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5a3009a8210515f4fd9ee6bfbafd1b14.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5a3009a8210515f4fd9ee6bfbafd1b14.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d99646284321dc0417652de95e6a1504.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d99646284321dc0417652de95e6a1504.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c01f65f02fcaf36ac3103663e260c7b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c01f65f02fcaf36ac3103663e260c7b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9727a9eaf5f9a174a8c6d8406912a121.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9727a9eaf5f9a174a8c6d8406912a121.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8222afa1b88bfa0b5d414ce4cb0bd82c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8222afa1b88bfa0b5d414ce4cb0bd82c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f52b8bdb0de1489f5f51c9ee10d18b85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f52b8bdb0de1489f5f51c9ee10d18b85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3a74ade912297cfd24d259d9dc920e50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3a74ade912297cfd24d259d9dc920e50.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1151013,'1151013','简约知性全棉四件套 胭脂粉',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/36995f44ed0f31a66d689f60b2cf6b9c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/00f009599828ba02994cf1db7ce1bf06.jpg\\\", \\\"http://yanxuan.nosdn.127.net/381ba1d947afd3ca6180c503114ebb47.jpg\\\", \\\"http://yanxuan.nosdn.127.net/40a15ca9468f56e3a3743b1afb17a8b6.jpg\\\"]','','清新灵动粉 谱写浪漫意趣',1,9,'http://yanxuan.nosdn.127.net/73a8692048f58f15e823b636d7c3bb74.png','',0,0,'件',379.00,359.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/d6544642d064b59d0a16093064306075.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d6544642d064b59d0a16093064306075.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/10b209c033243d0122a0d08654516fe1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/10b209c033243d0122a0d08654516fe1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ecdba59b976d4026358d020d313a7356.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ecdba59b976d4026358d020d313a7356.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1c02e90582caaccd9be1a5c88f7dc2ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1c02e90582caaccd9be1a5c88f7dc2ed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b260372c315957b52d49ddd72a079eea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b260372c315957b52d49ddd72a079eea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7460e729f98978f5fd958ce043358a98.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7460e729f98978f5fd958ce043358a98.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b83c3a2cf875b261801bd8a3c5808d8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b83c3a2cf875b261801bd8a3c5808d8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a21baed71cff280b2f4c9ebb71568488.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a21baed71cff280b2f4c9ebb71568488.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffe7204613d5538e8ce828432ec09913.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffe7204613d5538e8ce828432ec09913.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d98f40594db8ce1878ab29481f74bffe.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d98f40594db8ce1878ab29481f74bffe.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eaf57e27e9d16233cb58160449a6bd50.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eaf57e27e9d16233cb58160449a6bd50.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac2cb0c00a823d630e557cf1ef5d02a6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac2cb0c00a823d630e557cf1ef5d02a6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f90aa292b1a60e94760b72b793014194.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f90aa292b1a60e94760b72b793014194.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca69118402a541371f3c4a23017e04df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca69118402a541371f3c4a23017e04df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/826b111040d1e63249a6d229ace4f9c1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/826b111040d1e63249a6d229ace4f9c1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7a8f883f698b4c906ff613007c6a17a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7a8f883f698b4c906ff613007c6a17a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3ec9478b87667e61ed70b4043bb43aee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ec9478b87667e61ed70b4043bb43aee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27cb5f494e1d19750dbd28c13e5f7b65.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27cb5f494e1d19750dbd28c13e5f7b65.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61866f57b583beca8f083210f469291c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61866f57b583beca8f083210f469291c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8c994af6144abebfa535ad11628545bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8c994af6144abebfa535ad11628545bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0be78c4a1f1c76ea3210cd3812866cd9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0be78c4a1f1c76ea3210cd3812866cd9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/496ede67a61486227a0c4631cbe5112e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/496ede67a61486227a0c4631cbe5112e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd9d7e9ded941eb0ed41ab258fb4ef02.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd9d7e9ded941eb0ed41ab258fb4ef02.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3af2b547d590850a7725cb89312e11bd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3af2b547d590850a7725cb89312e11bd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a0d33a9ef3151b6548461db4e095d79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a0d33a9ef3151b6548461db4e095d79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1e9ab7ed3f52e74791086d0f2c88c1aa.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1e9ab7ed3f52e74791086d0f2c88c1aa.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/72245ad84f53f6f138c80005d1f7ac86.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/72245ad84f53f6f138c80005d1f7ac86.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/693f9cc8bbf412d33ef4f87687fe09b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/693f9cc8bbf412d33ef4f87687fe09b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/efc34f26f385192d59eb023399890ffd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/efc34f26f385192d59eb023399890ffd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed62f6274a033d6153efc88991214484.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed62f6274a033d6153efc88991214484.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/34d59d584a4a8c6fcd156f07c1f2e4ba.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/34d59d584a4a8c6fcd156f07c1f2e4ba.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cf9df6cc1744a3ddf23dce32a8fe758c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf9df6cc1744a3ddf23dce32a8fe758c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/411038ebae02b7e899713bb600bffb92.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/411038ebae02b7e899713bb600bffb92.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bcb52ad859856f0c80b9bdec4aa29f2d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bcb52ad859856f0c80b9bdec4aa29f2d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ade70fae1a6894c7f8897478e41da3a0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ade70fae1a6894c7f8897478e41da3a0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e4d8c628742f041d6aacb736d6e122fb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e4d8c628742f041d6aacb736d6e122fb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/890532252573ffb8ab6ee7005c88812b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/890532252573ffb8ab6ee7005c88812b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/107806b823f0126ffe486ed2332849d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/107806b823f0126ffe486ed2332849d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/884f0400541572d836200188634cc12c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/884f0400541572d836200188634cc12c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/117ee3ba12f133b0d14412a60571c4d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/117ee3ba12f133b0d14412a60571c4d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0780db4cb5ba5d4ce464289c9c51e551.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0780db4cb5ba5d4ce464289c9c51e551.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f0b4d36bbfbb00ad37a2d5760a0a275.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f0b4d36bbfbb00ad37a2d5760a0a275.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd8adc0d356a780e3948625dd93b3404.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd8adc0d356a780e3948625dd93b3404.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c6c92bc3c08f692a86a1028777cd70f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c6c92bc3c08f692a86a1028777cd70f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a1ed97000ddaa2c94e22e4770a67c2c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a1ed97000ddaa2c94e22e4770a67c2c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89f27d26c9c3b6473cf4da736a2b48ad.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89f27d26c9c3b6473cf4da736a2b48ad.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c3cf686c6b1e4c7aa75f91b71659feb4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c3cf686c6b1e4c7aa75f91b71659feb4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bea4230158f1eb3cbf59a9c6df2e451b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bea4230158f1eb3cbf59a9c6df2e451b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d9218090d23fc8c74713de9ecb17b76b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d9218090d23fc8c74713de9ecb17b76b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c93d59df72c0fb9a38f8fd9a7a159e1b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c93d59df72c0fb9a38f8fd9a7a159e1b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d24584d02691832f0c9160e55ad6bd3d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d24584d02691832f0c9160e55ad6bd3d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7d73a590cf19bcadf073cf89cd9f21fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7d73a590cf19bcadf073cf89cd9f21fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6e06cc07d846fbd6a314e6845a8a722c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6e06cc07d846fbd6a314e6845a8a722c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b88852a8de665870e4fd59aad0b2280c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b88852a8de665870e4fd59aad0b2280c.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152004,'1152004','魔兽世界 蛋盾包 双肩包',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/4aee427a3837db29aa116900a46b1a6a.png\\\", \\\"http://yanxuan.nosdn.127.net/4aee427a3837db29aa116900a46b1a6a.png\\\", \\\"http://yanxuan.nosdn.127.net/4aee427a3837db29aa116900a46b1a6a.png\\\", \\\"http://yanxuan.nosdn.127.net/4aee427a3837db29aa116900a46b1a6a.png\\\", \\\"http://yanxuan.nosdn.127.net/4aee427a3837db29aa116900a46b1a6a.png\\\"]','','伊利丹掉落，挤地铁神器',1,3,'http://yanxuan.nosdn.127.net/8c93cef435d888bd79833777df1cd0c2.png','',0,0,'件',419.00,399.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152008,'1152008','魔兽世界 部落 护腕 一只',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\\\", \\\"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\\\", \\\"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\\\", \\\"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\\\", \\\"http://yanxuan.nosdn.127.net/46bcddbc57e70bf5f36bdff9c9195c65.png\\\"]','','吸汗、舒适、弹性、防护、耐用',1,7,'http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png','',0,1,'件',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152009,'1152009','魔兽世界 联盟 护腕 一只',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/6df415dbe9b30aa8ae45301a96c18a59.png\\\", \\\"http://yanxuan.nosdn.127.net/6df415dbe9b30aa8ae45301a96c18a59.png\\\", \\\"http://yanxuan.nosdn.127.net/6df415dbe9b30aa8ae45301a96c18a59.png\\\", \\\"http://yanxuan.nosdn.127.net/6df415dbe9b30aa8ae45301a96c18a59.png\\\", \\\"http://yanxuan.nosdn.127.net/6df415dbe9b30aa8ae45301a96c18a59.png\\\"]','','吸汗、舒适、弹性、防护、耐用',1,8,'http://yanxuan.nosdn.127.net/ae6d41117717387b82dcaf1dfce0cd97.png','',0,1,'件',49.00,29.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152031,'1152031','魔兽世界-伊利丹颈枕眼罩套装',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/06c4dae19c2a229ca1819a7b8e8efddd.png\\\", \\\"http://yanxuan.nosdn.127.net/06c4dae19c2a229ca1819a7b8e8efddd.png\\\", \\\"http://yanxuan.nosdn.127.net/06c4dae19c2a229ca1819a7b8e8efddd.png\\\", \\\"http://yanxuan.nosdn.127.net/06c4dae19c2a229ca1819a7b8e8efddd.png\\\", \\\"http://yanxuan.nosdn.127.net/06c4dae19c2a229ca1819a7b8e8efddd.png\\\"]','','差旅好伴侣',1,4,'http://yanxuan.nosdn.127.net/fd6e78a397bd9e9804116a36f0270b0a.png','',0,1,'件',119.00,99.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152095,'1152095','魔兽世界 联盟·暴风城 堡垒收纳盒',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/cc04443ee4303040e9ad6360d38f972b.png\\\", \\\"http://yanxuan.nosdn.127.net/cc04443ee4303040e9ad6360d38f972b.png\\\", \\\"http://yanxuan.nosdn.127.net/cc04443ee4303040e9ad6360d38f972b.png\\\", \\\"http://yanxuan.nosdn.127.net/cc04443ee4303040e9ad6360d38f972b.png\\\", \\\"http://yanxuan.nosdn.127.net/cc04443ee4303040e9ad6360d38f972b.png\\\"]','','桌面整理神器',1,6,'http://yanxuan.nosdn.127.net/c86b49f635fa141decebabbd0966a6ef.png','',0,0,'件',519.00,499.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152097,'1152097','魔兽世界 雷霆之怒逐风者的祝福之剑 雨伞',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/76d2630a86b17770a1908235212ad505.png\\\", \\\"http://yanxuan.nosdn.127.net/76d2630a86b17770a1908235212ad505.png\\\", \\\"http://yanxuan.nosdn.127.net/76d2630a86b17770a1908235212ad505.png\\\", \\\"http://yanxuan.nosdn.127.net/76d2630a86b17770a1908235212ad505.png\\\", \\\"http://yanxuan.nosdn.127.net/76d2630a86b17770a1908235212ad505.png\\\"]','','炫酷装备，可以背的雨伞',1,1,'http://yanxuan.nosdn.127.net/532836444ae5eaec40b5810ca4f9b1e6.png','',0,0,'件',419.00,399.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152100,'1152100','魔兽世界 部落·奥格瑞玛 堡垒收纳盒',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/e7c1af4e8e5d5940b991dc9bb70e9ec5.png\\\", \\\"http://yanxuan.nosdn.127.net/e7c1af4e8e5d5940b991dc9bb70e9ec5.png\\\", \\\"http://yanxuan.nosdn.127.net/e7c1af4e8e5d5940b991dc9bb70e9ec5.png\\\", \\\"http://yanxuan.nosdn.127.net/e7c1af4e8e5d5940b991dc9bb70e9ec5.png\\\", \\\"http://yanxuan.nosdn.127.net/e7c1af4e8e5d5940b991dc9bb70e9ec5.png\\\"]','','桌面整理神器',1,5,'http://yanxuan.nosdn.127.net/a667c4fbbd9c499c0733539d7e986617.png','',0,0,'件',519.00,499.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152101,'1152101','魔兽世界 部落 奥格瑞玛 拉杆箱 可登机',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/864c62b7ba8a128a79dc9d69fe425528.png\\\", \\\"http://yanxuan.nosdn.127.net/864c62b7ba8a128a79dc9d69fe425528.png\\\", \\\"http://yanxuan.nosdn.127.net/864c62b7ba8a128a79dc9d69fe425528.png\\\", \\\"http://yanxuan.nosdn.127.net/864c62b7ba8a128a79dc9d69fe425528.png\\\", \\\"http://yanxuan.nosdn.127.net/864c62b7ba8a128a79dc9d69fe425528.png\\\"]','','18寸，可携带登机',1,9,'http://yanxuan.nosdn.127.net/c1c62211a17b71a634fa0c705d11fb42.png','',0,1,'件',908.00,888.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1152161,'1152161','竹语丝麻印花四件套',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/38a0b23950b79611fb565bae14351a11.jpg\\\", \\\"http://yanxuan.nosdn.127.net/810555afa6919c766a33422edefb1bc8.jpg\\\", \\\"http://yanxuan.nosdn.127.net/b97b54e854660fedabc4dd07d3215216.jpg\\\", \\\"http://yanxuan.nosdn.127.net/79200063ab5893cf3fdd16f428e4d505.jpg\\\"]','','3重透气，清爽柔滑',1,6,'http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png','',1,0,'件',479.00,459.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/cf116e8989e4b81e0d50c5f319bc106f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cf116e8989e4b81e0d50c5f319bc106f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/93fbbfff577742915b3d0d7642656bf7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/93fbbfff577742915b3d0d7642656bf7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c40d9809465f1c1941021f564052d60f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c40d9809465f1c1941021f564052d60f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/933ae73c978ed874b2e5cd7ce909f962.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/933ae73c978ed874b2e5cd7ce909f962.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb256d888a121c2b71804c7da607b97b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb256d888a121c2b71804c7da607b97b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4be4e62c7b44f25c1a618447aa5dbacf.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4be4e62c7b44f25c1a618447aa5dbacf.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6fa8de210f4f309a407e61915cf6a37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6fa8de210f4f309a407e61915cf6a37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe8b40624ae2c42c07a5ee9c2d75c8d1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe8b40624ae2c42c07a5ee9c2d75c8d1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/46864e53b8d9fc4dee333e237d4a1574.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/46864e53b8d9fc4dee333e237d4a1574.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22b672c95a602f962ac3bf80bfe78c15.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22b672c95a602f962ac3bf80bfe78c15.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8dff21e77d809012d2542e144027dce1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8dff21e77d809012d2542e144027dce1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c52320c2b0c0a345eebce48a306feb77.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c52320c2b0c0a345eebce48a306feb77.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3804f056b176a9d6155b59d031ca6132.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3804f056b176a9d6155b59d031ca6132.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c25dc6d4a97dd48eb79099ccb1cc9e0e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c25dc6d4a97dd48eb79099ccb1cc9e0e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca65e2860c3cf07fa8eab69da1b52660.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca65e2860c3cf07fa8eab69da1b52660.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/63bf368c5085f50fc615d9c4a59862ab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/63bf368c5085f50fc615d9c4a59862ab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4204c63b17ec1fac9bcb91e10ccd1ad0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4204c63b17ec1fac9bcb91e10ccd1ad0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7ab56f66b90797f611eda19493579770.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7ab56f66b90797f611eda19493579770.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8af577bad4fc49a0c19746018daa3471.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8af577bad4fc49a0c19746018daa3471.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0ba321a17808e3bda5e80737d06d2ac0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0ba321a17808e3bda5e80737d06d2ac0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/40370cc37a778e51496be60aca486414.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/40370cc37a778e51496be60aca486414.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dab164aa1ca90730899481e0c753195.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dab164aa1ca90730899481e0c753195.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/329548b43585798b6f1bd9b7cd93a0c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/329548b43585798b6f1bd9b7cd93a0c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/017f407ea546506b58221c477a2a8682.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/017f407ea546506b58221c477a2a8682.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/80ce79453e0eb915b3dfe9b7d638b410.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/80ce79453e0eb915b3dfe9b7d638b410.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7cec1d667293cb179e67cd965d208df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7cec1d667293cb179e67cd965d208df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb29ca1498bd8ff9e36bcb99593f2485.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb29ca1498bd8ff9e36bcb99593f2485.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca0d32927d292e14e2992c63627e1181.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca0d32927d292e14e2992c63627e1181.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d56d749cbf18eb121f3a4040a3ef334f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d56d749cbf18eb121f3a4040a3ef334f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/61f7e94e631a446f6a683d9256304fd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/61f7e94e631a446f6a683d9256304fd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1f0cae229da25b32a5ddf9a6472379c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1f0cae229da25b32a5ddf9a6472379c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7a8c42109a307ee65b6de0f66d9e4e3f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7a8c42109a307ee65b6de0f66d9e4e3f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3427a0dbb683d88e86b4b1864c767b84.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3427a0dbb683d88e86b4b1864c767b84.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4bd66cfacfda8467e491bcbb44e22906.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4bd66cfacfda8467e491bcbb44e22906.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/979f9dcf65ce2b91f7b801f39db9b534.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/979f9dcf65ce2b91f7b801f39db9b534.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8043490f0853723691db7ba64cff86c6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8043490f0853723691db7ba64cff86c6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/30ef0f46fcc6a175836332e76f758cc5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/30ef0f46fcc6a175836332e76f758cc5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ffd0c62f0c485cc78de05a6b22a7156e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ffd0c62f0c485cc78de05a6b22a7156e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a422ce5a7a147175adbda6d2549cef6b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a422ce5a7a147175adbda6d2549cef6b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/882556a9ac3b06b518b61c166a8d7f1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/882556a9ac3b06b518b61c166a8d7f1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06aab3c72d4372656a9f1b2e513cb7fd.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06aab3c72d4372656a9f1b2e513cb7fd.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/685e4a2fa3481ea948bef5681e52215a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/685e4a2fa3481ea948bef5681e52215a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e3674d2936668967d8b1f97288e66de9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e3674d2936668967d8b1f97288e66de9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb1f199f0270941fe64e82340042ead1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb1f199f0270941fe64e82340042ead1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f82cde4430eb4d1bdfb07db04af0e734.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f82cde4430eb4d1bdfb07db04af0e734.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f39325963c794851d1f12d6383ecdeab.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f39325963c794851d1f12d6383ecdeab.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7baee43f0c04e3429f9dc30699624c9a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7baee43f0c04e3429f9dc30699624c9a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2543913123e578347f09cd3f389c05f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2543913123e578347f09cd3f389c05f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1c4bccb5cd4ce28be27f3dcdf0055f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1c4bccb5cd4ce28be27f3dcdf0055f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/757da5724cac81a0ec5cafe3271930fc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/757da5724cac81a0ec5cafe3271930fc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/442b6ff5b416611ee61f989c4dc4d3a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/442b6ff5b416611ee61f989c4dc4d3a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/082e748775f644b758d3de6526e97844.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/082e748775f644b758d3de6526e97844.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/56fb598a9440324c73745b08715cca3b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/56fb598a9440324c73745b08715cca3b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/598fd4ff9a9c1915c9a0f1c3534316d4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/598fd4ff9a9c1915c9a0f1c3534316d4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3d847d0a56e444b0e1cb36c26922b884.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3d847d0a56e444b0e1cb36c26922b884.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/682c7151cad3e694497adfc12cb1e1da.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/682c7151cad3e694497adfc12cb1e1da.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1ed414f70dcf49f91ceb1e2cbc2f5542.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1ed414f70dcf49f91ceb1e2cbc2f5542.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3609fa8d28d06e40d1886eb1ac0704cc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3609fa8d28d06e40d1886eb1ac0704cc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/725aa2568d0f7143f2fbfa101e84447f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/725aa2568d0f7143f2fbfa101e84447f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5384db578319addff7edb303be9b1fed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5384db578319addff7edb303be9b1fed.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ca32f04d1d59020beff80d16ce372825.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ca32f04d1d59020beff80d16ce372825.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e3782425ceddc455c2ffe74039f00d6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e3782425ceddc455c2ffe74039f00d6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ac06284b83b3b21a5dffe7614847c6cb.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ac06284b83b3b21a5dffe7614847c6cb.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f5b98c459b62f8fbbf7be27bb9521d16.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f5b98c459b62f8fbbf7be27bb9521d16.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f5f77de250035f7975183dc67b8f09a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f5f77de250035f7975183dc67b8f09a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/086452250325756475c68cb7e93c9d7b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/086452250325756475c68cb7e93c9d7b.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1153006,'1153006','魔兽世界 纪念版 麻将套装',1032000,0,'[\\\"http://yanxuan.nosdn.127.net/4f4010a4146054df0aa4e01afb4274e5.png\\\", \\\"http://yanxuan.nosdn.127.net/4f4010a4146054df0aa4e01afb4274e5.png\\\", \\\"http://yanxuan.nosdn.127.net/4f4010a4146054df0aa4e01afb4274e5.png\\\", \\\"http://yanxuan.nosdn.127.net/4f4010a4146054df0aa4e01afb4274e5.png\\\", \\\"http://yanxuan.nosdn.127.net/4f4010a4146054df0aa4e01afb4274e5.png\\\"]','','十年经典，纪念麻将套装',1,2,'http://yanxuan.nosdn.127.net/2743921b945a6c71fcdc3c5282a03413.png','',0,1,'件',1308.00,1288.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1155000,'1155000','清新趣粉全棉四件套 条纹绿格',1008009,0,'[\\\"http://yanxuan.nosdn.127.net/517914d4f7d872b17a55e9c3864df717.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6bdf224d6c0276a2737d6af775b6ed8a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/6fa8774f6da6cc473ba3714aec95f6b6.jpg\\\", \\\"http://yanxuan.nosdn.127.net/2eca5d0f8a1ce61baf32311264cebdd1.jpg\\\"]','','清新趣粉全棉四件套 青粉拼接',1,12,'http://yanxuan.nosdn.127.net/d7d6ef1f1865991077384761b4521dce.png','',0,0,'件',419.00,399.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/162f14bce2afba3a484ce8fb5da1e58b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/162f14bce2afba3a484ce8fb5da1e58b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1f7942650759087591c5983b8833b0b0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1f7942650759087591c5983b8833b0b0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7b2c61359c3323f426a0214d79f52e5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7b2c61359c3323f426a0214d79f52e5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4ef5a035b31b1dea51c0f9ad89df9af3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4ef5a035b31b1dea51c0f9ad89df9af3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e78cd4ddd9bd39ab9a488fef9b5f7b3a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e78cd4ddd9bd39ab9a488fef9b5f7b3a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6cce2f34025ab487af8707ee4cf61373.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6cce2f34025ab487af8707ee4cf61373.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/248de06b79ddf1bc6e28a00ffbbb97d0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/248de06b79ddf1bc6e28a00ffbbb97d0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c2306432efd11b36979518c91f3dac76.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c2306432efd11b36979518c91f3dac76.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d62be6560ff53b1fd6b8f83664965758.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d62be6560ff53b1fd6b8f83664965758.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/879123cb7355ce5aa2df371bf8821754.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/879123cb7355ce5aa2df371bf8821754.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/24bd066e91fe31da4c21fb6f13d0b944.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/24bd066e91fe31da4c21fb6f13d0b944.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9da18ea054a561a17c36e41d693bfdae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9da18ea054a561a17c36e41d693bfdae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71873676e788a2d2aa5184f46cc0f30e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71873676e788a2d2aa5184f46cc0f30e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b3f9463598c55d2c55428b2eef8bf556.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b3f9463598c55d2c55428b2eef8bf556.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d1321c2db83e7485c67265427fa986bc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d1321c2db83e7485c67265427fa986bc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cc8bc6028a45eddab15e21ebc7caef7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cc8bc6028a45eddab15e21ebc7caef7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27453a8037edc367424e6432a3e5a59c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27453a8037edc367424e6432a3e5a59c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/528ef8f963f9733d8cfd0f50556ae110.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/528ef8f963f9733d8cfd0f50556ae110.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/cb3c92fed21740cc6b5c5dc16fc60508.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/cb3c92fed21740cc6b5c5dc16fc60508.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0dee0fd961eaffd7aa2bdaf62d2ab126.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0dee0fd961eaffd7aa2bdaf62d2ab126.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/661e1cb14a801d03f28626196c00d14f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/661e1cb14a801d03f28626196c00d14f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2b6a2f6a7f3a45039b0b7c572c2eeed8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2b6a2f6a7f3a45039b0b7c572c2eeed8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e46db149caf4b825f4a90627e0db6a79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e46db149caf4b825f4a90627e0db6a79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/98673c4ff33fc8c55bf88945dbef364c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/98673c4ff33fc8c55bf88945dbef364c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9a2324cb4ff8f4332c51343efeaafe8e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9a2324cb4ff8f4332c51343efeaafe8e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb0d21207bf5b26592511ef80e48eb91.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb0d21207bf5b26592511ef80e48eb91.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/be386763462ada086662387e40431c85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/be386763462ada086662387e40431c85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71724c37bc98358af22d25a4edebe12d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71724c37bc98358af22d25a4edebe12d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3226eb33802d18a6baa093b1ccc3f412.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3226eb33802d18a6baa093b1ccc3f412.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/32370f76a781924f6e0252abdea047f6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/32370f76a781924f6e0252abdea047f6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/22c82828b81e11053849f3c9f826f453.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/22c82828b81e11053849f3c9f826f453.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e8c42123ac126046542176d511a29139.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e8c42123ac126046542176d511a29139.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d981ab4821ca98c89e71d2a2a9b23330.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d981ab4821ca98c89e71d2a2a9b23330.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/995a72c9c8bb895f5445a473daccc218.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/995a72c9c8bb895f5445a473daccc218.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/251151c89c54c9c272288ed461533a8c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/251151c89c54c9c272288ed461533a8c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bba4921b09f7c9eb4bae76259d7d82e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bba4921b09f7c9eb4bae76259d7d82e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/0fd159ef30bfd4cb6e4c37141ad96666.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/0fd159ef30bfd4cb6e4c37141ad96666.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4e31861a89e1e10be81f5290e31e6b85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4e31861a89e1e10be81f5290e31e6b85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3404e5c9b9e9e3855a52831a1d4acad7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3404e5c9b9e9e3855a52831a1d4acad7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5d15b51fc382847b8de4a4b6fad3646b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5d15b51fc382847b8de4a4b6fad3646b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6fd940b500b07c5157a7db17d858c56f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6fd940b500b07c5157a7db17d858c56f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4cf02bfda7429cb78da05f8b521e5195.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4cf02bfda7429cb78da05f8b521e5195.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/74ed4ea956e43e6b1f37b1dd31c6feee.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/74ed4ea956e43e6b1f37b1dd31c6feee.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/77d288d7c8e815e014f6ceac652adf83.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/77d288d7c8e815e014f6ceac652adf83.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18478afad61f4fad519a4fe598c38bb8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18478afad61f4fad519a4fe598c38bb8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f527072aeaed7abb974551d7ad93faf4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f527072aeaed7abb974551d7ad93faf4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/276d97cc862f718bfb7cd8a5970d2b9a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/276d97cc862f718bfb7cd8a5970d2b9a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1765a6390fd9116320230cea1b2e2570.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1765a6390fd9116320230cea1b2e2570.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ee6eff91b9e9ee9c8a70cf9ad59cd274.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ee6eff91b9e9ee9c8a70cf9ad59cd274.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4db4a90e1e83e2e77b4b17deb6b618c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4db4a90e1e83e2e77b4b17deb6b618c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e58b2129b6ca7f8f845d88ccb1ecda6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e58b2129b6ca7f8f845d88ccb1ecda6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/fe901e2f92e213b444f4950a6adb320f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/fe901e2f92e213b444f4950a6adb320f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/11c552fba5a1ba0bf6189da2d243db7d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/11c552fba5a1ba0bf6189da2d243db7d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4c78602cdbba3992711257325de376ed.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4c78602cdbba3992711257325de376ed.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1155015,'1155015','绿豆糕 80克（4枚入）',1008015,0,'[\\\"http://yanxuan.nosdn.127.net/67d52acd78bf685bb5982bcac47ca01a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/67d52acd78bf685bb5982bcac47ca01a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/67d52acd78bf685bb5982bcac47ca01a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/67d52acd78bf685bb5982bcac47ca01a.jpg\\\", \\\"http://yanxuan.nosdn.127.net/67d52acd78bf685bb5982bcac47ca01a.jpg\\\"]','','细腻松软，入口绵柔',1,6,'http://yanxuan.nosdn.127.net/66b9f1638c0517d179262f14ed1345f9.png','',1,0,'件',32.90,12.90,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1156006,'1156006','20寸 全铝镁合金登机箱',1012001,0,'[\\\"http://yanxuan.nosdn.127.net/d1ab558679fb96508c0d3991c4e8b5d9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1ab558679fb96508c0d3991c4e8b5d9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1ab558679fb96508c0d3991c4e8b5d9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1ab558679fb96508c0d3991c4e8b5d9.jpg\\\", \\\"http://yanxuan.nosdn.127.net/d1ab558679fb96508c0d3991c4e8b5d9.jpg\\\"]','','100%铝镁合金，超薄坚固',1,3,'http://yanxuan.nosdn.127.net/ea5b0a572b35089446fba491db7fbbc3.png','',0,0,'件',719.00,699.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1166008,'1166008','Carat钻石 不粘厨具组合',1005007,0,'[\\\"http://yanxuan.nosdn.127.net/056baf67bb8cc9a4f2544ac5954ab67c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/056baf67bb8cc9a4f2544ac5954ab67c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/056baf67bb8cc9a4f2544ac5954ab67c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/056baf67bb8cc9a4f2544ac5954ab67c.jpg\\\", \\\"http://yanxuan.nosdn.127.net/056baf67bb8cc9a4f2544ac5954ab67c.jpg\\\"]','','钻石涂层，不粘锅锅具组',1,5,'http://yanxuan.nosdn.127.net/615a16e899e01efb780c488df4233f48.png','',1,0,'只',479.00,459.00,'','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(1181000,'1181000','母亲节礼物-舒适安睡组合',1008008,1001020,'[\\\"http://yanxuan.nosdn.127.net/355efbcc32981aa3b7869ca07ee47dac.jpg\\\", \\\"http://yanxuan.nosdn.127.net/43e283df216881037b70d8b34f8846d3.jpg\\\", \\\"http://yanxuan.nosdn.127.net/12e41d7e5dabaf9150a8bb45c41cf422.jpg\\\", \\\"http://yanxuan.nosdn.127.net/5c1d28e86ccb89980e6054a49571cdec.jpg\\\"]','','安心舒适是最好的礼物',1,1,'http://yanxuan.nosdn.127.net/1f67b1970ee20fd572b7202da0ff705d.png','',1,0,'件',2618.00,2598.00,'<p><img src=\\\"http://yanxuan.nosdn.127.net/3ddfe10db43f7df33ba82ae7570ada80.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3ddfe10db43f7df33ba82ae7570ada80.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7682b7930b4776ce032f509c24a74a1e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7682b7930b4776ce032f509c24a74a1e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e0bb6a50e27681925c5bb26bceb67ef4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e0bb6a50e27681925c5bb26bceb67ef4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba63b244c74ce06fda82bb6a29cc0f71.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba63b244c74ce06fda82bb6a29cc0f71.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3c7808c3a4769bad5af4974782f08654.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3c7808c3a4769bad5af4974782f08654.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/71798aaac23a91fdab4d77e1b980a4df.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/71798aaac23a91fdab4d77e1b980a4df.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c88cbb2dd2310b732571f49050fe4059.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c88cbb2dd2310b732571f49050fe4059.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5dfdcd654e0f3076f7c05dd9c19c15ea.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5dfdcd654e0f3076f7c05dd9c19c15ea.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bd55d6ef7af69422d8d76af10ee70156.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bd55d6ef7af69422d8d76af10ee70156.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/bae571b22954c521b35e446d652edc1d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/bae571b22954c521b35e446d652edc1d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e709c4d9e46d602a4d2125e47110f6ae.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e709c4d9e46d602a4d2125e47110f6ae.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/83e41915035c418db177af8b1eca385c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/83e41915035c418db177af8b1eca385c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/f42c561e6935fe3e0e0873653da78670.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/f42c561e6935fe3e0e0873653da78670.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8317726fbae80b98764dc4c6233a913e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8317726fbae80b98764dc4c6233a913e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ba904b7c948b8015db2171435325270f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ba904b7c948b8015db2171435325270f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4969c73d0d8f29bffb69529c96ca4889.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4969c73d0d8f29bffb69529c96ca4889.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d80b9b8c5c31031d1cd5357e48748632.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d80b9b8c5c31031d1cd5357e48748632.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3fe79bdae40662a7b1feed3179d3dd1f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3fe79bdae40662a7b1feed3179d3dd1f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/79eef059963b12479f65e782d1dca128.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/79eef059963b12479f65e782d1dca128.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e5a8f64f4297ccc01b41df98b0f252c8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e5a8f64f4297ccc01b41df98b0f252c8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a940b9e9525c4861407e4c3b07b02977.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a940b9e9525c4861407e4c3b07b02977.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/224b8b81cbe12e4ad060a50f1e26601a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/224b8b81cbe12e4ad060a50f1e26601a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/85e151647452fad718effb7b1adc18e2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/85e151647452fad718effb7b1adc18e2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d47444ff3bb9dc0aa4ab1f9b84d83768.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d47444ff3bb9dc0aa4ab1f9b84d83768.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/136262743f0c849cc0c55c8e7963dd7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/136262743f0c849cc0c55c8e7963dd7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/331a97cbaff5b25a3b08ed7cdfe29df9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/331a97cbaff5b25a3b08ed7cdfe29df9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/89b450aa0a8afe1db566dcad926f1fe8.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/89b450aa0a8afe1db566dcad926f1fe8.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1cf94f13b7280a97e751cebe573fa78.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1cf94f13b7280a97e751cebe573fa78.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1822c23def83b77e7607c24237eeec74.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1822c23def83b77e7607c24237eeec74.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/2af234312b3914d6d0bc316f92134614.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/2af234312b3914d6d0bc316f92134614.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c4f8ab2b3813275d954a8bedcf902d26.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c4f8ab2b3813275d954a8bedcf902d26.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/42f18842ff0c92ed849c4401ae47bb61.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/42f18842ff0c92ed849c4401ae47bb61.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a8ea64a35799e50ab31ecb65345fe8f4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a8ea64a35799e50ab31ecb65345fe8f4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/18759fa90cd153bdd744280807c3c155.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/18759fa90cd153bdd744280807c3c155.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/431f00d068a8e747959deb3b7bdd495a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/431f00d068a8e747959deb3b7bdd495a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5bd3b44f1f4c627bfa39f7809e866ec6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5bd3b44f1f4c627bfa39f7809e866ec6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/7fc36778fe2f6129b9c26e8298c5be7e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/7fc36778fe2f6129b9c26e8298c5be7e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c568432e3d5ab6786cd9dcae8008891b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c568432e3d5ab6786cd9dcae8008891b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ec82ff5aecafa48807117da68cce2ce9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ec82ff5aecafa48807117da68cce2ce9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b8eccbed570da595e6f8a71ed4abc42c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b8eccbed570da595e6f8a71ed4abc42c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/9cae1fed6ecefcd61435fe6e2c700fd6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/9cae1fed6ecefcd61435fe6e2c700fd6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e306a418f82777399f5e88b93cca22db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e306a418f82777399f5e88b93cca22db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a66d717084e23864ce079f936557709f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a66d717084e23864ce079f936557709f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6ae06c6505cdbf87a0210fe3b8727d5f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6ae06c6505cdbf87a0210fe3b8727d5f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/58ac2086725b0ba2fe800195f274a0b4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/58ac2086725b0ba2fe800195f274a0b4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5e2e9d9eb099647fbe041ec6645ac034.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5e2e9d9eb099647fbe041ec6645ac034.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8154357c0fab82bd4e67cda9aaa128c0.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8154357c0fab82bd4e67cda9aaa128c0.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4325763b738ec3183ecf0d82b2b28e32.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4325763b738ec3183ecf0d82b2b28e32.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/06d8ea9d10035a00f26c5c52cc601ca7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/06d8ea9d10035a00f26c5c52cc601ca7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/499f30b9e69b5dddf3db36f105756111.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/499f30b9e69b5dddf3db36f105756111.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ed7e1733d54e711a560edb3a76f1a60c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ed7e1733d54e711a560edb3a76f1a60c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b6474347eebdb917d2e827fd526dd01c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b6474347eebdb917d2e827fd526dd01c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b2c0691f9204c5ebc94b4ff678919ca7.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b2c0691f9204c5ebc94b4ff678919ca7.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/b4811e702a6884a9251d7cc9e3b06b6f.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/b4811e702a6884a9251d7cc9e3b06b6f.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d518783c054695acf329e81d597fdec3.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d518783c054695acf329e81d597fdec3.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/835ce09e785cca635c176008975053a1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/835ce09e785cca635c176008975053a1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/769af780de81a302c0a3b03ed8e6c528.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/769af780de81a302c0a3b03ed8e6c528.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da34f99daf9141f0fe56a766461b8485.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da34f99daf9141f0fe56a766461b8485.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/d7c9cd8722a2f9a78e158ce02ec5d4f2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/d7c9cd8722a2f9a78e158ce02ec5d4f2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/09ea18953884b15227819e326103462b.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/09ea18953884b15227819e326103462b.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5ef728213983842edf1aec27b2c1f5b6.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5ef728213983842edf1aec27b2c1f5b6.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/95409f2a884dcfeaabfe5e61fcf9ec37.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/95409f2a884dcfeaabfe5e61fcf9ec37.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/6807836dc2a940ba56ea10c7a63b14c9.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/6807836dc2a940ba56ea10c7a63b14c9.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e1d976d06853e7a0e6c9cc4ab484ac8a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e1d976d06853e7a0e6c9cc4ab484ac8a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/47f5673dec5005092f6d897d6335966c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/47f5673dec5005092f6d897d6335966c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1b0109abd0e6a0d13fa2423a96c1167e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1b0109abd0e6a0d13fa2423a96c1167e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/916111a8f94cc0bd39375b3dcac14e35.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/916111a8f94cc0bd39375b3dcac14e35.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c1360df3d6b703c5df9b2f47a2a3d12e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c1360df3d6b703c5df9b2f47a2a3d12e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/1d5a31eb93ef873a165993bd99f29df1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/1d5a31eb93ef873a165993bd99f29df1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/997a48948b89dd7261ed5a59ba884f45.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/997a48948b89dd7261ed5a59ba884f45.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/eb96d9689735c9f4019ebf76da43b2b2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/eb96d9689735c9f4019ebf76da43b2b2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a92cf2172e6cafe080e4511205568d79.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a92cf2172e6cafe080e4511205568d79.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9e94570428f197292bb3f43609963f5.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9e94570428f197292bb3f43609963f5.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/37145f06cce747311692ad7f276645db.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/37145f06cce747311692ad7f276645db.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c9a698b71ed911364fc6f243006c241c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c9a698b71ed911364fc6f243006c241c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e89db969711efaa441c43d6b90498a0c.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e89db969711efaa441c43d6b90498a0c.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3803bb1a18229562f18943512b1d3524.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3803bb1a18229562f18943512b1d3524.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/235cbb5be905ac2b87e7e8f7c8d90144.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/235cbb5be905ac2b87e7e8f7c8d90144.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/3e38435b3fdbae4ee80b83995592901e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/3e38435b3fdbae4ee80b83995592901e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/8ceb7cd3231585da60a74dd2c1aa9015.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/8ceb7cd3231585da60a74dd2c1aa9015.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e151e225c2e30aab7ccf086094381577.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e151e225c2e30aab7ccf086094381577.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/363c19306953daf10968f4aa86617997.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/363c19306953daf10968f4aa86617997.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/4237a392cf2e69b110ad4ecf35e44059.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/4237a392cf2e69b110ad4ecf35e44059.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/da8ab35ada2dfe55006db01efa96e51a.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/da8ab35ada2dfe55006db01efa96e51a.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/aa1d4fd00b7879db3f1051dc6d16aa87.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/aa1d4fd00b7879db3f1051dc6d16aa87.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/302a8f2d997ff22bedcd837672cdafc2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/302a8f2d997ff22bedcd837672cdafc2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a39ff68c00522aef0472402958a334d2.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a39ff68c00522aef0472402958a334d2.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/86ccd0eb677c8b552398869d11a8917e.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/86ccd0eb677c8b552398869d11a8917e.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/a6d0ede352da947060d912d903646a5d.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/a6d0ede352da947060d912d903646a5d.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e6a118bf95bdb61891409d25f193e9c4.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e6a118bf95bdb61891409d25f193e9c4.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c214066e9bf65d60bcebd691b5b1cbc1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c214066e9bf65d60bcebd691b5b1cbc1.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/c301559ba3ee280bcbf2fc4269bfa9ca.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/c301559ba3ee280bcbf2fc4269bfa9ca.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/573748f5c12ecb4515ba00a7b6e981dc.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/573748f5c12ecb4515ba00a7b6e981dc.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27bcc8bf512a7e6f994a9683b3deea82.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27bcc8bf512a7e6f994a9683b3deea82.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/e22a4507fd1e4b5ef859035e857ae419.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/e22a4507fd1e4b5ef859035e857ae419.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/27b07b4ca709c33ad71b368f87781307.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/27b07b4ca709c33ad71b368f87781307.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/ef31eb48bcb133728bffda7e1239b592.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/ef31eb48bcb133728bffda7e1239b592.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/5f49aaaca59c0733ec92f100d01bc0af.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/5f49aaaca59c0733ec92f100d01bc0af.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/818889261deb75044e1018ec53485d85.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/818889261deb75044e1018ec53485d85.jpg\\\" style=\\\"\\\"/></p><p><img src=\\\"http://yanxuan.nosdn.127.net/200369f023243e2faeb18a2a0a352ef1.jpg\\\" _src=\\\"http://yanxuan.nosdn.127.net/200369f023243e2faeb18a2a0a352ef1.jpg\\\" style=\\\"\\\"/></p><p><br/></p>','2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_goods` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_goods_attribute`\n--\n\nLOCK TABLES `litemall_goods_attribute` WRITE;\n/*!40000 ALTER TABLE `litemall_goods_attribute` DISABLE KEYS */;\nINSERT INTO `litemall_goods_attribute` VALUES (1,1006002,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,1006002,'适用床尺寸','1.5米+1.8米通用','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,1006002,'件数','4件','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,1006002,'工艺','刺绣','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(5,1006002,'执行标准','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(6,1006002,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(7,1006002,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(8,1006007,'填充物重量','2000g/2300g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(9,1006007,'尺寸','200*230cm/220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(10,1006007,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(11,1006007,'填充物','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(12,1006007,'温馨提示','1.经过碳化、清洗、梳理的天然羊毛被带会有少量味道，通风晾晒2-3天即可散去                     2.为减少羊毛漂白等化学用品的处理时间，部分羊毛可能未完全脱色，轻微泛黄属羊毛原色，为正常现象。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(13,1006010,'填充物重量','2000g/2300g','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(14,1006010,'尺寸','200*230cm/220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(15,1006010,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(16,1006010,'填充物','超细羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(17,1006010,'温馨提示','1.经过碳化、清洗、梳理的天然羊毛被带会有少量味道，通风晾晒2-3天即可散去                                        2.为减少羊毛漂白等化学用品的处理时间，部分羊毛可能未完全脱色，轻微泛黄属羊毛原色，为正常现象。','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(18,1006013,'尺寸','200*230cm/ 220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(19,1006013,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(20,1006013,'填充物','100%双宫茧桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(21,1006013,'填充物重量','0.5KG/1KG','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(22,1006013,'温馨提示','天然桑蚕丝具有正常蛋白味道，通风晾晒2-3天即可散去','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(23,1006014,'尺寸','200*230cm/ 220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(24,1006014,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(25,1006014,'填充物','100%双宫茧桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(26,1006014,'填充物重量','0.5+1.5KG/1+2KG','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(27,1006014,'温馨提示','天然桑蚕丝具有正常蛋白味道，通风晾晒2-3天即可散去','2018-02-01 00:00:00','2018-02-01 00:00:00',1),(28,1009009,'尺寸','200*230cm/220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(29,1009009,'填充成分','白鹅绒','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(30,1009009,'面料成分','60%棉 40%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(31,1009009,'填充物重量','1500g/1700g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(32,1009009,'含绒量','95%','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(33,1009009,'工艺','双层立衬','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(34,1009012,'尺寸','48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(35,1009012,'面料成分','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(36,1009012,'填充成分','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(37,1009012,'重量','1000g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(38,1009012,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(39,1009012,'温馨提示','枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(40,1009013,'尺寸','48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(41,1009013,'面料成分','70%高模量聚酯+30%聚酰胺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(42,1009013,'填充成分','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(43,1009013,'重量','1000g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(44,1009013,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(45,1009013,'温馨提示','枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(46,1009024,'规格','65*65*43cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(47,1009024,'外套材质','外套帆布：100%棉；外套弹力布：锦纶80%氨纶20%','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(48,1009024,'内胆材质','内胆面料：100%锦纶；填充物：聚苯乙烯（发泡粒子）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(49,1009024,'*温馨提示','本品为人工填充粒子，重量难免会有误差，敬请谅解。同时产品在运输过程中受挤压，也可能会造成凹陷。储存时请避免重物挤压以引起泡沫粒子塌陷。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(50,1010000,'材质','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(51,1010000,'尺寸','200*150cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(52,1010000,'温馨提示','1.羊毛毯采取传统机织工艺，纯天然织造的，直接接触皮肤会有轻微扎人。\\n2.初次使用时会有少量浮毛，建议干洗处理。\\n3.商品为纯羊毛织造而成，若有少量气味请通风2-3天去除。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(53,1010001,'材质','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(54,1010001,'规格','200*150cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(55,1010001,'温馨提示','1.羊毛毯采取传统机织工艺，纯天然织造的，直接接触皮肤会有轻微扎人。\\n2.初次使用时会有少量浮毛，建议干洗处理。\\n3.商品为纯羊毛织造而成，若有少量气味请通风2-3天去除。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(56,1011004,'面料成分','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(57,1011004,'安全技术','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(58,1011004,'规格','150×200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(59,1011004,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(60,1011004,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(61,1011004,'重量','1800g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(62,1011004,'温馨提示','1.深色纯棉毛巾被在织造染色过程中，巾面更易产生微细的纤维浮绒，使用前建议用清水漂洗1-2次，即可去掉产品上的浮绒。\\n2.在洗涤时一定要注意不要与衣服混在一起机洗，强力的搓洗会引起掉毛或勾线现象。\\n3.纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(63,1015007,'尺寸','45cm*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(64,1015007,'面料成份','100%全棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(65,1015007,'内芯面料','100%全棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(66,1015007,'填充物','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(67,1015007,'重量','470g（内芯）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(68,1015007,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(69,1019000,'填充成分','聚醚型聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(70,1019000,'面料成分','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(71,1019000,'尺寸','50cm×30cm×9cm-7cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(72,1019000,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(73,1019000,'适用人数','单人','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(74,1019000,'温馨提示','1.记忆绵产品为进口环保化学材质聚氨酯发泡而成，刚打开包装会有少量聚氨酯气体产生，拆除外套通风除味3-5天即可。                                                                                  2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(75,1019001,'填充成分','聚醚型聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(76,1019001,'面料成分','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(77,1019001,'尺寸','50cm×30cm×10cm-6cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(78,1019001,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(79,1019001,'适用人数','单人','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(80,1019001,'温馨提示','1.记忆绵产品为进口环保化学材质聚氨酯发泡而成，刚打开包装会有少量聚氨酯气体产生，拆除外套通风除味3-5天即可。 2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(81,1019002,'填充成分','聚醚型聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(82,1019002,'面料成分','聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(83,1019002,'尺寸','135cm×36cm×10cm-7cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(84,1019002,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(85,1019002,'适用人数','双人','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(86,1019002,'温馨提示','1.记忆绵产品为进口环保化学材质聚氨酯发泡而成，刚打开包装会有少量聚氨酯气体产生，拆除外套通风除味3-5天即可。 \\n2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(87,1019006,'面料成分','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(88,1019006,'填充成分','20% 夜交藤+80% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(89,1019006,'尺寸','48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(90,1019006,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(91,1019006,'适用人数','单人','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(92,1019006,'温馨提示','1.植物填充，遇梅雨季节需要通风、干燥保存。 \\n2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(93,1020000,'填充成分','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(94,1020000,'面料成分','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(95,1020000,'尺寸','33cm×31cm×10cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(96,1020000,'颜色','灰色条纹/粉色条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(97,1021004,'材质','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(98,1021004,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(99,1021004,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(100,1021004,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(101,1021004,'温馨提示','1.羊毛毯采取传统机织工艺，纯天然织造的，直接接触皮肤会有轻微扎人。\\n2.初次使用时会有少量浮毛，建议干洗处理。\\n3.商品为纯羊毛织造而成，若有少量气味请通风2-3天去除。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(102,1021010,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(103,1021010,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(104,1021010,'产地','江苏南通','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(105,1021010,'根数','200根','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(106,1021010,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(107,1021010,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(108,1022000,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(109,1022000,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(110,1022000,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(111,1022000,'根数','200根','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(112,1022000,'尺寸','被套200*230cm；床单245*250cm；枕套48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(113,1022000,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(114,1022001,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(115,1022001,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(116,1022001,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(117,1022001,'根数','200根','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(118,1022001,'尺寸','被套200*230cm；床单245*250cm；枕套48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(119,1022001,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(120,1023012,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(121,1023012,'尺寸','180*220cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(122,1023012,'安全技术类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(123,1023012,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(124,1023012,'重量','1480g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(125,1023012,'温馨提示','1.深色纯棉毛巾被在织造染色过程中，巾面更易产生微细的纤维浮绒，使用前建议用清水漂洗1-2次，即可去掉产品上的浮绒。\\n2.在洗涤时一定要注意不要与衣服混在一起机洗，强力的搓洗会引起掉毛或勾线现象。\\n3.纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(126,1023032,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(127,1023032,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(128,1023032,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(129,1023032,'根数','200根','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(130,1023032,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(131,1023032,'工艺','色织工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(132,1023032,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(133,1023034,'材质','正面：100%棉  背面：15%棉  85%涤   底衬：100%涤','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(134,1023034,'填充物','70% 白鸭绒  30%白鸭绒片','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(135,1023034,'克重','250g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(136,1023034,'产地','中国','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(137,1023034,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(138,1023034,'颜色','水银灰/ 水蓝/ 水粉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(139,1027004,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(140,1027004,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(141,1027004,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(142,1027004,'颜色','灰白格/粉白格','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(143,1027004,'重量','1136g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(144,1029005,'材质','65% 天丝 35% 亚麻','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(145,1029005,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(146,1029005,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(147,1029005,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(148,1029005,'颜色','渐变紫 / 渐变绿','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(149,1029005,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(150,1030001,'材质','面纱：100%羊毛  底纱：55.7%棉  27.1%聚酯纤维  4.7%羊毛   12.5%其他','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(151,1030001,'产地','印度','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(152,1030001,'执行标准','QB/T 2756-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(153,1030001,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(154,1030001,'工艺','手工编织','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(155,1030001,'温馨提示','1：羊毛材质存在一点羊骚味实属正常情况，建议开窗通风，多散散味道即可。\\n2：羊毛地毯刚刚开始使用的时候多多少少都会有一点掉毛的情况，建议开始使用的时候用吸尘器多吸几次，之后掉毛的情况就会有改善。  \\n3：因为天然羊毛材质，所以脚感会有一点点刺，不属于产品质量问题。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(156,1030002,'材质','绒面：93%羊毛  7%腈纶 衬背：100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(157,1030002,'产地','印度','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(158,1030002,'执行标准','GB/T 27729-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(159,1030002,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(160,1030002,'工艺','手工枪刺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(161,1030002,'温馨提示','1：羊毛材质存在一点羊骚味实属正常情况，建议开窗通风，多散散味道即可。\\n2：羊毛地毯刚刚开始使用的时候多多少少都会有一点掉毛的情况，建议开始使用的时候用吸尘器多吸几次，之后掉毛的情况就会有改善。  \\n3：因为天然羊毛材质，所以脚感会有一点点刺，不属于产品质量问题。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(162,1030003,'材质','面纱： 100%羊毛  底纱： 88.3%棉   11.7%其他','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(163,1030003,'产地','印度','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(164,1030003,'执行标准','QB/T 2756-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(165,1030003,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(166,1030003,'工艺','手工编织','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(167,1030003,'温馨提示','1：羊毛材质存在一点羊骚味实属正常情况，建议开窗通风，多散散味道即可。\\n2：羊毛地毯刚刚开始使用的时候多多少少都会有一点掉毛的情况，建议开始使用的时候用吸尘器多吸几次，之后掉毛的情况就会有改善。  \\n3：因为天然羊毛材质，所以脚感会有一点点刺，不属于产品质量问题。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(168,1030004,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(169,1030004,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(170,1030004,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(171,1030004,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(172,1030004,'颜色','蓝色/ 灰色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(173,1030004,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(174,1030005,'材质','100%亚麻','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(175,1030005,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(176,1030005,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(177,1030005,'颜色','橙色/ 灰色/ 黄色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(178,1030005,'工艺','水洗工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(179,1030005,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(180,1030005,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(181,1030006,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(182,1030006,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(183,1030006,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(184,1030006,'执行标准','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(185,1030006,'颜色','红色/ 黄色/ 蓝色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(186,1030006,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(187,1035006,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(188,1035006,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(189,1035006,'尺寸','长61*宽43cm / 长86*宽53cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(190,1035006,'工艺','手工制作','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(191,1035006,'执行标准','GB/T 26850-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(192,1035006,'温馨提示','纯棉材质在织造染色过程中，表面不可避免会产生微细的纤维浮绒，使用前清水漂洗1-2次，即可去掉浮绒。不属于产品质量问题。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(193,1036002,'面料成分','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(194,1036002,'填充物','100% 高山苦荞麦壳','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(195,1036002,'规格','74×48cm±1cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(196,1036002,'填充物重量','3KG','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(197,1036002,'温馨提示','1.天然植物填充，遇梅雨季节需要干燥保存，如有少量飞虫产生，太阳下晒3小时即可去除。 \\n2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(198,1036013,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(199,1036013,'尺寸','150*200*25cm/ 180*200*25cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(200,1036013,'执行标准','FZ/T 62028-2015','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(201,1036013,'工艺','双捻工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(202,1036013,'产地','浙江 江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(203,1036013,'温馨提示','1：针织棉面料因为工艺不可避免原因，使用一段时间后会出现起毛起球现象，使用去毛机修理一下即可。\\n2：因为针织的编织工艺，成品在使用过程中会有轻微的变型，不影响使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(204,1036016,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(205,1036016,'尺寸','150*200cm/ 180*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(206,1036016,'执行标准','GB/T 22797-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(207,1036016,'工艺','色织水洗工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(208,1036016,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(209,1037011,'规格','1.5/1.8m*2m*5cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(210,1037011,'外层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(211,1037011,'里层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(212,1037011,'内芯','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(213,1037011,'温馨提示','1.记忆绵产品为进口环保化学材质聚氨酯发泡而成，刚打开包装会有少量聚氨酯气体产生，拆除外套通风除味3-5天即可。\\n 2.床垫商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款床垫，挑选最舒适的进行使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(214,1037012,'填充物','100%高山苦荞','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(215,1037012,'尺寸','40*8cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(216,1037012,'外用面料','45%麻45%棉10%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(217,1037012,'温馨提示','1.天然植物填充，遇梅雨季节需要干燥保存，如有少量飞虫产生，太阳下晒3小时即可去除。\\n 2.枕芯类商品受身高、体型、睡眠习惯不同，产生不同的使用体验，建议多试睡几款枕头，挑选最适合的进行使用。\\n3.建议每次使用时间控制在15分钟以内。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(218,1037012,'商品重量','0.45kg+-0.05kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(219,1039051,'规格','33*24*14cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(220,1039051,'外层面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(221,1039051,'里层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(222,1039051,'内芯','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(223,1039051,'安全技术','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(224,1039051,'*温馨提示','1,水洗时请将外套取下，用冷水洗涤后置于阴凉处阴干或烘干。不能同褪色衣物同洗，以防沾污、沾色。\\n2,外套洗后稍有缩水是正常现象，因是弹性织物，仅需四周拉一下长度即可。\\n3,记忆棉不可水洗，请经常保持产品干燥，定期通风（不可曝晒）。若不慎打湿，立即用干毛巾将水分吸干，置于通风处阴干或用冷吹风吹干即可。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(225,1043005,'坐垫外层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(226,1043005,'坐垫内芯材料','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(227,1043005,'执行标准','GB/T22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(228,1043005,'方形尺寸','36*36*3cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(229,1043005,'圆形尺寸','Φ34*3cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(230,1043005,'坐垫套面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(231,1043005,'*温馨提示','1,水洗时请将外套取下，用冷水洗涤后置于阴凉处阴干或烘干。不能同褪色衣物同洗，以防沾污、沾色。\\n2,外套洗后稍有缩水是正常现象，因是弹性织物，仅需四周拉一下长度即可。\\n3,记忆棉不可水洗，请经常保持产品干燥，每隔一段时间用吸尘器清理内芯落尘或用手轻轻拍打内芯，放在通风阴凉处适当晾晒即可。。若不慎打湿，立即用干毛巾将水分吸干，置于通风处阴干或用冷吹风吹干即可。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(232,1044012,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(233,1044012,'材质','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(234,1044012,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(235,1044012,'安全及时','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(236,1044012,'温馨提示','1.羊毛毯采取传统机织工艺，纯天然织造的，直接接触皮肤会有轻微扎人。\\n2.初次使用时会有少量浮毛，建议干洗处理。\\n3.商品为纯羊毛织造而成，若有少量气味请通风2-3天去除。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(237,1046044,'材质','100%美利奴羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(238,1046044,'重量','1260g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(239,1046044,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(240,1046044,'执行标准','FZ/T 61001-2006','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(241,1046044,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(242,1048005,'面料','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(243,1048005,'尺寸','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(244,1048005,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(245,1048005,'颜色','真朱红/ 薄缥蓝/ 枯野灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(246,1048005,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(247,1048005,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(248,1055012,'材质','外壳：100% 纯棉  内充：100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(249,1055012,'克重','600G/ 1400G','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(250,1055012,'尺寸','45*45cm / 66*66cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(251,1055012,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(252,1055012,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(253,1055016,'颜色','珍珠粉/ 宝石蓝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(254,1055016,'尺寸','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(255,1055016,'材质','主面料：100% 棉\\n填充：100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(256,1055016,'克重','600G','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(257,1055016,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(258,1055016,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(259,1057036,'尺寸','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(260,1057036,'颜色','灰紫/ 蓝色/ 灰色/ 咖色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(261,1057036,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(262,1057036,'填充克重','600G','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(263,1057036,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(264,1057036,'材质','面料：100% 亚麻\\n内芯面料：100%棉\\n填充：100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(265,1057036,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(266,1064000,'尺寸','38*38*30cm/60*55*20cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(267,1064000,'产品标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(268,1064000,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(269,1064000,'颜色','米色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(270,1064002,'尺寸','40R/60R','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(271,1064002,'产品标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(272,1064002,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(273,1064002,'填充物重量','110g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(274,1064002,'颜色','蓝白','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(275,1064003,'产品标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(276,1064003,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(277,1064003,'尺寸','29*19cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(278,1064003,'颜色','藏青色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(279,1064004,'产品标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(280,1064004,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(281,1064004,'规格','32*32*32cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(282,1064004,'颜色','牛仔条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(283,1064006,'尺寸','50x30x10-6cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(284,1064006,'重量','0.87kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(285,1064006,'外层面料','40%棉60%聚酯纤维（接触皮肤面全棉）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(286,1064006,'里层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(287,1064006,'内芯','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(288,1064007,'规格','135x36x10-7cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(289,1064007,'重量','2.3kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(290,1064007,'外层面料','40%棉60%聚酯纤维（接触皮肤面全棉）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(291,1064007,'里层面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(292,1064007,'内芯','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(293,1064021,'颜色','本白','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(294,1064021,'执行标准','GB 7000.11-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(295,1064021,'额定电压','220-240V','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(296,1064021,'型号','T710','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(297,1064021,'温馨提示','本产品不包含灯泡','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(298,1064021,'产地','中国中山','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(299,1064022,'颜色','本白','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(300,1064022,'执行标准','GB 7000.11-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(301,1064022,'型号','F710','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(302,1064022,'额定电压','220-240V','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(303,1064022,'温馨提示','本产品不包含灯泡','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(304,1064022,'产地','中国中山','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(305,1065004,'尺寸','150*30cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(306,1065004,'颜色','原木色/ 棕色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(307,1065004,'执行标准','GB/T 23148-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(308,1065004,'产地','中国苏州','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(309,1065004,'温馨提示','原木色为水曲柳贴皮，棕色为胡桃木贴皮。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(310,1065005,'尺寸','150*28cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(311,1065005,'颜色','棕色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(312,1065005,'执行标准','GB/T 23148-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(313,1065005,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(314,1068010,'填充物重量','1300g/1560g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(315,1068010,'尺寸','1.5*2m/1.8*2m','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(316,1068010,'外层面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(317,1068010,'填充物','100%羊毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(318,1068010,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(319,1068010,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(320,1068010,'厚度','3cm+-视商品干燥情况有少量浮动','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(321,1068011,'填充物','60%、90%驼绒/40%、10%驼毛','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(322,1068011,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(323,1068011,'尺寸','200*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(324,1068011,'填充物重量','2000g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(325,1068012,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(326,1068012,'颜色','灰紫/ 浅咖色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(327,1068012,'印染工艺','色织工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(328,1068012,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(329,1068012,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。 严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(330,1068012,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(331,1068012,'材质','面料：100%棉  填充物：65% 棉/ 35%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(332,1071004,'尺寸','48*38*13cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(333,1071004,'配色','黑红/白姜黄','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(334,1071004,'材质','聚丙烯树脂','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(335,1071004,'执行标准','GB 9688-1988','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(336,1071004,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(337,1071005,'尺寸','185*160*100MM','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(338,1071005,'材料','聚丙烯树脂','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(339,1071005,'执行标准','GB 9688-1988','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(340,1071005,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(341,1071006,'规格','200*60mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(342,1071006,'材料','聚丙烯树脂','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(343,1071006,'执行标准','GB 9688-1988','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(344,1072000,'颜色','象牙白/ 芥子黄/ 银铅色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(345,1072000,'尺寸','45*45cm/ 66*66cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(346,1072000,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(347,1072000,'工艺','手工编织','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(348,1072000,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(349,1072000,'温馨提示','此产品不含抱枕芯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(350,1072001,'颜色','缥蓝色/ 薄灰色/ 象牙色/ 赤紫色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(351,1072001,'尺寸','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(352,1072001,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(353,1072001,'工艺','色织水洗','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(354,1072001,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(355,1072001,'温馨提示','此产品不含抱枕芯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(356,1075023,'规格','48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(357,1075023,'填充物','20%白鸭绒+80%白鹅毛片','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(358,1075023,'填充物重量','200g白鸭绒+800g白鹅毛片','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(359,1075023,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(360,1075023,'执行标准','QB/T 1194-2012','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(361,1075024,'填充成分','白鹅绒','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(362,1075024,'含绒量','95%','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(363,1075024,'面料','100%纯棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(364,1075024,'面料参数','120支 500根','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(365,1075024,'填充物重量','1500g/1700g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(366,1075024,'尺寸','200*230cm/220*240cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(367,1075024,'工艺','双层立衬','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(368,1081000,'尺寸','35*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(369,1081000,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(370,1081000,'产地','浙江杭州','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(371,1081000,'材质','100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(372,1081002,'尺寸','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(373,1081002,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(374,1081002,'材质','100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(375,1081002,'产地','浙江杭州','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(376,1083009,'鲜花','厄瓜多尔玫瑰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(377,1083009,'朵数','1朵','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(378,1083009,'颜色','妖姬蓝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(379,1083009,'尺寸','17*17*12cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(380,1083009,'花材种植地','厄瓜多尔','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(381,1083010,'鲜花主材','奥斯汀玫瑰、泉水玫瑰、绣球','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(382,1083010,'鲜花辅材','棉毛苏叶、细爪草、褐色果、满天星','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(383,1083010,'颜色','柔情粉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(384,1083010,'尺寸','17*17*12cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(385,1083010,'花材种植地','日本','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(386,1083010,'*温馨提示','由于花材的季节性供应特点，个别配材会有所调整，且因花材批次不同会有一定微小色差，不会影响整体花盒效果。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(387,1084001,'材质','100%纯棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(388,1084001,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(389,1084001,'产品标准','FZ/T 61001-2006','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(390,1084001,'安全技术','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(391,1084001,'温馨提示','1.纯棉毯采取传统针织工艺，纯天然织造的，使用前建议清洗一遍去除少量浮尘。\\n2.商品为纯棉织造而成，若有少量气味请通风2-3天去除。\\n3.纯棉针织盖毯清洗数次之后，可能存在微量变形，建议干洗。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(392,1084001,'重量','1280g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(393,1084003,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(394,1084003,'尺寸','150*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(395,1084003,'产品标准','FZ/T 61001-2006','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(396,1084003,'安全技术','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(397,1084003,'温馨提示','1.纯棉毯采取传统针织工艺，纯天然织造的，使用前建议清洗一遍去除少量浮尘。\\n2.商品为纯棉织造而成，若有少量气味请通风2-3天去除。\\n3.纯棉针织盖毯清洗数次之后，可能存在微量变形，建议干洗。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(398,1084003,'重量','1115g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(399,1086015,'颜色','本白/ 哑黑/ 姜黄','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(400,1086015,'执行标准','GB 7000.11-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(401,1086015,'产地','中国广东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(402,1086015,'型号','MT20290-1-130','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(403,1086015,'温馨提示','本产品不含灯泡','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(404,1086023,'材质','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(405,1086023,'搭扣','锌合金','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(406,1086023,'拉带规格','120cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(407,1086023,'颈圈规格','30-45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(408,1086024,'材质','100%锦纶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(409,1086024,'搭扣','锌合金','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(410,1086024,'颈圈','30-45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(411,1086024,'拉带','120cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(412,1086025,'材质','100%锦纶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(413,1086025,'搭扣','锌合金','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(414,1086025,'拉带规格','120cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(415,1086025,'产品标准','FZ/T 63005-2010','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(416,1086026,'材质','100%锦纶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(417,1086026,'搭扣','锌合金','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(418,1086026,'颈圈尺寸','30-45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(419,1086026,'拉带尺寸','120cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(420,1090004,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床笠：150*200*25cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床笠：180*200*25cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(421,1090004,'颜色','红色格子/ 蓝色格子/ 绿色格子/ 灰色格子','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(422,1090004,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(423,1090004,'工艺','色织工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(424,1090004,'温馨提示','1：纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。 严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。\\n2：不同批次面料和拉链稍有差异，请以实物为准。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(425,1092024,'尺寸','200*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(426,1092024,'填充物','100%桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(427,1092024,'填充物重量','1500g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(428,1092024,'外套','100%纯棉纱布','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(429,1092024,'执行标准','GB/T 24252-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(430,1092024,'安全技术类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(431,1092038,'尺寸','470*128*13mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(432,1092038,'材质','天然桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(433,1092038,'重量','200g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(434,1092038,'颜色','GB/T 28495-2012','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(435,1092039,'尺寸','385mmX385mmX135mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(436,1092039,'重量','950g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(437,1092039,'材质','美卡瓦楞纸板','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(438,1092039,'颜色','本色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(439,1093000,'材质','PU+PE（枝干）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(440,1093000,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(441,1093000,'长度','81cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(442,1093000,'花草种类','木棉花','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(443,1093001,'材质','PU+PE（枝干）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(444,1093001,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(445,1093001,'长度','35cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(446,1093001,'花草种类','马蹄莲','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(447,1093001,'数量','一束（9朵）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(448,1093002,'材质','PU+玻璃','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(449,1093002,'颜色','白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(450,1093002,'长度','33cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(451,1093002,'花草种类','木棉花','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(452,1097004,'材质','北美白橡木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(453,1097004,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(454,1097004,'产品尺寸','1400/1600*820*750mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(455,1097004,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(456,1097005,'材质','北美白橡木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(457,1097005,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(458,1097005,'产品尺寸','430*520*870mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(459,1097005,'安装方式','无需组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(460,1097006,'材质','北美白橡木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(461,1097006,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(462,1097006,'产品尺寸','600*600*550mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(463,1097006,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(464,1097007,'材质','北美白橡木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(465,1097007,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(466,1097007,'产品尺寸','600*600*530/650mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(467,1097007,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(468,1097009,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(469,1097009,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(470,1097009,'产品尺寸','1000/1200*580*910mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(471,1097009,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(472,1097011,'材质','北美白橡木+床铺板松木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(473,1097011,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(474,1097011,'产品尺寸','2065*2188*1088mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(475,1097011,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(476,1097012,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(477,1097012,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(478,1097012,'产品尺寸','480*400*550mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(479,1097012,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(480,1097013,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(481,1097013,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(482,1097013,'产品尺寸','800*430*1100mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(483,1097013,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(484,1097014,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(485,1097014,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(486,1097014,'产品尺寸','860*400*1200mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(487,1097014,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(488,1097016,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(489,1097016,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(490,1097016,'产品尺寸','1800*450*525mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(491,1097016,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(492,1097017,'材质','北美白橡木+抽屉背板桐木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(493,1097017,'涂漆','环保涂漆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(494,1097017,'产品尺寸','1200*600*450mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(495,1097017,'安装方式','需要组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(496,1100000,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(497,1100000,'执行标准','GB/T 22796-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(498,1100000,'颜色','石板灰/ 烟褐色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(499,1100000,'尺寸','48*74cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(500,1100000,'工艺','水洗工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(501,1100000,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(502,1100000,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(503,1100001,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(504,1100001,'执行标准','GB/T 22797-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(505,1100001,'颜色','石板灰/ 烟褐色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(506,1100001,'尺寸','245*250cm/ 245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(507,1100001,'工艺','水洗工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(508,1100001,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(509,1100001,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(510,1100002,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(511,1100002,'执行标准','GB/T 22797-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(512,1100002,'尺寸','150*200*25cm/ 180*200*25cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(513,1100002,'颜色','石板灰/ 烟褐色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(514,1100002,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(515,1100002,'工艺','水洗工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(516,1100002,'温馨提示','纺织品经历印染、织造等多道环节，产品初次拿到可能有些许味道，清水漂洗、晾干后味道即可散去。\\n严选面料全部经过国标检测认证，选用环保活性染料，请放心使用。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(517,1108029,'规格尺寸','290*260*380mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(518,1108029,'材料','美耐皿树脂\\n硅胶\\n201不锈钢（奥氏体型）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(519,1108029,'执行标准','GB 9684-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(520,1108030,'尺寸','177*88*51mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(521,1108030,'材料','美耐皿树脂、聚碳酸酯（pc）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(522,1108030,'执行标准','QB 1999-1994','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(523,1108031,'规格尺寸','S 145*133*75mm\\nM 187.4*172.5*97.4mm\\nL 232*213*122.2mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(524,1108031,'材料','美耐皿树脂、201不锈钢（奥氏体型）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(525,1108031,'执行标准','GB 9684-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(526,1108032,'规格尺寸','S 128*88*55mm\\nM 150*100*72mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(527,1108032,'材料','硅胶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(528,1108032,'执行标准','GB 4806.1-1994','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(529,1109004,'尺寸','10寸/12寸','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(530,1109004,'机芯','太阳机芯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(531,1109004,'材质','水柳木/胡桃木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(532,1109004,'能源','5号电池*1（本产品不含电池）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(533,1109005,'材质','榉木','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(534,1109005,'尺寸','12*4.5*12cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(535,1109005,'机芯类型','扫秒机芯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(536,1109005,'颜色','原木色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(537,1109005,'能源','5号电池*1','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(538,1109008,'填充物','颗粒海绵','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(539,1109008,'框架材质','国际标准钢管','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(540,1109008,'面料成分','15%亚麻+85%涤','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(541,1109008,'颜色','米白色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(542,1109008,'是否组装','组装【沙发脚】','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(543,1109008,'产品尺寸','2P:1300*930*930mm;   1P:680*930*930mm;    0.5P:670*450*380mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(544,1109034,'颜色','象牙白','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(545,1109034,'执行标准','GB/T22779-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(546,1109034,'尺寸','9.8 x 3.05 x 5.8cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(547,1110002,'材质','ABS树脂+PP树脂','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(548,1110002,'USB线长','约1m','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(549,1110002,'尺寸','102mm*130mm*85mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(550,1110002,'颜色','本白/冷灰/樱花粉/静谧蓝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(551,1110003,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(552,1110003,'尺寸','1.5米床品（床笠款）： 被套 200*230cm/ 枕套：48*74cm*2/ 床笠：150*200*28cm\\n1.8米床品（床笠款）：被套 220*240cm/ 枕套：48*74cm*2/ 床笠：180*200*28cm\\n1.5米床品（床单款）： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品（床单款）：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(553,1110003,'执行标准','GB/T22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(554,1110003,'颜色','烟草绿/ 木兰黄/ 深茶褐/ 丁子灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(555,1110003,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(556,1110004,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(557,1110004,'尺寸','1.5米床品（床笠款）： 被套 200*230cm/ 枕套：48*74cm*2/ 床笠：150*200*28cm\\n1.8米床品（床笠款）：被套 220*240cm/ 枕套：48*74cm*2/ 床笠：180*200*28cm\\n1.5米床品（床单款）： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品（床单款）：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(558,1110004,'执行标准','GB/T22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(559,1110004,'颜色','烟草绿/ 深茶褐/ 丁子灰/ 木兰黄/ 茶香粉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(560,1110004,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(561,1110007,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(562,1110007,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床笠：150*200*28cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床笠：180*200*28cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(563,1110007,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(564,1110007,'印染工艺','色织工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(565,1110007,'颜色','松柏绿/ 枯茶褐/ 灰白/ 石竹咖','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(566,1110007,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(567,1110008,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(568,1110008,'尺寸','1.5M床：245*250cm\\n1.8M床：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(569,1110008,'颜色','天蓝色/ 烟草色/ 茶香粉/ 蜜橙/ 千岁绿/ 荧光绿/ 青蓝/ 伽罗色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(570,1110008,'执行标准','GB 18401-2009 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(571,1110008,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(572,1110013,'规格','S号 最长拉伸2.5m\\nM号 最长拉伸4m','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(573,1110013,'承重范围','s  15公斤以下\\nm  30公斤以下','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(574,1110013,'材料','塑胶（ABS TPR）\\n耐拉反光涤纶带\\n锌合金钩','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(575,1110013,'执行标准','Q/PM002-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(576,1110013,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(577,1110014,'规格','S号 最长拉绳2.5m\\nM号 最长拉伸4m','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(578,1110014,'承重范围','15-30kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(579,1110014,'材质','塑胶（ABS TPR）\\n耐拉反光涤纶带\\n锌合金钩','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(580,1110014,'颜色','日式木纹色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(581,1110014,'执行标准','Q/PM002-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(582,1110014,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(583,1110015,'规格','S号 最长拉绳2.5M','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(584,1110015,'承重范围','S 10-15kg\\nM 15-30KG','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(585,1110015,'材料','塑胶（ABS TPR）\\n高强耐拉反光涤纶带\\n锌合金钩','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(586,1110015,'颜色','迷彩','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(587,1110015,'执行标准','Q/PM002-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(588,1110015,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(589,1110016,'尺寸','188*98*30MM','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(590,1110016,'材料','塑胶（ABS PVC）硅胶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(591,1110016,'颜色','蓝色/粉色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(592,1110016,'执行标准','Q/PM001-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(593,1110016,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(594,1110016,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(595,1110016,'温馨提示','因宠物模特选择范围有限，故让小萨出镜，其实这款更适合猫咪和小狗用哦。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(596,1110017,'规格','小剪刀*1+中号理毛梳*1+针梳*1','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(597,1110017,'材料','合金钢、不锈钢针、塑胶（PP TPR）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(598,1110017,'颜色','白黑','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(599,1110017,'执行标准','Q/PM001-2016\\nQ/PM003-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(600,1110017,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(601,1110018,'规格','大剪刀*1+大号钢针梳*1+双排针梳*1','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(602,1110018,'材料','合金钢、不锈钢针、塑胶（PP TPR）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(603,1110018,'颜色','白黑','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(604,1110018,'执行标准','Q/PM001-2016\\nQ/PM003-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(605,1110018,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(606,1110019,'规格','宠物安全指甲剪+指甲锉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(607,1110019,'材料','合金钢 \\n塑胶（TPR）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(608,1110019,'执行标准','Q/PM003-2016','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(609,1110019,'安全类别','符合RoHs六项检测','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(610,1115023,'尺寸','200*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(611,1115023,'填充物重量','1500g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(612,1115023,'执行标准','GB/T 24252-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(613,1115023,'填充物','100%桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(614,1115023,'外套','100%纯棉纱布','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(615,1115023,'安全技术类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(616,1115028,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(617,1115028,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床笠：150*200*28cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床笠：180*200*28cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(618,1115028,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(619,1115028,'印染工艺','色织工艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(620,1115028,'颜色','黑茶条纹/ 若绿条纹/ 缥蓝条纹/ 素麻条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(621,1115028,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(622,1115052,'尺寸','直径50cm*高5cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(623,1115052,'材质','席面：蔺草/ 包边：65%聚酯纤维 35%棉 / 内芯：EPE','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(624,1115052,'执行标准','QB/T 2934-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(625,1115052,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(626,1115053,'尺寸','1.5米草席： 草席：150*195cm/ 枕套：48*74cm*2\\n1.8米草席：草席：180*200cm/ 枕套：枕套：48*74cm*2','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(627,1115053,'材质','席面：蔺草/  枕套面：蔺草/ 包边：65% 聚酯纤维  35% 棉/ 枕套背面：100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(628,1115053,'执行标准','QB/T 2934-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(629,1115053,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(630,1116030,'花材','厄瓜多尔玫瑰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(631,1116030,'附加功能','音乐盒','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(632,1116030,'产品尺寸','直径10.5cm*高17cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(633,1116030,'颜色','黑色花朵+粉色底座','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(634,1116031,'花材','厄瓜多尔玫瑰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(635,1116031,'附加功能','音乐盒','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(636,1116031,'产品尺寸','直径10.5cm*高17cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(637,1116031,'颜色','渐变粉花朵+灰色底座','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(638,1116032,'主体材质','铝合金+布艺','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(639,1116032,'填充物','高回弹海绵','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(640,1116032,'躺椅尺寸','840*1250*1090mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(641,1116032,'脚蹬尺寸','550*445*450mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(642,1116032,'安装方式','自行组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(643,1116032,'*特别提醒','1.周六日暂无法发货，周末订单延至周一发货，请知悉！\\n2.本产品配送范围：江浙沪、安徽、山东、福建、江西、湖北、河南、北京、天津、湖南、河北、山西、陕西、重庆、四川、海南、广西、贵州、云南、广东、辽宁、甘肃、宁夏、青海、内蒙古、吉林、黑龙江、新疆、西藏（航空件）\\n3.本产品配送整件，不包安装，收到货物后，请自行按照产品说明书进行组装。如果组装时碰到无法解决的问题，可联系客服获取指导。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(644,1116033,'椅身材质','高弹力进口网布','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(645,1116033,'扶手材质','PU','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(646,1116033,'框架材质','烤漆钢+工程塑料','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(647,1116033,'椅轮','PA万向椅轮','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(648,1116033,'气杆','三弘气压杆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(649,1116033,'产品尺寸','700*700*1160mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(650,1116033,'安装方式','自行组装','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(651,1116033,'*特别提醒','1.周六日暂无法发货，周末订单延至周一发货，请知悉！\\n2.本产品配送范围：江浙沪、安徽、山东、福建、江西、湖北、河南、北京、天津、湖南、河北、山西、陕西、重庆、四川、海南、广西、贵州、云南、广东、辽宁、甘肃、宁夏、青海、内蒙古、吉林、黑龙江、新疆、西藏（航空件）\\n3.本产品配送整件，不包安装，收到货物后，请自行按照产品说明书进行组装。如果组装时碰到无法解决的问题，可联系客服获取指导。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(652,1125016,'材质','树脂','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(653,1125016,'颜色','黄色/蓝色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(654,1125016,'尺寸','129mm*96mm*302mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(655,1125016,'摆件类型','收纳型桌面摆件','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(656,1125017,'材质','陶瓷','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(657,1125017,'颜色','粉色/哑黑','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(658,1125017,'尺寸','160mm*145mm*135mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(659,1125017,'摆件类型','桌面摆件','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(660,1127003,'执行标准','QB/T 1952.2-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(661,1127003,'弹簧结构特征','独立袋装弹簧','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(662,1127003,'使用场所','卧室、榻榻米','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(663,1127003,'主要原材料','进口乳胶','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(664,1127003,'辅料','软硬质海绵','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(665,1127003,'高度','25cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(666,1127003,'配送范围','以客服回复可配送范围为准','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(667,1127003,'重量','150*200cm  54+-3kg\\n180*200cm   62+-3kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(668,1127038,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(669,1127038,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(670,1127038,'颜色','星空蓝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(671,1127038,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(672,1127038,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(673,1127039,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(674,1127039,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(675,1127039,'颜色','青粉拼接','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(676,1127039,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(677,1127039,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(678,1127052,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(679,1127052,'填充物','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(680,1127052,'执行标准','GB/T22796-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(681,1127052,'安全技术类别','GB18401-2010 A类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(682,1127052,'规格','150*200cm/180*200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(683,1128002,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(684,1128002,'颜色','青粉拼接','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(685,1128002,'产地','中国北京','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(686,1128002,'材质','绒面：100% 聚酯纤维 背面：52% 聚酯纤维/ 48% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(687,1130037,'规格','40*40*7cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(688,1130037,'填充物','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(689,1130037,'填充物克重','330g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(690,1130037,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(691,1130037,'颜色','米白/深褐','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(692,1130037,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(693,1130037,'安全技术类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(694,1130038,'填充物','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(695,1130038,'填充物重量','340g/725g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(696,1130038,'面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(697,1130038,'执行标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(698,1130038,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(699,1130038,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(700,1130039,'填充物','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(701,1130039,'面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(702,1130039,'填充物重量','170g/250g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(703,1130039,'执行标准','FZ/T 62011.3-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(704,1130041,'规格','45*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(705,1130041,'重量','0.4-0.6kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(706,1130041,'材料','面100%羊毛皮\\n衬100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(707,1130041,'执行标准','QB/T2972-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(708,1130042,'规格','小号：90*50cm+-2\\n双拼：180*55cm+-2','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(709,1130042,'重量','小号：0.6-0.9kg\\n双拼：1.2-2kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(710,1130042,'材料','100%羊毛皮','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(711,1130042,'执行标准','QB/T 2972-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(712,1130042,'产品等级','一等品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(713,1130042,'备注','黑色商品接触液体会有少量掉色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(714,1130049,'面料','65%莱赛尔（天丝）35%亚麻','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(715,1130049,'填充物','100%桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(716,1130049,'执行标准','GB/T 24252-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(717,1130049,'安全类别','GB 18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(718,1130049,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(719,1130049,'填充物克重','360g（小）/470g（大）','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(720,1130056,'材质','席面：头层牛皮革/ 枕套面：头层牛皮革/ 枕套背面：100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(721,1130056,'尺寸','1.5米床：牛皮席：150x200cm/ 枕套：74x48cmx2\\n1.8米床：牛皮席：180x200cm/ 枕套：74x48cmx2','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(722,1130056,'鞣制方式','铬植结合鞣','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(723,1130056,'颜色','苋红色/ 象牙黄/ 橄榄棕/ 亮银灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(724,1130056,'执行标准','QB/T 4204-2011','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(725,1130056,'产地','中国重庆','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(726,1131017,'材质','席面：毛竹\\n包边：100%棉\\n背面：100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(727,1131017,'尺寸','150x195cm/ 180x200cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(728,1131017,'颜色','抹茶色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(729,1131017,'执行标准','LY/T 1843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(730,1131017,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(731,1134022,'材质','绒面：100% 聚酯纤维\\n背面：TPR','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(732,1134022,'颜色','多色条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(733,1134022,'尺寸','86*61cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(734,1134022,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(735,1134022,'执行标准','QB/T 3000-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(736,1134030,'规格尺寸','方形38*38*3cm\\n圆形 φ38*3cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(737,1134030,'填充物重量','方形：185g\\n圆形155g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(738,1134030,'面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(739,1134030,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(740,1134030,'安全类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(741,1134030,'产品等级','合格品','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(742,1134032,'规格尺寸','方形：380*380*30mm\\n圆形：φ380*30mm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(743,1134032,'填充物','聚氨酯','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(744,1134032,'填充物重量','方形：185g\\n圆形：155g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(745,1134032,'面料','100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(746,1134032,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(747,1134032,'安全技术类别','GB18401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(748,1134056,'材质','70%棉，30%莫代尔','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(749,1134056,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(750,1134056,'颜色','砖釉红/菡萏粉/浅豆绿/青丝灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(751,1134056,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(752,1134056,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(753,1135000,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(754,1135000,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(755,1135000,'颜色','蒂芙尼蓝/ 墨黑/ 亮橙/ 浅灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(756,1135000,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(757,1135000,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(758,1135001,'材质','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(759,1135001,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(760,1135001,'颜色','草绿色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(761,1135001,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(762,1135001,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(763,1135002,'材质','100% 桑蚕丝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(764,1135002,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(765,1135002,'颜色','浅杏粉/ 玛瑙红/ 烟白灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(766,1135002,'产地','中国四川','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(767,1135002,'执行标准','GB/T22796-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(768,1135050,'产品材质','PP塑料','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(769,1135050,'产品尺寸','52*42*40cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(770,1135050,'产品净重','2.105kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(771,1135050,'产品毛重','3.215kg','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(772,1135050,'执行标准','GB 9688-1988','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(773,1135050,'配送范围','请咨询客服','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(774,1135051,'材质','100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(775,1135051,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(776,1135051,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(777,1135051,'颜色','米色/ 蓝灰/ 烟灰/ 咖色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(778,1135051,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(779,1135051,'物理遮光率','80%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(780,1135052,'材质','36%黏胶纤维/  10%亚麻/ 54%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(781,1135052,'颜色','深卡其/ 米灰/ 灰蓝/ 粉橙','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(782,1135052,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(783,1135052,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(784,1135052,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(785,1135052,'物理遮光率','60%-70%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(786,1135053,'材质','47%黏胶纤维/  53%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(787,1135053,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(788,1135053,'颜色','山岩灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(789,1135053,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(790,1135053,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(791,1135053,'物理遮光率','70-80%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(792,1135054,'材质','36% 聚酯纤维 74% 粘胶纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(793,1135054,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(794,1135054,'颜色','蓝色/ 绿色/ 黄色/ 红色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(795,1135054,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(796,1135054,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(797,1135054,'物理遮光性','80%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(798,1135055,'材质','52% 黏胶纤维  48%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(799,1135055,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(800,1135055,'颜色','米灰几何纹/ 橙灰几何纹/ 蓝灰几何纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(801,1135055,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(802,1135055,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(803,1135055,'物理遮光率','70%-80%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(804,1135056,'材质','54% 黏胶纤维/ 46%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(805,1135056,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(806,1135056,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(807,1135056,'颜色','蓝条纹/ 粉条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(808,1135056,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(809,1135056,'物理遮光率','60%-70%左右','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(810,1135057,'材质','100% 聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(811,1135057,'尺寸','1.4 x 2.6M：适用于1.4M宽以下的窗户。\\n1.75 x 2.6M：适用于1.4M-1.75M宽的窗户。\\n2.25 x 2.6M：适用于1.75M-2.25M宽的窗户。\\n2.8 x 2.6M：适用于2.25M-2.8M宽的窗户。\\n3.5 x 2.6M：适用于2.8M-3.5M宽的窗户。\\n4.5 x 2.6M：适用于3.5M-4.5M宽的窗户。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(812,1135057,'执行标准','GB/T 19817-2005','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(813,1135057,'颜色','莹白','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(814,1135057,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(815,1135058,'规格','35*45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(816,1135058,'填充物','聚苯乙烯泡沫粒子','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(817,1135058,'填充物重量','260g','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(818,1135058,'面料','100%棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(819,1135058,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(820,1135058,'安全技术类别','GB 8401-2010 B类','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(821,1138000,'材质','面料: 96% 涤纶 4%氨纶\\n填充物：100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(822,1138000,'尺寸','直径40cm/ 直径55cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(823,1138000,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(824,1138000,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(825,1138000,'颜色','天青色/ 松叶绿/ 珊瑚红/ 姜黄色/ 香芋粉/ 卡其色/ 深咖色/ 海军蓝','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(826,1138001,'材质','抱枕套：100%棉\\n抱枕芯外壳：100%棉\\n绣线：100%聚酯纤维\\n填充：100%聚酯纤维','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(827,1138001,'颜色','静谧蓝/ 古典金/ 动感绿/ 浪漫粉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(828,1138001,'尺寸','45 x 45cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(829,1138001,'执行标准','GB/T 22843-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(830,1138001,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(831,1143015,'材质','席面：蔺草/ 包边：100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(832,1143015,'执行标准','QB/T 2934-2008','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(833,1143015,'产地','中国浙江','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(834,1143015,'颜色','抹茶色','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(835,1147045,'颜色','灰黄条纹','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(836,1147045,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(837,1147045,'材质','绒面：100% 聚酯纤维 背面：52% 聚酯纤维/ 48% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(838,1147045,'产地','中国北京','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(839,1147046,'颜色','条纹粉间','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(840,1147046,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(841,1147046,'材质','绒面：100% 聚酯纤维 背面：52% 聚酯纤维/ 48% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(842,1147046,'产地','中国北京','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(843,1147047,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(844,1147047,'材质','绒面：100% 聚酯纤维 背面：52% 聚酯纤维/ 48% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(845,1147047,'颜色','蓝粉拼接','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(846,1147047,'产地','中国北京','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(847,1147048,'尺寸','160*230cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(848,1147048,'颜色','蓝灰格','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(849,1147048,'材质','绒面：100% 聚酯纤维 背面：52% 聚酯纤维/ 48% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(850,1147048,'产地','中国北京','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(851,1151012,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(852,1151012,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(853,1151012,'颜色','素雅灰','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(854,1151012,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(855,1151012,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(856,1151013,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(857,1151013,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(858,1151013,'颜色','胭脂粉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(859,1151013,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(860,1151013,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(861,1152161,'材质','12%长麻/ 12%竹浆纤维/ 76%莱赛尔','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(862,1152161,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(863,1152161,'产地','中国江苏','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(864,1152161,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(865,1155000,'材质','100% 棉','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(866,1155000,'尺寸','1.5米床品： 被套 200*230cm/ 枕套：48*74cm*2/ 床单：245*250cm\\n1.8米床品：被套 220*240cm/ 枕套：48*74cm*2/ 床单：245*270cm','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(867,1155000,'颜色','条纹绿格','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(868,1155000,'执行标准','GB/T 22844-2009','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(869,1155000,'产地','中国山东','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(870,1181000,'规格','组合一：AB面独立弹簧床垫 进口乳胶150*200cm*1+可水洗抗菌防螨丝羽绒枕*2。\\n组合二：AB面独立弹簧床垫 进口乳胶180*200cm*1+可水洗抗菌防螨丝羽绒枕*2','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(871,1181000,'重要提醒','活动时间：5月8日0点-5月14日24点。\\n请在以上时间段内购买，其余时间均不可享受组合装优惠。','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(872,1006014,'尺寸','200*230cm/ 220*240cm','2018-10-26 21:27:13','2018-10-26 21:27:13',0),(873,1006014,'面料','100%棉','2018-10-26 21:27:13','2018-10-26 21:27:13',0),(874,1006014,'填充物','100%双宫茧桑蚕丝','2018-10-26 21:27:13','2018-10-26 21:27:13',0),(875,1006014,'填充物重量','0.5+1.5KG/1+2KG','2018-10-26 21:27:13','2018-10-26 21:27:13',0),(876,1006014,'温馨提示','天然桑蚕丝具有正常蛋白味道，通风晾晒2-3天即可散去','2018-10-26 21:27:13','2018-10-26 21:27:13',0);\n/*!40000 ALTER TABLE `litemall_goods_attribute` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_goods_product`\n--\n\nLOCK TABLES `litemall_goods_product` WRITE;\n/*!40000 ALTER TABLE `litemall_goods_product` DISABLE KEYS */;\nINSERT INTO `litemall_goods_product` VALUES (1,1181000,'[\\\"1.5m床垫*1+枕头*2\\\",\\\"浅杏粉\\\"]',999.00,100,'http://yanxuan.nosdn.127.net/1f67b1970ee20fd572b7202da0ff705d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,1181000,'[\\\"1.5m床垫*1+枕头*2\\\",\\\"玛瑙红\\\"]',1500.00,198,'quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-11-07 17:14:01',0),(3,1181000,'[\\\"1.5m床垫*1+枕头*2\\\",\\\"烟白灰\\\"]',1000.00,300,'http://yanxuan.nosdn.127.net/36f64a7161b67e7fb8ea45be32ecfa25.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,1181000,'[\\\"1.8m床垫*1+枕头*2\\\",\\\"浅杏粉\\\"]',1001.00,400,'http://yanxuan.nosdn.127.net/10022c73fa7aa75c2c0d736e96cc56d5.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(5,1181000,'[\\\"1.8m床垫*1+枕头*2\\\",\\\"玛瑙红\\\"]',2000.00,2,'quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(6,1181000,'[\\\"1.8m床垫*1+枕头*2\\\",\\\"烟白灰\\\"]',3000.00,0,'http://yanxuan.nosdn.127.net/36f64a7161b67e7fb8ea45be32ecfa25.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(7,1006002,'[\\\"标准\\\"]',899.00,100,'http://yanxuan.nosdn.127.net/8ab2d3287af0cefa2cc539e40600621d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(8,1006007,'[\\\"标准\\\"]',459.00,100,'http://yanxuan.nosdn.127.net/66425d1ed50b3968fed27c822fdd32e0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(9,1006010,'[\\\"标准\\\"]',659.00,100,'http://yanxuan.nosdn.127.net/8fe022126a2789d970f82853be13a5e6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(10,1006013,'[\\\"标准\\\"]',699.00,100,'http://yanxuan.nosdn.127.net/583812520c68ca7995b6fac4c67ae2c7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(11,1006014,'[\\\"标准\\\"]',1399.00,100,'http://yanxuan.nosdn.127.net/2b537159f0f789034bf8c4b339c43750.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(12,1006051,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/ad5a317216f9da495b144070ecf1f957.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(13,1009009,'[\\\"标准\\\"]',1999.00,100,'http://yanxuan.nosdn.127.net/9791006f25e26b2d7c81f41f87ce8619.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(14,1009012,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/a196b367f23ccfd8205b6da647c62b84.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(15,1009013,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/da56fda947d0f430d5f4cf4aba14e679.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(16,1009024,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/149dfa87a7324e184c5526ead81de9ad.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(17,1009027,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/71cfd849335c498dee3c54d1eb823c17.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(18,1010000,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/3bec70b85337c3eec182e54380ef7370.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(19,1010001,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/a8b0a5def7d64e411dd98bdfb1fc989b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(20,1011004,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/0984c9388a2c3fd2335779da904be393.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(21,1015007,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/a2045004de8a6225289376ad54317fc8.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(22,1019000,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/77c09feb378814be712741b273d16656.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(23,1019001,'[\\\"标准\\\"]',109.00,100,'http://yanxuan.nosdn.127.net/7644803ab19b3e398456aa5a54229363.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(24,1019002,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/0118039f7cda342651595d994ed09567.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(25,1019006,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/60c3707837c97a21715ecc3986a744ce.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(26,1020000,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/819fdf1f635a694166bcfdd426416e8c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(27,1021000,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/7191f2599c7fe44ed4cff7a76e853154.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(28,1021001,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/fd5a8622ee1a7dfd4b57b938ebf25b24.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(29,1021004,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/654b02045fde802b51d5bbf09a8b75f2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(30,1021010,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/25d734cc0b2eae8f63f9deb1e4ad5f64.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(31,1022000,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/5350e35e6f22165f38928f3c2c52ac57.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(32,1022001,'[\\\"标准\\\"]',349.00,100,'http://yanxuan.nosdn.127.net/bf8faee3b27b480f63b70056597b626d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(33,1023003,'[\\\"标准\\\"]',398.00,100,'http://yanxuan.nosdn.127.net/c39d54c06a71b4b61b6092a0d31f2335.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(34,1023012,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/07376e78bf4fb8a5aa8e6a0b1437c3ad.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(35,1023032,'[\\\"标准\\\"]',449.00,100,'http://yanxuan.nosdn.127.net/e0b928ada728c140f6965bb41f47407b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(36,1023034,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/715899c65c023bb4973fb0466a5b79d6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(37,1025005,'[\\\"标准\\\"]',268.00,100,'http://yanxuan.nosdn.127.net/49e26f00ca4d0ce00f9960d22c936738.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(38,1027004,'[\\\"标准\\\"]',249.00,100,'http://yanxuan.nosdn.127.net/6252f53aaf36c072b6678f3d8c635132.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(39,1029005,'[\\\"标准\\\"]',959.00,100,'http://yanxuan.nosdn.127.net/25fe52f44853eb45f610846991bc4d9d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(40,1030001,'[\\\"标准\\\"]',969.00,100,'http://yanxuan.nosdn.127.net/88dc5d80c6f84102f003ecd69c86e1cf.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(41,1030002,'[\\\"标准\\\"]',899.00,100,'http://yanxuan.nosdn.127.net/8b9328496990357033d4259fda250679.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(42,1030003,'[\\\"标准\\\"]',1469.00,100,'http://yanxuan.nosdn.127.net/1d1ab099dc0e254c15e57302e78e200b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(43,1030004,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/e84f2e3b3d39cfdc8af5c3954a877aae.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(44,1030005,'[\\\"标准\\\"]',899.00,100,'http://yanxuan.nosdn.127.net/86f57132793d3e3c924a7ba529849288.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(45,1030006,'[\\\"标准\\\"]',329.00,100,'http://yanxuan.nosdn.127.net/578ffec952eb25ff072d8ea1b676bfd2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(46,1033000,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/9aab9a0bf4fef8fe3dc8c732bc22d4b7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(47,1035006,'[\\\"标准\\\"]',56.00,100,'http://yanxuan.nosdn.127.net/ee92704f3b8323905b51fc647823e6e5.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(48,1036002,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/ffd7efe9d5225dff9f36d5110b027caa.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(49,1036013,'[\\\"标准\\\"]',109.00,100,'http://yanxuan.nosdn.127.net/da1bc2c10f7b2e53f2466bd23953b982.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(50,1036016,'[\\\"标准\\\"]',109.00,100,'http://yanxuan.nosdn.127.net/513d08057c69fdb7d19cc810e976118d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(51,1037011,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/a03ea6f4509439acdafcb7ceba1debe0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(52,1037012,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/ffd2c91c7cf9c6e0f630595f7679b95d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(53,1038004,'[\\\"标准\\\"]',359.00,100,'http://yanxuan.nosdn.127.net/4d3d3eaeb872860539d7faa59f9f84e9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(54,1039051,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/c8ca0600fa7ba11ca8be6a3173dd38c9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(55,1039056,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/3e14e82a44c3a250af63df4c29c572d0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(56,1043005,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/2a95b16f5b147cab4845641bee738a2e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(57,1044012,'[\\\"标准\\\"]',349.00,100,'http://yanxuan.nosdn.127.net/a803c68ea88e3116023b45ac9ea99510.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(58,1045000,'[\\\"标准\\\"]',28.00,100,'http://yanxuan.nosdn.127.net/b2adc3fd9b84a289a1be03e8ee400e61.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(59,1046001,'[\\\"标准\\\"]',8.90,100,'http://yanxuan.nosdn.127.net/74583e585825ecacb11f7c53d2021e00.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(60,1046002,'[\\\"标准\\\"]',9.90,100,'http://yanxuan.nosdn.127.net/eb486cfe807c4fe5696aa59cbcf1f96a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(61,1046044,'[\\\"标准\\\"]',349.00,100,'http://yanxuan.nosdn.127.net/2bfecfe58ea3ee0d554f2ed58e9ba30a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(62,1048005,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/ce980c16810a471dffff6aa8d7bac754.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(63,1051000,'[\\\"标准\\\"]',180.00,100,'http://yanxuan.nosdn.127.net/e564410546a11ddceb5a82bfce8da43d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(64,1051001,'[\\\"标准\\\"]',159.00,100,'http://yanxuan.nosdn.127.net/f53ed57d9e23fda7e24dfd0e0a50c5d1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(65,1051002,'[\\\"标准\\\"]',228.00,100,'http://yanxuan.nosdn.127.net/56f4b4753392d27c0c2ccceeb579ed6f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(66,1051003,'[\\\"标准\\\"]',148.00,100,'http://yanxuan.nosdn.127.net/6a54ccc389afb2459b163245bbb2c978.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(67,1055012,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/3d437c8d68e2ec3f3dd61001bf98f16e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(68,1055016,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/23e0203f1512f33e605f61c28fa03d2d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(69,1055022,'[\\\"标准\\\"]',4.90,100,'http://yanxuan.nosdn.127.net/c7c74a96eacb29455dbf557b840eaaf5.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(70,1056002,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/922fdbe007033f7a88f7ebc57c3d1e75.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(71,1057036,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/8a9ee5ba08929cc9e40b973607d2f633.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(72,1064000,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/ebe118f94ddafe82c4a8cd51da6ff183.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(73,1064002,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/48dbfe207b2203ef45055dcc9cedbe60.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(74,1064003,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/58ed94b63b39339e7814f1339013793c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(75,1064004,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/337da7094c1df295ca0f0b8baa55b2d5.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(76,1064006,'[\\\"标准\\\"]',129.00,100,'http://yanxuan.nosdn.127.net/35306b8e65932dd28a5628d0bb44a044.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(77,1064007,'[\\\"标准\\\"]',249.00,100,'http://yanxuan.nosdn.127.net/d7bd87f8cc1965b25be33a8aad53812b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(78,1064021,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/c83a3881704094ddd3970099ca77d115.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(79,1064022,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/a9c155e26d09e3c92b623f0472ed674a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(80,1065004,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/05977cf923857db0c44b405bd87b096b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(81,1065005,'[\\\"标准\\\"]',249.00,100,'http://yanxuan.nosdn.127.net/18b7be03bba9d01e4285fc443ea65bb1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(82,1068010,'[\\\"标准\\\"]',329.00,100,'http://yanxuan.nosdn.127.net/9ed4ff9642ea9cb776a20560647cd72b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(83,1068011,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/0e4ba6ed44fef8803c243e585b621ab7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(84,1068012,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/69145abddddd31ae8878ea7ca7297b4b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(85,1070000,'[\\\"标准\\\"]',26.00,100,'http://yanxuan.nosdn.127.net/8392725765cdd57fdae3f173877f4bda.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(86,1071004,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/f0abf2bf11c8d303212e4a0c1106bb73.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(87,1071005,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/07a47d73e2eb53b1a7939219a4e63618.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(88,1071006,'[\\\"标准\\\"]',9.90,100,'http://yanxuan.nosdn.127.net/d206e0d15955b4d76431a752f2c94f9f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(89,1072000,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/87cf3a17ad40bfdcdc3314ea4591a5e8.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(90,1072001,'[\\\"标准\\\"]',49.00,100,'http://yanxuan.nosdn.127.net/0e9d5954d7dc2477d9c46b730e05ab42.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(91,1073008,'[\\\"标准\\\"]',149.00,100,'http://yanxuan.nosdn.127.net/619e46411ccd62e5c0f16692ee1a85a0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(92,1074001,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/73567265b04a9998f64419186ddd8531.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(93,1075022,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/97ad483a94ed88216a989df83e39cbf0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(94,1075023,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/29bc800b9f1fa551bc3cd47b10e2a799.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(95,1075024,'[\\\"标准\\\"]',2399.00,100,'http://yanxuan.nosdn.127.net/ce4a1eb18ea518bf584620632509935f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(96,1081000,'[\\\"标准\\\"]',49.00,100,'http://yanxuan.nosdn.127.net/cc45baafad00405699552c187c64c512.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(97,1081002,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/380cfcd5d8bc22360de089f0b4eb11da.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(98,1083009,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/76e5c820f6bb71a26517ffa01f499871.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(99,1083010,'[\\\"标准\\\"]',469.00,100,'http://yanxuan.nosdn.127.net/b9a12d07f8f2d04d662d9340e68e6687.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(100,1084001,'[\\\"标准\\\"]',249.00,100,'http://yanxuan.nosdn.127.net/07f682d405c1d2ed343c210ac8f8862a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(101,1084003,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/cf40c167e7054fe184d49f19121f63c7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(102,1085019,'[\\\"标准\\\"]',349.00,100,'http://yanxuan.nosdn.127.net/65c955a7a98e84d44ca30bb88a591eac.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(103,1086015,'[\\\"标准\\\"]',249.00,100,'http://yanxuan.nosdn.127.net/d5c2ecfe0fb00cdd8b829975bab21a31.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(104,1086023,'[\\\"标准\\\"]',19.90,100,'http://yanxuan.nosdn.127.net/121a99e896b3e332c102eb5f6f9b3406.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(105,1086024,'[\\\"标准\\\"]',9.90,100,'http://yanxuan.nosdn.127.net/af899cfaa13f515ecb9cf9a33f41370a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(106,1086025,'[\\\"标准\\\"]',49.00,100,'http://yanxuan.nosdn.127.net/78eff56b293c8354bc9ac496fc2c5179.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(107,1086026,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/caecdaa37d9cbcff980cee0968911e34.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(108,1086052,'[\\\"标准\\\"]',859.00,100,'http://yanxuan.nosdn.127.net/93171a281c4ed272c007a050816e6f6c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(109,1090004,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/a3a92057f10e5e6e804c19ef495e3dee.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(110,1092001,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/8e35b003ce7895c39eeb073b1f61b1d7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(111,1092005,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/ab1992495e0370f09386d418ad45220d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(112,1092024,'[\\\"标准\\\"]',1599.00,100,'http://yanxuan.nosdn.127.net/f245a86dcb9f455217241e437b203926.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(113,1092025,'[\\\"标准\\\"]',19.90,100,'http://yanxuan.nosdn.127.net/56a46e9a4832587471c0f9ad7c1b7d85.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(114,1092026,'[\\\"标准\\\"]',19.90,100,'http://yanxuan.nosdn.127.net/83433f5a7ef69abda2544a53332a0fad.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(115,1092038,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/1aba9ed9c9160b9ca8e7de58ce4e46b1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(116,1092039,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/d8c18953bcb05f0b07d6b48e2d159ace.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(117,1093000,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/1a22cc488390b616e75afbbd94db6584.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(118,1093001,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/71fede861c3641d570a89a65ccf4525f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(119,1093002,'[\\\"标准\\\"]',49.00,100,'http://yanxuan.nosdn.127.net/48d95e820628610fcdcda30570d4379c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(120,1097004,'[\\\"标准\\\"]',1699.00,100,'http://yanxuan.nosdn.127.net/54f822e9c542d20566c7f70f90d52ae6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(121,1097005,'[\\\"标准\\\"]',1199.00,100,'http://yanxuan.nosdn.127.net/e5fd0724a05387615738173fb8f1570d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(122,1097006,'[\\\"标准\\\"]',999.00,100,'http://yanxuan.nosdn.127.net/bcf2a72face2c4221dfdc9b3c97d4062.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(123,1097007,'[\\\"标准\\\"]',759.00,100,'http://yanxuan.nosdn.127.net/b6e132180679b0673486145decc89aa3.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(124,1097009,'[\\\"标准\\\"]',1599.00,100,'http://yanxuan.nosdn.127.net/e7b68189ef2f77a28110c3fc7ca5a697.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(125,1097011,'[\\\"标准\\\"]',3899.00,100,'http://yanxuan.nosdn.127.net/fea36ef2514c904f4f45f1975f37f289.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(126,1097012,'[\\\"标准\\\"]',999.00,100,'http://yanxuan.nosdn.127.net/d659d5ce0efaa9baa43abb6e34a1d9fe.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(127,1097013,'[\\\"标准\\\"]',2699.00,100,'http://yanxuan.nosdn.127.net/2fa8cb066a356f47a3f0814e99fee7f2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(128,1097014,'[\\\"标准\\\"]',4199.00,100,'http://yanxuan.nosdn.127.net/308184b7b1965470d58b5c92e9bcc4b0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(129,1097016,'[\\\"标准\\\"]',2799.00,100,'http://yanxuan.nosdn.127.net/a7e6df722b82ad1b0158adcbdcf30df9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(130,1097017,'[\\\"标准\\\"]',2199.00,100,'http://yanxuan.nosdn.127.net/e16ff61bef76db81090db191b9d5ec15.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(131,1100000,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/15e40cfb6a78f557616814a815685fd4.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(132,1100001,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/a95285853138cbaf56e4ba729f2b8749.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(133,1100002,'[\\\"标准\\\"]',189.00,100,'http://yanxuan.nosdn.127.net/edf1945ef594c00920bdc727f4c5c7fd.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(134,1108029,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/fe52cd141b4b330db5627114b0e0e550.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(135,1108030,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/4891e60ff08ceed36d40a754e45e8742.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(136,1108031,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/e13e9697e01339c6cf7479eb81b3fbe2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(137,1108032,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/b1f9e1f700469f71fe3c4187ef53c99f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(138,1109004,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/d25b5990f16c6d1ac168a34b7aeca681.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(139,1109005,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/7f508253f65733c7b2af52dd3943ee28.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(140,1109008,'[\\\"标准\\\"]',3999.00,100,'http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(141,1109034,'[\\\"标准\\\"]',129.00,100,'http://yanxuan.nosdn.127.net/c2c96acc680cbadb1787385598e1e593.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(142,1110002,'[\\\"标准\\\"]',119.00,100,'http://yanxuan.nosdn.127.net/a7a524512c34d24a4b9762766dd9d0f0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(143,1110003,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/72dfb4bfc1cd1b834c064a9d1d40627d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(144,1110004,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/1ffd5831e63027715445f74a28f8c4ed.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(145,1110007,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/deeb55bb45f94cb236a47d1264e883b8.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(146,1110008,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/255a4888161f9b4fe530cf319f14551d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(147,1110013,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/6eb8d1c37142a5951b6242791c78146b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(148,1110014,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/cb4f78bd887059416c3df485e3f31366.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(149,1110015,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/56da5270172244be56c00fdc8eb24fae.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(150,1110016,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/3bd73b7279a83d1cbb50c0e45778e6d6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(151,1110017,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/534231583f82572398ec84bad425cdaf.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(152,1110018,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/d93aa5d6e7a296101cf4cb72613aeda6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(153,1110019,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/1e7e392b6fc9da99dc112197b7444eec.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(154,1111007,'[\\\"标准\\\"]',78.00,100,'http://yanxuan.nosdn.127.net/8d228f767b136a67aaf2cbbf6deb46fa.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(155,1111010,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/ef7efe55839e66993fb604dc3c2d9410.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(156,1113010,'[\\\"标准\\\"]',59.00,100,'http://yanxuan.nosdn.127.net/2d0920b51331bb1636330ad8e07d1b97.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(157,1113011,'[\\\"标准\\\"]',49.00,100,'http://yanxuan.nosdn.127.net/7a683f68fc988df299b5cfe6273d6fb7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(158,1113019,'[\\\"标准\\\"]',208.00,100,'http://yanxuan.nosdn.127.net/ad504bb389039ff35c4cd6ae912be87e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(159,1114011,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/196b5ce11930b4eadaec563cb0406634.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(160,1115023,'[\\\"标准\\\"]',1599.00,100,'http://yanxuan.nosdn.127.net/f3d1f0217ed250a37ea807f456351a51.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(161,1115028,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/3d0045e8f43439c7004fae052b2162ed.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(162,1115052,'[\\\"标准\\\"]',86.00,100,'http://yanxuan.nosdn.127.net/39dea35a3ea2361e4b054ee2f421af53.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(163,1115053,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/fabf9ac36751a2e1322135c56f1dc338.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(164,1116004,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/14d3a47ccf52815baf6df308be6db5a6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(165,1116005,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/71937456c3cd654f936f619201a79c09.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(166,1116008,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/149a09a391ea5a888debf50b9dc4ed7b.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(167,1116011,'[\\\"标准\\\"]',36.00,82,'http://yanxuan.nosdn.127.net/767b370d07f3973500db54900bcbd2a7.png','2018-02-01 00:00:00','2018-11-09 19:23:10',0),(168,1116030,'[\\\"标准\\\"]',439.00,100,'http://yanxuan.nosdn.127.net/9d59a22b5aff348b5aba5fc7e451ea4d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(169,1116031,'[\\\"标准\\\"]',439.00,100,'http://yanxuan.nosdn.127.net/f88c3dc42f3e4d7da1ded8c1ee6a97ba.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(170,1116032,'[\\\"标准\\\"]',3499.00,100,'http://yanxuan.nosdn.127.net/45176a783387751fc07a07f5031dd62c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(171,1116033,'[\\\"标准\\\"]',1399.00,100,'http://yanxuan.nosdn.127.net/f1dbf1d9967c478ee6def81ed40734a2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(172,1125010,'[\\\"标准\\\"]',159.00,100,'http://yanxuan.nosdn.127.net/f82995ccb2a2f6beddd4ad794f5da2a1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(173,1125011,'[\\\"标准\\\"]',139.00,100,'http://yanxuan.nosdn.127.net/be9740b734087f294f59a6560b932bc1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(174,1125016,'[\\\"标准\\\"]',139.00,100,'http://yanxuan.nosdn.127.net/46f3059b020eb3900e9af8e8c1af8a97.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(175,1125017,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/ae63fed274187e3e572043c53fefd836.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(176,1125026,'[\\\"标准\\\"]',159.00,100,'http://yanxuan.nosdn.127.net/6308c120c441fd3e47658167ad944156.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(177,1127003,'[\\\"标准\\\"]',2599.00,100,'http://yanxuan.nosdn.127.net/6ad1813d123f7a80f84c2cfa5f8c7caf.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(178,1127024,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/0a70f12a712e90d7d93beec4f686fe8e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(179,1127025,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/b2fe79c872a8a7f647264b5e51bcc802.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(180,1127038,'[\\\"标准\\\"]',359.00,100,'http://yanxuan.nosdn.127.net/addc278cf9c301dd535791df2e03b2ea.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(181,1127039,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/be64df0a04ade4cfd75bf7d4e8509ecc.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(182,1127047,'[\\\"标准\\\"]',29.00,98,'http://yanxuan.nosdn.127.net/6c03ca93d8fe404faa266ea86f3f1e43.png','2018-02-01 00:00:00','2018-11-07 17:38:13',0),(183,1127052,'[\\\"标准\\\"]',169.00,100,'http://yanxuan.nosdn.127.net/4f483526cfe3b953f403ae02049df5b9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(184,1128002,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/a1094a808ffb3a52a6cb13565a283d98.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(185,1128010,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/a84e8e6979f00efd9a728ed36b154753.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(186,1128011,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/d6e25ec5b4ad7aa37e077ce751b56f46.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(187,1129015,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/fc11a482efeece9630548d8b350e7f54.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(188,1129016,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/a7c7eec41194e65d64931a2d08ef4f8c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(189,1130037,'[\\\"标准\\\"]',39.00,100,'http://yanxuan.nosdn.127.net/19ecd7c6f6f31219cf75117238d95139.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(190,1130038,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/4d77296e02896675558f1a8a83742132.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(191,1130039,'[\\\"标准\\\"]',89.00,100,'http://yanxuan.nosdn.127.net/03c73e1f1ce1d2365e83b3230e507030.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(192,1130041,'[\\\"标准\\\"]',109.00,100,'http://yanxuan.nosdn.127.net/442b9d99c0e7f39efd7967e0e5987374.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(193,1130042,'[\\\"标准\\\"]',239.00,100,'http://yanxuan.nosdn.127.net/dc9d09334eb201fe9408ed604e549941.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(194,1130049,'[\\\"标准\\\"]',429.00,100,'http://yanxuan.nosdn.127.net/d88513f85b3617d734bde93af2c766c9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(195,1130056,'[\\\"标准\\\"]',2299.00,100,'http://yanxuan.nosdn.127.net/56e72b84a9bb66687c003ecdaba73816.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(196,1131017,'[\\\"标准\\\"]',259.00,100,'http://yanxuan.nosdn.127.net/2b6e2268ed712f1a336283f013abb7a1.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(197,1134022,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/a2b7489b4a2b1c09b66464cede4dabd7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(198,1134030,'[\\\"标准\\\"]',46.00,99,'http://yanxuan.nosdn.127.net/aa49dfe878becf768eddc4c1636643a6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(199,1134032,'[\\\"标准\\\"]',49.00,84,'http://yanxuan.nosdn.127.net/8b30eeb17c831eba08b97bdcb4c46a8e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(200,1134036,'[\\\"标准\\\"]',38.00,100,'http://yanxuan.nosdn.127.net/9356cc27b22bd47ad43913d13226555f.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(201,1134056,'[\\\"标准\\\"]',429.00,100,'http://yanxuan.nosdn.127.net/c29f47f58ba1e3c2ff5a193eec0b11d6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(202,1135000,'[\\\"标准\\\"]',359.00,100,'http://yanxuan.nosdn.127.net/53d0309471b570a7e12a3f01ba694491.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(203,1135001,'[\\\"标准\\\"]',459.00,100,'http://yanxuan.nosdn.127.net/f82ee85933d6f0cc95382215281d3526.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(204,1135002,'[\\\"标准\\\"]',2599.00,100,'http://yanxuan.nosdn.127.net/45548f26cfd0c7c41e0afc3709d48286.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(205,1135050,'[\\\"标准\\\"]',179.00,100,'http://yanxuan.nosdn.127.net/366f3f3f0e8971c8cf871e2b55b74ff2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(206,1135051,'[\\\"标准\\\"]',299.00,100,'http://yanxuan.nosdn.127.net/9126151f028a8804026d530836b481cb.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(207,1135052,'[\\\"标准\\\"]',259.00,100,'http://yanxuan.nosdn.127.net/63f5da1f5363af43aa91864bf66af48e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(208,1135053,'[\\\"标准\\\"]',429.00,100,'http://yanxuan.nosdn.127.net/1f9e34b1aadd14ea0c9c299c530d86ba.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(209,1135054,'[\\\"标准\\\"]',559.00,100,'http://yanxuan.nosdn.127.net/30d7daa0824fbb61b6c36175c8203349.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(210,1135055,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/87b6a608b99279ebf1764682e9e5fcec.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(211,1135056,'[\\\"标准\\\"]',259.00,100,'http://yanxuan.nosdn.127.net/536246ca4adb77274a94b18bb2f91f47.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(212,1135057,'[\\\"标准\\\"]',199.00,100,'http://yanxuan.nosdn.127.net/98c5e80b8e328687ce9c949314ebc41d.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(213,1135058,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/37bc0fa3524a904ac740340fa92bd515.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(214,1135065,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/055eb16f95fe995108dd683f532fda22.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(215,1135072,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/43e57d4208cdc78ac9c088f9b3e798f5.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(216,1135073,'[\\\"标准\\\"]',69.00,100,'http://yanxuan.nosdn.127.net/53052b04ae001d289c040e09ea92231c.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(217,1138000,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/ad953e16ad8c33b714e7af941ce8cd56.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(218,1138001,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/dbc5b25b824c3b3d7ff43b56ca35eee9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(219,1143006,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/2b48feb65954c6739be28d15b9fbfbe3.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(220,1143015,'[\\\"标准\\\"]',79.00,100,'http://yanxuan.nosdn.127.net/50e197854e0ada79c37b7215a1574450.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(221,1143016,'[\\\"标准\\\"]',319.00,100,'http://yanxuan.nosdn.127.net/e56c6239ee4a641ce2a4565c6babb43e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(222,1143018,'[\\\"标准\\\"]',68.00,100,'http://yanxuan.nosdn.127.net/d1fd69cee4990f4de1109baef30efeeb.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(223,1143019,'[\\\"标准\\\"]',98.00,100,'http://yanxuan.nosdn.127.net/277b07c1e5e6fb57cf9ca47fcd3903d5.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(224,1143020,'[\\\"标准\\\"]',168.00,100,'http://yanxuan.nosdn.127.net/200d4d59763af9a0781cca4a06175de7.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(225,1147045,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/5cda4a0c4c4ff9728d03186bd053c9ca.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(226,1147046,'[\\\"标准\\\"]',599.00,100,'http://yanxuan.nosdn.127.net/655d718df8107f8e7fd1dc6140e29039.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(227,1147047,'[\\\"标准\\\"]',559.00,100,'http://yanxuan.nosdn.127.net/bda805b0a2464b6ec33c18981565e50e.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(228,1147048,'[\\\"标准\\\"]',559.00,100,'http://yanxuan.nosdn.127.net/fd7920a2eadd10fa10c0c03959a2abe0.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(229,1151012,'[\\\"标准\\\"]',359.00,100,'http://yanxuan.nosdn.127.net/cb65635dbcef42b68ba21433f4948f5a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(230,1151013,'[\\\"标准\\\"]',359.00,100,'http://yanxuan.nosdn.127.net/73a8692048f58f15e823b636d7c3bb74.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(231,1152004,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/8c93cef435d888bd79833777df1cd0c2.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(232,1152008,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/203cb83d93606865e3ddde57b69b9e9a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(233,1152009,'[\\\"标准\\\"]',29.00,100,'http://yanxuan.nosdn.127.net/ae6d41117717387b82dcaf1dfce0cd97.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(234,1152031,'[\\\"标准\\\"]',99.00,100,'http://yanxuan.nosdn.127.net/fd6e78a397bd9e9804116a36f0270b0a.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(235,1152095,'[\\\"标准\\\"]',499.00,100,'http://yanxuan.nosdn.127.net/c86b49f635fa141decebabbd0966a6ef.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(236,1152097,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/532836444ae5eaec40b5810ca4f9b1e6.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(237,1152100,'[\\\"标准\\\"]',499.00,100,'http://yanxuan.nosdn.127.net/a667c4fbbd9c499c0733539d7e986617.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(238,1152101,'[\\\"标准\\\"]',888.00,100,'http://yanxuan.nosdn.127.net/c1c62211a17b71a634fa0c705d11fb42.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(239,1152161,'[\\\"标准\\\"]',459.00,100,'http://yanxuan.nosdn.127.net/977401e75113f7c8334c4fb5b4bf6215.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(240,1153006,'[\\\"标准\\\"]',1288.00,100,'http://yanxuan.nosdn.127.net/2743921b945a6c71fcdc3c5282a03413.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(241,1155000,'[\\\"标准\\\"]',399.00,100,'http://yanxuan.nosdn.127.net/d7d6ef1f1865991077384761b4521dce.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(242,1155015,'[\\\"标准\\\"]',12.90,100,'http://yanxuan.nosdn.127.net/66b9f1638c0517d179262f14ed1345f9.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(243,1156006,'[\\\"标准\\\"]',699.00,100,'http://yanxuan.nosdn.127.net/ea5b0a572b35089446fba491db7fbbc3.png','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(244,1166008,'[\\\"标准\\\"]',459.00,98,'http://yanxuan.nosdn.127.net/615a16e899e01efb780c488df4233f48.png','2018-02-01 00:00:00','2018-11-07 17:14:01',0);\n/*!40000 ALTER TABLE `litemall_goods_product` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_goods_specification`\n--\n\nLOCK TABLES `litemall_goods_specification` WRITE;\n/*!40000 ALTER TABLE `litemall_goods_specification` DISABLE KEYS */;\nINSERT INTO `litemall_goods_specification` VALUES (1,1181000,'规格','1.5m床垫*1+枕头*2','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,1181000,'规格','1.8m床垫*1+枕头*2','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,1181000,'颜色','浅杏粉','http://yanxuan.nosdn.127.net/10022c73fa7aa75c2c0d736e96cc56d5.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,1181000,'颜色','玛瑙红','http://yanxuan.nosdn.127.net/29442127f431a1a1801c195905319427.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(5,1181000,'颜色','烟白灰','http://yanxuan.nosdn.127.net/36f64a7161b67e7fb8ea45be32ecfa25.png?quality=90&thumbnail=200x200&imageView','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(6,1006002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(7,1006007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(8,1006010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(9,1006013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(10,1006014,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(11,1006051,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(12,1009009,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(13,1009012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(14,1009013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(15,1009024,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(16,1009027,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(17,1010000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(18,1010001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(19,1011004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(20,1015007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(21,1019000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(22,1019001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(23,1019002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(24,1019006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(25,1020000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(26,1021000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(27,1021001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(28,1021004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(29,1021010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(30,1022000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(31,1022001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(32,1023003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(33,1023012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(34,1023032,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(35,1023034,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(36,1025005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(37,1027004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(38,1029005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(39,1030001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(40,1030002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(41,1030003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(42,1030004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(43,1030005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(44,1030006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(45,1033000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(46,1035006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(47,1036002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(48,1036013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(49,1036016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(50,1037011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(51,1037012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(52,1038004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(53,1039051,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(54,1039056,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(55,1043005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(56,1044012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(57,1045000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(58,1046001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(59,1046002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(60,1046044,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(61,1048005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(62,1051000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(63,1051001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(64,1051002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(65,1051003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(66,1055012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(67,1055016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(68,1055022,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(69,1056002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(70,1057036,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(71,1064000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(72,1064002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(73,1064003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(74,1064004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(75,1064006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(76,1064007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(77,1064021,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(78,1064022,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(79,1065004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(80,1065005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(81,1068010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(82,1068011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(83,1068012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(84,1070000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(85,1071004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(86,1071005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(87,1071006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(88,1072000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(89,1072001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(90,1073008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(91,1074001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(92,1075022,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(93,1075023,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(94,1075024,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(95,1081000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(96,1081002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(97,1083009,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(98,1083010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(99,1084001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(100,1084003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(101,1085019,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(102,1086015,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(103,1086023,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(104,1086024,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(105,1086025,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(106,1086026,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(107,1086052,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(108,1090004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(109,1092001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(110,1092005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(111,1092024,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(112,1092025,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(113,1092026,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(114,1092038,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(115,1092039,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(116,1093000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(117,1093001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(118,1093002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(119,1097004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(120,1097005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(121,1097006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(122,1097007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(123,1097009,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(124,1097011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(125,1097012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(126,1097013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(127,1097014,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(128,1097016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(129,1097017,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(130,1100000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(131,1100001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(132,1100002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(133,1108029,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(134,1108030,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(135,1108031,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(136,1108032,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(137,1109004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(138,1109005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(139,1109008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(140,1109034,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(141,1110002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(142,1110003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(143,1110004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(144,1110007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(145,1110008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(146,1110013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(147,1110014,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(148,1110015,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(149,1110016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(150,1110017,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(151,1110018,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(152,1110019,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(153,1111007,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(154,1111010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(155,1113010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(156,1113011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(157,1113019,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(158,1114011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(159,1115023,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(160,1115028,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(161,1115052,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(162,1115053,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(163,1116004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(164,1116005,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(165,1116008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(166,1116011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(167,1116030,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(168,1116031,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(169,1116032,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(170,1116033,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(171,1125010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(172,1125011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(173,1125016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(174,1125017,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(175,1125026,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(176,1127003,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(177,1127024,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(178,1127025,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(179,1127038,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(180,1127039,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(181,1127047,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(182,1127052,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(183,1128002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(184,1128010,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(185,1128011,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(186,1129015,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(187,1129016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(188,1130037,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(189,1130038,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(190,1130039,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(191,1130041,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(192,1130042,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(193,1130049,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(194,1130056,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(195,1131017,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(196,1134022,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(197,1134030,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(198,1134032,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(199,1134036,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(200,1134056,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(201,1135000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(202,1135001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(203,1135002,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(204,1135050,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(205,1135051,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(206,1135052,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(207,1135053,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(208,1135054,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(209,1135055,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(210,1135056,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(211,1135057,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(212,1135058,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(213,1135065,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(214,1135072,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(215,1135073,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(216,1138000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(217,1138001,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(218,1143006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(219,1143015,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(220,1143016,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(221,1143018,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(222,1143019,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(223,1143020,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(224,1147045,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(225,1147046,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(226,1147047,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(227,1147048,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(228,1151012,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(229,1151013,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(230,1152004,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(231,1152008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(232,1152009,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(233,1152031,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(234,1152095,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(235,1152097,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(236,1152100,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(237,1152101,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(238,1152161,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(239,1153006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(240,1155000,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(241,1155015,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(242,1156006,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(243,1166008,'规格','标准','','2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_goods_specification` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_groupon`\n--\n\nLOCK TABLES `litemall_groupon` WRITE;\n/*!40000 ALTER TABLE `litemall_groupon` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_groupon` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_groupon_rules`\n--\n\nLOCK TABLES `litemall_groupon_rules` WRITE;\n/*!40000 ALTER TABLE `litemall_groupon_rules` DISABLE KEYS */;\nINSERT INTO `litemall_groupon_rules` VALUES (1,1039051,'多功能午睡枕','http://yanxuan.nosdn.127.net/c8ca0600fa7ba11ca8be6a3173dd38c9.png',20,20,'2019-12-31 00:00:00',0,'2018-11-08 13:41:44','2018-11-08 13:41:44',0),(2,1109008,'云端沙发组合','http://yanxuan.nosdn.127.net/c5be2604c0e4186a4e7079feeb742cee.png',50,5,'2019-12-31 00:00:00',0,'2018-11-08 13:42:44','2018-11-08 13:42:44',0),(3,1110016,'天然硅胶宠物除毛按摩刷','http://yanxuan.nosdn.127.net/3bd73b7279a83d1cbb50c0e45778e6d6.png',39,2,'2020-12-31 00:00:00',0,'2019-12-08 19:13:25','2019-12-08 19:13:25',0);\n/*!40000 ALTER TABLE `litemall_groupon_rules` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_issue`\n--\n\nLOCK TABLES `litemall_issue` WRITE;\n/*!40000 ALTER TABLE `litemall_issue` DISABLE KEYS */;\nINSERT INTO `litemall_issue` VALUES (1,'购买运费如何收取？','单笔订单金额（不含运费）满88元免邮费；不满88元，每单收取10元运费。\\n(港澳台地区需满','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,'使用什么快递发货？','严选默认使用顺丰快递发货（个别商品使用其他快递），配送范围覆盖全国大部分地区（港澳台地区除','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,'如何申请退货？','1.自收到商品之日起30日内，顾客可申请无忧退货，退款将原路返还，不同的银行处理时间不同，','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,'如何开具发票？','1.如需开具普通发票，请在下单时选择“我要开发票”并填写相关信息（APP仅限2.4.0及以','2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_issue` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_keyword`\n--\n\nLOCK TABLES `litemall_keyword` WRITE;\n/*!40000 ALTER TABLE `litemall_keyword` DISABLE KEYS */;\nINSERT INTO `litemall_keyword` VALUES (1,'母亲节','',0,0,100,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(2,'日式','',0,0,100,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(3,'夏凉被','',0,0,100,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(4,'新品上市','',0,0,100,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(5,'墨镜','',0,0,5,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(6,'520元礼包抢先领','',1,1,1,'2018-02-01 00:00:00','2018-02-01 00:00:00',0),(7,'单鞋','',0,0,8,'2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_keyword` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_log`\n--\n\nLOCK TABLES `litemall_log` WRITE;\n/*!40000 ALTER TABLE `litemall_log` DISABLE KEYS */;\nINSERT INTO `litemall_log` VALUES (1,'admin123','0:0:0:0:0:0:0:1',1,'登录',1,'','','2019-12-08 19:12:40','2019-12-08 19:12:40',0);\n/*!40000 ALTER TABLE `litemall_log` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_notice`\n--\n\nLOCK TABLES `litemall_notice` WRITE;\n/*!40000 ALTER TABLE `litemall_notice` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_notice` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_notice_admin`\n--\n\nLOCK TABLES `litemall_notice_admin` WRITE;\n/*!40000 ALTER TABLE `litemall_notice_admin` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_notice_admin` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_order`\n--\n\nLOCK TABLES `litemall_order` WRITE;\n/*!40000 ALTER TABLE `litemall_order` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_order` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_order_goods`\n--\n\nLOCK TABLES `litemall_order_goods` WRITE;\n/*!40000 ALTER TABLE `litemall_order_goods` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_order_goods` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_permission`\n--\n\nLOCK TABLES `litemall_permission` WRITE;\n/*!40000 ALTER TABLE `litemall_permission` DISABLE KEYS */;\nINSERT INTO `litemall_permission` VALUES (1,1,'*','2019-01-01 00:00:00','2019-01-01 00:00:00',0),(2,2,'admin:category:read','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(3,2,'admin:category:update','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(4,2,'admin:category:delete','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(5,2,'admin:category:create','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(6,2,'admin:category:list','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(7,2,'admin:brand:create','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(8,2,'admin:brand:list','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(9,2,'admin:brand:delete','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(10,2,'admin:brand:read','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(11,2,'admin:brand:update','2019-01-07 15:18:53','2019-01-07 15:18:53',0),(12,3,'admin:ad:list','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(13,3,'admin:ad:delete','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(14,3,'admin:ad:create','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(15,3,'admin:ad:update','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(16,3,'admin:ad:read','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(17,3,'admin:groupon:list','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(18,3,'admin:groupon:update','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(19,3,'admin:groupon:create','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(20,3,'admin:groupon:read','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(21,3,'admin:groupon:delete','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(22,3,'admin:topic:create','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(23,3,'admin:topic:read','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(24,3,'admin:topic:list','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(25,3,'admin:topic:delete','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(26,3,'admin:topic:update','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(27,3,'admin:coupon:list','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(28,3,'admin:coupon:delete','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(29,3,'admin:coupon:read','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(30,3,'admin:coupon:create','2019-01-07 15:18:57','2019-01-07 15:18:57',0),(31,3,'admin:coupon:update','2019-01-07 15:18:57','2019-01-07 15:18:57',0);\n/*!40000 ALTER TABLE `litemall_permission` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_region`\n--\n\nLOCK TABLES `litemall_region` WRITE;\n/*!40000 ALTER TABLE `litemall_region` DISABLE KEYS */;\nINSERT INTO `litemall_region` VALUES (1,0,'北京市',1,110000),(2,0,'天津市',1,120000),(3,0,'河北省',1,130000),(4,0,'山西省',1,140000),(5,0,'内蒙古自治区',1,150000),(6,0,'辽宁省',1,210000),(7,0,'吉林省',1,220000),(8,0,'黑龙江省',1,230000),(9,0,'上海市',1,310000),(10,0,'江苏省',1,320000),(11,0,'浙江省',1,330000),(12,0,'安徽省',1,340000),(13,0,'福建省',1,350000),(14,0,'江西省',1,360000),(15,0,'山东省',1,370000),(16,0,'河南省',1,410000),(17,0,'湖北省',1,420000),(18,0,'湖南省',1,430000),(19,0,'广东省',1,440000),(20,0,'广西壮族自治区',1,450000),(21,0,'海南省',1,460000),(22,0,'重庆市',1,500000),(23,0,'四川省',1,510000),(24,0,'贵州省',1,520000),(25,0,'云南省',1,530000),(26,0,'西藏自治区',1,540000),(27,0,'陕西省',1,610000),(28,0,'甘肃省',1,620000),(29,0,'青海省',1,630000),(30,0,'宁夏回族自治区',1,640000),(31,0,'新疆维吾尔自治区',1,650000),(32,1,'市辖区',2,110100),(33,2,'市辖区',2,120100),(34,3,'石家庄市',2,130100),(35,3,'唐山市',2,130200),(36,3,'秦皇岛市',2,130300),(37,3,'邯郸市',2,130400),(38,3,'邢台市',2,130500),(39,3,'保定市',2,130600),(40,3,'张家口市',2,130700),(41,3,'承德市',2,130800),(42,3,'沧州市',2,130900),(43,3,'廊坊市',2,131000),(44,3,'衡水市',2,131100),(45,3,'省直辖县级行政区划',2,139000),(46,4,'太原市',2,140100),(47,4,'大同市',2,140200),(48,4,'阳泉市',2,140300),(49,4,'长治市',2,140400),(50,4,'晋城市',2,140500),(51,4,'朔州市',2,140600),(52,4,'晋中市',2,140700),(53,4,'运城市',2,140800),(54,4,'忻州市',2,140900),(55,4,'临汾市',2,141000),(56,4,'吕梁市',2,141100),(57,5,'呼和浩特市',2,150100),(58,5,'包头市',2,150200),(59,5,'乌海市',2,150300),(60,5,'赤峰市',2,150400),(61,5,'通辽市',2,150500),(62,5,'鄂尔多斯市',2,150600),(63,5,'呼伦贝尔市',2,150700),(64,5,'巴彦淖尔市',2,150800),(65,5,'乌兰察布市',2,150900),(66,5,'兴安盟',2,152200),(67,5,'锡林郭勒盟',2,152500),(68,5,'阿拉善盟',2,152900),(69,6,'沈阳市',2,210100),(70,6,'大连市',2,210200),(71,6,'鞍山市',2,210300),(72,6,'抚顺市',2,210400),(73,6,'本溪市',2,210500),(74,6,'丹东市',2,210600),(75,6,'锦州市',2,210700),(76,6,'营口市',2,210800),(77,6,'阜新市',2,210900),(78,6,'辽阳市',2,211000),(79,6,'盘锦市',2,211100),(80,6,'铁岭市',2,211200),(81,6,'朝阳市',2,211300),(82,6,'葫芦岛市',2,211400),(83,7,'长春市',2,220100),(84,7,'吉林市',2,220200),(85,7,'四平市',2,220300),(86,7,'辽源市',2,220400),(87,7,'通化市',2,220500),(88,7,'白山市',2,220600),(89,7,'松原市',2,220700),(90,7,'白城市',2,220800),(91,7,'延边朝鲜族自治州',2,222400),(92,8,'哈尔滨市',2,230100),(93,8,'齐齐哈尔市',2,230200),(94,8,'鸡西市',2,230300),(95,8,'鹤岗市',2,230400),(96,8,'双鸭山市',2,230500),(97,8,'大庆市',2,230600),(98,8,'伊春市',2,230700),(99,8,'佳木斯市',2,230800),(100,8,'七台河市',2,230900),(101,8,'牡丹江市',2,231000),(102,8,'黑河市',2,231100),(103,8,'绥化市',2,231200),(104,8,'大兴安岭地区',2,232700),(105,9,'市辖区',2,310100),(106,10,'南京市',2,320100),(107,10,'无锡市',2,320200),(108,10,'徐州市',2,320300),(109,10,'常州市',2,320400),(110,10,'苏州市',2,320500),(111,10,'南通市',2,320600),(112,10,'连云港市',2,320700),(113,10,'淮安市',2,320800),(114,10,'盐城市',2,320900),(115,10,'扬州市',2,321000),(116,10,'镇江市',2,321100),(117,10,'泰州市',2,321200),(118,10,'宿迁市',2,321300),(119,11,'杭州市',2,330100),(120,11,'宁波市',2,330200),(121,11,'温州市',2,330300),(122,11,'嘉兴市',2,330400),(123,11,'湖州市',2,330500),(124,11,'绍兴市',2,330600),(125,11,'金华市',2,330700),(126,11,'衢州市',2,330800),(127,11,'舟山市',2,330900),(128,11,'台州市',2,331000),(129,11,'丽水市',2,331100),(130,12,'合肥市',2,340100),(131,12,'芜湖市',2,340200),(132,12,'蚌埠市',2,340300),(133,12,'淮南市',2,340400),(134,12,'马鞍山市',2,340500),(135,12,'淮北市',2,340600),(136,12,'铜陵市',2,340700),(137,12,'安庆市',2,340800),(138,12,'黄山市',2,341000),(139,12,'滁州市',2,341100),(140,12,'阜阳市',2,341200),(141,12,'宿州市',2,341300),(142,12,'六安市',2,341500),(143,12,'亳州市',2,341600),(144,12,'池州市',2,341700),(145,12,'宣城市',2,341800),(146,13,'福州市',2,350100),(147,13,'厦门市',2,350200),(148,13,'莆田市',2,350300),(149,13,'三明市',2,350400),(150,13,'泉州市',2,350500),(151,13,'漳州市',2,350600),(152,13,'南平市',2,350700),(153,13,'龙岩市',2,350800),(154,13,'宁德市',2,350900),(155,14,'南昌市',2,360100),(156,14,'景德镇市',2,360200),(157,14,'萍乡市',2,360300),(158,14,'九江市',2,360400),(159,14,'新余市',2,360500),(160,14,'鹰潭市',2,360600),(161,14,'赣州市',2,360700),(162,14,'吉安市',2,360800),(163,14,'宜春市',2,360900),(164,14,'抚州市',2,361000),(165,14,'上饶市',2,361100),(166,15,'济南市',2,370100),(167,15,'青岛市',2,370200),(168,15,'淄博市',2,370300),(169,15,'枣庄市',2,370400),(170,15,'东营市',2,370500),(171,15,'烟台市',2,370600),(172,15,'潍坊市',2,370700),(173,15,'济宁市',2,370800),(174,15,'泰安市',2,370900),(175,15,'威海市',2,371000),(176,15,'日照市',2,371100),(177,15,'莱芜市',2,371200),(178,15,'临沂市',2,371300),(179,15,'德州市',2,371400),(180,15,'聊城市',2,371500),(181,15,'滨州市',2,371600),(182,15,'菏泽市',2,371700),(183,16,'郑州市',2,410100),(184,16,'开封市',2,410200),(185,16,'洛阳市',2,410300),(186,16,'平顶山市',2,410400),(187,16,'安阳市',2,410500),(188,16,'鹤壁市',2,410600),(189,16,'新乡市',2,410700),(190,16,'焦作市',2,410800),(191,16,'濮阳市',2,410900),(192,16,'许昌市',2,411000),(193,16,'漯河市',2,411100),(194,16,'三门峡市',2,411200),(195,16,'南阳市',2,411300),(196,16,'商丘市',2,411400),(197,16,'信阳市',2,411500),(198,16,'周口市',2,411600),(199,16,'驻马店市',2,411700),(200,16,'省直辖县级行政区划',2,419000),(201,17,'武汉市',2,420100),(202,17,'黄石市',2,420200),(203,17,'十堰市',2,420300),(204,17,'宜昌市',2,420500),(205,17,'襄阳市',2,420600),(206,17,'鄂州市',2,420700),(207,17,'荆门市',2,420800),(208,17,'孝感市',2,420900),(209,17,'荆州市',2,421000),(210,17,'黄冈市',2,421100),(211,17,'咸宁市',2,421200),(212,17,'随州市',2,421300),(213,17,'恩施土家族苗族自治州',2,422800),(214,17,'省直辖县级行政区划',2,429000),(215,18,'长沙市',2,430100),(216,18,'株洲市',2,430200),(217,18,'湘潭市',2,430300),(218,18,'衡阳市',2,430400),(219,18,'邵阳市',2,430500),(220,18,'岳阳市',2,430600),(221,18,'常德市',2,430700),(222,18,'张家界市',2,430800),(223,18,'益阳市',2,430900),(224,18,'郴州市',2,431000),(225,18,'永州市',2,431100),(226,18,'怀化市',2,431200),(227,18,'娄底市',2,431300),(228,18,'湘西土家族苗族自治州',2,433100),(229,19,'广州市',2,440100),(230,19,'韶关市',2,440200),(231,19,'深圳市',2,440300),(232,19,'珠海市',2,440400),(233,19,'汕头市',2,440500),(234,19,'佛山市',2,440600),(235,19,'江门市',2,440700),(236,19,'湛江市',2,440800),(237,19,'茂名市',2,440900),(238,19,'肇庆市',2,441200),(239,19,'惠州市',2,441300),(240,19,'梅州市',2,441400),(241,19,'汕尾市',2,441500),(242,19,'河源市',2,441600),(243,19,'阳江市',2,441700),(244,19,'清远市',2,441800),(245,19,'东莞市',2,441900),(246,19,'中山市',2,442000),(247,19,'潮州市',2,445100),(248,19,'揭阳市',2,445200),(249,19,'云浮市',2,445300),(250,20,'南宁市',2,450100),(251,20,'柳州市',2,450200),(252,20,'桂林市',2,450300),(253,20,'梧州市',2,450400),(254,20,'北海市',2,450500),(255,20,'防城港市',2,450600),(256,20,'钦州市',2,450700),(257,20,'贵港市',2,450800),(258,20,'玉林市',2,450900),(259,20,'百色市',2,451000),(260,20,'贺州市',2,451100),(261,20,'河池市',2,451200),(262,20,'来宾市',2,451300),(263,20,'崇左市',2,451400),(264,21,'海口市',2,460100),(265,21,'三亚市',2,460200),(266,21,'三沙市',2,460300),(267,21,'儋州市',2,460400),(268,21,'省直辖县级行政区划',2,469000),(269,22,'市辖区',2,500100),(270,22,'县',2,500200),(271,23,'成都市',2,510100),(272,23,'自贡市',2,510300),(273,23,'攀枝花市',2,510400),(274,23,'泸州市',2,510500),(275,23,'德阳市',2,510600),(276,23,'绵阳市',2,510700),(277,23,'广元市',2,510800),(278,23,'遂宁市',2,510900),(279,23,'内江市',2,511000),(280,23,'乐山市',2,511100),(281,23,'南充市',2,511300),(282,23,'眉山市',2,511400),(283,23,'宜宾市',2,511500),(284,23,'广安市',2,511600),(285,23,'达州市',2,511700),(286,23,'雅安市',2,511800),(287,23,'巴中市',2,511900),(288,23,'资阳市',2,512000),(289,23,'阿坝藏族羌族自治州',2,513200),(290,23,'甘孜藏族自治州',2,513300),(291,23,'凉山彝族自治州',2,513400),(292,24,'贵阳市',2,520100),(293,24,'六盘水市',2,520200),(294,24,'遵义市',2,520300),(295,24,'安顺市',2,520400),(296,24,'毕节市',2,520500),(297,24,'铜仁市',2,520600),(298,24,'黔西南布依族苗族自治州',2,522300),(299,24,'黔东南苗族侗族自治州',2,522600),(300,24,'黔南布依族苗族自治州',2,522700),(301,25,'昆明市',2,530100),(302,25,'曲靖市',2,530300),(303,25,'玉溪市',2,530400),(304,25,'保山市',2,530500),(305,25,'昭通市',2,530600),(306,25,'丽江市',2,530700),(307,25,'普洱市',2,530800),(308,25,'临沧市',2,530900),(309,25,'楚雄彝族自治州',2,532300),(310,25,'红河哈尼族彝族自治州',2,532500),(311,25,'文山壮族苗族自治州',2,532600),(312,25,'西双版纳傣族自治州',2,532800),(313,25,'大理白族自治州',2,532900),(314,25,'德宏傣族景颇族自治州',2,533100),(315,25,'怒江傈僳族自治州',2,533300),(316,25,'迪庆藏族自治州',2,533400),(317,26,'拉萨市',2,540100),(318,26,'日喀则市',2,540200),(319,26,'昌都市',2,540300),(320,26,'林芝市',2,540400),(321,26,'山南市',2,540500),(322,26,'那曲地区',2,542400),(323,26,'阿里地区',2,542500),(324,27,'西安市',2,610100),(325,27,'铜川市',2,610200),(326,27,'宝鸡市',2,610300),(327,27,'咸阳市',2,610400),(328,27,'渭南市',2,610500),(329,27,'延安市',2,610600),(330,27,'汉中市',2,610700),(331,27,'榆林市',2,610800),(332,27,'安康市',2,610900),(333,27,'商洛市',2,611000),(334,28,'兰州市',2,620100),(335,28,'嘉峪关市',2,620200),(336,28,'金昌市',2,620300),(337,28,'白银市',2,620400),(338,28,'天水市',2,620500),(339,28,'武威市',2,620600),(340,28,'张掖市',2,620700),(341,28,'平凉市',2,620800),(342,28,'酒泉市',2,620900),(343,28,'庆阳市',2,621000),(344,28,'定西市',2,621100),(345,28,'陇南市',2,621200),(346,28,'临夏回族自治州',2,622900),(347,28,'甘南藏族自治州',2,623000),(348,29,'西宁市',2,630100),(349,29,'海东市',2,630200),(350,29,'海北藏族自治州',2,632200),(351,29,'黄南藏族自治州',2,632300),(352,29,'海南藏族自治州',2,632500),(353,29,'果洛藏族自治州',2,632600),(354,29,'玉树藏族自治州',2,632700),(355,29,'海西蒙古族藏族自治州',2,632800),(356,30,'银川市',2,640100),(357,30,'石嘴山市',2,640200),(358,30,'吴忠市',2,640300),(359,30,'固原市',2,640400),(360,30,'中卫市',2,640500),(361,31,'乌鲁木齐市',2,650100),(362,31,'克拉玛依市',2,650200),(363,31,'吐鲁番市',2,650400),(364,31,'哈密市',2,650500),(365,31,'昌吉回族自治州',2,652300),(366,31,'博尔塔拉蒙古自治州',2,652700),(367,31,'巴音郭楞蒙古自治州',2,652800),(368,31,'阿克苏地区',2,652900),(369,31,'克孜勒苏柯尔克孜自治州',2,653000),(370,31,'喀什地区',2,653100),(371,31,'和田地区',2,653200),(372,31,'伊犁哈萨克自治州',2,654000),(373,31,'塔城地区',2,654200),(374,31,'阿勒泰地区',2,654300),(375,31,'自治区直辖县级行政区划',2,659000),(376,32,'东城区',3,110101),(377,32,'西城区',3,110102),(378,32,'朝阳区',3,110105),(379,32,'丰台区',3,110106),(380,32,'石景山区',3,110107),(381,32,'海淀区',3,110108),(382,32,'门头沟区',3,110109),(383,32,'房山区',3,110111),(384,32,'通州区',3,110112),(385,32,'顺义区',3,110113),(386,32,'昌平区',3,110114),(387,32,'大兴区',3,110115),(388,32,'怀柔区',3,110116),(389,32,'平谷区',3,110117),(390,32,'密云区',3,110118),(391,32,'延庆区',3,110119),(392,33,'和平区',3,120101),(393,33,'河东区',3,120102),(394,33,'河西区',3,120103),(395,33,'南开区',3,120104),(396,33,'河北区',3,120105),(397,33,'红桥区',3,120106),(398,33,'东丽区',3,120110),(399,33,'西青区',3,120111),(400,33,'津南区',3,120112),(401,33,'北辰区',3,120113),(402,33,'武清区',3,120114),(403,33,'宝坻区',3,120115),(404,33,'滨海新区',3,120116),(405,33,'宁河区',3,120117),(406,33,'静海区',3,120118),(407,33,'蓟州区',3,120119),(408,34,'长安区',3,130102),(409,34,'桥西区',3,130104),(410,34,'新华区',3,130105),(411,34,'井陉矿区',3,130107),(412,34,'裕华区',3,130108),(413,34,'藁城区',3,130109),(414,34,'鹿泉区',3,130110),(415,34,'栾城区',3,130111),(416,34,'井陉县',3,130121),(417,34,'正定县',3,130123),(418,34,'行唐县',3,130125),(419,34,'灵寿县',3,130126),(420,34,'高邑县',3,130127),(421,34,'深泽县',3,130128),(422,34,'赞皇县',3,130129),(423,34,'无极县',3,130130),(424,34,'平山县',3,130131),(425,34,'元氏县',3,130132),(426,34,'赵县',3,130133),(427,34,'晋州市',3,130183),(428,34,'新乐市',3,130184),(429,35,'路南区',3,130202),(430,35,'路北区',3,130203),(431,35,'古冶区',3,130204),(432,35,'开平区',3,130205),(433,35,'丰南区',3,130207),(434,35,'丰润区',3,130208),(435,35,'曹妃甸区',3,130209),(436,35,'滦县',3,130223),(437,35,'滦南县',3,130224),(438,35,'乐亭县',3,130225),(439,35,'迁西县',3,130227),(440,35,'玉田县',3,130229),(441,35,'遵化市',3,130281),(442,35,'迁安市',3,130283),(443,36,'海港区',3,130302),(444,36,'山海关区',3,130303),(445,36,'北戴河区',3,130304),(446,36,'抚宁区',3,130306),(447,36,'青龙满族自治县',3,130321),(448,36,'昌黎县',3,130322),(449,36,'卢龙县',3,130324),(450,37,'邯山区',3,130402),(451,37,'丛台区',3,130403),(452,37,'复兴区',3,130404),(453,37,'峰峰矿区',3,130406),(454,37,'邯郸县',3,130421),(455,37,'临漳县',3,130423),(456,37,'成安县',3,130424),(457,37,'大名县',3,130425),(458,37,'涉县',3,130426),(459,37,'磁县',3,130427),(460,37,'肥乡县',3,130428),(461,37,'永年县',3,130429),(462,37,'邱县',3,130430),(463,37,'鸡泽县',3,130431),(464,37,'广平县',3,130432),(465,37,'馆陶县',3,130433),(466,37,'魏县',3,130434),(467,37,'曲周县',3,130435),(468,37,'武安市',3,130481),(469,38,'桥东区',3,130502),(470,38,'桥西区',3,130503),(471,38,'邢台县',3,130521),(472,38,'临城县',3,130522),(473,38,'内丘县',3,130523),(474,38,'柏乡县',3,130524),(475,38,'隆尧县',3,130525),(476,38,'任县',3,130526),(477,38,'南和县',3,130527),(478,38,'宁晋县',3,130528),(479,38,'巨鹿县',3,130529),(480,38,'新河县',3,130530),(481,38,'广宗县',3,130531),(482,38,'平乡县',3,130532),(483,38,'威县',3,130533),(484,38,'清河县',3,130534),(485,38,'临西县',3,130535),(486,38,'南宫市',3,130581),(487,38,'沙河市',3,130582),(488,39,'竞秀区',3,130602),(489,39,'莲池区',3,130606),(490,39,'满城区',3,130607),(491,39,'清苑区',3,130608),(492,39,'徐水区',3,130609),(493,39,'涞水县',3,130623),(494,39,'阜平县',3,130624),(495,39,'定兴县',3,130626),(496,39,'唐县',3,130627),(497,39,'高阳县',3,130628),(498,39,'容城县',3,130629),(499,39,'涞源县',3,130630),(500,39,'望都县',3,130631),(501,39,'安新县',3,130632),(502,39,'易县',3,130633),(503,39,'曲阳县',3,130634),(504,39,'蠡县',3,130635),(505,39,'顺平县',3,130636),(506,39,'博野县',3,130637),(507,39,'雄县',3,130638),(508,39,'涿州市',3,130681),(509,39,'安国市',3,130683),(510,39,'高碑店市',3,130684),(511,40,'桥东区',3,130702),(512,40,'桥西区',3,130703),(513,40,'宣化区',3,130705),(514,40,'下花园区',3,130706),(515,40,'万全区',3,130708),(516,40,'崇礼区',3,130709),(517,40,'张北县',3,130722),(518,40,'康保县',3,130723),(519,40,'沽源县',3,130724),(520,40,'尚义县',3,130725),(521,40,'蔚县',3,130726),(522,40,'阳原县',3,130727),(523,40,'怀安县',3,130728),(524,40,'怀来县',3,130730),(525,40,'涿鹿县',3,130731),(526,40,'赤城县',3,130732),(527,41,'双桥区',3,130802),(528,41,'双滦区',3,130803),(529,41,'鹰手营子矿区',3,130804),(530,41,'承德县',3,130821),(531,41,'兴隆县',3,130822),(532,41,'平泉县',3,130823),(533,41,'滦平县',3,130824),(534,41,'隆化县',3,130825),(535,41,'丰宁满族自治县',3,130826),(536,41,'宽城满族自治县',3,130827),(537,41,'围场满族蒙古族自治县',3,130828),(538,42,'新华区',3,130902),(539,42,'运河区',3,130903),(540,42,'沧县',3,130921),(541,42,'青县',3,130922),(542,42,'东光县',3,130923),(543,42,'海兴县',3,130924),(544,42,'盐山县',3,130925),(545,42,'肃宁县',3,130926),(546,42,'南皮县',3,130927),(547,42,'吴桥县',3,130928),(548,42,'献县',3,130929),(549,42,'孟村回族自治县',3,130930),(550,42,'泊头市',3,130981),(551,42,'任丘市',3,130982),(552,42,'黄骅市',3,130983),(553,42,'河间市',3,130984),(554,43,'安次区',3,131002),(555,43,'广阳区',3,131003),(556,43,'固安县',3,131022),(557,43,'永清县',3,131023),(558,43,'香河县',3,131024),(559,43,'大城县',3,131025),(560,43,'文安县',3,131026),(561,43,'大厂回族自治县',3,131028),(562,43,'霸州市',3,131081),(563,43,'三河市',3,131082),(564,44,'桃城区',3,131102),(565,44,'冀州区',3,131103),(566,44,'枣强县',3,131121),(567,44,'武邑县',3,131122),(568,44,'武强县',3,131123),(569,44,'饶阳县',3,131124),(570,44,'安平县',3,131125),(571,44,'故城县',3,131126),(572,44,'景县',3,131127),(573,44,'阜城县',3,131128),(574,44,'深州市',3,131182),(575,45,'定州市',3,139001),(576,45,'辛集市',3,139002),(577,46,'小店区',3,140105),(578,46,'迎泽区',3,140106),(579,46,'杏花岭区',3,140107),(580,46,'尖草坪区',3,140108),(581,46,'万柏林区',3,140109),(582,46,'晋源区',3,140110),(583,46,'清徐县',3,140121),(584,46,'阳曲县',3,140122),(585,46,'娄烦县',3,140123),(586,46,'古交市',3,140181),(587,47,'城区',3,140202),(588,47,'矿区',3,140203),(589,47,'南郊区',3,140211),(590,47,'新荣区',3,140212),(591,47,'阳高县',3,140221),(592,47,'天镇县',3,140222),(593,47,'广灵县',3,140223),(594,47,'灵丘县',3,140224),(595,47,'浑源县',3,140225),(596,47,'左云县',3,140226),(597,47,'大同县',3,140227),(598,48,'城区',3,140302),(599,48,'矿区',3,140303),(600,48,'郊区',3,140311),(601,48,'平定县',3,140321),(602,48,'盂县',3,140322),(603,49,'城区',3,140402),(604,49,'郊区',3,140411),(605,49,'长治县',3,140421),(606,49,'襄垣县',3,140423),(607,49,'屯留县',3,140424),(608,49,'平顺县',3,140425),(609,49,'黎城县',3,140426),(610,49,'壶关县',3,140427),(611,49,'长子县',3,140428),(612,49,'武乡县',3,140429),(613,49,'沁县',3,140430),(614,49,'沁源县',3,140431),(615,49,'潞城市',3,140481),(616,50,'城区',3,140502),(617,50,'沁水县',3,140521),(618,50,'阳城县',3,140522),(619,50,'陵川县',3,140524),(620,50,'泽州县',3,140525),(621,50,'高平市',3,140581),(622,51,'朔城区',3,140602),(623,51,'平鲁区',3,140603),(624,51,'山阴县',3,140621),(625,51,'应县',3,140622),(626,51,'右玉县',3,140623),(627,51,'怀仁县',3,140624),(628,52,'榆次区',3,140702),(629,52,'榆社县',3,140721),(630,52,'左权县',3,140722),(631,52,'和顺县',3,140723),(632,52,'昔阳县',3,140724),(633,52,'寿阳县',3,140725),(634,52,'太谷县',3,140726),(635,52,'祁县',3,140727),(636,52,'平遥县',3,140728),(637,52,'灵石县',3,140729),(638,52,'介休市',3,140781),(639,53,'盐湖区',3,140802),(640,53,'临猗县',3,140821),(641,53,'万荣县',3,140822),(642,53,'闻喜县',3,140823),(643,53,'稷山县',3,140824),(644,53,'新绛县',3,140825),(645,53,'绛县',3,140826),(646,53,'垣曲县',3,140827),(647,53,'夏县',3,140828),(648,53,'平陆县',3,140829),(649,53,'芮城县',3,140830),(650,53,'永济市',3,140881),(651,53,'河津市',3,140882),(652,54,'忻府区',3,140902),(653,54,'定襄县',3,140921),(654,54,'五台县',3,140922),(655,54,'代县',3,140923),(656,54,'繁峙县',3,140924),(657,54,'宁武县',3,140925),(658,54,'静乐县',3,140926),(659,54,'神池县',3,140927),(660,54,'五寨县',3,140928),(661,54,'岢岚县',3,140929),(662,54,'河曲县',3,140930),(663,54,'保德县',3,140931),(664,54,'偏关县',3,140932),(665,54,'原平市',3,140981),(666,55,'尧都区',3,141002),(667,55,'曲沃县',3,141021),(668,55,'翼城县',3,141022),(669,55,'襄汾县',3,141023),(670,55,'洪洞县',3,141024),(671,55,'古县',3,141025),(672,55,'安泽县',3,141026),(673,55,'浮山县',3,141027),(674,55,'吉县',3,141028),(675,55,'乡宁县',3,141029),(676,55,'大宁县',3,141030),(677,55,'隰县',3,141031),(678,55,'永和县',3,141032),(679,55,'蒲县',3,141033),(680,55,'汾西县',3,141034),(681,55,'侯马市',3,141081),(682,55,'霍州市',3,141082),(683,56,'离石区',3,141102),(684,56,'文水县',3,141121),(685,56,'交城县',3,141122),(686,56,'兴县',3,141123),(687,56,'临县',3,141124),(688,56,'柳林县',3,141125),(689,56,'石楼县',3,141126),(690,56,'岚县',3,141127),(691,56,'方山县',3,141128),(692,56,'中阳县',3,141129),(693,56,'交口县',3,141130),(694,56,'孝义市',3,141181),(695,56,'汾阳市',3,141182),(696,57,'新城区',3,150102),(697,57,'回民区',3,150103),(698,57,'玉泉区',3,150104),(699,57,'赛罕区',3,150105),(700,57,'土默特左旗',3,150121),(701,57,'托克托县',3,150122),(702,57,'和林格尔县',3,150123),(703,57,'清水河县',3,150124),(704,57,'武川县',3,150125),(705,58,'东河区',3,150202),(706,58,'昆都仑区',3,150203),(707,58,'青山区',3,150204),(708,58,'石拐区',3,150205),(709,58,'白云鄂博矿区',3,150206),(710,58,'九原区',3,150207),(711,58,'土默特右旗',3,150221),(712,58,'固阳县',3,150222),(713,58,'达尔罕茂明安联合旗',3,150223),(714,59,'海勃湾区',3,150302),(715,59,'海南区',3,150303),(716,59,'乌达区',3,150304),(717,60,'红山区',3,150402),(718,60,'元宝山区',3,150403),(719,60,'松山区',3,150404),(720,60,'阿鲁科尔沁旗',3,150421),(721,60,'巴林左旗',3,150422),(722,60,'巴林右旗',3,150423),(723,60,'林西县',3,150424),(724,60,'克什克腾旗',3,150425),(725,60,'翁牛特旗',3,150426),(726,60,'喀喇沁旗',3,150428),(727,60,'宁城县',3,150429),(728,60,'敖汉旗',3,150430),(729,61,'科尔沁区',3,150502),(730,61,'科尔沁左翼中旗',3,150521),(731,61,'科尔沁左翼后旗',3,150522),(732,61,'开鲁县',3,150523),(733,61,'库伦旗',3,150524),(734,61,'奈曼旗',3,150525),(735,61,'扎鲁特旗',3,150526),(736,61,'霍林郭勒市',3,150581),(737,62,'东胜区',3,150602),(738,62,'康巴什区',3,150603),(739,62,'达拉特旗',3,150621),(740,62,'准格尔旗',3,150622),(741,62,'鄂托克前旗',3,150623),(742,62,'鄂托克旗',3,150624),(743,62,'杭锦旗',3,150625),(744,62,'乌审旗',3,150626),(745,62,'伊金霍洛旗',3,150627),(746,63,'海拉尔区',3,150702),(747,63,'扎赉诺尔区',3,150703),(748,63,'阿荣旗',3,150721),(749,63,'莫力达瓦达斡尔族自治旗',3,150722),(750,63,'鄂伦春自治旗',3,150723),(751,63,'鄂温克族自治旗',3,150724),(752,63,'陈巴尔虎旗',3,150725),(753,63,'新巴尔虎左旗',3,150726),(754,63,'新巴尔虎右旗',3,150727),(755,63,'满洲里市',3,150781),(756,63,'牙克石市',3,150782),(757,63,'扎兰屯市',3,150783),(758,63,'额尔古纳市',3,150784),(759,63,'根河市',3,150785),(760,64,'临河区',3,150802),(761,64,'五原县',3,150821),(762,64,'磴口县',3,150822),(763,64,'乌拉特前旗',3,150823),(764,64,'乌拉特中旗',3,150824),(765,64,'乌拉特后旗',3,150825),(766,64,'杭锦后旗',3,150826),(767,65,'集宁区',3,150902),(768,65,'卓资县',3,150921),(769,65,'化德县',3,150922),(770,65,'商都县',3,150923),(771,65,'兴和县',3,150924),(772,65,'凉城县',3,150925),(773,65,'察哈尔右翼前旗',3,150926),(774,65,'察哈尔右翼中旗',3,150927),(775,65,'察哈尔右翼后旗',3,150928),(776,65,'四子王旗',3,150929),(777,65,'丰镇市',3,150981),(778,66,'乌兰浩特市',3,152201),(779,66,'阿尔山市',3,152202),(780,66,'科尔沁右翼前旗',3,152221),(781,66,'科尔沁右翼中旗',3,152222),(782,66,'扎赉特旗',3,152223),(783,66,'突泉县',3,152224),(784,67,'二连浩特市',3,152501),(785,67,'锡林浩特市',3,152502),(786,67,'阿巴嘎旗',3,152522),(787,67,'苏尼特左旗',3,152523),(788,67,'苏尼特右旗',3,152524),(789,67,'东乌珠穆沁旗',3,152525),(790,67,'西乌珠穆沁旗',3,152526),(791,67,'太仆寺旗',3,152527),(792,67,'镶黄旗',3,152528),(793,67,'正镶白旗',3,152529),(794,67,'正蓝旗',3,152530),(795,67,'多伦县',3,152531),(796,68,'阿拉善左旗',3,152921),(797,68,'阿拉善右旗',3,152922),(798,68,'额济纳旗',3,152923),(799,69,'和平区',3,210102),(800,69,'沈河区',3,210103),(801,69,'大东区',3,210104),(802,69,'皇姑区',3,210105),(803,69,'铁西区',3,210106),(804,69,'苏家屯区',3,210111),(805,69,'浑南区',3,210112),(806,69,'沈北新区',3,210113),(807,69,'于洪区',3,210114),(808,69,'辽中区',3,210115),(809,69,'康平县',3,210123),(810,69,'法库县',3,210124),(811,69,'新民市',3,210181),(812,70,'中山区',3,210202),(813,70,'西岗区',3,210203),(814,70,'沙河口区',3,210204),(815,70,'甘井子区',3,210211),(816,70,'旅顺口区',3,210212),(817,70,'金州区',3,210213),(818,70,'普兰店区',3,210214),(819,70,'长海县',3,210224),(820,70,'瓦房店市',3,210281),(821,70,'庄河市',3,210283),(822,71,'铁东区',3,210302),(823,71,'铁西区',3,210303),(824,71,'立山区',3,210304),(825,71,'千山区',3,210311),(826,71,'台安县',3,210321),(827,71,'岫岩满族自治县',3,210323),(828,71,'海城市',3,210381),(829,72,'新抚区',3,210402),(830,72,'东洲区',3,210403),(831,72,'望花区',3,210404),(832,72,'顺城区',3,210411),(833,72,'抚顺县',3,210421),(834,72,'新宾满族自治县',3,210422),(835,72,'清原满族自治县',3,210423),(836,73,'平山区',3,210502),(837,73,'溪湖区',3,210503),(838,73,'明山区',3,210504),(839,73,'南芬区',3,210505),(840,73,'本溪满族自治县',3,210521),(841,73,'桓仁满族自治县',3,210522),(842,74,'元宝区',3,210602),(843,74,'振兴区',3,210603),(844,74,'振安区',3,210604),(845,74,'宽甸满族自治县',3,210624),(846,74,'东港市',3,210681),(847,74,'凤城市',3,210682),(848,75,'古塔区',3,210702),(849,75,'凌河区',3,210703),(850,75,'太和区',3,210711),(851,75,'黑山县',3,210726),(852,75,'义县',3,210727),(853,75,'凌海市',3,210781),(854,75,'北镇市',3,210782),(855,76,'站前区',3,210802),(856,76,'西市区',3,210803),(857,76,'鲅鱼圈区',3,210804),(858,76,'老边区',3,210811),(859,76,'盖州市',3,210881),(860,76,'大石桥市',3,210882),(861,77,'海州区',3,210902),(862,77,'新邱区',3,210903),(863,77,'太平区',3,210904),(864,77,'清河门区',3,210905),(865,77,'细河区',3,210911),(866,77,'阜新蒙古族自治县',3,210921),(867,77,'彰武县',3,210922),(868,78,'白塔区',3,211002),(869,78,'文圣区',3,211003),(870,78,'宏伟区',3,211004),(871,78,'弓长岭区',3,211005),(872,78,'太子河区',3,211011),(873,78,'辽阳县',3,211021),(874,78,'灯塔市',3,211081),(875,79,'双台子区',3,211102),(876,79,'兴隆台区',3,211103),(877,79,'大洼区',3,211104),(878,79,'盘山县',3,211122),(879,80,'银州区',3,211202),(880,80,'清河区',3,211204),(881,80,'铁岭县',3,211221),(882,80,'西丰县',3,211223),(883,80,'昌图县',3,211224),(884,80,'调兵山市',3,211281),(885,80,'开原市',3,211282),(886,81,'双塔区',3,211302),(887,81,'龙城区',3,211303),(888,81,'朝阳县',3,211321),(889,81,'建平县',3,211322),(890,81,'喀喇沁左翼蒙古族自治县',3,211324),(891,81,'北票市',3,211381),(892,81,'凌源市',3,211382),(893,82,'连山区',3,211402),(894,82,'龙港区',3,211403),(895,82,'南票区',3,211404),(896,82,'绥中县',3,211421),(897,82,'建昌县',3,211422),(898,82,'兴城市',3,211481),(899,83,'南关区',3,220102),(900,83,'宽城区',3,220103),(901,83,'朝阳区',3,220104),(902,83,'二道区',3,220105),(903,83,'绿园区',3,220106),(904,83,'双阳区',3,220112),(905,83,'九台区',3,220113),(906,83,'农安县',3,220122),(907,83,'榆树市',3,220182),(908,83,'德惠市',3,220183),(909,84,'昌邑区',3,220202),(910,84,'龙潭区',3,220203),(911,84,'船营区',3,220204),(912,84,'丰满区',3,220211),(913,84,'永吉县',3,220221),(914,84,'蛟河市',3,220281),(915,84,'桦甸市',3,220282),(916,84,'舒兰市',3,220283),(917,84,'磐石市',3,220284),(918,85,'铁西区',3,220302),(919,85,'铁东区',3,220303),(920,85,'梨树县',3,220322),(921,85,'伊通满族自治县',3,220323),(922,85,'公主岭市',3,220381),(923,85,'双辽市',3,220382),(924,86,'龙山区',3,220402),(925,86,'西安区',3,220403),(926,86,'东丰县',3,220421),(927,86,'东辽县',3,220422),(928,87,'东昌区',3,220502),(929,87,'二道江区',3,220503),(930,87,'通化县',3,220521),(931,87,'辉南县',3,220523),(932,87,'柳河县',3,220524),(933,87,'梅河口市',3,220581),(934,87,'集安市',3,220582),(935,88,'浑江区',3,220602),(936,88,'江源区',3,220605),(937,88,'抚松县',3,220621),(938,88,'靖宇县',3,220622),(939,88,'长白朝鲜族自治县',3,220623),(940,88,'临江市',3,220681),(941,89,'宁江区',3,220702),(942,89,'前郭尔罗斯蒙古族自治县',3,220721),(943,89,'长岭县',3,220722),(944,89,'乾安县',3,220723),(945,89,'扶余市',3,220781),(946,90,'洮北区',3,220802),(947,90,'镇赉县',3,220821),(948,90,'通榆县',3,220822),(949,90,'洮南市',3,220881),(950,90,'大安市',3,220882),(951,91,'延吉市',3,222401),(952,91,'图们市',3,222402),(953,91,'敦化市',3,222403),(954,91,'珲春市',3,222404),(955,91,'龙井市',3,222405),(956,91,'和龙市',3,222406),(957,91,'汪清县',3,222424),(958,91,'安图县',3,222426),(959,92,'道里区',3,230102),(960,92,'南岗区',3,230103),(961,92,'道外区',3,230104),(962,92,'平房区',3,230108),(963,92,'松北区',3,230109),(964,92,'香坊区',3,230110),(965,92,'呼兰区',3,230111),(966,92,'阿城区',3,230112),(967,92,'双城区',3,230113),(968,92,'依兰县',3,230123),(969,92,'方正县',3,230124),(970,92,'宾县',3,230125),(971,92,'巴彦县',3,230126),(972,92,'木兰县',3,230127),(973,92,'通河县',3,230128),(974,92,'延寿县',3,230129),(975,92,'尚志市',3,230183),(976,92,'五常市',3,230184),(977,93,'龙沙区',3,230202),(978,93,'建华区',3,230203),(979,93,'铁锋区',3,230204),(980,93,'昂昂溪区',3,230205),(981,93,'富拉尔基区',3,230206),(982,93,'碾子山区',3,230207),(983,93,'梅里斯达斡尔族区',3,230208),(984,93,'龙江县',3,230221),(985,93,'依安县',3,230223),(986,93,'泰来县',3,230224),(987,93,'甘南县',3,230225),(988,93,'富裕县',3,230227),(989,93,'克山县',3,230229),(990,93,'克东县',3,230230),(991,93,'拜泉县',3,230231),(992,93,'讷河市',3,230281),(993,94,'鸡冠区',3,230302),(994,94,'恒山区',3,230303),(995,94,'滴道区',3,230304),(996,94,'梨树区',3,230305),(997,94,'城子河区',3,230306),(998,94,'麻山区',3,230307),(999,94,'鸡东县',3,230321),(1000,94,'虎林市',3,230381),(1001,94,'密山市',3,230382),(1002,95,'向阳区',3,230402),(1003,95,'工农区',3,230403),(1004,95,'南山区',3,230404),(1005,95,'兴安区',3,230405),(1006,95,'东山区',3,230406),(1007,95,'兴山区',3,230407),(1008,95,'萝北县',3,230421),(1009,95,'绥滨县',3,230422),(1010,96,'尖山区',3,230502),(1011,96,'岭东区',3,230503),(1012,96,'四方台区',3,230505),(1013,96,'宝山区',3,230506),(1014,96,'集贤县',3,230521),(1015,96,'友谊县',3,230522),(1016,96,'宝清县',3,230523),(1017,96,'饶河县',3,230524),(1018,97,'萨尔图区',3,230602),(1019,97,'龙凤区',3,230603),(1020,97,'让胡路区',3,230604),(1021,97,'红岗区',3,230605),(1022,97,'大同区',3,230606),(1023,97,'肇州县',3,230621),(1024,97,'肇源县',3,230622),(1025,97,'林甸县',3,230623),(1026,97,'杜尔伯特蒙古族自治县',3,230624),(1027,98,'伊春区',3,230702),(1028,98,'南岔区',3,230703),(1029,98,'友好区',3,230704),(1030,98,'西林区',3,230705),(1031,98,'翠峦区',3,230706),(1032,98,'新青区',3,230707),(1033,98,'美溪区',3,230708),(1034,98,'金山屯区',3,230709),(1035,98,'五营区',3,230710),(1036,98,'乌马河区',3,230711),(1037,98,'汤旺河区',3,230712),(1038,98,'带岭区',3,230713),(1039,98,'乌伊岭区',3,230714),(1040,98,'红星区',3,230715),(1041,98,'上甘岭区',3,230716),(1042,98,'嘉荫县',3,230722),(1043,98,'铁力市',3,230781),(1044,99,'向阳区',3,230803),(1045,99,'前进区',3,230804),(1046,99,'东风区',3,230805),(1047,99,'郊区',3,230811),(1048,99,'桦南县',3,230822),(1049,99,'桦川县',3,230826),(1050,99,'汤原县',3,230828),(1051,99,'同江市',3,230881),(1052,99,'富锦市',3,230882),(1053,99,'抚远市',3,230883),(1054,100,'新兴区',3,230902),(1055,100,'桃山区',3,230903),(1056,100,'茄子河区',3,230904),(1057,100,'勃利县',3,230921),(1058,101,'东安区',3,231002),(1059,101,'阳明区',3,231003),(1060,101,'爱民区',3,231004),(1061,101,'西安区',3,231005),(1062,101,'林口县',3,231025),(1063,101,'绥芬河市',3,231081),(1064,101,'海林市',3,231083),(1065,101,'宁安市',3,231084),(1066,101,'穆棱市',3,231085),(1067,101,'东宁市',3,231086),(1068,102,'爱辉区',3,231102),(1069,102,'嫩江县',3,231121),(1070,102,'逊克县',3,231123),(1071,102,'孙吴县',3,231124),(1072,102,'北安市',3,231181),(1073,102,'五大连池市',3,231182),(1074,103,'北林区',3,231202),(1075,103,'望奎县',3,231221),(1076,103,'兰西县',3,231222),(1077,103,'青冈县',3,231223),(1078,103,'庆安县',3,231224),(1079,103,'明水县',3,231225),(1080,103,'绥棱县',3,231226),(1081,103,'安达市',3,231281),(1082,103,'肇东市',3,231282),(1083,103,'海伦市',3,231283),(1084,104,'呼玛县',3,232721),(1085,104,'塔河县',3,232722),(1086,104,'漠河县',3,232723),(1087,105,'黄浦区',3,310101),(1088,105,'徐汇区',3,310104),(1089,105,'长宁区',3,310105),(1090,105,'静安区',3,310106),(1091,105,'普陀区',3,310107),(1092,105,'虹口区',3,310109),(1093,105,'杨浦区',3,310110),(1094,105,'闵行区',3,310112),(1095,105,'宝山区',3,310113),(1096,105,'嘉定区',3,310114),(1097,105,'浦东新区',3,310115),(1098,105,'金山区',3,310116),(1099,105,'松江区',3,310117),(1100,105,'青浦区',3,310118),(1101,105,'奉贤区',3,310120),(1102,105,'崇明区',3,310151),(1103,106,'玄武区',3,320102),(1104,106,'秦淮区',3,320104),(1105,106,'建邺区',3,320105),(1106,106,'鼓楼区',3,320106),(1107,106,'浦口区',3,320111),(1108,106,'栖霞区',3,320113),(1109,106,'雨花台区',3,320114),(1110,106,'江宁区',3,320115),(1111,106,'六合区',3,320116),(1112,106,'溧水区',3,320117),(1113,106,'高淳区',3,320118),(1114,107,'锡山区',3,320205),(1115,107,'惠山区',3,320206),(1116,107,'滨湖区',3,320211),(1117,107,'梁溪区',3,320213),(1118,107,'新吴区',3,320214),(1119,107,'江阴市',3,320281),(1120,107,'宜兴市',3,320282),(1121,108,'鼓楼区',3,320302),(1122,108,'云龙区',3,320303),(1123,108,'贾汪区',3,320305),(1124,108,'泉山区',3,320311),(1125,108,'铜山区',3,320312),(1126,108,'丰县',3,320321),(1127,108,'沛县',3,320322),(1128,108,'睢宁县',3,320324),(1129,108,'新沂市',3,320381),(1130,108,'邳州市',3,320382),(1131,109,'天宁区',3,320402),(1132,109,'钟楼区',3,320404),(1133,109,'新北区',3,320411),(1134,109,'武进区',3,320412),(1135,109,'金坛区',3,320413),(1136,109,'溧阳市',3,320481),(1137,110,'虎丘区',3,320505),(1138,110,'吴中区',3,320506),(1139,110,'相城区',3,320507),(1140,110,'姑苏区',3,320508),(1141,110,'吴江区',3,320509),(1142,110,'常熟市',3,320581),(1143,110,'张家港市',3,320582),(1144,110,'昆山市',3,320583),(1145,110,'太仓市',3,320585),(1146,111,'崇川区',3,320602),(1147,111,'港闸区',3,320611),(1148,111,'通州区',3,320612),(1149,111,'海安县',3,320621),(1150,111,'如东县',3,320623),(1151,111,'启东市',3,320681),(1152,111,'如皋市',3,320682),(1153,111,'海门市',3,320684),(1154,112,'连云区',3,320703),(1155,112,'海州区',3,320706),(1156,112,'赣榆区',3,320707),(1157,112,'东海县',3,320722),(1158,112,'灌云县',3,320723),(1159,112,'灌南县',3,320724),(1160,113,'淮安区',3,320803),(1161,113,'淮阴区',3,320804),(1162,113,'清江浦区',3,320812),(1163,113,'洪泽区',3,320813),(1164,113,'涟水县',3,320826),(1165,113,'盱眙县',3,320830),(1166,113,'金湖县',3,320831),(1167,114,'亭湖区',3,320902),(1168,114,'盐都区',3,320903),(1169,114,'大丰区',3,320904),(1170,114,'响水县',3,320921),(1171,114,'滨海县',3,320922),(1172,114,'阜宁县',3,320923),(1173,114,'射阳县',3,320924),(1174,114,'建湖县',3,320925),(1175,114,'东台市',3,320981),(1176,115,'广陵区',3,321002),(1177,115,'邗江区',3,321003),(1178,115,'江都区',3,321012),(1179,115,'宝应县',3,321023),(1180,115,'仪征市',3,321081),(1181,115,'高邮市',3,321084),(1182,116,'京口区',3,321102),(1183,116,'润州区',3,321111),(1184,116,'丹徒区',3,321112),(1185,116,'丹阳市',3,321181),(1186,116,'扬中市',3,321182),(1187,116,'句容市',3,321183),(1188,117,'海陵区',3,321202),(1189,117,'高港区',3,321203),(1190,117,'姜堰区',3,321204),(1191,117,'兴化市',3,321281),(1192,117,'靖江市',3,321282),(1193,117,'泰兴市',3,321283),(1194,118,'宿城区',3,321302),(1195,118,'宿豫区',3,321311),(1196,118,'沭阳县',3,321322),(1197,118,'泗阳县',3,321323),(1198,118,'泗洪县',3,321324),(1199,119,'上城区',3,330102),(1200,119,'下城区',3,330103),(1201,119,'江干区',3,330104),(1202,119,'拱墅区',3,330105),(1203,119,'西湖区',3,330106),(1204,119,'滨江区',3,330108),(1205,119,'萧山区',3,330109),(1206,119,'余杭区',3,330110),(1207,119,'富阳区',3,330111),(1208,119,'桐庐县',3,330122),(1209,119,'淳安县',3,330127),(1210,119,'建德市',3,330182),(1211,119,'临安市',3,330185),(1212,120,'海曙区',3,330203),(1213,120,'江东区',3,330204),(1214,120,'江北区',3,330205),(1215,120,'北仑区',3,330206),(1216,120,'镇海区',3,330211),(1217,120,'鄞州区',3,330212),(1218,120,'象山县',3,330225),(1219,120,'宁海县',3,330226),(1220,120,'余姚市',3,330281),(1221,120,'慈溪市',3,330282),(1222,120,'奉化市',3,330283),(1223,121,'鹿城区',3,330302),(1224,121,'龙湾区',3,330303),(1225,121,'瓯海区',3,330304),(1226,121,'洞头区',3,330305),(1227,121,'永嘉县',3,330324),(1228,121,'平阳县',3,330326),(1229,121,'苍南县',3,330327),(1230,121,'文成县',3,330328),(1231,121,'泰顺县',3,330329),(1232,121,'瑞安市',3,330381),(1233,121,'乐清市',3,330382),(1234,122,'南湖区',3,330402),(1235,122,'秀洲区',3,330411),(1236,122,'嘉善县',3,330421),(1237,122,'海盐县',3,330424),(1238,122,'海宁市',3,330481),(1239,122,'平湖市',3,330482),(1240,122,'桐乡市',3,330483),(1241,123,'吴兴区',3,330502),(1242,123,'南浔区',3,330503),(1243,123,'德清县',3,330521),(1244,123,'长兴县',3,330522),(1245,123,'安吉县',3,330523),(1246,124,'越城区',3,330602),(1247,124,'柯桥区',3,330603),(1248,124,'上虞区',3,330604),(1249,124,'新昌县',3,330624),(1250,124,'诸暨市',3,330681),(1251,124,'嵊州市',3,330683),(1252,125,'婺城区',3,330702),(1253,125,'金东区',3,330703),(1254,125,'武义县',3,330723),(1255,125,'浦江县',3,330726),(1256,125,'磐安县',3,330727),(1257,125,'兰溪市',3,330781),(1258,125,'义乌市',3,330782),(1259,125,'东阳市',3,330783),(1260,125,'永康市',3,330784),(1261,126,'柯城区',3,330802),(1262,126,'衢江区',3,330803),(1263,126,'常山县',3,330822),(1264,126,'开化县',3,330824),(1265,126,'龙游县',3,330825),(1266,126,'江山市',3,330881),(1267,127,'定海区',3,330902),(1268,127,'普陀区',3,330903),(1269,127,'岱山县',3,330921),(1270,127,'嵊泗县',3,330922),(1271,128,'椒江区',3,331002),(1272,128,'黄岩区',3,331003),(1273,128,'路桥区',3,331004),(1274,128,'玉环县',3,331021),(1275,128,'三门县',3,331022),(1276,128,'天台县',3,331023),(1277,128,'仙居县',3,331024),(1278,128,'温岭市',3,331081),(1279,128,'临海市',3,331082),(1280,129,'莲都区',3,331102),(1281,129,'青田县',3,331121),(1282,129,'缙云县',3,331122),(1283,129,'遂昌县',3,331123),(1284,129,'松阳县',3,331124),(1285,129,'云和县',3,331125),(1286,129,'庆元县',3,331126),(1287,129,'景宁畲族自治县',3,331127),(1288,129,'龙泉市',3,331181),(1289,130,'瑶海区',3,340102),(1290,130,'庐阳区',3,340103),(1291,130,'蜀山区',3,340104),(1292,130,'包河区',3,340111),(1293,130,'长丰县',3,340121),(1294,130,'肥东县',3,340122),(1295,130,'肥西县',3,340123),(1296,130,'庐江县',3,340124),(1297,130,'巢湖市',3,340181),(1298,131,'镜湖区',3,340202),(1299,131,'弋江区',3,340203),(1300,131,'鸠江区',3,340207),(1301,131,'三山区',3,340208),(1302,131,'芜湖县',3,340221),(1303,131,'繁昌县',3,340222),(1304,131,'南陵县',3,340223),(1305,131,'无为县',3,340225),(1306,132,'龙子湖区',3,340302),(1307,132,'蚌山区',3,340303),(1308,132,'禹会区',3,340304),(1309,132,'淮上区',3,340311),(1310,132,'怀远县',3,340321),(1311,132,'五河县',3,340322),(1312,132,'固镇县',3,340323),(1313,133,'大通区',3,340402),(1314,133,'田家庵区',3,340403),(1315,133,'谢家集区',3,340404),(1316,133,'八公山区',3,340405),(1317,133,'潘集区',3,340406),(1318,133,'凤台县',3,340421),(1319,133,'寿县',3,340422),(1320,134,'花山区',3,340503),(1321,134,'雨山区',3,340504),(1322,134,'博望区',3,340506),(1323,134,'当涂县',3,340521),(1324,134,'含山县',3,340522),(1325,134,'和县',3,340523),(1326,135,'杜集区',3,340602),(1327,135,'相山区',3,340603),(1328,135,'烈山区',3,340604),(1329,135,'濉溪县',3,340621),(1330,136,'铜官区',3,340705),(1331,136,'义安区',3,340706),(1332,136,'郊区',3,340711),(1333,136,'枞阳县',3,340722),(1334,137,'迎江区',3,340802),(1335,137,'大观区',3,340803),(1336,137,'宜秀区',3,340811),(1337,137,'怀宁县',3,340822),(1338,137,'潜山县',3,340824),(1339,137,'太湖县',3,340825),(1340,137,'宿松县',3,340826),(1341,137,'望江县',3,340827),(1342,137,'岳西县',3,340828),(1343,137,'桐城市',3,340881),(1344,138,'屯溪区',3,341002),(1345,138,'黄山区',3,341003),(1346,138,'徽州区',3,341004),(1347,138,'歙县',3,341021),(1348,138,'休宁县',3,341022),(1349,138,'黟县',3,341023),(1350,138,'祁门县',3,341024),(1351,139,'琅琊区',3,341102),(1352,139,'南谯区',3,341103),(1353,139,'来安县',3,341122),(1354,139,'全椒县',3,341124),(1355,139,'定远县',3,341125),(1356,139,'凤阳县',3,341126),(1357,139,'天长市',3,341181),(1358,139,'明光市',3,341182),(1359,140,'颍州区',3,341202),(1360,140,'颍东区',3,341203),(1361,140,'颍泉区',3,341204),(1362,140,'临泉县',3,341221),(1363,140,'太和县',3,341222),(1364,140,'阜南县',3,341225),(1365,140,'颍上县',3,341226),(1366,140,'界首市',3,341282),(1367,141,'埇桥区',3,341302),(1368,141,'砀山县',3,341321),(1369,141,'萧县',3,341322),(1370,141,'灵璧县',3,341323),(1371,141,'泗县',3,341324),(1372,142,'金安区',3,341502),(1373,142,'裕安区',3,341503),(1374,142,'叶集区',3,341504),(1375,142,'霍邱县',3,341522),(1376,142,'舒城县',3,341523),(1377,142,'金寨县',3,341524),(1378,142,'霍山县',3,341525),(1379,143,'谯城区',3,341602),(1380,143,'涡阳县',3,341621),(1381,143,'蒙城县',3,341622),(1382,143,'利辛县',3,341623),(1383,144,'贵池区',3,341702),(1384,144,'东至县',3,341721),(1385,144,'石台县',3,341722),(1386,144,'青阳县',3,341723),(1387,145,'宣州区',3,341802),(1388,145,'郎溪县',3,341821),(1389,145,'广德县',3,341822),(1390,145,'泾县',3,341823),(1391,145,'绩溪县',3,341824),(1392,145,'旌德县',3,341825),(1393,145,'宁国市',3,341881),(1394,146,'鼓楼区',3,350102),(1395,146,'台江区',3,350103),(1396,146,'仓山区',3,350104),(1397,146,'马尾区',3,350105),(1398,146,'晋安区',3,350111),(1399,146,'闽侯县',3,350121),(1400,146,'连江县',3,350122),(1401,146,'罗源县',3,350123),(1402,146,'闽清县',3,350124),(1403,146,'永泰县',3,350125),(1404,146,'平潭县',3,350128),(1405,146,'福清市',3,350181),(1406,146,'长乐市',3,350182),(1407,147,'思明区',3,350203),(1408,147,'海沧区',3,350205),(1409,147,'湖里区',3,350206),(1410,147,'集美区',3,350211),(1411,147,'同安区',3,350212),(1412,147,'翔安区',3,350213),(1413,148,'城厢区',3,350302),(1414,148,'涵江区',3,350303),(1415,148,'荔城区',3,350304),(1416,148,'秀屿区',3,350305),(1417,148,'仙游县',3,350322),(1418,149,'梅列区',3,350402),(1419,149,'三元区',3,350403),(1420,149,'明溪县',3,350421),(1421,149,'清流县',3,350423),(1422,149,'宁化县',3,350424),(1423,149,'大田县',3,350425),(1424,149,'尤溪县',3,350426),(1425,149,'沙县',3,350427),(1426,149,'将乐县',3,350428),(1427,149,'泰宁县',3,350429),(1428,149,'建宁县',3,350430),(1429,149,'永安市',3,350481),(1430,150,'鲤城区',3,350502),(1431,150,'丰泽区',3,350503),(1432,150,'洛江区',3,350504),(1433,150,'泉港区',3,350505),(1434,150,'惠安县',3,350521),(1435,150,'安溪县',3,350524),(1436,150,'永春县',3,350525),(1437,150,'德化县',3,350526),(1438,150,'金门县',3,350527),(1439,150,'石狮市',3,350581),(1440,150,'晋江市',3,350582),(1441,150,'南安市',3,350583),(1442,151,'芗城区',3,350602),(1443,151,'龙文区',3,350603),(1444,151,'云霄县',3,350622),(1445,151,'漳浦县',3,350623),(1446,151,'诏安县',3,350624),(1447,151,'长泰县',3,350625),(1448,151,'东山县',3,350626),(1449,151,'南靖县',3,350627),(1450,151,'平和县',3,350628),(1451,151,'华安县',3,350629),(1452,151,'龙海市',3,350681),(1453,152,'延平区',3,350702),(1454,152,'建阳区',3,350703),(1455,152,'顺昌县',3,350721),(1456,152,'浦城县',3,350722),(1457,152,'光泽县',3,350723),(1458,152,'松溪县',3,350724),(1459,152,'政和县',3,350725),(1460,152,'邵武市',3,350781),(1461,152,'武夷山市',3,350782),(1462,152,'建瓯市',3,350783),(1463,153,'新罗区',3,350802),(1464,153,'永定区',3,350803),(1465,153,'长汀县',3,350821),(1466,153,'上杭县',3,350823),(1467,153,'武平县',3,350824),(1468,153,'连城县',3,350825),(1469,153,'漳平市',3,350881),(1470,154,'蕉城区',3,350902),(1471,154,'霞浦县',3,350921),(1472,154,'古田县',3,350922),(1473,154,'屏南县',3,350923),(1474,154,'寿宁县',3,350924),(1475,154,'周宁县',3,350925),(1476,154,'柘荣县',3,350926),(1477,154,'福安市',3,350981),(1478,154,'福鼎市',3,350982),(1479,155,'东湖区',3,360102),(1480,155,'西湖区',3,360103),(1481,155,'青云谱区',3,360104),(1482,155,'湾里区',3,360105),(1483,155,'青山湖区',3,360111),(1484,155,'新建区',3,360112),(1485,155,'南昌县',3,360121),(1486,155,'安义县',3,360123),(1487,155,'进贤县',3,360124),(1488,156,'昌江区',3,360202),(1489,156,'珠山区',3,360203),(1490,156,'浮梁县',3,360222),(1491,156,'乐平市',3,360281),(1492,157,'安源区',3,360302),(1493,157,'湘东区',3,360313),(1494,157,'莲花县',3,360321),(1495,157,'上栗县',3,360322),(1496,157,'芦溪县',3,360323),(1497,158,'濂溪区',3,360402),(1498,158,'浔阳区',3,360403),(1499,158,'九江县',3,360421),(1500,158,'武宁县',3,360423),(1501,158,'修水县',3,360424),(1502,158,'永修县',3,360425),(1503,158,'德安县',3,360426),(1504,158,'都昌县',3,360428),(1505,158,'湖口县',3,360429),(1506,158,'彭泽县',3,360430),(1507,158,'瑞昌市',3,360481),(1508,158,'共青城市',3,360482),(1509,158,'庐山市',3,360483),(1510,159,'渝水区',3,360502),(1511,159,'分宜县',3,360521),(1512,160,'月湖区',3,360602),(1513,160,'余江县',3,360622),(1514,160,'贵溪市',3,360681),(1515,161,'章贡区',3,360702),(1516,161,'南康区',3,360703),(1517,161,'赣县',3,360721),(1518,161,'信丰县',3,360722),(1519,161,'大余县',3,360723),(1520,161,'上犹县',3,360724),(1521,161,'崇义县',3,360725),(1522,161,'安远县',3,360726),(1523,161,'龙南县',3,360727),(1524,161,'定南县',3,360728),(1525,161,'全南县',3,360729),(1526,161,'宁都县',3,360730),(1527,161,'于都县',3,360731),(1528,161,'兴国县',3,360732),(1529,161,'会昌县',3,360733),(1530,161,'寻乌县',3,360734),(1531,161,'石城县',3,360735),(1532,161,'瑞金市',3,360781),(1533,162,'吉州区',3,360802),(1534,162,'青原区',3,360803),(1535,162,'吉安县',3,360821),(1536,162,'吉水县',3,360822),(1537,162,'峡江县',3,360823),(1538,162,'新干县',3,360824),(1539,162,'永丰县',3,360825),(1540,162,'泰和县',3,360826),(1541,162,'遂川县',3,360827),(1542,162,'万安县',3,360828),(1543,162,'安福县',3,360829),(1544,162,'永新县',3,360830),(1545,162,'井冈山市',3,360881),(1546,163,'袁州区',3,360902),(1547,163,'奉新县',3,360921),(1548,163,'万载县',3,360922),(1549,163,'上高县',3,360923),(1550,163,'宜丰县',3,360924),(1551,163,'靖安县',3,360925),(1552,163,'铜鼓县',3,360926),(1553,163,'丰城市',3,360981),(1554,163,'樟树市',3,360982),(1555,163,'高安市',3,360983),(1556,164,'临川区',3,361002),(1557,164,'南城县',3,361021),(1558,164,'黎川县',3,361022),(1559,164,'南丰县',3,361023),(1560,164,'崇仁县',3,361024),(1561,164,'乐安县',3,361025),(1562,164,'宜黄县',3,361026),(1563,164,'金溪县',3,361027),(1564,164,'资溪县',3,361028),(1565,164,'东乡县',3,361029),(1566,164,'广昌县',3,361030),(1567,165,'信州区',3,361102),(1568,165,'广丰区',3,361103),(1569,165,'上饶县',3,361121),(1570,165,'玉山县',3,361123),(1571,165,'铅山县',3,361124),(1572,165,'横峰县',3,361125),(1573,165,'弋阳县',3,361126),(1574,165,'余干县',3,361127),(1575,165,'鄱阳县',3,361128),(1576,165,'万年县',3,361129),(1577,165,'婺源县',3,361130),(1578,165,'德兴市',3,361181),(1579,166,'历下区',3,370102),(1580,166,'市中区',3,370103),(1581,166,'槐荫区',3,370104),(1582,166,'天桥区',3,370105),(1583,166,'历城区',3,370112),(1584,166,'长清区',3,370113),(1585,166,'平阴县',3,370124),(1586,166,'济阳县',3,370125),(1587,166,'商河县',3,370126),(1588,166,'章丘市',3,370181),(1589,167,'市南区',3,370202),(1590,167,'市北区',3,370203),(1591,167,'黄岛区',3,370211),(1592,167,'崂山区',3,370212),(1593,167,'李沧区',3,370213),(1594,167,'城阳区',3,370214),(1595,167,'胶州市',3,370281),(1596,167,'即墨市',3,370282),(1597,167,'平度市',3,370283),(1598,167,'莱西市',3,370285),(1599,168,'淄川区',3,370302),(1600,168,'张店区',3,370303),(1601,168,'博山区',3,370304),(1602,168,'临淄区',3,370305),(1603,168,'周村区',3,370306),(1604,168,'桓台县',3,370321),(1605,168,'高青县',3,370322),(1606,168,'沂源县',3,370323),(1607,169,'市中区',3,370402),(1608,169,'薛城区',3,370403),(1609,169,'峄城区',3,370404),(1610,169,'台儿庄区',3,370405),(1611,169,'山亭区',3,370406),(1612,169,'滕州市',3,370481),(1613,170,'东营区',3,370502),(1614,170,'河口区',3,370503),(1615,170,'垦利区',3,370505),(1616,170,'利津县',3,370522),(1617,170,'广饶县',3,370523),(1618,171,'芝罘区',3,370602),(1619,171,'福山区',3,370611),(1620,171,'牟平区',3,370612),(1621,171,'莱山区',3,370613),(1622,171,'长岛县',3,370634),(1623,171,'龙口市',3,370681),(1624,171,'莱阳市',3,370682),(1625,171,'莱州市',3,370683),(1626,171,'蓬莱市',3,370684),(1627,171,'招远市',3,370685),(1628,171,'栖霞市',3,370686),(1629,171,'海阳市',3,370687),(1630,172,'潍城区',3,370702),(1631,172,'寒亭区',3,370703),(1632,172,'坊子区',3,370704),(1633,172,'奎文区',3,370705),(1634,172,'临朐县',3,370724),(1635,172,'昌乐县',3,370725),(1636,172,'青州市',3,370781),(1637,172,'诸城市',3,370782),(1638,172,'寿光市',3,370783),(1639,172,'安丘市',3,370784),(1640,172,'高密市',3,370785),(1641,172,'昌邑市',3,370786),(1642,173,'任城区',3,370811),(1643,173,'兖州区',3,370812),(1644,173,'微山县',3,370826),(1645,173,'鱼台县',3,370827),(1646,173,'金乡县',3,370828),(1647,173,'嘉祥县',3,370829),(1648,173,'汶上县',3,370830),(1649,173,'泗水县',3,370831),(1650,173,'梁山县',3,370832),(1651,173,'曲阜市',3,370881),(1652,173,'邹城市',3,370883),(1653,174,'泰山区',3,370902),(1654,174,'岱岳区',3,370911),(1655,174,'宁阳县',3,370921),(1656,174,'东平县',3,370923),(1657,174,'新泰市',3,370982),(1658,174,'肥城市',3,370983),(1659,175,'环翠区',3,371002),(1660,175,'文登区',3,371003),(1661,175,'荣成市',3,371082),(1662,175,'乳山市',3,371083),(1663,176,'东港区',3,371102),(1664,176,'岚山区',3,371103),(1665,176,'五莲县',3,371121),(1666,176,'莒县',3,371122),(1667,177,'莱城区',3,371202),(1668,177,'钢城区',3,371203),(1669,178,'兰山区',3,371302),(1670,178,'罗庄区',3,371311),(1671,178,'河东区',3,371312),(1672,178,'沂南县',3,371321),(1673,178,'郯城县',3,371322),(1674,178,'沂水县',3,371323),(1675,178,'兰陵县',3,371324),(1676,178,'费县',3,371325),(1677,178,'平邑县',3,371326),(1678,178,'莒南县',3,371327),(1679,178,'蒙阴县',3,371328),(1680,178,'临沭县',3,371329),(1681,179,'德城区',3,371402),(1682,179,'陵城区',3,371403),(1683,179,'宁津县',3,371422),(1684,179,'庆云县',3,371423),(1685,179,'临邑县',3,371424),(1686,179,'齐河县',3,371425),(1687,179,'平原县',3,371426),(1688,179,'夏津县',3,371427),(1689,179,'武城县',3,371428),(1690,179,'乐陵市',3,371481),(1691,179,'禹城市',3,371482),(1692,180,'东昌府区',3,371502),(1693,180,'阳谷县',3,371521),(1694,180,'莘县',3,371522),(1695,180,'茌平县',3,371523),(1696,180,'东阿县',3,371524),(1697,180,'冠县',3,371525),(1698,180,'高唐县',3,371526),(1699,180,'临清市',3,371581),(1700,181,'滨城区',3,371602),(1701,181,'沾化区',3,371603),(1702,181,'惠民县',3,371621),(1703,181,'阳信县',3,371622),(1704,181,'无棣县',3,371623),(1705,181,'博兴县',3,371625),(1706,181,'邹平县',3,371626),(1707,182,'牡丹区',3,371702),(1708,182,'定陶区',3,371703),(1709,182,'曹县',3,371721),(1710,182,'单县',3,371722),(1711,182,'成武县',3,371723),(1712,182,'巨野县',3,371724),(1713,182,'郓城县',3,371725),(1714,182,'鄄城县',3,371726),(1715,182,'东明县',3,371728),(1716,183,'中原区',3,410102),(1717,183,'二七区',3,410103),(1718,183,'管城回族区',3,410104),(1719,183,'金水区',3,410105),(1720,183,'上街区',3,410106),(1721,183,'惠济区',3,410108),(1722,183,'中牟县',3,410122),(1723,183,'巩义市',3,410181),(1724,183,'荥阳市',3,410182),(1725,183,'新密市',3,410183),(1726,183,'新郑市',3,410184),(1727,183,'登封市',3,410185),(1728,184,'龙亭区',3,410202),(1729,184,'顺河回族区',3,410203),(1730,184,'鼓楼区',3,410204),(1731,184,'禹王台区',3,410205),(1732,184,'金明区',3,410211),(1733,184,'祥符区',3,410212),(1734,184,'杞县',3,410221),(1735,184,'通许县',3,410222),(1736,184,'尉氏县',3,410223),(1737,184,'兰考县',3,410225),(1738,185,'老城区',3,410302),(1739,185,'西工区',3,410303),(1740,185,'瀍河回族区',3,410304),(1741,185,'涧西区',3,410305),(1742,185,'吉利区',3,410306),(1743,185,'洛龙区',3,410311),(1744,185,'孟津县',3,410322),(1745,185,'新安县',3,410323),(1746,185,'栾川县',3,410324),(1747,185,'嵩县',3,410325),(1748,185,'汝阳县',3,410326),(1749,185,'宜阳县',3,410327),(1750,185,'洛宁县',3,410328),(1751,185,'伊川县',3,410329),(1752,185,'偃师市',3,410381),(1753,186,'新华区',3,410402),(1754,186,'卫东区',3,410403),(1755,186,'石龙区',3,410404),(1756,186,'湛河区',3,410411),(1757,186,'宝丰县',3,410421),(1758,186,'叶县',3,410422),(1759,186,'鲁山县',3,410423),(1760,186,'郏县',3,410425),(1761,186,'舞钢市',3,410481),(1762,186,'汝州市',3,410482),(1763,187,'文峰区',3,410502),(1764,187,'北关区',3,410503),(1765,187,'殷都区',3,410505),(1766,187,'龙安区',3,410506),(1767,187,'安阳县',3,410522),(1768,187,'汤阴县',3,410523),(1769,187,'滑县',3,410526),(1770,187,'内黄县',3,410527),(1771,187,'林州市',3,410581),(1772,188,'鹤山区',3,410602),(1773,188,'山城区',3,410603),(1774,188,'淇滨区',3,410611),(1775,188,'浚县',3,410621),(1776,188,'淇县',3,410622),(1777,189,'红旗区',3,410702),(1778,189,'卫滨区',3,410703),(1779,189,'凤泉区',3,410704),(1780,189,'牧野区',3,410711),(1781,189,'新乡县',3,410721),(1782,189,'获嘉县',3,410724),(1783,189,'原阳县',3,410725),(1784,189,'延津县',3,410726),(1785,189,'封丘县',3,410727),(1786,189,'长垣县',3,410728),(1787,189,'卫辉市',3,410781),(1788,189,'辉县市',3,410782),(1789,190,'解放区',3,410802),(1790,190,'中站区',3,410803),(1791,190,'马村区',3,410804),(1792,190,'山阳区',3,410811),(1793,190,'修武县',3,410821),(1794,190,'博爱县',3,410822),(1795,190,'武陟县',3,410823),(1796,190,'温县',3,410825),(1797,190,'沁阳市',3,410882),(1798,190,'孟州市',3,410883),(1799,191,'华龙区',3,410902),(1800,191,'清丰县',3,410922),(1801,191,'南乐县',3,410923),(1802,191,'范县',3,410926),(1803,191,'台前县',3,410927),(1804,191,'濮阳县',3,410928),(1805,192,'魏都区',3,411002),(1806,192,'许昌县',3,411023),(1807,192,'鄢陵县',3,411024),(1808,192,'襄城县',3,411025),(1809,192,'禹州市',3,411081),(1810,192,'长葛市',3,411082),(1811,193,'源汇区',3,411102),(1812,193,'郾城区',3,411103),(1813,193,'召陵区',3,411104),(1814,193,'舞阳县',3,411121),(1815,193,'临颍县',3,411122),(1816,194,'湖滨区',3,411202),(1817,194,'陕州区',3,411203),(1818,194,'渑池县',3,411221),(1819,194,'卢氏县',3,411224),(1820,194,'义马市',3,411281),(1821,194,'灵宝市',3,411282),(1822,195,'宛城区',3,411302),(1823,195,'卧龙区',3,411303),(1824,195,'南召县',3,411321),(1825,195,'方城县',3,411322),(1826,195,'西峡县',3,411323),(1827,195,'镇平县',3,411324),(1828,195,'内乡县',3,411325),(1829,195,'淅川县',3,411326),(1830,195,'社旗县',3,411327),(1831,195,'唐河县',3,411328),(1832,195,'新野县',3,411329),(1833,195,'桐柏县',3,411330),(1834,195,'邓州市',3,411381),(1835,196,'梁园区',3,411402),(1836,196,'睢阳区',3,411403),(1837,196,'民权县',3,411421),(1838,196,'睢县',3,411422),(1839,196,'宁陵县',3,411423),(1840,196,'柘城县',3,411424),(1841,196,'虞城县',3,411425),(1842,196,'夏邑县',3,411426),(1843,196,'永城市',3,411481),(1844,197,'浉河区',3,411502),(1845,197,'平桥区',3,411503),(1846,197,'罗山县',3,411521),(1847,197,'光山县',3,411522),(1848,197,'新县',3,411523),(1849,197,'商城县',3,411524),(1850,197,'固始县',3,411525),(1851,197,'潢川县',3,411526),(1852,197,'淮滨县',3,411527),(1853,197,'息县',3,411528),(1854,198,'川汇区',3,411602),(1855,198,'扶沟县',3,411621),(1856,198,'西华县',3,411622),(1857,198,'商水县',3,411623),(1858,198,'沈丘县',3,411624),(1859,198,'郸城县',3,411625),(1860,198,'淮阳县',3,411626),(1861,198,'太康县',3,411627),(1862,198,'鹿邑县',3,411628),(1863,198,'项城市',3,411681),(1864,199,'驿城区',3,411702),(1865,199,'西平县',3,411721),(1866,199,'上蔡县',3,411722),(1867,199,'平舆县',3,411723),(1868,199,'正阳县',3,411724),(1869,199,'确山县',3,411725),(1870,199,'泌阳县',3,411726),(1871,199,'汝南县',3,411727),(1872,199,'遂平县',3,411728),(1873,199,'新蔡县',3,411729),(1874,200,'济源市',3,419001),(1875,201,'江岸区',3,420102),(1876,201,'江汉区',3,420103),(1877,201,'硚口区',3,420104),(1878,201,'汉阳区',3,420105),(1879,201,'武昌区',3,420106),(1880,201,'青山区',3,420107),(1881,201,'洪山区',3,420111),(1882,201,'东西湖区',3,420112),(1883,201,'汉南区',3,420113),(1884,201,'蔡甸区',3,420114),(1885,201,'江夏区',3,420115),(1886,201,'黄陂区',3,420116),(1887,201,'新洲区',3,420117),(1888,202,'黄石港区',3,420202),(1889,202,'西塞山区',3,420203),(1890,202,'下陆区',3,420204),(1891,202,'铁山区',3,420205),(1892,202,'阳新县',3,420222),(1893,202,'大冶市',3,420281),(1894,203,'茅箭区',3,420302),(1895,203,'张湾区',3,420303),(1896,203,'郧阳区',3,420304),(1897,203,'郧西县',3,420322),(1898,203,'竹山县',3,420323),(1899,203,'竹溪县',3,420324),(1900,203,'房县',3,420325),(1901,203,'丹江口市',3,420381),(1902,204,'西陵区',3,420502),(1903,204,'伍家岗区',3,420503),(1904,204,'点军区',3,420504),(1905,204,'猇亭区',3,420505),(1906,204,'夷陵区',3,420506),(1907,204,'远安县',3,420525),(1908,204,'兴山县',3,420526),(1909,204,'秭归县',3,420527),(1910,204,'长阳土家族自治县',3,420528),(1911,204,'五峰土家族自治县',3,420529),(1912,204,'宜都市',3,420581),(1913,204,'当阳市',3,420582),(1914,204,'枝江市',3,420583),(1915,205,'襄城区',3,420602),(1916,205,'樊城区',3,420606),(1917,205,'襄州区',3,420607),(1918,205,'南漳县',3,420624),(1919,205,'谷城县',3,420625),(1920,205,'保康县',3,420626),(1921,205,'老河口市',3,420682),(1922,205,'枣阳市',3,420683),(1923,205,'宜城市',3,420684),(1924,206,'梁子湖区',3,420702),(1925,206,'华容区',3,420703),(1926,206,'鄂城区',3,420704),(1927,207,'东宝区',3,420802),(1928,207,'掇刀区',3,420804),(1929,207,'京山县',3,420821),(1930,207,'沙洋县',3,420822),(1931,207,'钟祥市',3,420881),(1932,208,'孝南区',3,420902),(1933,208,'孝昌县',3,420921),(1934,208,'大悟县',3,420922),(1935,208,'云梦县',3,420923),(1936,208,'应城市',3,420981),(1937,208,'安陆市',3,420982),(1938,208,'汉川市',3,420984),(1939,209,'沙市区',3,421002),(1940,209,'荆州区',3,421003),(1941,209,'公安县',3,421022),(1942,209,'监利县',3,421023),(1943,209,'江陵县',3,421024),(1944,209,'石首市',3,421081),(1945,209,'洪湖市',3,421083),(1946,209,'松滋市',3,421087),(1947,210,'黄州区',3,421102),(1948,210,'团风县',3,421121),(1949,210,'红安县',3,421122),(1950,210,'罗田县',3,421123),(1951,210,'英山县',3,421124),(1952,210,'浠水县',3,421125),(1953,210,'蕲春县',3,421126),(1954,210,'黄梅县',3,421127),(1955,210,'麻城市',3,421181),(1956,210,'武穴市',3,421182),(1957,211,'咸安区',3,421202),(1958,211,'嘉鱼县',3,421221),(1959,211,'通城县',3,421222),(1960,211,'崇阳县',3,421223),(1961,211,'通山县',3,421224),(1962,211,'赤壁市',3,421281),(1963,212,'曾都区',3,421303),(1964,212,'随县',3,421321),(1965,212,'广水市',3,421381),(1966,213,'恩施市',3,422801),(1967,213,'利川市',3,422802),(1968,213,'建始县',3,422822),(1969,213,'巴东县',3,422823),(1970,213,'宣恩县',3,422825),(1971,213,'咸丰县',3,422826),(1972,213,'来凤县',3,422827),(1973,213,'鹤峰县',3,422828),(1974,214,'仙桃市',3,429004),(1975,214,'潜江市',3,429005),(1976,214,'天门市',3,429006),(1977,214,'神农架林区',3,429021),(1978,215,'芙蓉区',3,430102),(1979,215,'天心区',3,430103),(1980,215,'岳麓区',3,430104),(1981,215,'开福区',3,430105),(1982,215,'雨花区',3,430111),(1983,215,'望城区',3,430112),(1984,215,'长沙县',3,430121),(1985,215,'宁乡县',3,430124),(1986,215,'浏阳市',3,430181),(1987,216,'荷塘区',3,430202),(1988,216,'芦淞区',3,430203),(1989,216,'石峰区',3,430204),(1990,216,'天元区',3,430211),(1991,216,'株洲县',3,430221),(1992,216,'攸县',3,430223),(1993,216,'茶陵县',3,430224),(1994,216,'炎陵县',3,430225),(1995,216,'醴陵市',3,430281),(1996,217,'雨湖区',3,430302),(1997,217,'岳塘区',3,430304),(1998,217,'湘潭县',3,430321),(1999,217,'湘乡市',3,430381),(2000,217,'韶山市',3,430382),(2001,218,'珠晖区',3,430405),(2002,218,'雁峰区',3,430406),(2003,218,'石鼓区',3,430407),(2004,218,'蒸湘区',3,430408),(2005,218,'南岳区',3,430412),(2006,218,'衡阳县',3,430421),(2007,218,'衡南县',3,430422),(2008,218,'衡山县',3,430423),(2009,218,'衡东县',3,430424),(2010,218,'祁东县',3,430426),(2011,218,'耒阳市',3,430481),(2012,218,'常宁市',3,430482),(2013,219,'双清区',3,430502),(2014,219,'大祥区',3,430503),(2015,219,'北塔区',3,430511),(2016,219,'邵东县',3,430521),(2017,219,'新邵县',3,430522),(2018,219,'邵阳县',3,430523),(2019,219,'隆回县',3,430524),(2020,219,'洞口县',3,430525),(2021,219,'绥宁县',3,430527),(2022,219,'新宁县',3,430528),(2023,219,'城步苗族自治县',3,430529),(2024,219,'武冈市',3,430581),(2025,220,'岳阳楼区',3,430602),(2026,220,'云溪区',3,430603),(2027,220,'君山区',3,430611),(2028,220,'岳阳县',3,430621),(2029,220,'华容县',3,430623),(2030,220,'湘阴县',3,430624),(2031,220,'平江县',3,430626),(2032,220,'汨罗市',3,430681),(2033,220,'临湘市',3,430682),(2034,221,'武陵区',3,430702),(2035,221,'鼎城区',3,430703),(2036,221,'安乡县',3,430721),(2037,221,'汉寿县',3,430722),(2038,221,'澧县',3,430723),(2039,221,'临澧县',3,430724),(2040,221,'桃源县',3,430725),(2041,221,'石门县',3,430726),(2042,221,'津市市',3,430781),(2043,222,'永定区',3,430802),(2044,222,'武陵源区',3,430811),(2045,222,'慈利县',3,430821),(2046,222,'桑植县',3,430822),(2047,223,'资阳区',3,430902),(2048,223,'赫山区',3,430903),(2049,223,'南县',3,430921),(2050,223,'桃江县',3,430922),(2051,223,'安化县',3,430923),(2052,223,'沅江市',3,430981),(2053,224,'北湖区',3,431002),(2054,224,'苏仙区',3,431003),(2055,224,'桂阳县',3,431021),(2056,224,'宜章县',3,431022),(2057,224,'永兴县',3,431023),(2058,224,'嘉禾县',3,431024),(2059,224,'临武县',3,431025),(2060,224,'汝城县',3,431026),(2061,224,'桂东县',3,431027),(2062,224,'安仁县',3,431028),(2063,224,'资兴市',3,431081),(2064,225,'零陵区',3,431102),(2065,225,'冷水滩区',3,431103),(2066,225,'祁阳县',3,431121),(2067,225,'东安县',3,431122),(2068,225,'双牌县',3,431123),(2069,225,'道县',3,431124),(2070,225,'江永县',3,431125),(2071,225,'宁远县',3,431126),(2072,225,'蓝山县',3,431127),(2073,225,'新田县',3,431128),(2074,225,'江华瑶族自治县',3,431129),(2075,226,'鹤城区',3,431202),(2076,226,'中方县',3,431221),(2077,226,'沅陵县',3,431222),(2078,226,'辰溪县',3,431223),(2079,226,'溆浦县',3,431224),(2080,226,'会同县',3,431225),(2081,226,'麻阳苗族自治县',3,431226),(2082,226,'新晃侗族自治县',3,431227),(2083,226,'芷江侗族自治县',3,431228),(2084,226,'靖州苗族侗族自治县',3,431229),(2085,226,'通道侗族自治县',3,431230),(2086,226,'洪江市',3,431281),(2087,227,'娄星区',3,431302),(2088,227,'双峰县',3,431321),(2089,227,'新化县',3,431322),(2090,227,'冷水江市',3,431381),(2091,227,'涟源市',3,431382),(2092,228,'吉首市',3,433101),(2093,228,'泸溪县',3,433122),(2094,228,'凤凰县',3,433123),(2095,228,'花垣县',3,433124),(2096,228,'保靖县',3,433125),(2097,228,'古丈县',3,433126),(2098,228,'永顺县',3,433127),(2099,228,'龙山县',3,433130),(2100,229,'荔湾区',3,440103),(2101,229,'越秀区',3,440104),(2102,229,'海珠区',3,440105),(2103,229,'天河区',3,440106),(2104,229,'白云区',3,440111),(2105,229,'黄埔区',3,440112),(2106,229,'番禺区',3,440113),(2107,229,'花都区',3,440114),(2108,229,'南沙区',3,440115),(2109,229,'从化区',3,440117),(2110,229,'增城区',3,440118),(2111,230,'武江区',3,440203),(2112,230,'浈江区',3,440204),(2113,230,'曲江区',3,440205),(2114,230,'始兴县',3,440222),(2115,230,'仁化县',3,440224),(2116,230,'翁源县',3,440229),(2117,230,'乳源瑶族自治县',3,440232),(2118,230,'新丰县',3,440233),(2119,230,'乐昌市',3,440281),(2120,230,'南雄市',3,440282),(2121,231,'罗湖区',3,440303),(2122,231,'福田区',3,440304),(2123,231,'南山区',3,440305),(2124,231,'宝安区',3,440306),(2125,231,'龙岗区',3,440307),(2126,231,'盐田区',3,440308),(2127,232,'香洲区',3,440402),(2128,232,'斗门区',3,440403),(2129,232,'金湾区',3,440404),(2130,233,'龙湖区',3,440507),(2131,233,'金平区',3,440511),(2132,233,'濠江区',3,440512),(2133,233,'潮阳区',3,440513),(2134,233,'潮南区',3,440514),(2135,233,'澄海区',3,440515),(2136,233,'南澳县',3,440523),(2137,234,'禅城区',3,440604),(2138,234,'南海区',3,440605),(2139,234,'顺德区',3,440606),(2140,234,'三水区',3,440607),(2141,234,'高明区',3,440608),(2142,235,'蓬江区',3,440703),(2143,235,'江海区',3,440704),(2144,235,'新会区',3,440705),(2145,235,'台山市',3,440781),(2146,235,'开平市',3,440783),(2147,235,'鹤山市',3,440784),(2148,235,'恩平市',3,440785),(2149,236,'赤坎区',3,440802),(2150,236,'霞山区',3,440803),(2151,236,'坡头区',3,440804),(2152,236,'麻章区',3,440811),(2153,236,'遂溪县',3,440823),(2154,236,'徐闻县',3,440825),(2155,236,'廉江市',3,440881),(2156,236,'雷州市',3,440882),(2157,236,'吴川市',3,440883),(2158,237,'茂南区',3,440902),(2159,237,'电白区',3,440904),(2160,237,'高州市',3,440981),(2161,237,'化州市',3,440982),(2162,237,'信宜市',3,440983),(2163,238,'端州区',3,441202),(2164,238,'鼎湖区',3,441203),(2165,238,'高要区',3,441204),(2166,238,'广宁县',3,441223),(2167,238,'怀集县',3,441224),(2168,238,'封开县',3,441225),(2169,238,'德庆县',3,441226),(2170,238,'四会市',3,441284),(2171,239,'惠城区',3,441302),(2172,239,'惠阳区',3,441303),(2173,239,'博罗县',3,441322),(2174,239,'惠东县',3,441323),(2175,239,'龙门县',3,441324),(2176,240,'梅江区',3,441402),(2177,240,'梅县区',3,441403),(2178,240,'大埔县',3,441422),(2179,240,'丰顺县',3,441423),(2180,240,'五华县',3,441424),(2181,240,'平远县',3,441426),(2182,240,'蕉岭县',3,441427),(2183,240,'兴宁市',3,441481),(2184,241,'城区',3,441502),(2185,241,'海丰县',3,441521),(2186,241,'陆河县',3,441523),(2187,241,'陆丰市',3,441581),(2188,242,'源城区',3,441602),(2189,242,'紫金县',3,441621),(2190,242,'龙川县',3,441622),(2191,242,'连平县',3,441623),(2192,242,'和平县',3,441624),(2193,242,'东源县',3,441625),(2194,243,'江城区',3,441702),(2195,243,'阳东区',3,441704),(2196,243,'阳西县',3,441721),(2197,243,'阳春市',3,441781),(2198,244,'清城区',3,441802),(2199,244,'清新区',3,441803),(2200,244,'佛冈县',3,441821),(2201,244,'阳山县',3,441823),(2202,244,'连山壮族瑶族自治县',3,441825),(2203,244,'连南瑶族自治县',3,441826),(2204,244,'英德市',3,441881),(2205,244,'连州市',3,441882),(2206,245,'东莞市',3,441900),(2207,246,'中山市',3,442000),(2208,247,'湘桥区',3,445102),(2209,247,'潮安区',3,445103),(2210,247,'饶平县',3,445122),(2211,248,'榕城区',3,445202),(2212,248,'揭东区',3,445203),(2213,248,'揭西县',3,445222),(2214,248,'惠来县',3,445224),(2215,248,'普宁市',3,445281),(2216,249,'云城区',3,445302),(2217,249,'云安区',3,445303),(2218,249,'新兴县',3,445321),(2219,249,'郁南县',3,445322),(2220,249,'罗定市',3,445381),(2221,250,'兴宁区',3,450102),(2222,250,'青秀区',3,450103),(2223,250,'江南区',3,450105),(2224,250,'西乡塘区',3,450107),(2225,250,'良庆区',3,450108),(2226,250,'邕宁区',3,450109),(2227,250,'武鸣区',3,450110),(2228,250,'隆安县',3,450123),(2229,250,'马山县',3,450124),(2230,250,'上林县',3,450125),(2231,250,'宾阳县',3,450126),(2232,250,'横县',3,450127),(2233,251,'城中区',3,450202),(2234,251,'鱼峰区',3,450203),(2235,251,'柳南区',3,450204),(2236,251,'柳北区',3,450205),(2237,251,'柳江区',3,450206),(2238,251,'柳城县',3,450222),(2239,251,'鹿寨县',3,450223),(2240,251,'融安县',3,450224),(2241,251,'融水苗族自治县',3,450225),(2242,251,'三江侗族自治县',3,450226),(2243,252,'秀峰区',3,450302),(2244,252,'叠彩区',3,450303),(2245,252,'象山区',3,450304),(2246,252,'七星区',3,450305),(2247,252,'雁山区',3,450311),(2248,252,'临桂区',3,450312),(2249,252,'阳朔县',3,450321),(2250,252,'灵川县',3,450323),(2251,252,'全州县',3,450324),(2252,252,'兴安县',3,450325),(2253,252,'永福县',3,450326),(2254,252,'灌阳县',3,450327),(2255,252,'龙胜各族自治县',3,450328),(2256,252,'资源县',3,450329),(2257,252,'平乐县',3,450330),(2258,252,'荔浦县',3,450331),(2259,252,'恭城瑶族自治县',3,450332),(2260,253,'万秀区',3,450403),(2261,253,'长洲区',3,450405),(2262,253,'龙圩区',3,450406),(2263,253,'苍梧县',3,450421),(2264,253,'藤县',3,450422),(2265,253,'蒙山县',3,450423),(2266,253,'岑溪市',3,450481),(2267,254,'海城区',3,450502),(2268,254,'银海区',3,450503),(2269,254,'铁山港区',3,450512),(2270,254,'合浦县',3,450521),(2271,255,'港口区',3,450602),(2272,255,'防城区',3,450603),(2273,255,'上思县',3,450621),(2274,255,'东兴市',3,450681),(2275,256,'钦南区',3,450702),(2276,256,'钦北区',3,450703),(2277,256,'灵山县',3,450721),(2278,256,'浦北县',3,450722),(2279,257,'港北区',3,450802),(2280,257,'港南区',3,450803),(2281,257,'覃塘区',3,450804),(2282,257,'平南县',3,450821),(2283,257,'桂平市',3,450881),(2284,258,'玉州区',3,450902),(2285,258,'福绵区',3,450903),(2286,258,'容县',3,450921),(2287,258,'陆川县',3,450922),(2288,258,'博白县',3,450923),(2289,258,'兴业县',3,450924),(2290,258,'北流市',3,450981),(2291,259,'右江区',3,451002),(2292,259,'田阳县',3,451021),(2293,259,'田东县',3,451022),(2294,259,'平果县',3,451023),(2295,259,'德保县',3,451024),(2296,259,'那坡县',3,451026),(2297,259,'凌云县',3,451027),(2298,259,'乐业县',3,451028),(2299,259,'田林县',3,451029),(2300,259,'西林县',3,451030),(2301,259,'隆林各族自治县',3,451031),(2302,259,'靖西市',3,451081),(2303,260,'八步区',3,451102),(2304,260,'平桂区',3,451103),(2305,260,'昭平县',3,451121),(2306,260,'钟山县',3,451122),(2307,260,'富川瑶族自治县',3,451123),(2308,261,'金城江区',3,451202),(2309,261,'南丹县',3,451221),(2310,261,'天峨县',3,451222),(2311,261,'凤山县',3,451223),(2312,261,'东兰县',3,451224),(2313,261,'罗城仫佬族自治县',3,451225),(2314,261,'环江毛南族自治县',3,451226),(2315,261,'巴马瑶族自治县',3,451227),(2316,261,'都安瑶族自治县',3,451228),(2317,261,'大化瑶族自治县',3,451229),(2318,261,'宜州市',3,451281),(2319,262,'兴宾区',3,451302),(2320,262,'忻城县',3,451321),(2321,262,'象州县',3,451322),(2322,262,'武宣县',3,451323),(2323,262,'金秀瑶族自治县',3,451324),(2324,262,'合山市',3,451381),(2325,263,'江州区',3,451402),(2326,263,'扶绥县',3,451421),(2327,263,'宁明县',3,451422),(2328,263,'龙州县',3,451423),(2329,263,'大新县',3,451424),(2330,263,'天等县',3,451425),(2331,263,'凭祥市',3,451481),(2332,264,'秀英区',3,460105),(2333,264,'龙华区',3,460106),(2334,264,'琼山区',3,460107),(2335,264,'美兰区',3,460108),(2336,265,'市辖区',3,460201),(2337,265,'海棠区',3,460202),(2338,265,'吉阳区',3,460203),(2339,265,'天涯区',3,460204),(2340,265,'崖州区',3,460205),(2341,266,'西沙群岛',3,460321),(2342,266,'南沙群岛',3,460322),(2343,266,'中沙群岛的岛礁及其海域',3,460323),(2344,267,'儋州市',3,460400),(2345,268,'五指山市',3,469001),(2346,268,'琼海市',3,469002),(2347,268,'文昌市',3,469005),(2348,268,'万宁市',3,469006),(2349,268,'东方市',3,469007),(2350,268,'定安县',3,469021),(2351,268,'屯昌县',3,469022),(2352,268,'澄迈县',3,469023),(2353,268,'临高县',3,469024),(2354,268,'白沙黎族自治县',3,469025),(2355,268,'昌江黎族自治县',3,469026),(2356,268,'乐东黎族自治县',3,469027),(2357,268,'陵水黎族自治县',3,469028),(2358,268,'保亭黎族苗族自治县',3,469029),(2359,268,'琼中黎族苗族自治县',3,469030),(2360,269,'万州区',3,500101),(2361,269,'涪陵区',3,500102),(2362,269,'渝中区',3,500103),(2363,269,'大渡口区',3,500104),(2364,269,'江北区',3,500105),(2365,269,'沙坪坝区',3,500106),(2366,269,'九龙坡区',3,500107),(2367,269,'南岸区',3,500108),(2368,269,'北碚区',3,500109),(2369,269,'綦江区',3,500110),(2370,269,'大足区',3,500111),(2371,269,'渝北区',3,500112),(2372,269,'巴南区',3,500113),(2373,269,'黔江区',3,500114),(2374,269,'长寿区',3,500115),(2375,269,'江津区',3,500116),(2376,269,'合川区',3,500117),(2377,269,'永川区',3,500118),(2378,269,'南川区',3,500119),(2379,269,'璧山区',3,500120),(2380,269,'铜梁区',3,500151),(2381,269,'潼南区',3,500152),(2382,269,'荣昌区',3,500153),(2383,269,'开州区',3,500154),(2384,270,'梁平县',3,500228),(2385,270,'城口县',3,500229),(2386,270,'丰都县',3,500230),(2387,270,'垫江县',3,500231),(2388,270,'武隆县',3,500232),(2389,270,'忠县',3,500233),(2390,270,'云阳县',3,500235),(2391,270,'奉节县',3,500236),(2392,270,'巫山县',3,500237),(2393,270,'巫溪县',3,500238),(2394,270,'石柱土家族自治县',3,500240),(2395,270,'秀山土家族苗族自治县',3,500241),(2396,270,'酉阳土家族苗族自治县',3,500242),(2397,270,'彭水苗族土家族自治县',3,500243),(2398,271,'锦江区',3,510104),(2399,271,'青羊区',3,510105),(2400,271,'金牛区',3,510106),(2401,271,'武侯区',3,510107),(2402,271,'成华区',3,510108),(2403,271,'龙泉驿区',3,510112),(2404,271,'青白江区',3,510113),(2405,271,'新都区',3,510114),(2406,271,'温江区',3,510115),(2407,271,'双流区',3,510116),(2408,271,'金堂县',3,510121),(2409,271,'郫县',3,510124),(2410,271,'大邑县',3,510129),(2411,271,'蒲江县',3,510131),(2412,271,'新津县',3,510132),(2413,271,'都江堰市',3,510181),(2414,271,'彭州市',3,510182),(2415,271,'邛崃市',3,510183),(2416,271,'崇州市',3,510184),(2417,271,'简阳市',3,510185),(2418,272,'自流井区',3,510302),(2419,272,'贡井区',3,510303),(2420,272,'大安区',3,510304),(2421,272,'沿滩区',3,510311),(2422,272,'荣县',3,510321),(2423,272,'富顺县',3,510322),(2424,273,'东区',3,510402),(2425,273,'西区',3,510403),(2426,273,'仁和区',3,510411),(2427,273,'米易县',3,510421),(2428,273,'盐边县',3,510422),(2429,274,'江阳区',3,510502),(2430,274,'纳溪区',3,510503),(2431,274,'龙马潭区',3,510504),(2432,274,'泸县',3,510521),(2433,274,'合江县',3,510522),(2434,274,'叙永县',3,510524),(2435,274,'古蔺县',3,510525),(2436,275,'旌阳区',3,510603),(2437,275,'中江县',3,510623),(2438,275,'罗江县',3,510626),(2439,275,'广汉市',3,510681),(2440,275,'什邡市',3,510682),(2441,275,'绵竹市',3,510683),(2442,276,'涪城区',3,510703),(2443,276,'游仙区',3,510704),(2444,276,'安州区',3,510705),(2445,276,'三台县',3,510722),(2446,276,'盐亭县',3,510723),(2447,276,'梓潼县',3,510725),(2448,276,'北川羌族自治县',3,510726),(2449,276,'平武县',3,510727),(2450,276,'江油市',3,510781),(2451,277,'利州区',3,510802),(2452,277,'昭化区',3,510811),(2453,277,'朝天区',3,510812),(2454,277,'旺苍县',3,510821),(2455,277,'青川县',3,510822),(2456,277,'剑阁县',3,510823),(2457,277,'苍溪县',3,510824),(2458,278,'船山区',3,510903),(2459,278,'安居区',3,510904),(2460,278,'蓬溪县',3,510921),(2461,278,'射洪县',3,510922),(2462,278,'大英县',3,510923),(2463,279,'市中区',3,511002),(2464,279,'东兴区',3,511011),(2465,279,'威远县',3,511024),(2466,279,'资中县',3,511025),(2467,279,'隆昌县',3,511028),(2468,280,'市中区',3,511102),(2469,280,'沙湾区',3,511111),(2470,280,'五通桥区',3,511112),(2471,280,'金口河区',3,511113),(2472,280,'犍为县',3,511123),(2473,280,'井研县',3,511124),(2474,280,'夹江县',3,511126),(2475,280,'沐川县',3,511129),(2476,280,'峨边彝族自治县',3,511132),(2477,280,'马边彝族自治县',3,511133),(2478,280,'峨眉山市',3,511181),(2479,281,'顺庆区',3,511302),(2480,281,'高坪区',3,511303),(2481,281,'嘉陵区',3,511304),(2482,281,'南部县',3,511321),(2483,281,'营山县',3,511322),(2484,281,'蓬安县',3,511323),(2485,281,'仪陇县',3,511324),(2486,281,'西充县',3,511325),(2487,281,'阆中市',3,511381),(2488,282,'东坡区',3,511402),(2489,282,'彭山区',3,511403),(2490,282,'仁寿县',3,511421),(2491,282,'洪雅县',3,511423),(2492,282,'丹棱县',3,511424),(2493,282,'青神县',3,511425),(2494,283,'翠屏区',3,511502),(2495,283,'南溪区',3,511503),(2496,283,'宜宾县',3,511521),(2497,283,'江安县',3,511523),(2498,283,'长宁县',3,511524),(2499,283,'高县',3,511525),(2500,283,'珙县',3,511526),(2501,283,'筠连县',3,511527),(2502,283,'兴文县',3,511528),(2503,283,'屏山县',3,511529),(2504,284,'广安区',3,511602),(2505,284,'前锋区',3,511603),(2506,284,'岳池县',3,511621),(2507,284,'武胜县',3,511622),(2508,284,'邻水县',3,511623),(2509,284,'华蓥市',3,511681),(2510,285,'通川区',3,511702),(2511,285,'达川区',3,511703),(2512,285,'宣汉县',3,511722),(2513,285,'开江县',3,511723),(2514,285,'大竹县',3,511724),(2515,285,'渠县',3,511725),(2516,285,'万源市',3,511781),(2517,286,'雨城区',3,511802),(2518,286,'名山区',3,511803),(2519,286,'荥经县',3,511822),(2520,286,'汉源县',3,511823),(2521,286,'石棉县',3,511824),(2522,286,'天全县',3,511825),(2523,286,'芦山县',3,511826),(2524,286,'宝兴县',3,511827),(2525,287,'巴州区',3,511902),(2526,287,'恩阳区',3,511903),(2527,287,'通江县',3,511921),(2528,287,'南江县',3,511922),(2529,287,'平昌县',3,511923),(2530,288,'雁江区',3,512002),(2531,288,'安岳县',3,512021),(2532,288,'乐至县',3,512022),(2533,289,'马尔康市',3,513201),(2534,289,'汶川县',3,513221),(2535,289,'理县',3,513222),(2536,289,'茂县',3,513223),(2537,289,'松潘县',3,513224),(2538,289,'九寨沟县',3,513225),(2539,289,'金川县',3,513226),(2540,289,'小金县',3,513227),(2541,289,'黑水县',3,513228),(2542,289,'壤塘县',3,513230),(2543,289,'阿坝县',3,513231),(2544,289,'若尔盖县',3,513232),(2545,289,'红原县',3,513233),(2546,290,'康定市',3,513301),(2547,290,'泸定县',3,513322),(2548,290,'丹巴县',3,513323),(2549,290,'九龙县',3,513324),(2550,290,'雅江县',3,513325),(2551,290,'道孚县',3,513326),(2552,290,'炉霍县',3,513327),(2553,290,'甘孜县',3,513328),(2554,290,'新龙县',3,513329),(2555,290,'德格县',3,513330),(2556,290,'白玉县',3,513331),(2557,290,'石渠县',3,513332),(2558,290,'色达县',3,513333),(2559,290,'理塘县',3,513334),(2560,290,'巴塘县',3,513335),(2561,290,'乡城县',3,513336),(2562,290,'稻城县',3,513337),(2563,290,'得荣县',3,513338),(2564,291,'西昌市',3,513401),(2565,291,'木里藏族自治县',3,513422),(2566,291,'盐源县',3,513423),(2567,291,'德昌县',3,513424),(2568,291,'会理县',3,513425),(2569,291,'会东县',3,513426),(2570,291,'宁南县',3,513427),(2571,291,'普格县',3,513428),(2572,291,'布拖县',3,513429),(2573,291,'金阳县',3,513430),(2574,291,'昭觉县',3,513431),(2575,291,'喜德县',3,513432),(2576,291,'冕宁县',3,513433),(2577,291,'越西县',3,513434),(2578,291,'甘洛县',3,513435),(2579,291,'美姑县',3,513436),(2580,291,'雷波县',3,513437),(2581,292,'南明区',3,520102),(2582,292,'云岩区',3,520103),(2583,292,'花溪区',3,520111),(2584,292,'乌当区',3,520112),(2585,292,'白云区',3,520113),(2586,292,'观山湖区',3,520115),(2587,292,'开阳县',3,520121),(2588,292,'息烽县',3,520122),(2589,292,'修文县',3,520123),(2590,292,'清镇市',3,520181),(2591,293,'钟山区',3,520201),(2592,293,'六枝特区',3,520203),(2593,293,'水城县',3,520221),(2594,293,'盘县',3,520222),(2595,294,'红花岗区',3,520302),(2596,294,'汇川区',3,520303),(2597,294,'播州区',3,520304),(2598,294,'桐梓县',3,520322),(2599,294,'绥阳县',3,520323),(2600,294,'正安县',3,520324),(2601,294,'道真仡佬族苗族自治县',3,520325),(2602,294,'务川仡佬族苗族自治县',3,520326),(2603,294,'凤冈县',3,520327),(2604,294,'湄潭县',3,520328),(2605,294,'余庆县',3,520329),(2606,294,'习水县',3,520330),(2607,294,'赤水市',3,520381),(2608,294,'仁怀市',3,520382),(2609,295,'西秀区',3,520402),(2610,295,'平坝区',3,520403),(2611,295,'普定县',3,520422),(2612,295,'镇宁布依族苗族自治县',3,520423),(2613,295,'关岭布依族苗族自治县',3,520424),(2614,295,'紫云苗族布依族自治县',3,520425),(2615,296,'七星关区',3,520502),(2616,296,'大方县',3,520521),(2617,296,'黔西县',3,520522),(2618,296,'金沙县',3,520523),(2619,296,'织金县',3,520524),(2620,296,'纳雍县',3,520525),(2621,296,'威宁彝族回族苗族自治县',3,520526),(2622,296,'赫章县',3,520527),(2623,297,'碧江区',3,520602),(2624,297,'万山区',3,520603),(2625,297,'江口县',3,520621),(2626,297,'玉屏侗族自治县',3,520622),(2627,297,'石阡县',3,520623),(2628,297,'思南县',3,520624),(2629,297,'印江土家族苗族自治县',3,520625),(2630,297,'德江县',3,520626),(2631,297,'沿河土家族自治县',3,520627),(2632,297,'松桃苗族自治县',3,520628),(2633,298,'兴义市',3,522301),(2634,298,'兴仁县',3,522322),(2635,298,'普安县',3,522323),(2636,298,'晴隆县',3,522324),(2637,298,'贞丰县',3,522325),(2638,298,'望谟县',3,522326),(2639,298,'册亨县',3,522327),(2640,298,'安龙县',3,522328),(2641,299,'凯里市',3,522601),(2642,299,'黄平县',3,522622),(2643,299,'施秉县',3,522623),(2644,299,'三穗县',3,522624),(2645,299,'镇远县',3,522625),(2646,299,'岑巩县',3,522626),(2647,299,'天柱县',3,522627),(2648,299,'锦屏县',3,522628),(2649,299,'剑河县',3,522629),(2650,299,'台江县',3,522630),(2651,299,'黎平县',3,522631),(2652,299,'榕江县',3,522632),(2653,299,'从江县',3,522633),(2654,299,'雷山县',3,522634),(2655,299,'麻江县',3,522635),(2656,299,'丹寨县',3,522636),(2657,300,'都匀市',3,522701),(2658,300,'福泉市',3,522702),(2659,300,'荔波县',3,522722),(2660,300,'贵定县',3,522723),(2661,300,'瓮安县',3,522725),(2662,300,'独山县',3,522726),(2663,300,'平塘县',3,522727),(2664,300,'罗甸县',3,522728),(2665,300,'长顺县',3,522729),(2666,300,'龙里县',3,522730),(2667,300,'惠水县',3,522731),(2668,300,'三都水族自治县',3,522732),(2669,301,'五华区',3,530102),(2670,301,'盘龙区',3,530103),(2671,301,'官渡区',3,530111),(2672,301,'西山区',3,530112),(2673,301,'东川区',3,530113),(2674,301,'呈贡区',3,530114),(2675,301,'晋宁县',3,530122),(2676,301,'富民县',3,530124),(2677,301,'宜良县',3,530125),(2678,301,'石林彝族自治县',3,530126),(2679,301,'嵩明县',3,530127),(2680,301,'禄劝彝族苗族自治县',3,530128),(2681,301,'寻甸回族彝族自治县',3,530129),(2682,301,'安宁市',3,530181),(2683,302,'麒麟区',3,530302),(2684,302,'沾益区',3,530303),(2685,302,'马龙县',3,530321),(2686,302,'陆良县',3,530322),(2687,302,'师宗县',3,530323),(2688,302,'罗平县',3,530324),(2689,302,'富源县',3,530325),(2690,302,'会泽县',3,530326),(2691,302,'宣威市',3,530381),(2692,303,'红塔区',3,530402),(2693,303,'江川区',3,530403),(2694,303,'澄江县',3,530422),(2695,303,'通海县',3,530423),(2696,303,'华宁县',3,530424),(2697,303,'易门县',3,530425),(2698,303,'峨山彝族自治县',3,530426),(2699,303,'新平彝族傣族自治县',3,530427),(2700,303,'元江哈尼族彝族傣族自治县',3,530428),(2701,304,'隆阳区',3,530502),(2702,304,'施甸县',3,530521),(2703,304,'龙陵县',3,530523),(2704,304,'昌宁县',3,530524),(2705,304,'腾冲市',3,530581),(2706,305,'昭阳区',3,530602),(2707,305,'鲁甸县',3,530621),(2708,305,'巧家县',3,530622),(2709,305,'盐津县',3,530623),(2710,305,'大关县',3,530624),(2711,305,'永善县',3,530625),(2712,305,'绥江县',3,530626),(2713,305,'镇雄县',3,530627),(2714,305,'彝良县',3,530628),(2715,305,'威信县',3,530629),(2716,305,'水富县',3,530630),(2717,306,'古城区',3,530702),(2718,306,'玉龙纳西族自治县',3,530721),(2719,306,'永胜县',3,530722),(2720,306,'华坪县',3,530723),(2721,306,'宁蒗彝族自治县',3,530724),(2722,307,'思茅区',3,530802),(2723,307,'宁洱哈尼族彝族自治县',3,530821),(2724,307,'墨江哈尼族自治县',3,530822),(2725,307,'景东彝族自治县',3,530823),(2726,307,'景谷傣族彝族自治县',3,530824),(2727,307,'镇沅彝族哈尼族拉祜族自治县',3,530825),(2728,307,'江城哈尼族彝族自治县',3,530826),(2729,307,'孟连傣族拉祜族佤族自治县',3,530827),(2730,307,'澜沧拉祜族自治县',3,530828),(2731,307,'西盟佤族自治县',3,530829),(2732,308,'临翔区',3,530902),(2733,308,'凤庆县',3,530921),(2734,308,'云县',3,530922),(2735,308,'永德县',3,530923),(2736,308,'镇康县',3,530924),(2737,308,'双江拉祜族佤族布朗族傣族自治县',3,530925),(2738,308,'耿马傣族佤族自治县',3,530926),(2739,308,'沧源佤族自治县',3,530927),(2740,309,'楚雄市',3,532301),(2741,309,'双柏县',3,532322),(2742,309,'牟定县',3,532323),(2743,309,'南华县',3,532324),(2744,309,'姚安县',3,532325),(2745,309,'大姚县',3,532326),(2746,309,'永仁县',3,532327),(2747,309,'元谋县',3,532328),(2748,309,'武定县',3,532329),(2749,309,'禄丰县',3,532331),(2750,310,'个旧市',3,532501),(2751,310,'开远市',3,532502),(2752,310,'蒙自市',3,532503),(2753,310,'弥勒市',3,532504),(2754,310,'屏边苗族自治县',3,532523),(2755,310,'建水县',3,532524),(2756,310,'石屏县',3,532525),(2757,310,'泸西县',3,532527),(2758,310,'元阳县',3,532528),(2759,310,'红河县',3,532529),(2760,310,'金平苗族瑶族傣族自治县',3,532530),(2761,310,'绿春县',3,532531),(2762,310,'河口瑶族自治县',3,532532),(2763,311,'文山市',3,532601),(2764,311,'砚山县',3,532622),(2765,311,'西畴县',3,532623),(2766,311,'麻栗坡县',3,532624),(2767,311,'马关县',3,532625),(2768,311,'丘北县',3,532626),(2769,311,'广南县',3,532627),(2770,311,'富宁县',3,532628),(2771,312,'景洪市',3,532801),(2772,312,'勐海县',3,532822),(2773,312,'勐腊县',3,532823),(2774,313,'大理市',3,532901),(2775,313,'漾濞彝族自治县',3,532922),(2776,313,'祥云县',3,532923),(2777,313,'宾川县',3,532924),(2778,313,'弥渡县',3,532925),(2779,313,'南涧彝族自治县',3,532926),(2780,313,'巍山彝族回族自治县',3,532927),(2781,313,'永平县',3,532928),(2782,313,'云龙县',3,532929),(2783,313,'洱源县',3,532930),(2784,313,'剑川县',3,532931),(2785,313,'鹤庆县',3,532932),(2786,314,'瑞丽市',3,533102),(2787,314,'芒市',3,533103),(2788,314,'梁河县',3,533122),(2789,314,'盈江县',3,533123),(2790,314,'陇川县',3,533124),(2791,315,'泸水市',3,533301),(2792,315,'福贡县',3,533323),(2793,315,'贡山独龙族怒族自治县',3,533324),(2794,315,'兰坪白族普米族自治县',3,533325),(2795,316,'香格里拉市',3,533401),(2796,316,'德钦县',3,533422),(2797,316,'维西傈僳族自治县',3,533423),(2798,317,'城关区',3,540102),(2799,317,'堆龙德庆区',3,540103),(2800,317,'林周县',3,540121),(2801,317,'当雄县',3,540122),(2802,317,'尼木县',3,540123),(2803,317,'曲水县',3,540124),(2804,317,'达孜县',3,540126),(2805,317,'墨竹工卡县',3,540127),(2806,318,'桑珠孜区',3,540202),(2807,318,'南木林县',3,540221),(2808,318,'江孜县',3,540222),(2809,318,'定日县',3,540223),(2810,318,'萨迦县',3,540224),(2811,318,'拉孜县',3,540225),(2812,318,'昂仁县',3,540226),(2813,318,'谢通门县',3,540227),(2814,318,'白朗县',3,540228),(2815,318,'仁布县',3,540229),(2816,318,'康马县',3,540230),(2817,318,'定结县',3,540231),(2818,318,'仲巴县',3,540232),(2819,318,'亚东县',3,540233),(2820,318,'吉隆县',3,540234),(2821,318,'聂拉木县',3,540235),(2822,318,'萨嘎县',3,540236),(2823,318,'岗巴县',3,540237),(2824,319,'卡若区',3,540302),(2825,319,'江达县',3,540321),(2826,319,'贡觉县',3,540322),(2827,319,'类乌齐县',3,540323),(2828,319,'丁青县',3,540324),(2829,319,'察雅县',3,540325),(2830,319,'八宿县',3,540326),(2831,319,'左贡县',3,540327),(2832,319,'芒康县',3,540328),(2833,319,'洛隆县',3,540329),(2834,319,'边坝县',3,540330),(2835,320,'巴宜区',3,540402),(2836,320,'工布江达县',3,540421),(2837,320,'米林县',3,540422),(2838,320,'墨脱县',3,540423),(2839,320,'波密县',3,540424),(2840,320,'察隅县',3,540425),(2841,320,'朗县',3,540426),(2842,321,'乃东区',3,540502),(2843,321,'扎囊县',3,540521),(2844,321,'贡嘎县',3,540522),(2845,321,'桑日县',3,540523),(2846,321,'琼结县',3,540524),(2847,321,'曲松县',3,540525),(2848,321,'措美县',3,540526),(2849,321,'洛扎县',3,540527),(2850,321,'加查县',3,540528),(2851,321,'隆子县',3,540529),(2852,321,'错那县',3,540530),(2853,321,'浪卡子县',3,540531),(2854,322,'那曲县',3,542421),(2855,322,'嘉黎县',3,542422),(2856,322,'比如县',3,542423),(2857,322,'聂荣县',3,542424),(2858,322,'安多县',3,542425),(2859,322,'申扎县',3,542426),(2860,322,'索县',3,542427),(2861,322,'班戈县',3,542428),(2862,322,'巴青县',3,542429),(2863,322,'尼玛县',3,542430),(2864,322,'双湖县',3,542431),(2865,323,'普兰县',3,542521),(2866,323,'札达县',3,542522),(2867,323,'噶尔县',3,542523),(2868,323,'日土县',3,542524),(2869,323,'革吉县',3,542525),(2870,323,'改则县',3,542526),(2871,323,'措勤县',3,542527),(2872,324,'新城区',3,610102),(2873,324,'碑林区',3,610103),(2874,324,'莲湖区',3,610104),(2875,324,'灞桥区',3,610111),(2876,324,'未央区',3,610112),(2877,324,'雁塔区',3,610113),(2878,324,'阎良区',3,610114),(2879,324,'临潼区',3,610115),(2880,324,'长安区',3,610116),(2881,324,'高陵区',3,610117),(2882,324,'蓝田县',3,610122),(2883,324,'周至县',3,610124),(2884,324,'户县',3,610125),(2885,325,'王益区',3,610202),(2886,325,'印台区',3,610203),(2887,325,'耀州区',3,610204),(2888,325,'宜君县',3,610222),(2889,326,'渭滨区',3,610302),(2890,326,'金台区',3,610303),(2891,326,'陈仓区',3,610304),(2892,326,'凤翔县',3,610322),(2893,326,'岐山县',3,610323),(2894,326,'扶风县',3,610324),(2895,326,'眉县',3,610326),(2896,326,'陇县',3,610327),(2897,326,'千阳县',3,610328),(2898,326,'麟游县',3,610329),(2899,326,'凤县',3,610330),(2900,326,'太白县',3,610331),(2901,327,'秦都区',3,610402),(2902,327,'杨陵区',3,610403),(2903,327,'渭城区',3,610404),(2904,327,'三原县',3,610422),(2905,327,'泾阳县',3,610423),(2906,327,'乾县',3,610424),(2907,327,'礼泉县',3,610425),(2908,327,'永寿县',3,610426),(2909,327,'彬县',3,610427),(2910,327,'长武县',3,610428),(2911,327,'旬邑县',3,610429),(2912,327,'淳化县',3,610430),(2913,327,'武功县',3,610431),(2914,327,'兴平市',3,610481),(2915,328,'临渭区',3,610502),(2916,328,'华州区',3,610503),(2917,328,'潼关县',3,610522),(2918,328,'大荔县',3,610523),(2919,328,'合阳县',3,610524),(2920,328,'澄城县',3,610525),(2921,328,'蒲城县',3,610526),(2922,328,'白水县',3,610527),(2923,328,'富平县',3,610528),(2924,328,'韩城市',3,610581),(2925,328,'华阴市',3,610582),(2926,329,'宝塔区',3,610602),(2927,329,'安塞区',3,610603),(2928,329,'延长县',3,610621),(2929,329,'延川县',3,610622),(2930,329,'子长县',3,610623),(2931,329,'志丹县',3,610625),(2932,329,'吴起县',3,610626),(2933,329,'甘泉县',3,610627),(2934,329,'富县',3,610628),(2935,329,'洛川县',3,610629),(2936,329,'宜川县',3,610630),(2937,329,'黄龙县',3,610631),(2938,329,'黄陵县',3,610632),(2939,330,'汉台区',3,610702),(2940,330,'南郑县',3,610721),(2941,330,'城固县',3,610722),(2942,330,'洋县',3,610723),(2943,330,'西乡县',3,610724),(2944,330,'勉县',3,610725),(2945,330,'宁强县',3,610726),(2946,330,'略阳县',3,610727),(2947,330,'镇巴县',3,610728),(2948,330,'留坝县',3,610729),(2949,330,'佛坪县',3,610730),(2950,331,'榆阳区',3,610802),(2951,331,'横山区',3,610803),(2952,331,'神木县',3,610821),(2953,331,'府谷县',3,610822),(2954,331,'靖边县',3,610824),(2955,331,'定边县',3,610825),(2956,331,'绥德县',3,610826),(2957,331,'米脂县',3,610827),(2958,331,'佳县',3,610828),(2959,331,'吴堡县',3,610829),(2960,331,'清涧县',3,610830),(2961,331,'子洲县',3,610831),(2962,332,'汉滨区',3,610902),(2963,332,'汉阴县',3,610921),(2964,332,'石泉县',3,610922),(2965,332,'宁陕县',3,610923),(2966,332,'紫阳县',3,610924),(2967,332,'岚皋县',3,610925),(2968,332,'平利县',3,610926),(2969,332,'镇坪县',3,610927),(2970,332,'旬阳县',3,610928),(2971,332,'白河县',3,610929),(2972,333,'商州区',3,611002),(2973,333,'洛南县',3,611021),(2974,333,'丹凤县',3,611022),(2975,333,'商南县',3,611023),(2976,333,'山阳县',3,611024),(2977,333,'镇安县',3,611025),(2978,333,'柞水县',3,611026),(2979,334,'城关区',3,620102),(2980,334,'七里河区',3,620103),(2981,334,'西固区',3,620104),(2982,334,'安宁区',3,620105),(2983,334,'红古区',3,620111),(2984,334,'永登县',3,620121),(2985,334,'皋兰县',3,620122),(2986,334,'榆中县',3,620123),(2987,335,'嘉峪关市',3,620201),(2988,336,'金川区',3,620302),(2989,336,'永昌县',3,620321),(2990,337,'白银区',3,620402),(2991,337,'平川区',3,620403),(2992,337,'靖远县',3,620421),(2993,337,'会宁县',3,620422),(2994,337,'景泰县',3,620423),(2995,338,'秦州区',3,620502),(2996,338,'麦积区',3,620503),(2997,338,'清水县',3,620521),(2998,338,'秦安县',3,620522),(2999,338,'甘谷县',3,620523),(3000,338,'武山县',3,620524),(3001,338,'张家川回族自治县',3,620525),(3002,339,'凉州区',3,620602),(3003,339,'民勤县',3,620621),(3004,339,'古浪县',3,620622),(3005,339,'天祝藏族自治县',3,620623),(3006,340,'甘州区',3,620702),(3007,340,'肃南裕固族自治县',3,620721),(3008,340,'民乐县',3,620722),(3009,340,'临泽县',3,620723),(3010,340,'高台县',3,620724),(3011,340,'山丹县',3,620725),(3012,341,'崆峒区',3,620802),(3013,341,'泾川县',3,620821),(3014,341,'灵台县',3,620822),(3015,341,'崇信县',3,620823),(3016,341,'华亭县',3,620824),(3017,341,'庄浪县',3,620825),(3018,341,'静宁县',3,620826),(3019,342,'肃州区',3,620902),(3020,342,'金塔县',3,620921),(3021,342,'瓜州县',3,620922),(3022,342,'肃北蒙古族自治县',3,620923),(3023,342,'阿克塞哈萨克族自治县',3,620924),(3024,342,'玉门市',3,620981),(3025,342,'敦煌市',3,620982),(3026,343,'西峰区',3,621002),(3027,343,'庆城县',3,621021),(3028,343,'环县',3,621022),(3029,343,'华池县',3,621023),(3030,343,'合水县',3,621024),(3031,343,'正宁县',3,621025),(3032,343,'宁县',3,621026),(3033,343,'镇原县',3,621027),(3034,344,'安定区',3,621102),(3035,344,'通渭县',3,621121),(3036,344,'陇西县',3,621122),(3037,344,'渭源县',3,621123),(3038,344,'临洮县',3,621124),(3039,344,'漳县',3,621125),(3040,344,'岷县',3,621126),(3041,345,'武都区',3,621202),(3042,345,'成县',3,621221),(3043,345,'文县',3,621222),(3044,345,'宕昌县',3,621223),(3045,345,'康县',3,621224),(3046,345,'西和县',3,621225),(3047,345,'礼县',3,621226),(3048,345,'徽县',3,621227),(3049,345,'两当县',3,621228),(3050,346,'临夏市',3,622901),(3051,346,'临夏县',3,622921),(3052,346,'康乐县',3,622922),(3053,346,'永靖县',3,622923),(3054,346,'广河县',3,622924),(3055,346,'和政县',3,622925),(3056,346,'东乡族自治县',3,622926),(3057,346,'积石山保安族东乡族撒拉族自治县',3,622927),(3058,347,'合作市',3,623001),(3059,347,'临潭县',3,623021),(3060,347,'卓尼县',3,623022),(3061,347,'舟曲县',3,623023),(3062,347,'迭部县',3,623024),(3063,347,'玛曲县',3,623025),(3064,347,'碌曲县',3,623026),(3065,347,'夏河县',3,623027),(3066,348,'城东区',3,630102),(3067,348,'城中区',3,630103),(3068,348,'城西区',3,630104),(3069,348,'城北区',3,630105),(3070,348,'大通回族土族自治县',3,630121),(3071,348,'湟中县',3,630122),(3072,348,'湟源县',3,630123),(3073,349,'乐都区',3,630202),(3074,349,'平安区',3,630203),(3075,349,'民和回族土族自治县',3,630222),(3076,349,'互助土族自治县',3,630223),(3077,349,'化隆回族自治县',3,630224),(3078,349,'循化撒拉族自治县',3,630225),(3079,350,'门源回族自治县',3,632221),(3080,350,'祁连县',3,632222),(3081,350,'海晏县',3,632223),(3082,350,'刚察县',3,632224),(3083,351,'同仁县',3,632321),(3084,351,'尖扎县',3,632322),(3085,351,'泽库县',3,632323),(3086,351,'河南蒙古族自治县',3,632324),(3087,352,'共和县',3,632521),(3088,352,'同德县',3,632522),(3089,352,'贵德县',3,632523),(3090,352,'兴海县',3,632524),(3091,352,'贵南县',3,632525),(3092,353,'玛沁县',3,632621),(3093,353,'班玛县',3,632622),(3094,353,'甘德县',3,632623),(3095,353,'达日县',3,632624),(3096,353,'久治县',3,632625),(3097,353,'玛多县',3,632626),(3098,354,'玉树市',3,632701),(3099,354,'杂多县',3,632722),(3100,354,'称多县',3,632723),(3101,354,'治多县',3,632724),(3102,354,'囊谦县',3,632725),(3103,354,'曲麻莱县',3,632726),(3104,355,'格尔木市',3,632801),(3105,355,'德令哈市',3,632802),(3106,355,'乌兰县',3,632821),(3107,355,'都兰县',3,632822),(3108,355,'天峻县',3,632823),(3109,356,'兴庆区',3,640104),(3110,356,'西夏区',3,640105),(3111,356,'金凤区',3,640106),(3112,356,'永宁县',3,640121),(3113,356,'贺兰县',3,640122),(3114,356,'灵武市',3,640181),(3115,357,'大武口区',3,640202),(3116,357,'惠农区',3,640205),(3117,357,'平罗县',3,640221),(3118,358,'利通区',3,640302),(3119,358,'红寺堡区',3,640303),(3120,358,'盐池县',3,640323),(3121,358,'同心县',3,640324),(3122,358,'青铜峡市',3,640381),(3123,359,'原州区',3,640402),(3124,359,'西吉县',3,640422),(3125,359,'隆德县',3,640423),(3126,359,'泾源县',3,640424),(3127,359,'彭阳县',3,640425),(3128,360,'沙坡头区',3,640502),(3129,360,'中宁县',3,640521),(3130,360,'海原县',3,640522),(3131,361,'天山区',3,650102),(3132,361,'沙依巴克区',3,650103),(3133,361,'新市区',3,650104),(3134,361,'水磨沟区',3,650105),(3135,361,'头屯河区',3,650106),(3136,361,'达坂城区',3,650107),(3137,361,'米东区',3,650109),(3138,361,'乌鲁木齐县',3,650121),(3139,362,'独山子区',3,650202),(3140,362,'克拉玛依区',3,650203),(3141,362,'白碱滩区',3,650204),(3142,362,'乌尔禾区',3,650205),(3143,363,'高昌区',3,650402),(3144,363,'鄯善县',3,650421),(3145,363,'托克逊县',3,650422),(3146,364,'伊州区',3,650502),(3147,364,'巴里坤哈萨克自治县',3,650521),(3148,364,'伊吾县',3,650522),(3149,365,'昌吉市',3,652301),(3150,365,'阜康市',3,652302),(3151,365,'呼图壁县',3,652323),(3152,365,'玛纳斯县',3,652324),(3153,365,'奇台县',3,652325),(3154,365,'吉木萨尔县',3,652327),(3155,365,'木垒哈萨克自治县',3,652328),(3156,366,'博乐市',3,652701),(3157,366,'阿拉山口市',3,652702),(3158,366,'精河县',3,652722),(3159,366,'温泉县',3,652723),(3160,367,'库尔勒市',3,652801),(3161,367,'轮台县',3,652822),(3162,367,'尉犁县',3,652823),(3163,367,'若羌县',3,652824),(3164,367,'且末县',3,652825),(3165,367,'焉耆回族自治县',3,652826),(3166,367,'和静县',3,652827),(3167,367,'和硕县',3,652828),(3168,367,'博湖县',3,652829),(3169,368,'阿克苏市',3,652901),(3170,368,'温宿县',3,652922),(3171,368,'库车县',3,652923),(3172,368,'沙雅县',3,652924),(3173,368,'新和县',3,652925),(3174,368,'拜城县',3,652926),(3175,368,'乌什县',3,652927),(3176,368,'阿瓦提县',3,652928),(3177,368,'柯坪县',3,652929),(3178,369,'阿图什市',3,653001),(3179,369,'阿克陶县',3,653022),(3180,369,'阿合奇县',3,653023),(3181,369,'乌恰县',3,653024),(3182,370,'喀什市',3,653101),(3183,370,'疏附县',3,653121),(3184,370,'疏勒县',3,653122),(3185,370,'英吉沙县',3,653123),(3186,370,'泽普县',3,653124),(3187,370,'莎车县',3,653125),(3188,370,'叶城县',3,653126),(3189,370,'麦盖提县',3,653127),(3190,370,'岳普湖县',3,653128),(3191,370,'伽师县',3,653129),(3192,370,'巴楚县',3,653130),(3193,370,'塔什库尔干塔吉克自治县',3,653131),(3194,371,'和田市',3,653201),(3195,371,'和田县',3,653221),(3196,371,'墨玉县',3,653222),(3197,371,'皮山县',3,653223),(3198,371,'洛浦县',3,653224),(3199,371,'策勒县',3,653225),(3200,371,'于田县',3,653226),(3201,371,'民丰县',3,653227),(3202,372,'伊宁市',3,654002),(3203,372,'奎屯市',3,654003),(3204,372,'霍尔果斯市',3,654004),(3205,372,'伊宁县',3,654021),(3206,372,'察布查尔锡伯自治县',3,654022),(3207,372,'霍城县',3,654023),(3208,372,'巩留县',3,654024),(3209,372,'新源县',3,654025),(3210,372,'昭苏县',3,654026),(3211,372,'特克斯县',3,654027),(3212,372,'尼勒克县',3,654028),(3213,373,'塔城市',3,654201),(3214,373,'乌苏市',3,654202),(3215,373,'额敏县',3,654221),(3216,373,'沙湾县',3,654223),(3217,373,'托里县',3,654224),(3218,373,'裕民县',3,654225),(3219,373,'和布克赛尔蒙古自治县',3,654226),(3220,374,'阿勒泰市',3,654301),(3221,374,'布尔津县',3,654321),(3222,374,'富蕴县',3,654322),(3223,374,'福海县',3,654323),(3224,374,'哈巴河县',3,654324),(3225,374,'青河县',3,654325),(3226,374,'吉木乃县',3,654326),(3227,375,'石河子市',3,659001),(3228,375,'阿拉尔市',3,659002),(3229,375,'图木舒克市',3,659003),(3230,375,'五家渠市',3,659004),(3231,375,'铁门关市',3,659006);\n/*!40000 ALTER TABLE `litemall_region` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_role`\n--\n\nLOCK TABLES `litemall_role` WRITE;\n/*!40000 ALTER TABLE `litemall_role` DISABLE KEYS */;\nINSERT INTO `litemall_role` VALUES (1,'超级管理员','所有模块的权限',1,'2019-01-01 00:00:00','2019-01-01 00:00:00',0),(2,'商场管理员','只有商场模块的操作权限',1,'2019-01-01 00:00:00','2019-01-07 15:15:12',0),(3,'推广管理员','只有推广模块的操作权限',1,'2019-01-01 00:00:00','2019-01-07 15:15:24',0);\n/*!40000 ALTER TABLE `litemall_role` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_search_history`\n--\n\nLOCK TABLES `litemall_search_history` WRITE;\n/*!40000 ALTER TABLE `litemall_search_history` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_search_history` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_storage`\n--\n\nLOCK TABLES `litemall_storage` WRITE;\n/*!40000 ALTER TABLE `litemall_storage` DISABLE KEYS */;\n/*!40000 ALTER TABLE `litemall_storage` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_system`\n--\n\nLOCK TABLES `litemall_system` WRITE;\n/*!40000 ALTER TABLE `litemall_system` DISABLE KEYS */;\nINSERT INTO `litemall_system` VALUES (1,'litemall_order_unpaid','30','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(2,'litemall_wx_index_new','6','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(3,'litemall_mall_latitude','31.201900','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(4,'litemall_order_unconfirm','7','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(5,'litemall_wx_share','false','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(6,'litemall_express_freight_min','88','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(7,'litemall_mall_name','litemall','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(8,'litemall_express_freight_value','8','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(9,'litemall_mall_qq','705144434','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(10,'litemall_wx_index_hot','6','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(11,'litemall_order_comment','7','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(12,'litemall_wx_catlog_goods','4','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(13,'litemall_mall_longitude','121.587839','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(14,'litemall_mall_phone','021-xxxx-xxxx','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(15,'litemall_wx_catlog_list','4','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(16,'litemall_mall_address','上海','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(17,'litemall_wx_index_brand','4','2019-12-08 19:11:18','2019-12-08 19:11:18',0),(18,'litemall_wx_index_topic','4','2019-12-08 19:11:18','2019-12-08 19:11:18',0);\n/*!40000 ALTER TABLE `litemall_system` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_topic`\n--\n\nLOCK TABLES `litemall_topic` WRITE;\n/*!40000 ALTER TABLE `litemall_topic` DISABLE KEYS */;\nINSERT INTO `litemall_topic` VALUES (264,'设计师们推荐的应季好物','原创设计春款系列上新','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',29.90,'77.7k','https://yanxuan.nosdn.127.net/14918201901050274.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(266,'一条丝巾就能提升时髦度','不知道大家对去年G20时，严选与国礼制造商一起推出的《凤凰于飞》等几款丝巾是否还...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'35.0k','https://yanxuan.nosdn.127.net/14919007135160213.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(268,'米饭好吃的秘诀：会呼吸的锅','今年1月份，我们联系到了日本伊贺地区的长谷园，那里有着180年伊贺烧历史的窑厂。...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'33.3k','https://yanxuan.nosdn.127.net/14920623353130483.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(271,'选式新懒人','懒出格调，懒出好生活。','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',15.00,'57.7k','https://yanxuan.nosdn.127.net/14924199099661697.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(272,'料理也要精细简单','享受天然的味道，日子每天都好新鲜','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',69.00,'125.6k','https://yanxuan.nosdn.127.net/14925200530030186.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(274,'没有软木拖，怎么过夏天','刚入四月，杭州的气温就已升高至30度。店庆时买了软木拖的用户，陆续发回评价说，很...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'46.4k','https://yanxuan.nosdn.127.net/14925822213780237.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(277,'治愈生活的满怀柔软','太鼓抱枕的上架历程，是从失踪开始的。由于表面的绒感，最初它被安排在秋冬季上架。某...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'19.6k','https://yanxuan.nosdn.127.net/14926737925770587.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(281,'条纹新风尚','经典百搭，时尚线条','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',29.00,'76.5k','https://yanxuan.nosdn.127.net/14926859849200826.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(282,'成就一室笋香','三石哥办公室常备小食推荐','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',12.00,'40.9k','https://yanxuan.nosdn.127.net/14927695046601069.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(283,'孩子成长中少不了的一双鞋','说起毛毛虫鞋，好处实在太多了，作为一个2岁孩子的宝妈选品员，按捺不住想告诉大家，...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'42.5k','https://yanxuan.nosdn.127.net/14927748974441080.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(286,'无“油”无虑的甜蜜酥脆','大家都知道，饮食组是严选体重最重的一组，基本上每个新人都能在一个月之内迅速长胖。...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'15.6k','https://yanxuan.nosdn.127.net/14931121822100127.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(287,'严选新式样板间','一种软装一个家','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',29.90,'55.6k','https://yanxuan.nosdn.127.net/14931970965550315.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(289,'专业运动袜也可以高性价比','越来越多运动人士意识到，运动鞋要购置好的，鞋里的运动袜也不可忽视。专业运动袜帮助...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'11.9k','https://yanxuan.nosdn.127.net/14932840600970609.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(291,'舒适新主张','如何挑选适合自己的好物？','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',29.00,'67.8k','https://yanxuan.nosdn.127.net/14939496197300723.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(294,'这只锅，可以从祖母用到孙辈','买100年传世珐琅锅送迷你马卡龙色小锅','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',149.00,'108.1k','https://yanxuan.nosdn.127.net/14937214454750141.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(295,'他们在严选遇见的新生活','多款商品直减中，最高直减400元','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',35.80,'36.6k','https://yanxuan.nosdn.127.net/14938092956370380.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(299,'买过的人都说它是差旅神器','许多人经历过旅途中内裤洗晾不便的烦恼，尤其与旅伴同居一室时，晾在卫生间里的内裤更...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'28.7k','https://yanxuan.nosdn.127.net/14938873919030679.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(300,'秒杀化学洗涤剂的纯天然皂','前段时间有朋友跟我抱怨，和婆婆住到一起才发现生活理念有太多不和。别的不提，光是洗...','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'15.3k','https://yanxuan.nosdn.127.net/14939843143621089.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(313,'一次解决5个节日送礼难题','这些就是他们想要的礼物清单','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',59.90,'7.8k','https://yanxuan.nosdn.127.net/14942996754171334.jpg',0,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0),(314,'关爱他成长的每一个足迹','专业运动品牌同厂，毛毛虫鞋买二送一','<img src=\\\"//yanxuan.nosdn.127.net/75c55a13fde5eb2bc2dd6813b4c565cc.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/e27e1de2b271a28a21c10213b9df7e95.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/9d413d1d28f753cb19096b533d53418d.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/64b0f2f350969e9818a3b6c43c217325.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/a668e6ae7f1fa45565c1eac221787570.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/0d4004e19728f2707f08f4be79bbc774.jpg\\\">\\n    <img src=\\\"//yanxuan.nosdn.127.net/79ee021bbe97de7ecda691de6787241f.jpg\\\">',0.00,'6.4k','https://yanxuan.nosdn.127.net/14943267735961674.jpg',1,'[]','2018-02-01 00:00:00','2018-02-01 00:00:00',0);\n/*!40000 ALTER TABLE `litemall_topic` ENABLE KEYS */;\nUNLOCK TABLES;\n\n--\n-- Dumping data for table `litemall_user`\n--\n\nLOCK TABLES `litemall_user` WRITE;\n/*!40000 ALTER TABLE `litemall_user` DISABLE KEYS */;\nINSERT INTO `litemall_user` VALUES (1,'user123','$2a$10$lTu9qi0hr19OC800Db.eludFr0AXuJUSrMHi/iPYhKRlPFeqJxlye',1,NULL,'2019-04-20 22:17:43','0:0:0:0:0:0:0:1',0,'user123','','','','',0,'2019-04-20 22:17:43','2019-04-20 22:17:43',0);\n/*!40000 ALTER TABLE `litemall_user` ENABLE KEYS */;\nUNLOCK TABLES;\n\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2018-12-10 18:49:23\n"
  },
  {
    "path": "litemall-db/sql/litemall_schema.sql",
    "content": "drop database if exists litemall;\ndrop user if exists 'litemall'@'%';\n-- 支持emoji：需要mysql数据库参数： character_set_server=utf8mb4\ncreate database litemall default character set utf8mb4 collate utf8mb4_unicode_ci;\nuse litemall;\ncreate user 'litemall'@'%' identified by 'litemall123456';\ngrant all privileges on litemall.* to 'litemall'@'%';\nflush privileges;"
  },
  {
    "path": "litemall-db/sql/litemall_table.sql",
    "content": "-- MySQL dump 10.13  Distrib 5.7.17, for Win64 (x86_64)\n--\n-- Host: 127.0.0.1    Database: litemall\n-- ------------------------------------------------------\n-- Server version\t5.7.21-log\n\n/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;\n/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;\n/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;\n/*!40101 SET NAMES utf8 */;\n/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;\n/*!40103 SET TIME_ZONE='+00:00' */;\n/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;\n/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;\n/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;\n/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;\n\n--\n-- Table structure for table `litemall_ad`\n--\n\nDROP TABLE IF EXISTS `litemall_ad`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_ad` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(63) NOT NULL DEFAULT '' COMMENT '广告标题',\n  `link` varchar(255) NOT NULL DEFAULT '' COMMENT '所广告的商品页面或者活动页面链接地址',\n  `url` varchar(255) NOT NULL COMMENT '广告宣传图片',\n  `position` tinyint(3) DEFAULT '1' COMMENT '广告位置：1则是首页',\n  `content` varchar(255) DEFAULT '' COMMENT '活动内容',\n  `start_time` datetime DEFAULT NULL COMMENT '广告开始时间',\n  `end_time` datetime DEFAULT NULL COMMENT '广告结束时间',\n  `enabled` tinyint(1) DEFAULT '0' COMMENT '是否启动',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `enabled` (`enabled`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='广告表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_address`\n--\n\nDROP TABLE IF EXISTS `litemall_address`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_address` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(63) NOT NULL DEFAULT '' COMMENT '收货人名称',\n  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户表的用户ID',\n  `province` varchar(63) NOT NULL COMMENT '行政区域表的省ID',\n  `city` varchar(63) NOT NULL COMMENT '行政区域表的市ID',\n  `county` varchar(63) NOT NULL COMMENT '行政区域表的区县ID',\n  `address_detail` varchar(127) NOT NULL DEFAULT '' COMMENT '详细收货地址',\n  `area_code` char(6) DEFAULT NULL COMMENT '地区编码',\n  `postal_code` char(6) DEFAULT NULL COMMENT '邮政编码',\n  `tel` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号码',\n  `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否默认地址',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `user_id` (`user_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='收货地址表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_admin`\n--\n\nDROP TABLE IF EXISTS `litemall_admin`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_admin` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(63) NOT NULL DEFAULT '' COMMENT '管理员名称',\n  `password` varchar(63) NOT NULL DEFAULT '' COMMENT '管理员密码',\n  `last_login_ip` varchar(63) DEFAULT '' COMMENT '最近一次登录IP地址',\n  `last_login_time` datetime DEFAULT NULL COMMENT '最近一次登录时间',\n  `avatar` varchar(255) DEFAULT '''' COMMENT '头像图片',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  `role_ids` varchar(127) DEFAULT '[]' COMMENT '角色列表',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='管理员表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_aftersale`\n--\n\nDROP TABLE IF EXISTS `litemall_aftersale`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_aftersale` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `aftersale_sn` varchar(63) DEFAULT NULL COMMENT '售后编号',\n  `order_id` int(11) NOT NULL COMMENT '订单ID',\n  `user_id` int(11) NOT NULL COMMENT '用户ID',\n  `type` smallint(6) DEFAULT '0' COMMENT '售后类型，0是未收货退款，1是已收货（无需退货）退款，2用户退货退款',\n  `reason` varchar(31) DEFAULT '' COMMENT '退款原因',\n  `amount` decimal(10,2) DEFAULT '0.00' COMMENT '退款金额',\n  `pictures` varchar(1023) DEFAULT '[]' COMMENT '退款凭证图片链接数组',\n  `comment` varchar(511) DEFAULT '' COMMENT '退款说明',\n  `status` smallint(6) DEFAULT '0' COMMENT '售后状态，0是可申请，1是用户已申请，2是管理员审核通过，3是管理员退款成功，4是管理员审核拒绝，5是用户已取消',\n  `handle_time` datetime DEFAULT NULL COMMENT '管理员操作时间',\n  `add_time` datetime DEFAULT NULL COMMENT '添加时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='售后表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_brand`\n--\n\nDROP TABLE IF EXISTS `litemall_brand`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_brand` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(255) NOT NULL DEFAULT '' COMMENT '品牌商名称',\n  `desc` varchar(255) NOT NULL DEFAULT '' COMMENT '品牌商简介',\n  `pic_url` varchar(255) NOT NULL DEFAULT '' COMMENT '品牌商页的品牌商图片',\n  `sort_order` tinyint(3) DEFAULT '50',\n  `floor_price` decimal(10,2) DEFAULT '0.00' COMMENT '品牌商的商品低价，仅用于页面展示',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=1046003 DEFAULT CHARSET=utf8mb4 COMMENT='品牌商表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_cart`\n--\n\nDROP TABLE IF EXISTS `litemall_cart`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_cart` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) DEFAULT NULL COMMENT '用户表的用户ID',\n  `goods_id` int(11) DEFAULT NULL COMMENT '商品表的商品ID',\n  `goods_sn` varchar(63) DEFAULT NULL COMMENT '商品编号',\n  `goods_name` varchar(127) DEFAULT NULL COMMENT '商品名称',\n  `product_id` int(11) DEFAULT NULL COMMENT '商品货品表的货品ID',\n  `price` decimal(10,2) DEFAULT '0.00' COMMENT '商品货品的价格',\n  `number` smallint(5) DEFAULT '0' COMMENT '商品货品的数量',\n  `specifications` varchar(1023) DEFAULT NULL COMMENT '商品规格值列表，采用JSON数组格式',\n  `checked` tinyint(1) DEFAULT '1' COMMENT '购物车中商品是否选择状态',\n  `pic_url` varchar(255) DEFAULT NULL COMMENT '商品图片或者商品货品图片',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COMMENT='购物车商品表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_category`\n--\n\nDROP TABLE IF EXISTS `litemall_category`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_category` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(63) NOT NULL DEFAULT '' COMMENT '类目名称',\n  `keywords` varchar(1023) NOT NULL DEFAULT '' COMMENT '类目关键字，以JSON数组格式',\n  `desc` varchar(255) DEFAULT '' COMMENT '类目广告语介绍',\n  `pid` int(11) NOT NULL DEFAULT '0' COMMENT '父类目ID',\n  `icon_url` varchar(255) DEFAULT '' COMMENT '类目图标',\n  `pic_url` varchar(255) DEFAULT '' COMMENT '类目图片',\n  `level` varchar(255) DEFAULT 'L1',\n  `sort_order` tinyint(3) DEFAULT '50' COMMENT '排序',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `parent_id` (`pid`)\n) ENGINE=InnoDB AUTO_INCREMENT=1036007 DEFAULT CHARSET=utf8mb4 COMMENT='类目表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_collect`\n--\n\nDROP TABLE IF EXISTS `litemall_collect`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_collect` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户表的用户ID',\n  `value_id` int(11) NOT NULL DEFAULT '0' COMMENT '如果type=0，则是商品ID；如果type=1，则是专题ID',\n  `type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '收藏类型，如果type=0，则是商品ID；如果type=1，则是专题ID',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `user_id` (`user_id`),\n  KEY `goods_id` (`value_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='收藏表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_comment`\n--\n\nDROP TABLE IF EXISTS `litemall_comment`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_comment` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `value_id` int(11) NOT NULL DEFAULT '0' COMMENT '如果type=0，则是商品评论；如果是type=1，则是专题评论。',\n  `type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '评论类型，如果type=0，则是商品评论；如果是type=1，则是专题评论；',\n  `content` varchar(1023) DEFAULT '' COMMENT '评论内容',\n  `admin_content` varchar(511) DEFAULT '' COMMENT '管理员回复内容',\n  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户表的用户ID',\n  `has_picture` tinyint(1) DEFAULT '0' COMMENT '是否含有图片',\n  `pic_urls` varchar(1023) DEFAULT NULL COMMENT '图片地址列表，采用JSON数组格式',\n  `star` smallint(6) DEFAULT '1' COMMENT '评分， 1-5',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `id_value` (`value_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=1012 DEFAULT CHARSET=utf8mb4 COMMENT='评论表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_coupon`\n--\n\nDROP TABLE IF EXISTS `litemall_coupon`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_coupon` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(63) NOT NULL COMMENT '优惠券名称',\n  `desc` varchar(127) DEFAULT '' COMMENT '优惠券介绍，通常是显示优惠券使用限制文字',\n  `tag` varchar(63) DEFAULT '' COMMENT '优惠券标签，例如新人专用',\n  `total` int(11) NOT NULL DEFAULT '0' COMMENT '优惠券数量，如果是0，则是无限量',\n  `discount` decimal(10,2) DEFAULT '0.00' COMMENT '优惠金额，',\n  `min` decimal(10,2) DEFAULT '0.00' COMMENT '最少消费金额才能使用优惠券。',\n  `limit` smallint(6) DEFAULT '1' COMMENT '用户领券限制数量，如果是0，则是不限制；默认是1，限领一张.',\n  `type` smallint(6) DEFAULT '0' COMMENT '优惠券赠送类型，如果是0则通用券，用户领取；如果是1，则是注册赠券；如果是2，则是优惠券码兑换；',\n  `status` smallint(6) DEFAULT '0' COMMENT '优惠券状态，如果是0则是正常可用；如果是1则是过期; 如果是2则是下架。',\n  `goods_type` smallint(6) DEFAULT '0' COMMENT '商品限制类型，如果0则全商品，如果是1则是类目限制，如果是2则是商品限制。',\n  `goods_value` varchar(1023) DEFAULT '[]' COMMENT '商品限制值，goods_type如果是0则空集合，如果是1则是类目集合，如果是2则是商品集合。',\n  `code` varchar(63) DEFAULT NULL COMMENT '优惠券兑换码',\n  `time_type` smallint(6) DEFAULT '0' COMMENT '有效时间限制，如果是0，则基于领取时间的有效天数days；如果是1，则start_time和end_time是优惠券有效期；',\n  `days` smallint(6) DEFAULT '0' COMMENT '基于领取时间的有效天数days。',\n  `start_time` datetime DEFAULT NULL COMMENT '使用券开始时间',\n  `end_time` datetime DEFAULT NULL COMMENT '使用券截至时间',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `code` (`code`)\n) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COMMENT='优惠券信息及规则表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_coupon_user`\n--\n\nDROP TABLE IF EXISTS `litemall_coupon_user`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_coupon_user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL COMMENT '用户ID',\n  `coupon_id` int(11) NOT NULL COMMENT '优惠券ID',\n  `status` smallint(6) DEFAULT '0' COMMENT '使用状态, 如果是0则未使用；如果是1则已使用；如果是2则已过期；如果是3则已经下架；',\n  `used_time` datetime DEFAULT NULL COMMENT '使用时间',\n  `start_time` datetime DEFAULT NULL COMMENT '有效期开始时间',\n  `end_time` datetime DEFAULT NULL COMMENT '有效期截至时间',\n  `order_id` int(11) DEFAULT NULL COMMENT '订单ID',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='优惠券用户使用表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_feedback`\n--\n\nDROP TABLE IF EXISTS `litemall_feedback`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_feedback` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户表的用户ID',\n  `username` varchar(63) NOT NULL DEFAULT '' COMMENT '用户名称',\n  `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '手机号',\n  `feed_type` varchar(63) NOT NULL DEFAULT '' COMMENT '反馈类型',\n  `content` varchar(1023) NOT NULL COMMENT '反馈内容',\n  `status` int(3) NOT NULL DEFAULT '0' COMMENT '状态',\n  `has_picture` tinyint(1) DEFAULT '0' COMMENT '是否含有图片',\n  `pic_urls` varchar(1023) DEFAULT NULL COMMENT '图片地址列表，采用JSON数组格式',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `id_value` (`status`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='意见反馈表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_footprint`\n--\n\nDROP TABLE IF EXISTS `litemall_footprint`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_footprint` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL DEFAULT '0' COMMENT '用户表的用户ID',\n  `goods_id` int(11) NOT NULL DEFAULT '0' COMMENT '浏览商品ID',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户浏览足迹表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_goods`\n--\n\nDROP TABLE IF EXISTS `litemall_goods`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_goods` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `goods_sn` varchar(63) NOT NULL DEFAULT '' COMMENT '商品编号',\n  `name` varchar(127) NOT NULL DEFAULT '' COMMENT '商品名称',\n  `category_id` int(11) DEFAULT '0' COMMENT '商品所属类目ID',\n  `brand_id` int(11) DEFAULT '0',\n  `gallery` varchar(1023) DEFAULT NULL COMMENT '商品宣传图片列表，采用JSON数组格式',\n  `keywords` varchar(255) DEFAULT '' COMMENT '商品关键字，采用逗号间隔',\n  `brief` varchar(255) DEFAULT '' COMMENT '商品简介',\n  `is_on_sale` tinyint(1) DEFAULT '1' COMMENT '是否上架',\n  `sort_order` smallint(4) DEFAULT '100',\n  `pic_url` varchar(255) DEFAULT NULL COMMENT '商品页面商品图片',\n  `share_url` varchar(255) DEFAULT NULL COMMENT '商品分享海报',\n  `is_new` tinyint(1) DEFAULT '0' COMMENT '是否新品首发，如果设置则可以在新品首发页面展示',\n  `is_hot` tinyint(1) DEFAULT '0' COMMENT '是否人气推荐，如果设置则可以在人气推荐页面展示',\n  `unit` varchar(31) DEFAULT '’件‘' COMMENT '商品单位，例如件、盒',\n  `counter_price` decimal(10,2) DEFAULT '0.00' COMMENT '专柜价格',\n  `retail_price` decimal(10,2) DEFAULT '100000.00' COMMENT '零售价格',\n  `detail` text COMMENT '商品详细介绍，是富文本格式',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `goods_sn` (`goods_sn`),\n  KEY `cat_id` (`category_id`),\n  KEY `brand_id` (`brand_id`),\n  KEY `sort_order` (`sort_order`)\n) ENGINE=InnoDB AUTO_INCREMENT=1181004 DEFAULT CHARSET=utf8mb4 COMMENT='商品基本信息表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_goods_attribute`\n--\n\nDROP TABLE IF EXISTS `litemall_goods_attribute`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_goods_attribute` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `goods_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品表的商品ID',\n  `attribute` varchar(255) NOT NULL COMMENT '商品参数名称',\n  `value` varchar(255) NOT NULL COMMENT '商品参数值',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `goods_id` (`goods_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=877 DEFAULT CHARSET=utf8mb4 COMMENT='商品参数表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_goods_product`\n--\n\nDROP TABLE IF EXISTS `litemall_goods_product`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_goods_product` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `goods_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品表的商品ID',\n  `specifications` varchar(1023) NOT NULL COMMENT '商品规格值列表，采用JSON数组格式',\n  `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品货品价格',\n  `number` int(11) NOT NULL DEFAULT '0' COMMENT '商品货品数量',\n  `url` varchar(125) DEFAULT NULL COMMENT '商品货品图片',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `goods_id` (`goods_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=251 DEFAULT CHARSET=utf8mb4 COMMENT='商品货品表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_goods_specification`\n--\n\nDROP TABLE IF EXISTS `litemall_goods_specification`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_goods_specification` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `goods_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品表的商品ID',\n  `specification` varchar(255) NOT NULL DEFAULT '' COMMENT '商品规格名称',\n  `value` varchar(255) NOT NULL DEFAULT '' COMMENT '商品规格值',\n  `pic_url` varchar(255) NOT NULL DEFAULT '' COMMENT '商品规格图片',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `goods_id` (`goods_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=250 DEFAULT CHARSET=utf8mb4 COMMENT='商品规格表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_groupon`\n--\n\nDROP TABLE IF EXISTS `litemall_groupon`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_groupon` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `order_id` int(11) NOT NULL COMMENT '关联的订单ID',\n  `groupon_id` int(11) DEFAULT '0' COMMENT '如果是开团用户，则groupon_id是0；如果是参团用户，则groupon_id是团购活动ID',\n  `rules_id` int(11) NOT NULL COMMENT '团购规则ID，关联litemall_groupon_rules表ID字段',\n  `user_id` int(11) NOT NULL COMMENT '用户ID',\n  `share_url` varchar(255) DEFAULT NULL COMMENT '团购分享图片地址',\n  `creator_user_id` int(11) NOT NULL COMMENT '开团用户ID',\n  `creator_user_time` datetime DEFAULT NULL COMMENT '开团时间',\n  `status` smallint(6) DEFAULT '0' COMMENT '团购活动状态，开团未支付则0，开团中则1，开团失败则2',\n  `add_time` datetime NOT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`) USING BTREE\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='团购活动表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_groupon_rules`\n--\n\nDROP TABLE IF EXISTS `litemall_groupon_rules`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_groupon_rules` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `goods_id` int(11) NOT NULL COMMENT '商品表的商品ID',\n  `goods_name` varchar(127) NOT NULL COMMENT '商品名称',\n  `pic_url` varchar(255) DEFAULT NULL COMMENT '商品图片或者商品货品图片',\n  `discount` decimal(63,0) NOT NULL COMMENT '优惠金额',\n  `discount_member` int(11) NOT NULL COMMENT '达到优惠条件的人数',\n  `expire_time` datetime DEFAULT NULL COMMENT '团购过期时间',\n  `status` smallint(6) DEFAULT '0' COMMENT '团购规则状态，正常上线则0，到期自动下线则1，管理手动下线则2',\n  `add_time` datetime NOT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`) USING BTREE,\n  KEY `goods_id` (`goods_id`)\n) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='团购规则表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_issue`\n--\n\nDROP TABLE IF EXISTS `litemall_issue`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_issue` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `question` varchar(255) DEFAULT NULL COMMENT '问题标题',\n  `answer` varchar(255) DEFAULT NULL COMMENT '问题答案',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8mb4 COMMENT='常见问题表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_keyword`\n--\n\nDROP TABLE IF EXISTS `litemall_keyword`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_keyword` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `keyword` varchar(127) NOT NULL DEFAULT '' COMMENT '关键字',\n  `url` varchar(255) NOT NULL DEFAULT '' COMMENT '关键字的跳转链接',\n  `is_hot` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是热门关键字',\n  `is_default` tinyint(1) NOT NULL DEFAULT '0' COMMENT '是否是默认关键字',\n  `sort_order` int(11) NOT NULL DEFAULT '100' COMMENT '排序',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=8 DEFAULT CHARSET=utf8mb4 COMMENT='关键字表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_log`\n--\n\nDROP TABLE IF EXISTS `litemall_log`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_log` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `admin` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '管理员',\n  `ip` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '管理员地址',\n  `type` int(11) DEFAULT NULL COMMENT '操作分类',\n  `action` varchar(45) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作动作',\n  `status` tinyint(1) DEFAULT NULL COMMENT '操作状态',\n  `result` varchar(127) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '操作结果，或者成功消息，或者失败消息',\n  `comment` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '补充信息',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=43 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='操作日志表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_notice`\n--\n\nDROP TABLE IF EXISTS `litemall_notice`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_notice` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `title` varchar(63) DEFAULT NULL COMMENT '通知标题',\n  `content` varchar(511) DEFAULT NULL COMMENT '通知内容',\n  `admin_id` int(11) DEFAULT '0' COMMENT '创建通知的管理员ID，如果是系统内置通知则是0.',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='通知表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_notice_admin`\n--\n\nDROP TABLE IF EXISTS `litemall_notice_admin`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_notice_admin` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `notice_id` int(11) DEFAULT NULL COMMENT '通知ID',\n  `notice_title` varchar(63) DEFAULT NULL COMMENT '通知标题',\n  `admin_id` int(11) DEFAULT NULL COMMENT '接收通知的管理员ID',\n  `read_time` datetime DEFAULT NULL COMMENT '阅读时间，如果是NULL则是未读状态',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4 COMMENT='通知管理员表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_order`\n--\n\nDROP TABLE IF EXISTS `litemall_order`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_order` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL COMMENT '用户表的用户ID',\n  `order_sn` varchar(63) NOT NULL COMMENT '订单编号',\n  `order_status` smallint(6) NOT NULL COMMENT '订单状态',\n  `aftersale_status` smallint(6) DEFAULT '0' COMMENT '售后状态，0是可申请，1是用户已申请，2是管理员审核通过，3是管理员退款成功，4是管理员审核拒绝，5是用户已取消',\n  `consignee` varchar(63) NOT NULL COMMENT '收货人名称',\n  `mobile` varchar(63) NOT NULL COMMENT '收货人手机号',\n  `address` varchar(127) NOT NULL COMMENT '收货具体地址',\n  `message` varchar(512) NOT NULL DEFAULT '' COMMENT '用户订单留言',\n  `goods_price` decimal(10,2) NOT NULL COMMENT '商品总费用',\n  `freight_price` decimal(10,2) NOT NULL COMMENT '配送费用',\n  `coupon_price` decimal(10,2) NOT NULL COMMENT '优惠券减免',\n  `integral_price` decimal(10,2) NOT NULL COMMENT '用户积分减免',\n  `groupon_price` decimal(10,2) NOT NULL COMMENT '团购优惠价减免',\n  `order_price` decimal(10,2) NOT NULL COMMENT '订单费用， = goods_price + freight_price - coupon_price',\n  `actual_price` decimal(10,2) NOT NULL COMMENT '实付费用， = order_price - integral_price',\n  `pay_id` varchar(63) DEFAULT NULL COMMENT '微信付款编号',\n  `pay_time` datetime DEFAULT NULL COMMENT '微信付款时间',\n  `ship_sn` varchar(63) DEFAULT NULL COMMENT '发货编号',\n  `ship_channel` varchar(63) DEFAULT NULL COMMENT '发货快递公司',\n  `ship_time` datetime DEFAULT NULL COMMENT '发货开始时间',\n  `refund_amount` decimal(10,2) DEFAULT NULL COMMENT '实际退款金额，（有可能退款金额小于实际支付金额）',\n  `refund_type` varchar(63) DEFAULT NULL COMMENT '退款方式',\n  `refund_content` varchar(127) DEFAULT NULL COMMENT '退款备注',\n  `refund_time` datetime DEFAULT NULL COMMENT '退款时间',\n  `confirm_time` datetime DEFAULT NULL COMMENT '用户确认收货时间',\n  `comments` smallint(6) DEFAULT '0' COMMENT '待评价订单商品数量',\n  `end_time` datetime DEFAULT NULL COMMENT '订单关闭时间',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_order_goods`\n--\n\nDROP TABLE IF EXISTS `litemall_order_goods`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_order_goods` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `order_id` int(11) NOT NULL DEFAULT '0' COMMENT '订单表的订单ID',\n  `goods_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品表的商品ID',\n  `goods_name` varchar(127) NOT NULL DEFAULT '' COMMENT '商品名称',\n  `goods_sn` varchar(63) NOT NULL DEFAULT '' COMMENT '商品编号',\n  `product_id` int(11) NOT NULL DEFAULT '0' COMMENT '商品货品表的货品ID',\n  `number` smallint(5) NOT NULL DEFAULT '0' COMMENT '商品货品的购买数量',\n  `price` decimal(10,2) NOT NULL DEFAULT '0.00' COMMENT '商品货品的售价',\n  `specifications` varchar(1023) NOT NULL COMMENT '商品货品的规格列表',\n  `pic_url` varchar(255) NOT NULL DEFAULT '' COMMENT '商品货品图片或者商品图片',\n  `comment` int(11) DEFAULT '0' COMMENT '订单商品评论，如果是-1，则超期不能评价；如果是0，则可以评价；如果其他值，则是comment表里面的评论ID。',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `order_id` (`order_id`),\n  KEY `goods_id` (`goods_id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_permission`\n--\n\nDROP TABLE IF EXISTS `litemall_permission`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_permission` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `role_id` int(11) DEFAULT NULL COMMENT '角色ID',\n  `permission` varchar(63) DEFAULT NULL COMMENT '权限',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=32 DEFAULT CHARSET=utf8mb4 COMMENT='权限表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_region`\n--\n\nDROP TABLE IF EXISTS `litemall_region`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_region` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `pid` int(11) NOT NULL DEFAULT '0' COMMENT '行政区域父ID，例如区县的pid指向市，市的pid指向省，省的pid则是0',\n  `name` varchar(120) NOT NULL DEFAULT '' COMMENT '行政区域名称',\n  `type` tinyint(3) NOT NULL DEFAULT '0' COMMENT '行政区域类型，如如1则是省， 如果是2则是市，如果是3则是区县',\n  `code` int(11) NOT NULL DEFAULT '0' COMMENT '行政区域编码',\n  PRIMARY KEY (`id`),\n  KEY `parent_id` (`pid`),\n  KEY `region_type` (`type`),\n  KEY `agency_id` (`code`)\n) ENGINE=InnoDB AUTO_INCREMENT=3232 DEFAULT CHARSET=utf8mb4 COMMENT='行政区域表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_role`\n--\n\nDROP TABLE IF EXISTS `litemall_role`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_role` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `name` varchar(63) NOT NULL COMMENT '角色名称',\n  `desc` varchar(1023) DEFAULT NULL COMMENT '角色描述',\n  `enabled` tinyint(1) DEFAULT '1' COMMENT '是否启用',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `name_UNIQUE` (`name`)\n) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8mb4 COMMENT='角色表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_search_history`\n--\n\nDROP TABLE IF EXISTS `litemall_search_history`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_search_history` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `user_id` int(11) NOT NULL COMMENT '用户表的用户ID',\n  `keyword` varchar(63) NOT NULL COMMENT '搜索关键字',\n  `from` varchar(63) NOT NULL DEFAULT '' COMMENT '搜索来源，如pc、wx、app',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='搜索历史表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_storage`\n--\n\nDROP TABLE IF EXISTS `litemall_storage`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_storage` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `key` varchar(63) NOT NULL COMMENT '文件的唯一索引',\n  `name` varchar(255) NOT NULL COMMENT '文件名',\n  `type` varchar(20) NOT NULL COMMENT '文件类型',\n  `size` int(11) NOT NULL COMMENT '文件大小',\n  `url` varchar(255) DEFAULT NULL COMMENT '文件访问链接',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `key` (`key`)\n) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件存储表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_system`\n--\n\nDROP TABLE IF EXISTS `litemall_system`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_system` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `key_name` varchar(255) NOT NULL COMMENT '系统配置名',\n  `key_value` varchar(255) NOT NULL COMMENT '系统配置值',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`) USING BTREE\n) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8mb4 ROW_FORMAT=DYNAMIC COMMENT='系统配置表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_topic`\n--\n\nDROP TABLE IF EXISTS `litemall_topic`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_topic` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `title` varchar(255) NOT NULL DEFAULT '''' COMMENT '专题标题',\n  `subtitle` varchar(255) DEFAULT '''' COMMENT '专题子标题',\n  `content` text COMMENT '专题内容，富文本格式',\n  `price` decimal(10,2) DEFAULT '0.00' COMMENT '专题相关商品最低价',\n  `read_count` varchar(255) DEFAULT '1k' COMMENT '专题阅读量',\n  `pic_url` varchar(255) DEFAULT '' COMMENT '专题图片',\n  `sort_order` int(11) DEFAULT '100' COMMENT '排序',\n  `goods` varchar(1023) DEFAULT '' COMMENT '专题相关商品，采用JSON数组格式',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  KEY `topic_id` (`id`)\n) ENGINE=InnoDB AUTO_INCREMENT=319 DEFAULT CHARSET=utf8mb4 COMMENT='专题表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n--\n-- Table structure for table `litemall_user`\n--\n\nDROP TABLE IF EXISTS `litemall_user`;\n/*!40101 SET @saved_cs_client     = @@character_set_client */;\n/*!40101 SET character_set_client = utf8 */;\nCREATE TABLE `litemall_user` (\n  `id` int(11) NOT NULL AUTO_INCREMENT,\n  `username` varchar(63) NOT NULL COMMENT '用户名称',\n  `password` varchar(63) NOT NULL DEFAULT '' COMMENT '用户密码',\n  `gender` tinyint(3) NOT NULL DEFAULT '0' COMMENT '性别：0 未知， 1男， 1 女',\n  `birthday` date DEFAULT NULL COMMENT '生日',\n  `last_login_time` datetime DEFAULT NULL COMMENT '最近一次登录时间',\n  `last_login_ip` varchar(63) NOT NULL DEFAULT '' COMMENT '最近一次登录IP地址',\n  `user_level` tinyint(3) DEFAULT '0' COMMENT '0 普通用户，1 VIP用户，2 高级VIP用户',\n  `nickname` varchar(63) NOT NULL DEFAULT '' COMMENT '用户昵称或网络名称',\n  `mobile` varchar(20) NOT NULL DEFAULT '' COMMENT '用户手机号码',\n  `avatar` varchar(255) NOT NULL DEFAULT '' COMMENT '用户头像图片',\n  `weixin_openid` varchar(63) NOT NULL DEFAULT '' COMMENT '微信登录openid',\n  `session_key` varchar(100) NOT NULL DEFAULT '' COMMENT '微信登录会话KEY',\n  `status` tinyint(3) NOT NULL DEFAULT '0' COMMENT '0 可用, 1 禁用, 2 注销',\n  `add_time` datetime DEFAULT NULL COMMENT '创建时间',\n  `update_time` datetime DEFAULT NULL COMMENT '更新时间',\n  `deleted` tinyint(1) DEFAULT '0' COMMENT '逻辑删除',\n  PRIMARY KEY (`id`),\n  UNIQUE KEY `user_name` (`username`)\n) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8mb4 COMMENT='用户表';\n/*!40101 SET character_set_client = @saved_cs_client */;\n\n/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;\n\n/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;\n/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;\n/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;\n/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;\n/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;\n/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;\n/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;\n\n-- Dump completed on 2019-12-16 23:12:57\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/GoodsProductMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport org.apache.ibatis.annotations.Param;\n\npublic interface GoodsProductMapper {\n    int addStock(@Param(\"id\") Integer id, @Param(\"num\") Short num);\n    int reduceStock(@Param(\"id\") Integer id, @Param(\"num\") Short num);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallAdMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallAd;\nimport org.linlinjava.litemall.db.domain.LitemallAdExample;\n\npublic interface LitemallAdMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallAd record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallAd record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    LitemallAd selectOneByExample(LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    LitemallAd selectOneByExampleSelective(@Param(\"example\") LitemallAdExample example, @Param(\"selective\") LitemallAd.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    List<LitemallAd> selectByExampleSelective(@Param(\"example\") LitemallAdExample example, @Param(\"selective\") LitemallAd.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    List<LitemallAd> selectByExample(LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    LitemallAd selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallAd.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    LitemallAd selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    LitemallAd selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallAd record, @Param(\"example\") LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallAd record, @Param(\"example\") LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallAd record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallAd record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallAdExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallAddressMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallAddress;\nimport org.linlinjava.litemall.db.domain.LitemallAddressExample;\n\npublic interface LitemallAddressMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallAddress record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallAddress record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    LitemallAddress selectOneByExample(LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    LitemallAddress selectOneByExampleSelective(@Param(\"example\") LitemallAddressExample example, @Param(\"selective\") LitemallAddress.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    List<LitemallAddress> selectByExampleSelective(@Param(\"example\") LitemallAddressExample example, @Param(\"selective\") LitemallAddress.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    List<LitemallAddress> selectByExample(LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    LitemallAddress selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallAddress.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    LitemallAddress selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    LitemallAddress selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallAddress record, @Param(\"example\") LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallAddress record, @Param(\"example\") LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallAddress record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallAddress record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallAddressExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallAdminMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallAdminExample;\n\npublic interface LitemallAdminMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    LitemallAdmin selectOneByExample(LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    LitemallAdmin selectOneByExampleSelective(@Param(\"example\") LitemallAdminExample example, @Param(\"selective\") LitemallAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    List<LitemallAdmin> selectByExampleSelective(@Param(\"example\") LitemallAdminExample example, @Param(\"selective\") LitemallAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    List<LitemallAdmin> selectByExample(LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    LitemallAdmin selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    LitemallAdmin selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    LitemallAdmin selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallAdmin record, @Param(\"example\") LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallAdmin record, @Param(\"example\") LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallAftersaleMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallAftersale;\nimport org.linlinjava.litemall.db.domain.LitemallAftersaleExample;\n\npublic interface LitemallAftersaleMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallAftersale record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallAftersale record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    LitemallAftersale selectOneByExample(LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    LitemallAftersale selectOneByExampleSelective(@Param(\"example\") LitemallAftersaleExample example, @Param(\"selective\") LitemallAftersale.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    List<LitemallAftersale> selectByExampleSelective(@Param(\"example\") LitemallAftersaleExample example, @Param(\"selective\") LitemallAftersale.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    List<LitemallAftersale> selectByExample(LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    LitemallAftersale selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallAftersale.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    LitemallAftersale selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    LitemallAftersale selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallAftersale record, @Param(\"example\") LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallAftersale record, @Param(\"example\") LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallAftersale record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallAftersale record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallAftersaleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallBrandMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallBrand;\nimport org.linlinjava.litemall.db.domain.LitemallBrandExample;\n\npublic interface LitemallBrandMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallBrand record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallBrand record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    LitemallBrand selectOneByExample(LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    LitemallBrand selectOneByExampleSelective(@Param(\"example\") LitemallBrandExample example, @Param(\"selective\") LitemallBrand.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    List<LitemallBrand> selectByExampleSelective(@Param(\"example\") LitemallBrandExample example, @Param(\"selective\") LitemallBrand.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    List<LitemallBrand> selectByExample(LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    LitemallBrand selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallBrand.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    LitemallBrand selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    LitemallBrand selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallBrand record, @Param(\"example\") LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallBrand record, @Param(\"example\") LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallBrand record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallBrand record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallBrandExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCartMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallCart;\nimport org.linlinjava.litemall.db.domain.LitemallCartExample;\n\npublic interface LitemallCartMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallCart record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallCart record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    LitemallCart selectOneByExample(LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    LitemallCart selectOneByExampleSelective(@Param(\"example\") LitemallCartExample example, @Param(\"selective\") LitemallCart.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    List<LitemallCart> selectByExampleSelective(@Param(\"example\") LitemallCartExample example, @Param(\"selective\") LitemallCart.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    List<LitemallCart> selectByExample(LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    LitemallCart selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallCart.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    LitemallCart selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    LitemallCart selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallCart record, @Param(\"example\") LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallCart record, @Param(\"example\") LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallCart record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallCart record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCartExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCategoryMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallCategory;\nimport org.linlinjava.litemall.db.domain.LitemallCategoryExample;\n\npublic interface LitemallCategoryMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallCategory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallCategory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    LitemallCategory selectOneByExample(LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    LitemallCategory selectOneByExampleSelective(@Param(\"example\") LitemallCategoryExample example, @Param(\"selective\") LitemallCategory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    List<LitemallCategory> selectByExampleSelective(@Param(\"example\") LitemallCategoryExample example, @Param(\"selective\") LitemallCategory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    List<LitemallCategory> selectByExample(LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    LitemallCategory selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallCategory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    LitemallCategory selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    LitemallCategory selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallCategory record, @Param(\"example\") LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallCategory record, @Param(\"example\") LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallCategory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallCategory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCategoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCollectMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallCollect;\nimport org.linlinjava.litemall.db.domain.LitemallCollectExample;\n\npublic interface LitemallCollectMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallCollect record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallCollect record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    LitemallCollect selectOneByExample(LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    LitemallCollect selectOneByExampleSelective(@Param(\"example\") LitemallCollectExample example, @Param(\"selective\") LitemallCollect.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    List<LitemallCollect> selectByExampleSelective(@Param(\"example\") LitemallCollectExample example, @Param(\"selective\") LitemallCollect.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    List<LitemallCollect> selectByExample(LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    LitemallCollect selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallCollect.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    LitemallCollect selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    LitemallCollect selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallCollect record, @Param(\"example\") LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallCollect record, @Param(\"example\") LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallCollect record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallCollect record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCollectExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCommentMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallComment;\nimport org.linlinjava.litemall.db.domain.LitemallCommentExample;\n\npublic interface LitemallCommentMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallComment record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallComment record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    LitemallComment selectOneByExample(LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    LitemallComment selectOneByExampleSelective(@Param(\"example\") LitemallCommentExample example, @Param(\"selective\") LitemallComment.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    List<LitemallComment> selectByExampleSelective(@Param(\"example\") LitemallCommentExample example, @Param(\"selective\") LitemallComment.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    List<LitemallComment> selectByExample(LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    LitemallComment selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallComment.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    LitemallComment selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    LitemallComment selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallComment record, @Param(\"example\") LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallComment record, @Param(\"example\") LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallComment record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallComment record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCommentExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCouponMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponExample;\n\npublic interface LitemallCouponMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallCoupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallCoupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    LitemallCoupon selectOneByExample(LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    LitemallCoupon selectOneByExampleSelective(@Param(\"example\") LitemallCouponExample example, @Param(\"selective\") LitemallCoupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    List<LitemallCoupon> selectByExampleSelective(@Param(\"example\") LitemallCouponExample example, @Param(\"selective\") LitemallCoupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    List<LitemallCoupon> selectByExample(LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    LitemallCoupon selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallCoupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    LitemallCoupon selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    LitemallCoupon selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallCoupon record, @Param(\"example\") LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallCoupon record, @Param(\"example\") LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallCoupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallCoupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallCouponUserMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUserExample;\n\npublic interface LitemallCouponUserMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallCouponUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallCouponUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    LitemallCouponUser selectOneByExample(LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    LitemallCouponUser selectOneByExampleSelective(@Param(\"example\") LitemallCouponUserExample example, @Param(\"selective\") LitemallCouponUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    List<LitemallCouponUser> selectByExampleSelective(@Param(\"example\") LitemallCouponUserExample example, @Param(\"selective\") LitemallCouponUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    List<LitemallCouponUser> selectByExample(LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    LitemallCouponUser selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallCouponUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    LitemallCouponUser selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    LitemallCouponUser selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallCouponUser record, @Param(\"example\") LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallCouponUser record, @Param(\"example\") LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallCouponUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallCouponUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallCouponUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallFeedbackMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallFeedback;\nimport org.linlinjava.litemall.db.domain.LitemallFeedbackExample;\n\npublic interface LitemallFeedbackMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallFeedback record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallFeedback record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    LitemallFeedback selectOneByExample(LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    LitemallFeedback selectOneByExampleSelective(@Param(\"example\") LitemallFeedbackExample example, @Param(\"selective\") LitemallFeedback.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    List<LitemallFeedback> selectByExampleSelective(@Param(\"example\") LitemallFeedbackExample example, @Param(\"selective\") LitemallFeedback.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    List<LitemallFeedback> selectByExample(LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    LitemallFeedback selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallFeedback.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    LitemallFeedback selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    LitemallFeedback selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallFeedback record, @Param(\"example\") LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallFeedback record, @Param(\"example\") LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallFeedback record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallFeedback record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallFeedbackExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallFootprintMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallFootprint;\nimport org.linlinjava.litemall.db.domain.LitemallFootprintExample;\n\npublic interface LitemallFootprintMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallFootprint record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallFootprint record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    LitemallFootprint selectOneByExample(LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    LitemallFootprint selectOneByExampleSelective(@Param(\"example\") LitemallFootprintExample example, @Param(\"selective\") LitemallFootprint.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    List<LitemallFootprint> selectByExampleSelective(@Param(\"example\") LitemallFootprintExample example, @Param(\"selective\") LitemallFootprint.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    List<LitemallFootprint> selectByExample(LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    LitemallFootprint selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallFootprint.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    LitemallFootprint selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    LitemallFootprint selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallFootprint record, @Param(\"example\") LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallFootprint record, @Param(\"example\") LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallFootprint record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallFootprint record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallFootprintExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGoodsAttributeMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsAttribute;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample;\n\npublic interface LitemallGoodsAttributeMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGoodsAttribute record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGoodsAttribute record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsAttribute selectOneByExample(LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsAttribute selectOneByExampleSelective(@Param(\"example\") LitemallGoodsAttributeExample example, @Param(\"selective\") LitemallGoodsAttribute.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsAttribute> selectByExampleSelective(@Param(\"example\") LitemallGoodsAttributeExample example, @Param(\"selective\") LitemallGoodsAttribute.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsAttribute> selectByExample(LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsAttribute selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGoodsAttribute.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsAttribute selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsAttribute selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGoodsAttribute record, @Param(\"example\") LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGoodsAttribute record, @Param(\"example\") LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGoodsAttribute record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGoodsAttribute record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGoodsAttributeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGoodsMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsExample;\n\npublic interface LitemallGoodsMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectOneByExample(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectOneByExampleSelective(@Param(\"example\") LitemallGoodsExample example, @Param(\"selective\") LitemallGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectOneByExampleWithBLOBs(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoods> selectByExampleSelective(@Param(\"example\") LitemallGoodsExample example, @Param(\"selective\") LitemallGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoods> selectByExampleWithBLOBs(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoods> selectByExample(LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    LitemallGoods selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGoods record, @Param(\"example\") LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByExampleWithBLOBs(@Param(\"record\") LitemallGoods record, @Param(\"example\") LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGoods record, @Param(\"example\") LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeyWithBLOBs(LitemallGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGoodsProductMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProduct;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProductExample;\n\npublic interface LitemallGoodsProductMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGoodsProduct record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGoodsProduct record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsProduct selectOneByExample(LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsProduct selectOneByExampleSelective(@Param(\"example\") LitemallGoodsProductExample example, @Param(\"selective\") LitemallGoodsProduct.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsProduct> selectByExampleSelective(@Param(\"example\") LitemallGoodsProductExample example, @Param(\"selective\") LitemallGoodsProduct.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsProduct> selectByExample(LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsProduct selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGoodsProduct.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsProduct selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsProduct selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGoodsProduct record, @Param(\"example\") LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGoodsProduct record, @Param(\"example\") LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGoodsProduct record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGoodsProduct record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGoodsProductExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGoodsSpecificationMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsSpecification;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample;\n\npublic interface LitemallGoodsSpecificationMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGoodsSpecification record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGoodsSpecification record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsSpecification selectOneByExample(LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsSpecification selectOneByExampleSelective(@Param(\"example\") LitemallGoodsSpecificationExample example, @Param(\"selective\") LitemallGoodsSpecification.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsSpecification> selectByExampleSelective(@Param(\"example\") LitemallGoodsSpecificationExample example, @Param(\"selective\") LitemallGoodsSpecification.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    List<LitemallGoodsSpecification> selectByExample(LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsSpecification selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGoodsSpecification.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsSpecification selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    LitemallGoodsSpecification selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGoodsSpecification record, @Param(\"example\") LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGoodsSpecification record, @Param(\"example\") LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGoodsSpecification record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGoodsSpecification record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGoodsSpecificationExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGrouponMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponExample;\n\npublic interface LitemallGrouponMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGroupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGroupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    LitemallGroupon selectOneByExample(LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    LitemallGroupon selectOneByExampleSelective(@Param(\"example\") LitemallGrouponExample example, @Param(\"selective\") LitemallGroupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    List<LitemallGroupon> selectByExampleSelective(@Param(\"example\") LitemallGrouponExample example, @Param(\"selective\") LitemallGroupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    List<LitemallGroupon> selectByExample(LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    LitemallGroupon selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGroupon.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    LitemallGroupon selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    LitemallGroupon selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGroupon record, @Param(\"example\") LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGroupon record, @Param(\"example\") LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGroupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGroupon record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGrouponExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallGrouponRulesMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample;\n\npublic interface LitemallGrouponRulesMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallGrouponRules record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallGrouponRules record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    LitemallGrouponRules selectOneByExample(LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    LitemallGrouponRules selectOneByExampleSelective(@Param(\"example\") LitemallGrouponRulesExample example, @Param(\"selective\") LitemallGrouponRules.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    List<LitemallGrouponRules> selectByExampleSelective(@Param(\"example\") LitemallGrouponRulesExample example, @Param(\"selective\") LitemallGrouponRules.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    List<LitemallGrouponRules> selectByExample(LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    LitemallGrouponRules selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallGrouponRules.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    LitemallGrouponRules selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    LitemallGrouponRules selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallGrouponRules record, @Param(\"example\") LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallGrouponRules record, @Param(\"example\") LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallGrouponRules record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallGrouponRules record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallGrouponRulesExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallIssueMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallIssue;\nimport org.linlinjava.litemall.db.domain.LitemallIssueExample;\n\npublic interface LitemallIssueMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallIssue record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallIssue record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    LitemallIssue selectOneByExample(LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    LitemallIssue selectOneByExampleSelective(@Param(\"example\") LitemallIssueExample example, @Param(\"selective\") LitemallIssue.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    List<LitemallIssue> selectByExampleSelective(@Param(\"example\") LitemallIssueExample example, @Param(\"selective\") LitemallIssue.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    List<LitemallIssue> selectByExample(LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    LitemallIssue selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallIssue.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    LitemallIssue selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    LitemallIssue selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallIssue record, @Param(\"example\") LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallIssue record, @Param(\"example\") LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallIssue record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallIssue record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallIssueExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallKeywordMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallKeyword;\nimport org.linlinjava.litemall.db.domain.LitemallKeywordExample;\n\npublic interface LitemallKeywordMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallKeyword record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallKeyword record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    LitemallKeyword selectOneByExample(LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    LitemallKeyword selectOneByExampleSelective(@Param(\"example\") LitemallKeywordExample example, @Param(\"selective\") LitemallKeyword.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    List<LitemallKeyword> selectByExampleSelective(@Param(\"example\") LitemallKeywordExample example, @Param(\"selective\") LitemallKeyword.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    List<LitemallKeyword> selectByExample(LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    LitemallKeyword selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallKeyword.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    LitemallKeyword selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    LitemallKeyword selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallKeyword record, @Param(\"example\") LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallKeyword record, @Param(\"example\") LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallKeyword record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallKeyword record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallKeywordExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallLogMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallLog;\nimport org.linlinjava.litemall.db.domain.LitemallLogExample;\n\npublic interface LitemallLogMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallLog record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallLog record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    LitemallLog selectOneByExample(LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    LitemallLog selectOneByExampleSelective(@Param(\"example\") LitemallLogExample example, @Param(\"selective\") LitemallLog.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    List<LitemallLog> selectByExampleSelective(@Param(\"example\") LitemallLogExample example, @Param(\"selective\") LitemallLog.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    List<LitemallLog> selectByExample(LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    LitemallLog selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallLog.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    LitemallLog selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    LitemallLog selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallLog record, @Param(\"example\") LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallLog record, @Param(\"example\") LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallLog record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallLog record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallLogExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallNoticeAdminMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample;\n\npublic interface LitemallNoticeAdminMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallNoticeAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallNoticeAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    LitemallNoticeAdmin selectOneByExample(LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    LitemallNoticeAdmin selectOneByExampleSelective(@Param(\"example\") LitemallNoticeAdminExample example, @Param(\"selective\") LitemallNoticeAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    List<LitemallNoticeAdmin> selectByExampleSelective(@Param(\"example\") LitemallNoticeAdminExample example, @Param(\"selective\") LitemallNoticeAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    List<LitemallNoticeAdmin> selectByExample(LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    LitemallNoticeAdmin selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallNoticeAdmin.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    LitemallNoticeAdmin selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    LitemallNoticeAdmin selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallNoticeAdmin record, @Param(\"example\") LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallNoticeAdmin record, @Param(\"example\") LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallNoticeAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallNoticeAdmin record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallNoticeAdminExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallNoticeMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallNotice;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeExample;\n\npublic interface LitemallNoticeMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallNotice record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallNotice record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    LitemallNotice selectOneByExample(LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    LitemallNotice selectOneByExampleSelective(@Param(\"example\") LitemallNoticeExample example, @Param(\"selective\") LitemallNotice.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    List<LitemallNotice> selectByExampleSelective(@Param(\"example\") LitemallNoticeExample example, @Param(\"selective\") LitemallNotice.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    List<LitemallNotice> selectByExample(LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    LitemallNotice selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallNotice.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    LitemallNotice selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    LitemallNotice selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallNotice record, @Param(\"example\") LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallNotice record, @Param(\"example\") LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallNotice record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallNotice record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallNoticeExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallOrderGoodsMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoods;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample;\n\npublic interface LitemallOrderGoodsMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallOrderGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallOrderGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    LitemallOrderGoods selectOneByExample(LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    LitemallOrderGoods selectOneByExampleSelective(@Param(\"example\") LitemallOrderGoodsExample example, @Param(\"selective\") LitemallOrderGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    List<LitemallOrderGoods> selectByExampleSelective(@Param(\"example\") LitemallOrderGoodsExample example, @Param(\"selective\") LitemallOrderGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    List<LitemallOrderGoods> selectByExample(LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    LitemallOrderGoods selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallOrderGoods.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    LitemallOrderGoods selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    LitemallOrderGoods selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallOrderGoods record, @Param(\"example\") LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallOrderGoods record, @Param(\"example\") LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallOrderGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallOrderGoods record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallOrderGoodsExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallOrderMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.domain.LitemallOrderExample;\n\npublic interface LitemallOrderMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallOrder record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallOrder record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    LitemallOrder selectOneByExample(LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    LitemallOrder selectOneByExampleSelective(@Param(\"example\") LitemallOrderExample example, @Param(\"selective\") LitemallOrder.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    List<LitemallOrder> selectByExampleSelective(@Param(\"example\") LitemallOrderExample example, @Param(\"selective\") LitemallOrder.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    List<LitemallOrder> selectByExample(LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    LitemallOrder selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallOrder.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    LitemallOrder selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    LitemallOrder selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallOrder record, @Param(\"example\") LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallOrder record, @Param(\"example\") LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallOrder record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallOrder record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallOrderExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallPermissionMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallPermission;\nimport org.linlinjava.litemall.db.domain.LitemallPermissionExample;\n\npublic interface LitemallPermissionMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallPermission record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallPermission record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    LitemallPermission selectOneByExample(LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    LitemallPermission selectOneByExampleSelective(@Param(\"example\") LitemallPermissionExample example, @Param(\"selective\") LitemallPermission.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    List<LitemallPermission> selectByExampleSelective(@Param(\"example\") LitemallPermissionExample example, @Param(\"selective\") LitemallPermission.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    List<LitemallPermission> selectByExample(LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    LitemallPermission selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallPermission.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    LitemallPermission selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    LitemallPermission selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallPermission record, @Param(\"example\") LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallPermission record, @Param(\"example\") LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallPermission record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallPermission record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallPermissionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallRegionMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallRegion;\nimport org.linlinjava.litemall.db.domain.LitemallRegionExample;\n\npublic interface LitemallRegionMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallRegion record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallRegion record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    LitemallRegion selectOneByExample(LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    LitemallRegion selectOneByExampleSelective(@Param(\"example\") LitemallRegionExample example, @Param(\"selective\") LitemallRegion.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    List<LitemallRegion> selectByExampleSelective(@Param(\"example\") LitemallRegionExample example, @Param(\"selective\") LitemallRegion.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    List<LitemallRegion> selectByExample(LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    LitemallRegion selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallRegion.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    LitemallRegion selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallRegion record, @Param(\"example\") LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallRegion record, @Param(\"example\") LitemallRegionExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallRegion record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallRegion record);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallRoleMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallRole;\nimport org.linlinjava.litemall.db.domain.LitemallRoleExample;\n\npublic interface LitemallRoleMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallRole record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallRole record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    LitemallRole selectOneByExample(LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    LitemallRole selectOneByExampleSelective(@Param(\"example\") LitemallRoleExample example, @Param(\"selective\") LitemallRole.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    List<LitemallRole> selectByExampleSelective(@Param(\"example\") LitemallRoleExample example, @Param(\"selective\") LitemallRole.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    List<LitemallRole> selectByExample(LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    LitemallRole selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallRole.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    LitemallRole selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    LitemallRole selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallRole record, @Param(\"example\") LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallRole record, @Param(\"example\") LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallRole record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallRole record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallRoleExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallSearchHistoryMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistory;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample;\n\npublic interface LitemallSearchHistoryMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallSearchHistory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallSearchHistory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    LitemallSearchHistory selectOneByExample(LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    LitemallSearchHistory selectOneByExampleSelective(@Param(\"example\") LitemallSearchHistoryExample example, @Param(\"selective\") LitemallSearchHistory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    List<LitemallSearchHistory> selectByExampleSelective(@Param(\"example\") LitemallSearchHistoryExample example, @Param(\"selective\") LitemallSearchHistory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    List<LitemallSearchHistory> selectByExample(LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    LitemallSearchHistory selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallSearchHistory.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    LitemallSearchHistory selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    LitemallSearchHistory selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallSearchHistory record, @Param(\"example\") LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallSearchHistory record, @Param(\"example\") LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallSearchHistory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallSearchHistory record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallSearchHistoryExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallStorageMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.linlinjava.litemall.db.domain.LitemallStorageExample;\n\npublic interface LitemallStorageMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallStorage record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallStorage record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    LitemallStorage selectOneByExample(LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    LitemallStorage selectOneByExampleSelective(@Param(\"example\") LitemallStorageExample example, @Param(\"selective\") LitemallStorage.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    List<LitemallStorage> selectByExampleSelective(@Param(\"example\") LitemallStorageExample example, @Param(\"selective\") LitemallStorage.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    List<LitemallStorage> selectByExample(LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    LitemallStorage selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallStorage.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    LitemallStorage selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    LitemallStorage selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallStorage record, @Param(\"example\") LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallStorage record, @Param(\"example\") LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallStorage record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallStorage record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallStorageExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallSystemMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallSystem;\nimport org.linlinjava.litemall.db.domain.LitemallSystemExample;\n\npublic interface LitemallSystemMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallSystem record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallSystem record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    LitemallSystem selectOneByExample(LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    LitemallSystem selectOneByExampleSelective(@Param(\"example\") LitemallSystemExample example, @Param(\"selective\") LitemallSystem.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    List<LitemallSystem> selectByExampleSelective(@Param(\"example\") LitemallSystemExample example, @Param(\"selective\") LitemallSystem.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    List<LitemallSystem> selectByExample(LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    LitemallSystem selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallSystem.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    LitemallSystem selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    LitemallSystem selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallSystem record, @Param(\"example\") LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallSystem record, @Param(\"example\") LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallSystem record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallSystem record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallSystemExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallTopicMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallTopic;\nimport org.linlinjava.litemall.db.domain.LitemallTopicExample;\n\npublic interface LitemallTopicMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallTopic record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallTopic record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectOneByExample(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectOneByExampleSelective(@Param(\"example\") LitemallTopicExample example, @Param(\"selective\") LitemallTopic.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectOneByExampleWithBLOBs(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    List<LitemallTopic> selectByExampleSelective(@Param(\"example\") LitemallTopicExample example, @Param(\"selective\") LitemallTopic.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    List<LitemallTopic> selectByExampleWithBLOBs(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    List<LitemallTopic> selectByExample(LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallTopic.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    LitemallTopic selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallTopic record, @Param(\"example\") LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByExampleWithBLOBs(@Param(\"record\") LitemallTopic record, @Param(\"example\") LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallTopic record, @Param(\"example\") LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallTopic record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeyWithBLOBs(LitemallTopic record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallTopic record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallTopicExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/LitemallUserMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.domain.LitemallUserExample;\n\npublic interface LitemallUserMapper {\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    long countByExample(LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int deleteByExample(LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int deleteByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int insert(LitemallUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int insertSelective(LitemallUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    LitemallUser selectOneByExample(LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    LitemallUser selectOneByExampleSelective(@Param(\"example\") LitemallUserExample example, @Param(\"selective\") LitemallUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    List<LitemallUser> selectByExampleSelective(@Param(\"example\") LitemallUserExample example, @Param(\"selective\") LitemallUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    List<LitemallUser> selectByExample(LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    LitemallUser selectByPrimaryKeySelective(@Param(\"id\") Integer id, @Param(\"selective\") LitemallUser.Column ... selective);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    LitemallUser selectByPrimaryKey(Integer id);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    LitemallUser selectByPrimaryKeyWithLogicalDelete(@Param(\"id\") Integer id, @Param(\"andLogicalDeleted\") boolean andLogicalDeleted);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int updateByExampleSelective(@Param(\"record\") LitemallUser record, @Param(\"example\") LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int updateByExample(@Param(\"record\") LitemallUser record, @Param(\"example\") LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKeySelective(LitemallUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int updateByPrimaryKey(LitemallUser record);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByExample(@Param(\"example\") LitemallUserExample example);\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    int logicalDeleteByPrimaryKey(Integer id);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/OrderMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.domain.OrderVo;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\nimport java.util.Map;\n\npublic interface OrderMapper {\n    int updateWithOptimisticLocker(@Param(\"lastUpdateTime\") LocalDateTime lastUpdateTime, @Param(\"order\") LitemallOrder order);\n    List<Map> getOrderIds(@Param(\"query\") String query, @Param(\"orderByClause\") String orderByClause);\n    List<OrderVo> getOrderList(@Param(\"query\") String query, @Param(\"orderByClause\") String orderByClause);\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/dao/StatMapper.java",
    "content": "package org.linlinjava.litemall.db.dao;\n\nimport java.util.List;\nimport java.util.Map;\n\npublic interface StatMapper {\n    List<Map> statUser();\n\n    List<Map> statOrder();\n\n    List<Map> statGoods();\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAd.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallAd {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.link\n     *\n     * @mbg.generated\n     */\n    private String link;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.url\n     *\n     * @mbg.generated\n     */\n    private String url;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.position\n     *\n     * @mbg.generated\n     */\n    private Byte position;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.content\n     *\n     * @mbg.generated\n     */\n    private String content;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.start_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime startTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.end_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime endTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.enabled\n     *\n     * @mbg.generated\n     */\n    private Boolean enabled;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_ad.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.id\n     *\n     * @return the value of litemall_ad.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.id\n     *\n     * @param id the value for litemall_ad.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.name\n     *\n     * @return the value of litemall_ad.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.name\n     *\n     * @param name the value for litemall_ad.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.link\n     *\n     * @return the value of litemall_ad.link\n     *\n     * @mbg.generated\n     */\n    public String getLink() {\n        return link;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.link\n     *\n     * @param link the value for litemall_ad.link\n     *\n     * @mbg.generated\n     */\n    public void setLink(String link) {\n        this.link = link;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.url\n     *\n     * @return the value of litemall_ad.url\n     *\n     * @mbg.generated\n     */\n    public String getUrl() {\n        return url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.url\n     *\n     * @param url the value for litemall_ad.url\n     *\n     * @mbg.generated\n     */\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.position\n     *\n     * @return the value of litemall_ad.position\n     *\n     * @mbg.generated\n     */\n    public Byte getPosition() {\n        return position;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.position\n     *\n     * @param position the value for litemall_ad.position\n     *\n     * @mbg.generated\n     */\n    public void setPosition(Byte position) {\n        this.position = position;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.content\n     *\n     * @return the value of litemall_ad.content\n     *\n     * @mbg.generated\n     */\n    public String getContent() {\n        return content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.content\n     *\n     * @param content the value for litemall_ad.content\n     *\n     * @mbg.generated\n     */\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.start_time\n     *\n     * @return the value of litemall_ad.start_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getStartTime() {\n        return startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.start_time\n     *\n     * @param startTime the value for litemall_ad.start_time\n     *\n     * @mbg.generated\n     */\n    public void setStartTime(LocalDateTime startTime) {\n        this.startTime = startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.end_time\n     *\n     * @return the value of litemall_ad.end_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getEndTime() {\n        return endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.end_time\n     *\n     * @param endTime the value for litemall_ad.end_time\n     *\n     * @mbg.generated\n     */\n    public void setEndTime(LocalDateTime endTime) {\n        this.endTime = endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.enabled\n     *\n     * @return the value of litemall_ad.enabled\n     *\n     * @mbg.generated\n     */\n    public Boolean getEnabled() {\n        return enabled;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.enabled\n     *\n     * @param enabled the value for litemall_ad.enabled\n     *\n     * @mbg.generated\n     */\n    public void setEnabled(Boolean enabled) {\n        this.enabled = enabled;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.add_time\n     *\n     * @return the value of litemall_ad.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.add_time\n     *\n     * @param addTime the value for litemall_ad.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.update_time\n     *\n     * @return the value of litemall_ad.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.update_time\n     *\n     * @param updateTime the value for litemall_ad.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_ad.deleted\n     *\n     * @return the value of litemall_ad.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_ad.deleted\n     *\n     * @param deleted the value for litemall_ad.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", link=\").append(link);\n        sb.append(\", url=\").append(url);\n        sb.append(\", position=\").append(position);\n        sb.append(\", content=\").append(content);\n        sb.append(\", startTime=\").append(startTime);\n        sb.append(\", endTime=\").append(endTime);\n        sb.append(\", enabled=\").append(enabled);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallAd other = (LitemallAd) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getLink() == null ? other.getLink() == null : this.getLink().equals(other.getLink()))\n            && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl()))\n            && (this.getPosition() == null ? other.getPosition() == null : this.getPosition().equals(other.getPosition()))\n            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))\n            && (this.getStartTime() == null ? other.getStartTime() == null : this.getStartTime().equals(other.getStartTime()))\n            && (this.getEndTime() == null ? other.getEndTime() == null : this.getEndTime().equals(other.getEndTime()))\n            && (this.getEnabled() == null ? other.getEnabled() == null : this.getEnabled().equals(other.getEnabled()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getLink() == null) ? 0 : getLink().hashCode());\n        result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode());\n        result = prime * result + ((getPosition() == null) ? 0 : getPosition().hashCode());\n        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());\n        result = prime * result + ((getStartTime() == null) ? 0 : getStartTime().hashCode());\n        result = prime * result + ((getEndTime() == null) ? 0 : getEndTime().hashCode());\n        result = prime * result + ((getEnabled() == null) ? 0 : getEnabled().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        link(\"link\", \"link\", \"VARCHAR\", false),\n        url(\"url\", \"url\", \"VARCHAR\", false),\n        position(\"position\", \"position\", \"TINYINT\", true),\n        content(\"content\", \"content\", \"VARCHAR\", false),\n        startTime(\"start_time\", \"startTime\", \"TIMESTAMP\", false),\n        endTime(\"end_time\", \"endTime\", \"TIMESTAMP\", false),\n        enabled(\"enabled\", \"enabled\", \"BIT\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAdExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallAdExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public LitemallAdExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public LitemallAdExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public LitemallAdExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallAdExample example = new LitemallAdExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public LitemallAdExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public LitemallAdExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkIsNull() {\n            addCriterion(\"link is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkIsNotNull() {\n            addCriterion(\"link is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkEqualTo(String value) {\n            addCriterion(\"link =\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkNotEqualTo(String value) {\n            addCriterion(\"link <>\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkGreaterThan(String value) {\n            addCriterion(\"link >\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkGreaterThanOrEqualTo(String value) {\n            addCriterion(\"link >=\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkLessThan(String value) {\n            addCriterion(\"link <\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkLessThanOrEqualTo(String value) {\n            addCriterion(\"link <=\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLinkLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"link <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkLike(String value) {\n            addCriterion(\"link like\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkNotLike(String value) {\n            addCriterion(\"link not like\", value, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkIn(List<String> values) {\n            addCriterion(\"link in\", values, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkNotIn(List<String> values) {\n            addCriterion(\"link not in\", values, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkBetween(String value1, String value2) {\n            addCriterion(\"link between\", value1, value2, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLinkNotBetween(String value1, String value2) {\n            addCriterion(\"link not between\", value1, value2, \"link\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNull() {\n            addCriterion(\"url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNotNull() {\n            addCriterion(\"url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlEqualTo(String value) {\n            addCriterion(\"url =\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotEqualTo(String value) {\n            addCriterion(\"url <>\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThan(String value) {\n            addCriterion(\"url >\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"url >=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThan(String value) {\n            addCriterion(\"url <\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"url <=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLike(String value) {\n            addCriterion(\"url like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotLike(String value) {\n            addCriterion(\"url not like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIn(List<String> values) {\n            addCriterion(\"url in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotIn(List<String> values) {\n            addCriterion(\"url not in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlBetween(String value1, String value2) {\n            addCriterion(\"url between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotBetween(String value1, String value2) {\n            addCriterion(\"url not between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionIsNull() {\n            addCriterion(\"`position` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionIsNotNull() {\n            addCriterion(\"`position` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionEqualTo(Byte value) {\n            addCriterion(\"`position` =\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionNotEqualTo(Byte value) {\n            addCriterion(\"`position` <>\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionGreaterThan(Byte value) {\n            addCriterion(\"`position` >\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"`position` >=\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionLessThan(Byte value) {\n            addCriterion(\"`position` <\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionLessThanOrEqualTo(Byte value) {\n            addCriterion(\"`position` <=\", value, \"position\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andPositionLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"`position` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionIn(List<Byte> values) {\n            addCriterion(\"`position` in\", values, \"position\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionNotIn(List<Byte> values) {\n            addCriterion(\"`position` not in\", values, \"position\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionBetween(Byte value1, Byte value2) {\n            addCriterion(\"`position` between\", value1, value2, \"position\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPositionNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"`position` not between\", value1, value2, \"position\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNull() {\n            addCriterion(\"content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNotNull() {\n            addCriterion(\"content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentEqualTo(String value) {\n            addCriterion(\"content =\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotEqualTo(String value) {\n            addCriterion(\"content <>\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThan(String value) {\n            addCriterion(\"content >\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"content >=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThan(String value) {\n            addCriterion(\"content <\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThanOrEqualTo(String value) {\n            addCriterion(\"content <=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLike(String value) {\n            addCriterion(\"content like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotLike(String value) {\n            addCriterion(\"content not like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIn(List<String> values) {\n            addCriterion(\"content in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotIn(List<String> values) {\n            addCriterion(\"content not in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentBetween(String value1, String value2) {\n            addCriterion(\"content between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotBetween(String value1, String value2) {\n            addCriterion(\"content not between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNull() {\n            addCriterion(\"start_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNotNull() {\n            addCriterion(\"start_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time =\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <>\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"start_time >\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time >=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThan(LocalDateTime value) {\n            addCriterion(\"start_time <\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"start_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time not in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time not between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNull() {\n            addCriterion(\"end_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNotNull() {\n            addCriterion(\"end_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time =\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <>\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"end_time >\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time >=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThan(LocalDateTime value) {\n            addCriterion(\"end_time <\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"end_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time not in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time not between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIsNull() {\n            addCriterion(\"enabled is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIsNotNull() {\n            addCriterion(\"enabled is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledEqualTo(Boolean value) {\n            addCriterion(\"enabled =\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotEqualTo(Boolean value) {\n            addCriterion(\"enabled <>\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledGreaterThan(Boolean value) {\n            addCriterion(\"enabled >\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"enabled >=\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledLessThan(Boolean value) {\n            addCriterion(\"enabled <\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"enabled <=\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"enabled <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIn(List<Boolean> values) {\n            addCriterion(\"enabled in\", values, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotIn(List<Boolean> values) {\n            addCriterion(\"enabled not in\", values, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"enabled between\", value1, value2, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"enabled not between\", value1, value2, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallAd.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_ad\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        private LitemallAdExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallAdExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public LitemallAdExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallAd.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallAd.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_ad\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_ad\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_ad\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallAdExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAddress.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallAddress {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.province\n     *\n     * @mbg.generated\n     */\n    private String province;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.city\n     *\n     * @mbg.generated\n     */\n    private String city;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.county\n     *\n     * @mbg.generated\n     */\n    private String county;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.address_detail\n     *\n     * @mbg.generated\n     */\n    private String addressDetail;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.area_code\n     *\n     * @mbg.generated\n     */\n    private String areaCode;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.postal_code\n     *\n     * @mbg.generated\n     */\n    private String postalCode;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.tel\n     *\n     * @mbg.generated\n     */\n    private String tel;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.is_default\n     *\n     * @mbg.generated\n     */\n    private Boolean isDefault;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_address.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.id\n     *\n     * @return the value of litemall_address.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.id\n     *\n     * @param id the value for litemall_address.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.name\n     *\n     * @return the value of litemall_address.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.name\n     *\n     * @param name the value for litemall_address.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.user_id\n     *\n     * @return the value of litemall_address.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.user_id\n     *\n     * @param userId the value for litemall_address.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.province\n     *\n     * @return the value of litemall_address.province\n     *\n     * @mbg.generated\n     */\n    public String getProvince() {\n        return province;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.province\n     *\n     * @param province the value for litemall_address.province\n     *\n     * @mbg.generated\n     */\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.city\n     *\n     * @return the value of litemall_address.city\n     *\n     * @mbg.generated\n     */\n    public String getCity() {\n        return city;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.city\n     *\n     * @param city the value for litemall_address.city\n     *\n     * @mbg.generated\n     */\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.county\n     *\n     * @return the value of litemall_address.county\n     *\n     * @mbg.generated\n     */\n    public String getCounty() {\n        return county;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.county\n     *\n     * @param county the value for litemall_address.county\n     *\n     * @mbg.generated\n     */\n    public void setCounty(String county) {\n        this.county = county;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.address_detail\n     *\n     * @return the value of litemall_address.address_detail\n     *\n     * @mbg.generated\n     */\n    public String getAddressDetail() {\n        return addressDetail;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.address_detail\n     *\n     * @param addressDetail the value for litemall_address.address_detail\n     *\n     * @mbg.generated\n     */\n    public void setAddressDetail(String addressDetail) {\n        this.addressDetail = addressDetail;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.area_code\n     *\n     * @return the value of litemall_address.area_code\n     *\n     * @mbg.generated\n     */\n    public String getAreaCode() {\n        return areaCode;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.area_code\n     *\n     * @param areaCode the value for litemall_address.area_code\n     *\n     * @mbg.generated\n     */\n    public void setAreaCode(String areaCode) {\n        this.areaCode = areaCode;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.postal_code\n     *\n     * @return the value of litemall_address.postal_code\n     *\n     * @mbg.generated\n     */\n    public String getPostalCode() {\n        return postalCode;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.postal_code\n     *\n     * @param postalCode the value for litemall_address.postal_code\n     *\n     * @mbg.generated\n     */\n    public void setPostalCode(String postalCode) {\n        this.postalCode = postalCode;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.tel\n     *\n     * @return the value of litemall_address.tel\n     *\n     * @mbg.generated\n     */\n    public String getTel() {\n        return tel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.tel\n     *\n     * @param tel the value for litemall_address.tel\n     *\n     * @mbg.generated\n     */\n    public void setTel(String tel) {\n        this.tel = tel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.is_default\n     *\n     * @return the value of litemall_address.is_default\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsDefault() {\n        return isDefault;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.is_default\n     *\n     * @param isDefault the value for litemall_address.is_default\n     *\n     * @mbg.generated\n     */\n    public void setIsDefault(Boolean isDefault) {\n        this.isDefault = isDefault;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.add_time\n     *\n     * @return the value of litemall_address.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.add_time\n     *\n     * @param addTime the value for litemall_address.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.update_time\n     *\n     * @return the value of litemall_address.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.update_time\n     *\n     * @param updateTime the value for litemall_address.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_address.deleted\n     *\n     * @return the value of litemall_address.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_address.deleted\n     *\n     * @param deleted the value for litemall_address.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", province=\").append(province);\n        sb.append(\", city=\").append(city);\n        sb.append(\", county=\").append(county);\n        sb.append(\", addressDetail=\").append(addressDetail);\n        sb.append(\", areaCode=\").append(areaCode);\n        sb.append(\", postalCode=\").append(postalCode);\n        sb.append(\", tel=\").append(tel);\n        sb.append(\", isDefault=\").append(isDefault);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallAddress other = (LitemallAddress) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getProvince() == null ? other.getProvince() == null : this.getProvince().equals(other.getProvince()))\n            && (this.getCity() == null ? other.getCity() == null : this.getCity().equals(other.getCity()))\n            && (this.getCounty() == null ? other.getCounty() == null : this.getCounty().equals(other.getCounty()))\n            && (this.getAddressDetail() == null ? other.getAddressDetail() == null : this.getAddressDetail().equals(other.getAddressDetail()))\n            && (this.getAreaCode() == null ? other.getAreaCode() == null : this.getAreaCode().equals(other.getAreaCode()))\n            && (this.getPostalCode() == null ? other.getPostalCode() == null : this.getPostalCode().equals(other.getPostalCode()))\n            && (this.getTel() == null ? other.getTel() == null : this.getTel().equals(other.getTel()))\n            && (this.getIsDefault() == null ? other.getIsDefault() == null : this.getIsDefault().equals(other.getIsDefault()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getProvince() == null) ? 0 : getProvince().hashCode());\n        result = prime * result + ((getCity() == null) ? 0 : getCity().hashCode());\n        result = prime * result + ((getCounty() == null) ? 0 : getCounty().hashCode());\n        result = prime * result + ((getAddressDetail() == null) ? 0 : getAddressDetail().hashCode());\n        result = prime * result + ((getAreaCode() == null) ? 0 : getAreaCode().hashCode());\n        result = prime * result + ((getPostalCode() == null) ? 0 : getPostalCode().hashCode());\n        result = prime * result + ((getTel() == null) ? 0 : getTel().hashCode());\n        result = prime * result + ((getIsDefault() == null) ? 0 : getIsDefault().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        province(\"province\", \"province\", \"VARCHAR\", false),\n        city(\"city\", \"city\", \"VARCHAR\", false),\n        county(\"county\", \"county\", \"VARCHAR\", false),\n        addressDetail(\"address_detail\", \"addressDetail\", \"VARCHAR\", false),\n        areaCode(\"area_code\", \"areaCode\", \"CHAR\", false),\n        postalCode(\"postal_code\", \"postalCode\", \"CHAR\", false),\n        tel(\"tel\", \"tel\", \"VARCHAR\", false),\n        isDefault(\"is_default\", \"isDefault\", \"BIT\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAddressExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallAddressExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public LitemallAddressExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public LitemallAddressExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public LitemallAddressExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallAddressExample example = new LitemallAddressExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public LitemallAddressExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public LitemallAddressExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceIsNull() {\n            addCriterion(\"province is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceIsNotNull() {\n            addCriterion(\"province is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceEqualTo(String value) {\n            addCriterion(\"province =\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceNotEqualTo(String value) {\n            addCriterion(\"province <>\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceGreaterThan(String value) {\n            addCriterion(\"province >\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceGreaterThanOrEqualTo(String value) {\n            addCriterion(\"province >=\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceLessThan(String value) {\n            addCriterion(\"province <\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceLessThanOrEqualTo(String value) {\n            addCriterion(\"province <=\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andProvinceLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"province <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceLike(String value) {\n            addCriterion(\"province like\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceNotLike(String value) {\n            addCriterion(\"province not like\", value, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceIn(List<String> values) {\n            addCriterion(\"province in\", values, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceNotIn(List<String> values) {\n            addCriterion(\"province not in\", values, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceBetween(String value1, String value2) {\n            addCriterion(\"province between\", value1, value2, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProvinceNotBetween(String value1, String value2) {\n            addCriterion(\"province not between\", value1, value2, \"province\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityIsNull() {\n            addCriterion(\"city is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityIsNotNull() {\n            addCriterion(\"city is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityEqualTo(String value) {\n            addCriterion(\"city =\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityNotEqualTo(String value) {\n            addCriterion(\"city <>\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityGreaterThan(String value) {\n            addCriterion(\"city >\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityGreaterThanOrEqualTo(String value) {\n            addCriterion(\"city >=\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityLessThan(String value) {\n            addCriterion(\"city <\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityLessThanOrEqualTo(String value) {\n            addCriterion(\"city <=\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCityLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"city <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCityLike(String value) {\n            addCriterion(\"city like\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityNotLike(String value) {\n            addCriterion(\"city not like\", value, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityIn(List<String> values) {\n            addCriterion(\"city in\", values, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityNotIn(List<String> values) {\n            addCriterion(\"city not in\", values, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityBetween(String value1, String value2) {\n            addCriterion(\"city between\", value1, value2, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCityNotBetween(String value1, String value2) {\n            addCriterion(\"city not between\", value1, value2, \"city\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyIsNull() {\n            addCriterion(\"county is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyIsNotNull() {\n            addCriterion(\"county is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyEqualTo(String value) {\n            addCriterion(\"county =\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyNotEqualTo(String value) {\n            addCriterion(\"county <>\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyGreaterThan(String value) {\n            addCriterion(\"county >\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyGreaterThanOrEqualTo(String value) {\n            addCriterion(\"county >=\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyLessThan(String value) {\n            addCriterion(\"county <\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyLessThanOrEqualTo(String value) {\n            addCriterion(\"county <=\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andCountyLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"county <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyLike(String value) {\n            addCriterion(\"county like\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyNotLike(String value) {\n            addCriterion(\"county not like\", value, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyIn(List<String> values) {\n            addCriterion(\"county in\", values, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyNotIn(List<String> values) {\n            addCriterion(\"county not in\", values, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyBetween(String value1, String value2) {\n            addCriterion(\"county between\", value1, value2, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCountyNotBetween(String value1, String value2) {\n            addCriterion(\"county not between\", value1, value2, \"county\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailIsNull() {\n            addCriterion(\"address_detail is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailIsNotNull() {\n            addCriterion(\"address_detail is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailEqualTo(String value) {\n            addCriterion(\"address_detail =\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailNotEqualTo(String value) {\n            addCriterion(\"address_detail <>\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailGreaterThan(String value) {\n            addCriterion(\"address_detail >\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailGreaterThanOrEqualTo(String value) {\n            addCriterion(\"address_detail >=\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailLessThan(String value) {\n            addCriterion(\"address_detail <\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailLessThanOrEqualTo(String value) {\n            addCriterion(\"address_detail <=\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressDetailLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"address_detail <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailLike(String value) {\n            addCriterion(\"address_detail like\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailNotLike(String value) {\n            addCriterion(\"address_detail not like\", value, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailIn(List<String> values) {\n            addCriterion(\"address_detail in\", values, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailNotIn(List<String> values) {\n            addCriterion(\"address_detail not in\", values, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailBetween(String value1, String value2) {\n            addCriterion(\"address_detail between\", value1, value2, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressDetailNotBetween(String value1, String value2) {\n            addCriterion(\"address_detail not between\", value1, value2, \"addressDetail\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeIsNull() {\n            addCriterion(\"area_code is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeIsNotNull() {\n            addCriterion(\"area_code is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeEqualTo(String value) {\n            addCriterion(\"area_code =\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeNotEqualTo(String value) {\n            addCriterion(\"area_code <>\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeGreaterThan(String value) {\n            addCriterion(\"area_code >\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"area_code >=\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeLessThan(String value) {\n            addCriterion(\"area_code <\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeLessThanOrEqualTo(String value) {\n            addCriterion(\"area_code <=\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAreaCodeLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"area_code <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeLike(String value) {\n            addCriterion(\"area_code like\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeNotLike(String value) {\n            addCriterion(\"area_code not like\", value, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeIn(List<String> values) {\n            addCriterion(\"area_code in\", values, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeNotIn(List<String> values) {\n            addCriterion(\"area_code not in\", values, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeBetween(String value1, String value2) {\n            addCriterion(\"area_code between\", value1, value2, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAreaCodeNotBetween(String value1, String value2) {\n            addCriterion(\"area_code not between\", value1, value2, \"areaCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeIsNull() {\n            addCriterion(\"postal_code is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeIsNotNull() {\n            addCriterion(\"postal_code is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeEqualTo(String value) {\n            addCriterion(\"postal_code =\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeNotEqualTo(String value) {\n            addCriterion(\"postal_code <>\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeGreaterThan(String value) {\n            addCriterion(\"postal_code >\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"postal_code >=\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeLessThan(String value) {\n            addCriterion(\"postal_code <\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeLessThanOrEqualTo(String value) {\n            addCriterion(\"postal_code <=\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andPostalCodeLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"postal_code <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeLike(String value) {\n            addCriterion(\"postal_code like\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeNotLike(String value) {\n            addCriterion(\"postal_code not like\", value, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeIn(List<String> values) {\n            addCriterion(\"postal_code in\", values, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeNotIn(List<String> values) {\n            addCriterion(\"postal_code not in\", values, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeBetween(String value1, String value2) {\n            addCriterion(\"postal_code between\", value1, value2, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPostalCodeNotBetween(String value1, String value2) {\n            addCriterion(\"postal_code not between\", value1, value2, \"postalCode\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelIsNull() {\n            addCriterion(\"tel is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelIsNotNull() {\n            addCriterion(\"tel is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelEqualTo(String value) {\n            addCriterion(\"tel =\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelNotEqualTo(String value) {\n            addCriterion(\"tel <>\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelGreaterThan(String value) {\n            addCriterion(\"tel >\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelGreaterThanOrEqualTo(String value) {\n            addCriterion(\"tel >=\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelLessThan(String value) {\n            addCriterion(\"tel <\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelLessThanOrEqualTo(String value) {\n            addCriterion(\"tel <=\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andTelLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"tel <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTelLike(String value) {\n            addCriterion(\"tel like\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelNotLike(String value) {\n            addCriterion(\"tel not like\", value, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelIn(List<String> values) {\n            addCriterion(\"tel in\", values, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelNotIn(List<String> values) {\n            addCriterion(\"tel not in\", values, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelBetween(String value1, String value2) {\n            addCriterion(\"tel between\", value1, value2, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTelNotBetween(String value1, String value2) {\n            addCriterion(\"tel not between\", value1, value2, \"tel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIsNull() {\n            addCriterion(\"is_default is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIsNotNull() {\n            addCriterion(\"is_default is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultEqualTo(Boolean value) {\n            addCriterion(\"is_default =\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotEqualTo(Boolean value) {\n            addCriterion(\"is_default <>\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultGreaterThan(Boolean value) {\n            addCriterion(\"is_default >\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_default >=\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultLessThan(Boolean value) {\n            addCriterion(\"is_default <\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_default <=\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"is_default <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIn(List<Boolean> values) {\n            addCriterion(\"is_default in\", values, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotIn(List<Boolean> values) {\n            addCriterion(\"is_default not in\", values, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_default between\", value1, value2, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_default not between\", value1, value2, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallAddress.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_address\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        private LitemallAddressExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallAddressExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public LitemallAddressExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallAddress.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallAddress.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_address\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_address\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_address\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallAddressExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAdmin.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallAdmin {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.username\n     *\n     * @mbg.generated\n     */\n    private String username;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.password\n     *\n     * @mbg.generated\n     */\n    private String password;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.last_login_ip\n     *\n     * @mbg.generated\n     */\n    private String lastLoginIp;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.last_login_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime lastLoginTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.avatar\n     *\n     * @mbg.generated\n     */\n    private String avatar;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_admin.role_ids\n     *\n     * @mbg.generated\n     */\n    private Integer[] roleIds;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.id\n     *\n     * @return the value of litemall_admin.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.id\n     *\n     * @param id the value for litemall_admin.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.username\n     *\n     * @return the value of litemall_admin.username\n     *\n     * @mbg.generated\n     */\n    public String getUsername() {\n        return username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.username\n     *\n     * @param username the value for litemall_admin.username\n     *\n     * @mbg.generated\n     */\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.password\n     *\n     * @return the value of litemall_admin.password\n     *\n     * @mbg.generated\n     */\n    public String getPassword() {\n        return password;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.password\n     *\n     * @param password the value for litemall_admin.password\n     *\n     * @mbg.generated\n     */\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.last_login_ip\n     *\n     * @return the value of litemall_admin.last_login_ip\n     *\n     * @mbg.generated\n     */\n    public String getLastLoginIp() {\n        return lastLoginIp;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.last_login_ip\n     *\n     * @param lastLoginIp the value for litemall_admin.last_login_ip\n     *\n     * @mbg.generated\n     */\n    public void setLastLoginIp(String lastLoginIp) {\n        this.lastLoginIp = lastLoginIp;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.last_login_time\n     *\n     * @return the value of litemall_admin.last_login_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getLastLoginTime() {\n        return lastLoginTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.last_login_time\n     *\n     * @param lastLoginTime the value for litemall_admin.last_login_time\n     *\n     * @mbg.generated\n     */\n    public void setLastLoginTime(LocalDateTime lastLoginTime) {\n        this.lastLoginTime = lastLoginTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.avatar\n     *\n     * @return the value of litemall_admin.avatar\n     *\n     * @mbg.generated\n     */\n    public String getAvatar() {\n        return avatar;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.avatar\n     *\n     * @param avatar the value for litemall_admin.avatar\n     *\n     * @mbg.generated\n     */\n    public void setAvatar(String avatar) {\n        this.avatar = avatar;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.add_time\n     *\n     * @return the value of litemall_admin.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.add_time\n     *\n     * @param addTime the value for litemall_admin.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.update_time\n     *\n     * @return the value of litemall_admin.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.update_time\n     *\n     * @param updateTime the value for litemall_admin.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.deleted\n     *\n     * @return the value of litemall_admin.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.deleted\n     *\n     * @param deleted the value for litemall_admin.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_admin.role_ids\n     *\n     * @return the value of litemall_admin.role_ids\n     *\n     * @mbg.generated\n     */\n    public Integer[] getRoleIds() {\n        return roleIds;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_admin.role_ids\n     *\n     * @param roleIds the value for litemall_admin.role_ids\n     *\n     * @mbg.generated\n     */\n    public void setRoleIds(Integer[] roleIds) {\n        this.roleIds = roleIds;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", username=\").append(username);\n        sb.append(\", password=\").append(password);\n        sb.append(\", lastLoginIp=\").append(lastLoginIp);\n        sb.append(\", lastLoginTime=\").append(lastLoginTime);\n        sb.append(\", avatar=\").append(avatar);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\", roleIds=\").append(roleIds);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallAdmin other = (LitemallAdmin) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))\n            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))\n            && (this.getLastLoginIp() == null ? other.getLastLoginIp() == null : this.getLastLoginIp().equals(other.getLastLoginIp()))\n            && (this.getLastLoginTime() == null ? other.getLastLoginTime() == null : this.getLastLoginTime().equals(other.getLastLoginTime()))\n            && (this.getAvatar() == null ? other.getAvatar() == null : this.getAvatar().equals(other.getAvatar()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()))\n            && (Arrays.equals(this.getRoleIds(), other.getRoleIds()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());\n        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());\n        result = prime * result + ((getLastLoginIp() == null) ? 0 : getLastLoginIp().hashCode());\n        result = prime * result + ((getLastLoginTime() == null) ? 0 : getLastLoginTime().hashCode());\n        result = prime * result + ((getAvatar() == null) ? 0 : getAvatar().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        result = prime * result + (Arrays.hashCode(getRoleIds()));\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        username(\"username\", \"username\", \"VARCHAR\", false),\n        password(\"password\", \"password\", \"VARCHAR\", true),\n        lastLoginIp(\"last_login_ip\", \"lastLoginIp\", \"VARCHAR\", false),\n        lastLoginTime(\"last_login_time\", \"lastLoginTime\", \"TIMESTAMP\", false),\n        avatar(\"avatar\", \"avatar\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false),\n        roleIds(\"role_ids\", \"roleIds\", \"VARCHAR\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAdminExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallAdminExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallAdminExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallAdminExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallAdminExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallAdminExample example = new LitemallAdminExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallAdminExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallAdminExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> roleIdsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            roleIdsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getRoleIdsCriteria() {\n            return roleIdsCriteria;\n        }\n\n        protected void addRoleIdsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            roleIdsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addRoleIdsCriterion(String condition, Integer[] value1, Integer[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            roleIdsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || roleIdsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(roleIdsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNull() {\n            addCriterion(\"username is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNotNull() {\n            addCriterion(\"username is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameEqualTo(String value) {\n            addCriterion(\"username =\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotEqualTo(String value) {\n            addCriterion(\"username <>\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThan(String value) {\n            addCriterion(\"username >\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"username >=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThan(String value) {\n            addCriterion(\"username <\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThanOrEqualTo(String value) {\n            addCriterion(\"username <=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"username <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLike(String value) {\n            addCriterion(\"username like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotLike(String value) {\n            addCriterion(\"username not like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIn(List<String> values) {\n            addCriterion(\"username in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotIn(List<String> values) {\n            addCriterion(\"username not in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameBetween(String value1, String value2) {\n            addCriterion(\"username between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotBetween(String value1, String value2) {\n            addCriterion(\"username not between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIsNull() {\n            addCriterion(\"`password` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIsNotNull() {\n            addCriterion(\"`password` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordEqualTo(String value) {\n            addCriterion(\"`password` =\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotEqualTo(String value) {\n            addCriterion(\"`password` <>\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordGreaterThan(String value) {\n            addCriterion(\"`password` >\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`password` >=\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLessThan(String value) {\n            addCriterion(\"`password` <\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLessThanOrEqualTo(String value) {\n            addCriterion(\"`password` <=\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"`password` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLike(String value) {\n            addCriterion(\"`password` like\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotLike(String value) {\n            addCriterion(\"`password` not like\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIn(List<String> values) {\n            addCriterion(\"`password` in\", values, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotIn(List<String> values) {\n            addCriterion(\"`password` not in\", values, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordBetween(String value1, String value2) {\n            addCriterion(\"`password` between\", value1, value2, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotBetween(String value1, String value2) {\n            addCriterion(\"`password` not between\", value1, value2, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIsNull() {\n            addCriterion(\"last_login_ip is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIsNotNull() {\n            addCriterion(\"last_login_ip is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpEqualTo(String value) {\n            addCriterion(\"last_login_ip =\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotEqualTo(String value) {\n            addCriterion(\"last_login_ip <>\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpGreaterThan(String value) {\n            addCriterion(\"last_login_ip >\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpGreaterThanOrEqualTo(String value) {\n            addCriterion(\"last_login_ip >=\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLessThan(String value) {\n            addCriterion(\"last_login_ip <\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLessThanOrEqualTo(String value) {\n            addCriterion(\"last_login_ip <=\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLike(String value) {\n            addCriterion(\"last_login_ip like\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotLike(String value) {\n            addCriterion(\"last_login_ip not like\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIn(List<String> values) {\n            addCriterion(\"last_login_ip in\", values, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotIn(List<String> values) {\n            addCriterion(\"last_login_ip not in\", values, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpBetween(String value1, String value2) {\n            addCriterion(\"last_login_ip between\", value1, value2, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotBetween(String value1, String value2) {\n            addCriterion(\"last_login_ip not between\", value1, value2, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIsNull() {\n            addCriterion(\"last_login_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIsNotNull() {\n            addCriterion(\"last_login_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time =\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time <>\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"last_login_time >\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time >=\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeLessThan(LocalDateTime value) {\n            addCriterion(\"last_login_time <\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time <=\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"last_login_time in\", values, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"last_login_time not in\", values, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"last_login_time between\", value1, value2, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"last_login_time not between\", value1, value2, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIsNull() {\n            addCriterion(\"avatar is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIsNotNull() {\n            addCriterion(\"avatar is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarEqualTo(String value) {\n            addCriterion(\"avatar =\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotEqualTo(String value) {\n            addCriterion(\"avatar <>\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarGreaterThan(String value) {\n            addCriterion(\"avatar >\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarGreaterThanOrEqualTo(String value) {\n            addCriterion(\"avatar >=\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLessThan(String value) {\n            addCriterion(\"avatar <\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLessThanOrEqualTo(String value) {\n            addCriterion(\"avatar <=\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"avatar <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLike(String value) {\n            addCriterion(\"avatar like\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotLike(String value) {\n            addCriterion(\"avatar not like\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIn(List<String> values) {\n            addCriterion(\"avatar in\", values, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotIn(List<String> values) {\n            addCriterion(\"avatar not in\", values, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarBetween(String value1, String value2) {\n            addCriterion(\"avatar between\", value1, value2, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotBetween(String value1, String value2) {\n            addCriterion(\"avatar not between\", value1, value2, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsIsNull() {\n            addCriterion(\"role_ids is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsIsNotNull() {\n            addCriterion(\"role_ids is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsEqualTo(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids =\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsNotEqualTo(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids <>\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsNotEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsGreaterThan(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids >\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsGreaterThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsGreaterThanOrEqualTo(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids >=\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsGreaterThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsLessThan(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids <\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsLessThanColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsLessThanOrEqualTo(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids <=\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdsLessThanOrEqualToColumn(LitemallAdmin.Column column) {\n            addCriterion(new StringBuilder(\"role_ids <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsLike(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids like\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsNotLike(Integer[] value) {\n            addRoleIdsCriterion(\"role_ids not like\", value, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsIn(List<Integer[]> values) {\n            addRoleIdsCriterion(\"role_ids in\", values, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsNotIn(List<Integer[]> values) {\n            addRoleIdsCriterion(\"role_ids not in\", values, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsBetween(Integer[] value1, Integer[] value2) {\n            addRoleIdsCriterion(\"role_ids between\", value1, value2, \"roleIds\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdsNotBetween(Integer[] value1, Integer[] value2) {\n            addRoleIdsCriterion(\"role_ids not between\", value1, value2, \"roleIds\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_admin\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        private LitemallAdminExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallAdminExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public LitemallAdminExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallAdmin.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallAdmin.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_admin\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_admin\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_admin\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallAdminExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAftersale.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallAftersale {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.aftersale_sn\n     *\n     * @mbg.generated\n     */\n    private String aftersaleSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.order_id\n     *\n     * @mbg.generated\n     */\n    private Integer orderId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.type\n     *\n     * @mbg.generated\n     */\n    private Short type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.reason\n     *\n     * @mbg.generated\n     */\n    private String reason;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.amount\n     *\n     * @mbg.generated\n     */\n    private BigDecimal amount;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.pictures\n     *\n     * @mbg.generated\n     */\n    private String[] pictures;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.comment\n     *\n     * @mbg.generated\n     */\n    private String comment;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.status\n     *\n     * @mbg.generated\n     */\n    private Short status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.handle_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime handleTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_aftersale.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.id\n     *\n     * @return the value of litemall_aftersale.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.id\n     *\n     * @param id the value for litemall_aftersale.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.aftersale_sn\n     *\n     * @return the value of litemall_aftersale.aftersale_sn\n     *\n     * @mbg.generated\n     */\n    public String getAftersaleSn() {\n        return aftersaleSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.aftersale_sn\n     *\n     * @param aftersaleSn the value for litemall_aftersale.aftersale_sn\n     *\n     * @mbg.generated\n     */\n    public void setAftersaleSn(String aftersaleSn) {\n        this.aftersaleSn = aftersaleSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.order_id\n     *\n     * @return the value of litemall_aftersale.order_id\n     *\n     * @mbg.generated\n     */\n    public Integer getOrderId() {\n        return orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.order_id\n     *\n     * @param orderId the value for litemall_aftersale.order_id\n     *\n     * @mbg.generated\n     */\n    public void setOrderId(Integer orderId) {\n        this.orderId = orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.user_id\n     *\n     * @return the value of litemall_aftersale.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.user_id\n     *\n     * @param userId the value for litemall_aftersale.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.type\n     *\n     * @return the value of litemall_aftersale.type\n     *\n     * @mbg.generated\n     */\n    public Short getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.type\n     *\n     * @param type the value for litemall_aftersale.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Short type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.reason\n     *\n     * @return the value of litemall_aftersale.reason\n     *\n     * @mbg.generated\n     */\n    public String getReason() {\n        return reason;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.reason\n     *\n     * @param reason the value for litemall_aftersale.reason\n     *\n     * @mbg.generated\n     */\n    public void setReason(String reason) {\n        this.reason = reason;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.amount\n     *\n     * @return the value of litemall_aftersale.amount\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getAmount() {\n        return amount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.amount\n     *\n     * @param amount the value for litemall_aftersale.amount\n     *\n     * @mbg.generated\n     */\n    public void setAmount(BigDecimal amount) {\n        this.amount = amount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.pictures\n     *\n     * @return the value of litemall_aftersale.pictures\n     *\n     * @mbg.generated\n     */\n    public String[] getPictures() {\n        return pictures;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.pictures\n     *\n     * @param pictures the value for litemall_aftersale.pictures\n     *\n     * @mbg.generated\n     */\n    public void setPictures(String[] pictures) {\n        this.pictures = pictures;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.comment\n     *\n     * @return the value of litemall_aftersale.comment\n     *\n     * @mbg.generated\n     */\n    public String getComment() {\n        return comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.comment\n     *\n     * @param comment the value for litemall_aftersale.comment\n     *\n     * @mbg.generated\n     */\n    public void setComment(String comment) {\n        this.comment = comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.status\n     *\n     * @return the value of litemall_aftersale.status\n     *\n     * @mbg.generated\n     */\n    public Short getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.status\n     *\n     * @param status the value for litemall_aftersale.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Short status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.handle_time\n     *\n     * @return the value of litemall_aftersale.handle_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getHandleTime() {\n        return handleTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.handle_time\n     *\n     * @param handleTime the value for litemall_aftersale.handle_time\n     *\n     * @mbg.generated\n     */\n    public void setHandleTime(LocalDateTime handleTime) {\n        this.handleTime = handleTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.add_time\n     *\n     * @return the value of litemall_aftersale.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.add_time\n     *\n     * @param addTime the value for litemall_aftersale.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.update_time\n     *\n     * @return the value of litemall_aftersale.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.update_time\n     *\n     * @param updateTime the value for litemall_aftersale.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_aftersale.deleted\n     *\n     * @return the value of litemall_aftersale.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_aftersale.deleted\n     *\n     * @param deleted the value for litemall_aftersale.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", aftersaleSn=\").append(aftersaleSn);\n        sb.append(\", orderId=\").append(orderId);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", type=\").append(type);\n        sb.append(\", reason=\").append(reason);\n        sb.append(\", amount=\").append(amount);\n        sb.append(\", pictures=\").append(pictures);\n        sb.append(\", comment=\").append(comment);\n        sb.append(\", status=\").append(status);\n        sb.append(\", handleTime=\").append(handleTime);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallAftersale other = (LitemallAftersale) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getAftersaleSn() == null ? other.getAftersaleSn() == null : this.getAftersaleSn().equals(other.getAftersaleSn()))\n            && (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getReason() == null ? other.getReason() == null : this.getReason().equals(other.getReason()))\n            && (this.getAmount() == null ? other.getAmount() == null : this.getAmount().equals(other.getAmount()))\n            && (Arrays.equals(this.getPictures(), other.getPictures()))\n            && (this.getComment() == null ? other.getComment() == null : this.getComment().equals(other.getComment()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getHandleTime() == null ? other.getHandleTime() == null : this.getHandleTime().equals(other.getHandleTime()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getAftersaleSn() == null) ? 0 : getAftersaleSn().hashCode());\n        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getReason() == null) ? 0 : getReason().hashCode());\n        result = prime * result + ((getAmount() == null) ? 0 : getAmount().hashCode());\n        result = prime * result + (Arrays.hashCode(getPictures()));\n        result = prime * result + ((getComment() == null) ? 0 : getComment().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getHandleTime() == null) ? 0 : getHandleTime().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        aftersaleSn(\"aftersale_sn\", \"aftersaleSn\", \"VARCHAR\", false),\n        orderId(\"order_id\", \"orderId\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        type(\"type\", \"type\", \"SMALLINT\", true),\n        reason(\"reason\", \"reason\", \"VARCHAR\", false),\n        amount(\"amount\", \"amount\", \"DECIMAL\", false),\n        pictures(\"pictures\", \"pictures\", \"VARCHAR\", false),\n        comment(\"comment\", \"comment\", \"VARCHAR\", true),\n        status(\"status\", \"status\", \"SMALLINT\", true),\n        handleTime(\"handle_time\", \"handleTime\", \"TIMESTAMP\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallAftersaleExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallAftersaleExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public LitemallAftersaleExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public LitemallAftersaleExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public LitemallAftersaleExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public LitemallAftersaleExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public LitemallAftersaleExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> picturesCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            picturesCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getPicturesCriteria() {\n            return picturesCriteria;\n        }\n\n        protected void addPicturesCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            picturesCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addPicturesCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            picturesCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || picturesCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(picturesCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnIsNull() {\n            addCriterion(\"aftersale_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnIsNotNull() {\n            addCriterion(\"aftersale_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnEqualTo(String value) {\n            addCriterion(\"aftersale_sn =\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnNotEqualTo(String value) {\n            addCriterion(\"aftersale_sn <>\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnGreaterThan(String value) {\n            addCriterion(\"aftersale_sn >\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"aftersale_sn >=\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnLessThan(String value) {\n            addCriterion(\"aftersale_sn <\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnLessThanOrEqualTo(String value) {\n            addCriterion(\"aftersale_sn <=\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleSnLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnLike(String value) {\n            addCriterion(\"aftersale_sn like\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnNotLike(String value) {\n            addCriterion(\"aftersale_sn not like\", value, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnIn(List<String> values) {\n            addCriterion(\"aftersale_sn in\", values, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnNotIn(List<String> values) {\n            addCriterion(\"aftersale_sn not in\", values, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnBetween(String value1, String value2) {\n            addCriterion(\"aftersale_sn between\", value1, value2, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleSnNotBetween(String value1, String value2) {\n            addCriterion(\"aftersale_sn not between\", value1, value2, \"aftersaleSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNull() {\n            addCriterion(\"order_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNotNull() {\n            addCriterion(\"order_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdEqualTo(Integer value) {\n            addCriterion(\"order_id =\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotEqualTo(Integer value) {\n            addCriterion(\"order_id <>\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThan(Integer value) {\n            addCriterion(\"order_id >\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id >=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThan(Integer value) {\n            addCriterion(\"order_id <\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id <=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"order_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIn(List<Integer> values) {\n            addCriterion(\"order_id in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotIn(List<Integer> values) {\n            addCriterion(\"order_id not in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id not between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Short value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Short value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Short value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Short value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Short value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Short> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Short> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Short value1, Short value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Short value1, Short value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonIsNull() {\n            addCriterion(\"reason is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonIsNotNull() {\n            addCriterion(\"reason is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonEqualTo(String value) {\n            addCriterion(\"reason =\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonNotEqualTo(String value) {\n            addCriterion(\"reason <>\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonGreaterThan(String value) {\n            addCriterion(\"reason >\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonGreaterThanOrEqualTo(String value) {\n            addCriterion(\"reason >=\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonLessThan(String value) {\n            addCriterion(\"reason <\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonLessThanOrEqualTo(String value) {\n            addCriterion(\"reason <=\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andReasonLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"reason <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonLike(String value) {\n            addCriterion(\"reason like\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonNotLike(String value) {\n            addCriterion(\"reason not like\", value, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonIn(List<String> values) {\n            addCriterion(\"reason in\", values, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonNotIn(List<String> values) {\n            addCriterion(\"reason not in\", values, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonBetween(String value1, String value2) {\n            addCriterion(\"reason between\", value1, value2, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReasonNotBetween(String value1, String value2) {\n            addCriterion(\"reason not between\", value1, value2, \"reason\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountIsNull() {\n            addCriterion(\"amount is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountIsNotNull() {\n            addCriterion(\"amount is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountEqualTo(BigDecimal value) {\n            addCriterion(\"amount =\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountNotEqualTo(BigDecimal value) {\n            addCriterion(\"amount <>\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountGreaterThan(BigDecimal value) {\n            addCriterion(\"amount >\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"amount >=\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountLessThan(BigDecimal value) {\n            addCriterion(\"amount <\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"amount <=\", value, \"amount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAmountLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"amount <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountIn(List<BigDecimal> values) {\n            addCriterion(\"amount in\", values, \"amount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountNotIn(List<BigDecimal> values) {\n            addCriterion(\"amount not in\", values, \"amount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"amount between\", value1, value2, \"amount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAmountNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"amount not between\", value1, value2, \"amount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesIsNull() {\n            addCriterion(\"pictures is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesIsNotNull() {\n            addCriterion(\"pictures is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesEqualTo(String[] value) {\n            addPicturesCriterion(\"pictures =\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesNotEqualTo(String[] value) {\n            addPicturesCriterion(\"pictures <>\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesGreaterThan(String[] value) {\n            addPicturesCriterion(\"pictures >\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesGreaterThanOrEqualTo(String[] value) {\n            addPicturesCriterion(\"pictures >=\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesLessThan(String[] value) {\n            addPicturesCriterion(\"pictures <\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesLessThanOrEqualTo(String[] value) {\n            addPicturesCriterion(\"pictures <=\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicturesLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"pictures <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesLike(String[] value) {\n            addPicturesCriterion(\"pictures like\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesNotLike(String[] value) {\n            addPicturesCriterion(\"pictures not like\", value, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesIn(List<String[]> values) {\n            addPicturesCriterion(\"pictures in\", values, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesNotIn(List<String[]> values) {\n            addPicturesCriterion(\"pictures not in\", values, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesBetween(String[] value1, String[] value2) {\n            addPicturesCriterion(\"pictures between\", value1, value2, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicturesNotBetween(String[] value1, String[] value2) {\n            addPicturesCriterion(\"pictures not between\", value1, value2, \"pictures\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNull() {\n            addCriterion(\"`comment` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNotNull() {\n            addCriterion(\"`comment` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentEqualTo(String value) {\n            addCriterion(\"`comment` =\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotEqualTo(String value) {\n            addCriterion(\"`comment` <>\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThan(String value) {\n            addCriterion(\"`comment` >\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`comment` >=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThan(String value) {\n            addCriterion(\"`comment` <\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThanOrEqualTo(String value) {\n            addCriterion(\"`comment` <=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLike(String value) {\n            addCriterion(\"`comment` like\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotLike(String value) {\n            addCriterion(\"`comment` not like\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIn(List<String> values) {\n            addCriterion(\"`comment` in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotIn(List<String> values) {\n            addCriterion(\"`comment` not in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentBetween(String value1, String value2) {\n            addCriterion(\"`comment` between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotBetween(String value1, String value2) {\n            addCriterion(\"`comment` not between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Short value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Short value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Short value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Short value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Short> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Short> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Short value1, Short value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeIsNull() {\n            addCriterion(\"handle_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeIsNotNull() {\n            addCriterion(\"handle_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"handle_time =\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"handle_time <>\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"handle_time >\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"handle_time >=\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeLessThan(LocalDateTime value) {\n            addCriterion(\"handle_time <\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"handle_time <=\", value, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andHandleTimeLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"handle_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"handle_time in\", values, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"handle_time not in\", values, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"handle_time between\", value1, value2, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHandleTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"handle_time not between\", value1, value2, \"handleTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallAftersale.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        private LitemallAftersaleExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallAftersaleExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public LitemallAftersaleExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallAftersale.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallAftersale.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_aftersale\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_aftersale\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_aftersale\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallAftersaleExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallBrand.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallBrand {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.desc\n     *\n     * @mbg.generated\n     */\n    private String desc;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.sort_order\n     *\n     * @mbg.generated\n     */\n    private Byte sortOrder;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.floor_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal floorPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_brand.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.id\n     *\n     * @return the value of litemall_brand.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.id\n     *\n     * @param id the value for litemall_brand.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.name\n     *\n     * @return the value of litemall_brand.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.name\n     *\n     * @param name the value for litemall_brand.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.desc\n     *\n     * @return the value of litemall_brand.desc\n     *\n     * @mbg.generated\n     */\n    public String getDesc() {\n        return desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.desc\n     *\n     * @param desc the value for litemall_brand.desc\n     *\n     * @mbg.generated\n     */\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.pic_url\n     *\n     * @return the value of litemall_brand.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.pic_url\n     *\n     * @param picUrl the value for litemall_brand.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.sort_order\n     *\n     * @return the value of litemall_brand.sort_order\n     *\n     * @mbg.generated\n     */\n    public Byte getSortOrder() {\n        return sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.sort_order\n     *\n     * @param sortOrder the value for litemall_brand.sort_order\n     *\n     * @mbg.generated\n     */\n    public void setSortOrder(Byte sortOrder) {\n        this.sortOrder = sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.floor_price\n     *\n     * @return the value of litemall_brand.floor_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getFloorPrice() {\n        return floorPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.floor_price\n     *\n     * @param floorPrice the value for litemall_brand.floor_price\n     *\n     * @mbg.generated\n     */\n    public void setFloorPrice(BigDecimal floorPrice) {\n        this.floorPrice = floorPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.add_time\n     *\n     * @return the value of litemall_brand.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.add_time\n     *\n     * @param addTime the value for litemall_brand.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.update_time\n     *\n     * @return the value of litemall_brand.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.update_time\n     *\n     * @param updateTime the value for litemall_brand.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_brand.deleted\n     *\n     * @return the value of litemall_brand.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_brand.deleted\n     *\n     * @param deleted the value for litemall_brand.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", desc=\").append(desc);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", sortOrder=\").append(sortOrder);\n        sb.append(\", floorPrice=\").append(floorPrice);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallBrand other = (LitemallBrand) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getDesc() == null ? other.getDesc() == null : this.getDesc().equals(other.getDesc()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))\n            && (this.getFloorPrice() == null ? other.getFloorPrice() == null : this.getFloorPrice().equals(other.getFloorPrice()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getDesc() == null) ? 0 : getDesc().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());\n        result = prime * result + ((getFloorPrice() == null) ? 0 : getFloorPrice().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        desc(\"desc\", \"desc\", \"VARCHAR\", true),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        sortOrder(\"sort_order\", \"sortOrder\", \"TINYINT\", false),\n        floorPrice(\"floor_price\", \"floorPrice\", \"DECIMAL\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallBrandExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallBrandExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public LitemallBrandExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public LitemallBrandExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public LitemallBrandExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallBrandExample example = new LitemallBrandExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public LitemallBrandExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public LitemallBrandExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNull() {\n            addCriterion(\"`desc` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNotNull() {\n            addCriterion(\"`desc` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescEqualTo(String value) {\n            addCriterion(\"`desc` =\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotEqualTo(String value) {\n            addCriterion(\"`desc` <>\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThan(String value) {\n            addCriterion(\"`desc` >\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`desc` >=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThan(String value) {\n            addCriterion(\"`desc` <\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThanOrEqualTo(String value) {\n            addCriterion(\"`desc` <=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLike(String value) {\n            addCriterion(\"`desc` like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotLike(String value) {\n            addCriterion(\"`desc` not like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIn(List<String> values) {\n            addCriterion(\"`desc` in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotIn(List<String> values) {\n            addCriterion(\"`desc` not in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescBetween(String value1, String value2) {\n            addCriterion(\"`desc` between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotBetween(String value1, String value2) {\n            addCriterion(\"`desc` not between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNull() {\n            addCriterion(\"sort_order is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNotNull() {\n            addCriterion(\"sort_order is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderEqualTo(Byte value) {\n            addCriterion(\"sort_order =\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotEqualTo(Byte value) {\n            addCriterion(\"sort_order <>\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThan(Byte value) {\n            addCriterion(\"sort_order >\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"sort_order >=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThan(Byte value) {\n            addCriterion(\"sort_order <\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThanOrEqualTo(Byte value) {\n            addCriterion(\"sort_order <=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIn(List<Byte> values) {\n            addCriterion(\"sort_order in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotIn(List<Byte> values) {\n            addCriterion(\"sort_order not in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderBetween(Byte value1, Byte value2) {\n            addCriterion(\"sort_order between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"sort_order not between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceIsNull() {\n            addCriterion(\"floor_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceIsNotNull() {\n            addCriterion(\"floor_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceEqualTo(BigDecimal value) {\n            addCriterion(\"floor_price =\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"floor_price <>\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"floor_price >\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"floor_price >=\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceLessThan(BigDecimal value) {\n            addCriterion(\"floor_price <\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"floor_price <=\", value, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andFloorPriceLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"floor_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceIn(List<BigDecimal> values) {\n            addCriterion(\"floor_price in\", values, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"floor_price not in\", values, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"floor_price between\", value1, value2, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFloorPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"floor_price not between\", value1, value2, \"floorPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallBrand.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_brand\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        private LitemallBrandExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallBrandExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public LitemallBrandExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallBrand.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallBrand.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_brand\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_brand\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_brand\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallBrandExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCart.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallCart {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.goods_sn\n     *\n     * @mbg.generated\n     */\n    private String goodsSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.goods_name\n     *\n     * @mbg.generated\n     */\n    private String goodsName;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.product_id\n     *\n     * @mbg.generated\n     */\n    private Integer productId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal price;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.number\n     *\n     * @mbg.generated\n     */\n    private Short number;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.specifications\n     *\n     * @mbg.generated\n     */\n    private String[] specifications;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.checked\n     *\n     * @mbg.generated\n     */\n    private Boolean checked;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_cart.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.id\n     *\n     * @return the value of litemall_cart.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.id\n     *\n     * @param id the value for litemall_cart.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.user_id\n     *\n     * @return the value of litemall_cart.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.user_id\n     *\n     * @param userId the value for litemall_cart.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.goods_id\n     *\n     * @return the value of litemall_cart.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.goods_id\n     *\n     * @param goodsId the value for litemall_cart.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.goods_sn\n     *\n     * @return the value of litemall_cart.goods_sn\n     *\n     * @mbg.generated\n     */\n    public String getGoodsSn() {\n        return goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.goods_sn\n     *\n     * @param goodsSn the value for litemall_cart.goods_sn\n     *\n     * @mbg.generated\n     */\n    public void setGoodsSn(String goodsSn) {\n        this.goodsSn = goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.goods_name\n     *\n     * @return the value of litemall_cart.goods_name\n     *\n     * @mbg.generated\n     */\n    public String getGoodsName() {\n        return goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.goods_name\n     *\n     * @param goodsName the value for litemall_cart.goods_name\n     *\n     * @mbg.generated\n     */\n    public void setGoodsName(String goodsName) {\n        this.goodsName = goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.product_id\n     *\n     * @return the value of litemall_cart.product_id\n     *\n     * @mbg.generated\n     */\n    public Integer getProductId() {\n        return productId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.product_id\n     *\n     * @param productId the value for litemall_cart.product_id\n     *\n     * @mbg.generated\n     */\n    public void setProductId(Integer productId) {\n        this.productId = productId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.price\n     *\n     * @return the value of litemall_cart.price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.price\n     *\n     * @param price the value for litemall_cart.price\n     *\n     * @mbg.generated\n     */\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.number\n     *\n     * @return the value of litemall_cart.number\n     *\n     * @mbg.generated\n     */\n    public Short getNumber() {\n        return number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.number\n     *\n     * @param number the value for litemall_cart.number\n     *\n     * @mbg.generated\n     */\n    public void setNumber(Short number) {\n        this.number = number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.specifications\n     *\n     * @return the value of litemall_cart.specifications\n     *\n     * @mbg.generated\n     */\n    public String[] getSpecifications() {\n        return specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.specifications\n     *\n     * @param specifications the value for litemall_cart.specifications\n     *\n     * @mbg.generated\n     */\n    public void setSpecifications(String[] specifications) {\n        this.specifications = specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.checked\n     *\n     * @return the value of litemall_cart.checked\n     *\n     * @mbg.generated\n     */\n    public Boolean getChecked() {\n        return checked;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.checked\n     *\n     * @param checked the value for litemall_cart.checked\n     *\n     * @mbg.generated\n     */\n    public void setChecked(Boolean checked) {\n        this.checked = checked;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.pic_url\n     *\n     * @return the value of litemall_cart.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.pic_url\n     *\n     * @param picUrl the value for litemall_cart.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.add_time\n     *\n     * @return the value of litemall_cart.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.add_time\n     *\n     * @param addTime the value for litemall_cart.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.update_time\n     *\n     * @return the value of litemall_cart.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.update_time\n     *\n     * @param updateTime the value for litemall_cart.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_cart.deleted\n     *\n     * @return the value of litemall_cart.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_cart.deleted\n     *\n     * @param deleted the value for litemall_cart.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", goodsSn=\").append(goodsSn);\n        sb.append(\", goodsName=\").append(goodsName);\n        sb.append(\", productId=\").append(productId);\n        sb.append(\", price=\").append(price);\n        sb.append(\", number=\").append(number);\n        sb.append(\", specifications=\").append(specifications);\n        sb.append(\", checked=\").append(checked);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallCart other = (LitemallCart) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getGoodsSn() == null ? other.getGoodsSn() == null : this.getGoodsSn().equals(other.getGoodsSn()))\n            && (this.getGoodsName() == null ? other.getGoodsName() == null : this.getGoodsName().equals(other.getGoodsName()))\n            && (this.getProductId() == null ? other.getProductId() == null : this.getProductId().equals(other.getProductId()))\n            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))\n            && (this.getNumber() == null ? other.getNumber() == null : this.getNumber().equals(other.getNumber()))\n            && (Arrays.equals(this.getSpecifications(), other.getSpecifications()))\n            && (this.getChecked() == null ? other.getChecked() == null : this.getChecked().equals(other.getChecked()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getGoodsSn() == null) ? 0 : getGoodsSn().hashCode());\n        result = prime * result + ((getGoodsName() == null) ? 0 : getGoodsName().hashCode());\n        result = prime * result + ((getProductId() == null) ? 0 : getProductId().hashCode());\n        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());\n        result = prime * result + ((getNumber() == null) ? 0 : getNumber().hashCode());\n        result = prime * result + (Arrays.hashCode(getSpecifications()));\n        result = prime * result + ((getChecked() == null) ? 0 : getChecked().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        goodsSn(\"goods_sn\", \"goodsSn\", \"VARCHAR\", false),\n        goodsName(\"goods_name\", \"goodsName\", \"VARCHAR\", false),\n        productId(\"product_id\", \"productId\", \"INTEGER\", false),\n        price(\"price\", \"price\", \"DECIMAL\", false),\n        number(\"number\", \"number\", \"SMALLINT\", true),\n        specifications(\"specifications\", \"specifications\", \"VARCHAR\", false),\n        checked(\"checked\", \"checked\", \"BIT\", true),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCartExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCartExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public LitemallCartExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public LitemallCartExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public LitemallCartExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCartExample example = new LitemallCartExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public LitemallCartExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public LitemallCartExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> specificationsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            specificationsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getSpecificationsCriteria() {\n            return specificationsCriteria;\n        }\n\n        protected void addSpecificationsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addSpecificationsCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || specificationsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(specificationsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNull() {\n            addCriterion(\"goods_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNotNull() {\n            addCriterion(\"goods_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnEqualTo(String value) {\n            addCriterion(\"goods_sn =\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotEqualTo(String value) {\n            addCriterion(\"goods_sn <>\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThan(String value) {\n            addCriterion(\"goods_sn >\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn >=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThan(String value) {\n            addCriterion(\"goods_sn <\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn <=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLike(String value) {\n            addCriterion(\"goods_sn like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotLike(String value) {\n            addCriterion(\"goods_sn not like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIn(List<String> values) {\n            addCriterion(\"goods_sn in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotIn(List<String> values) {\n            addCriterion(\"goods_sn not in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnBetween(String value1, String value2) {\n            addCriterion(\"goods_sn between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotBetween(String value1, String value2) {\n            addCriterion(\"goods_sn not between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNull() {\n            addCriterion(\"goods_name is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNotNull() {\n            addCriterion(\"goods_name is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameEqualTo(String value) {\n            addCriterion(\"goods_name =\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotEqualTo(String value) {\n            addCriterion(\"goods_name <>\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThan(String value) {\n            addCriterion(\"goods_name >\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_name >=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThan(String value) {\n            addCriterion(\"goods_name <\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_name <=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLike(String value) {\n            addCriterion(\"goods_name like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotLike(String value) {\n            addCriterion(\"goods_name not like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIn(List<String> values) {\n            addCriterion(\"goods_name in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotIn(List<String> values) {\n            addCriterion(\"goods_name not in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameBetween(String value1, String value2) {\n            addCriterion(\"goods_name between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotBetween(String value1, String value2) {\n            addCriterion(\"goods_name not between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIsNull() {\n            addCriterion(\"product_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIsNotNull() {\n            addCriterion(\"product_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdEqualTo(Integer value) {\n            addCriterion(\"product_id =\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotEqualTo(Integer value) {\n            addCriterion(\"product_id <>\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdGreaterThan(Integer value) {\n            addCriterion(\"product_id >\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"product_id >=\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdLessThan(Integer value) {\n            addCriterion(\"product_id <\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"product_id <=\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"product_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIn(List<Integer> values) {\n            addCriterion(\"product_id in\", values, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotIn(List<Integer> values) {\n            addCriterion(\"product_id not in\", values, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"product_id between\", value1, value2, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"product_id not between\", value1, value2, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNull() {\n            addCriterion(\"price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNotNull() {\n            addCriterion(\"price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceEqualTo(BigDecimal value) {\n            addCriterion(\"price =\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"price <>\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"price >\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price >=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThan(BigDecimal value) {\n            addCriterion(\"price <\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price <=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIn(List<BigDecimal> values) {\n            addCriterion(\"price in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"price not in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price not between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNull() {\n            addCriterion(\"`number` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNotNull() {\n            addCriterion(\"`number` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberEqualTo(Short value) {\n            addCriterion(\"`number` =\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotEqualTo(Short value) {\n            addCriterion(\"`number` <>\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThan(Short value) {\n            addCriterion(\"`number` >\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`number` >=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThan(Short value) {\n            addCriterion(\"`number` <\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThanOrEqualTo(Short value) {\n            addCriterion(\"`number` <=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`number` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIn(List<Short> values) {\n            addCriterion(\"`number` in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotIn(List<Short> values) {\n            addCriterion(\"`number` not in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberBetween(Short value1, Short value2) {\n            addCriterion(\"`number` between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotBetween(Short value1, Short value2) {\n            addCriterion(\"`number` not between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNull() {\n            addCriterion(\"specifications is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNotNull() {\n            addCriterion(\"specifications is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications =\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <>\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThan(String[] value) {\n            addSpecificationsCriterion(\"specifications >\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications >=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThan(String[] value) {\n            addSpecificationsCriterion(\"specifications <\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"specifications <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLike(String[] value) {\n            addSpecificationsCriterion(\"specifications like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotLike(String[] value) {\n            addSpecificationsCriterion(\"specifications not like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications not in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications not between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedIsNull() {\n            addCriterion(\"`checked` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedIsNotNull() {\n            addCriterion(\"`checked` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedEqualTo(Boolean value) {\n            addCriterion(\"`checked` =\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedNotEqualTo(Boolean value) {\n            addCriterion(\"`checked` <>\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedGreaterThan(Boolean value) {\n            addCriterion(\"`checked` >\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"`checked` >=\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedLessThan(Boolean value) {\n            addCriterion(\"`checked` <\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"`checked` <=\", value, \"checked\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andCheckedLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"`checked` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedIn(List<Boolean> values) {\n            addCriterion(\"`checked` in\", values, \"checked\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedNotIn(List<Boolean> values) {\n            addCriterion(\"`checked` not in\", values, \"checked\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"`checked` between\", value1, value2, \"checked\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCheckedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"`checked` not between\", value1, value2, \"checked\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallCart.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_cart\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        private LitemallCartExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCartExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public LitemallCartExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallCart.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallCart.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_cart\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_cart\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_cart\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCartExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCategory.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallCategory {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.keywords\n     *\n     * @mbg.generated\n     */\n    private String keywords;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.desc\n     *\n     * @mbg.generated\n     */\n    private String desc;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.pid\n     *\n     * @mbg.generated\n     */\n    private Integer pid;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.icon_url\n     *\n     * @mbg.generated\n     */\n    private String iconUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.level\n     *\n     * @mbg.generated\n     */\n    private String level;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.sort_order\n     *\n     * @mbg.generated\n     */\n    private Byte sortOrder;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_category.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.id\n     *\n     * @return the value of litemall_category.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.id\n     *\n     * @param id the value for litemall_category.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.name\n     *\n     * @return the value of litemall_category.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.name\n     *\n     * @param name the value for litemall_category.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.keywords\n     *\n     * @return the value of litemall_category.keywords\n     *\n     * @mbg.generated\n     */\n    public String getKeywords() {\n        return keywords;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.keywords\n     *\n     * @param keywords the value for litemall_category.keywords\n     *\n     * @mbg.generated\n     */\n    public void setKeywords(String keywords) {\n        this.keywords = keywords;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.desc\n     *\n     * @return the value of litemall_category.desc\n     *\n     * @mbg.generated\n     */\n    public String getDesc() {\n        return desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.desc\n     *\n     * @param desc the value for litemall_category.desc\n     *\n     * @mbg.generated\n     */\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.pid\n     *\n     * @return the value of litemall_category.pid\n     *\n     * @mbg.generated\n     */\n    public Integer getPid() {\n        return pid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.pid\n     *\n     * @param pid the value for litemall_category.pid\n     *\n     * @mbg.generated\n     */\n    public void setPid(Integer pid) {\n        this.pid = pid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.icon_url\n     *\n     * @return the value of litemall_category.icon_url\n     *\n     * @mbg.generated\n     */\n    public String getIconUrl() {\n        return iconUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.icon_url\n     *\n     * @param iconUrl the value for litemall_category.icon_url\n     *\n     * @mbg.generated\n     */\n    public void setIconUrl(String iconUrl) {\n        this.iconUrl = iconUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.pic_url\n     *\n     * @return the value of litemall_category.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.pic_url\n     *\n     * @param picUrl the value for litemall_category.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.level\n     *\n     * @return the value of litemall_category.level\n     *\n     * @mbg.generated\n     */\n    public String getLevel() {\n        return level;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.level\n     *\n     * @param level the value for litemall_category.level\n     *\n     * @mbg.generated\n     */\n    public void setLevel(String level) {\n        this.level = level;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.sort_order\n     *\n     * @return the value of litemall_category.sort_order\n     *\n     * @mbg.generated\n     */\n    public Byte getSortOrder() {\n        return sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.sort_order\n     *\n     * @param sortOrder the value for litemall_category.sort_order\n     *\n     * @mbg.generated\n     */\n    public void setSortOrder(Byte sortOrder) {\n        this.sortOrder = sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.add_time\n     *\n     * @return the value of litemall_category.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.add_time\n     *\n     * @param addTime the value for litemall_category.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.update_time\n     *\n     * @return the value of litemall_category.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.update_time\n     *\n     * @param updateTime the value for litemall_category.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_category.deleted\n     *\n     * @return the value of litemall_category.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_category.deleted\n     *\n     * @param deleted the value for litemall_category.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", keywords=\").append(keywords);\n        sb.append(\", desc=\").append(desc);\n        sb.append(\", pid=\").append(pid);\n        sb.append(\", iconUrl=\").append(iconUrl);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", level=\").append(level);\n        sb.append(\", sortOrder=\").append(sortOrder);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallCategory other = (LitemallCategory) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getKeywords() == null ? other.getKeywords() == null : this.getKeywords().equals(other.getKeywords()))\n            && (this.getDesc() == null ? other.getDesc() == null : this.getDesc().equals(other.getDesc()))\n            && (this.getPid() == null ? other.getPid() == null : this.getPid().equals(other.getPid()))\n            && (this.getIconUrl() == null ? other.getIconUrl() == null : this.getIconUrl().equals(other.getIconUrl()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getLevel() == null ? other.getLevel() == null : this.getLevel().equals(other.getLevel()))\n            && (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getKeywords() == null) ? 0 : getKeywords().hashCode());\n        result = prime * result + ((getDesc() == null) ? 0 : getDesc().hashCode());\n        result = prime * result + ((getPid() == null) ? 0 : getPid().hashCode());\n        result = prime * result + ((getIconUrl() == null) ? 0 : getIconUrl().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getLevel() == null) ? 0 : getLevel().hashCode());\n        result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        keywords(\"keywords\", \"keywords\", \"VARCHAR\", false),\n        desc(\"desc\", \"desc\", \"VARCHAR\", true),\n        pid(\"pid\", \"pid\", \"INTEGER\", false),\n        iconUrl(\"icon_url\", \"iconUrl\", \"VARCHAR\", false),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        level(\"level\", \"level\", \"VARCHAR\", true),\n        sortOrder(\"sort_order\", \"sortOrder\", \"TINYINT\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCategoryExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCategoryExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public LitemallCategoryExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public LitemallCategoryExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public LitemallCategoryExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public LitemallCategoryExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public LitemallCategoryExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIsNull() {\n            addCriterion(\"keywords is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIsNotNull() {\n            addCriterion(\"keywords is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsEqualTo(String value) {\n            addCriterion(\"keywords =\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotEqualTo(String value) {\n            addCriterion(\"keywords <>\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsGreaterThan(String value) {\n            addCriterion(\"keywords >\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsGreaterThanOrEqualTo(String value) {\n            addCriterion(\"keywords >=\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLessThan(String value) {\n            addCriterion(\"keywords <\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLessThanOrEqualTo(String value) {\n            addCriterion(\"keywords <=\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"keywords <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLike(String value) {\n            addCriterion(\"keywords like\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotLike(String value) {\n            addCriterion(\"keywords not like\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIn(List<String> values) {\n            addCriterion(\"keywords in\", values, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotIn(List<String> values) {\n            addCriterion(\"keywords not in\", values, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsBetween(String value1, String value2) {\n            addCriterion(\"keywords between\", value1, value2, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotBetween(String value1, String value2) {\n            addCriterion(\"keywords not between\", value1, value2, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNull() {\n            addCriterion(\"`desc` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNotNull() {\n            addCriterion(\"`desc` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescEqualTo(String value) {\n            addCriterion(\"`desc` =\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotEqualTo(String value) {\n            addCriterion(\"`desc` <>\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThan(String value) {\n            addCriterion(\"`desc` >\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`desc` >=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThan(String value) {\n            addCriterion(\"`desc` <\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThanOrEqualTo(String value) {\n            addCriterion(\"`desc` <=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLike(String value) {\n            addCriterion(\"`desc` like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotLike(String value) {\n            addCriterion(\"`desc` not like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIn(List<String> values) {\n            addCriterion(\"`desc` in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotIn(List<String> values) {\n            addCriterion(\"`desc` not in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescBetween(String value1, String value2) {\n            addCriterion(\"`desc` between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotBetween(String value1, String value2) {\n            addCriterion(\"`desc` not between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIsNull() {\n            addCriterion(\"pid is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIsNotNull() {\n            addCriterion(\"pid is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidEqualTo(Integer value) {\n            addCriterion(\"pid =\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotEqualTo(Integer value) {\n            addCriterion(\"pid <>\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidGreaterThan(Integer value) {\n            addCriterion(\"pid >\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"pid >=\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidLessThan(Integer value) {\n            addCriterion(\"pid <\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidLessThanOrEqualTo(Integer value) {\n            addCriterion(\"pid <=\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pid <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIn(List<Integer> values) {\n            addCriterion(\"pid in\", values, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotIn(List<Integer> values) {\n            addCriterion(\"pid not in\", values, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidBetween(Integer value1, Integer value2) {\n            addCriterion(\"pid between\", value1, value2, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"pid not between\", value1, value2, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlIsNull() {\n            addCriterion(\"icon_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlIsNotNull() {\n            addCriterion(\"icon_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlEqualTo(String value) {\n            addCriterion(\"icon_url =\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlNotEqualTo(String value) {\n            addCriterion(\"icon_url <>\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlGreaterThan(String value) {\n            addCriterion(\"icon_url >\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"icon_url >=\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlLessThan(String value) {\n            addCriterion(\"icon_url <\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"icon_url <=\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andIconUrlLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"icon_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlLike(String value) {\n            addCriterion(\"icon_url like\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlNotLike(String value) {\n            addCriterion(\"icon_url not like\", value, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlIn(List<String> values) {\n            addCriterion(\"icon_url in\", values, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlNotIn(List<String> values) {\n            addCriterion(\"icon_url not in\", values, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlBetween(String value1, String value2) {\n            addCriterion(\"icon_url between\", value1, value2, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIconUrlNotBetween(String value1, String value2) {\n            addCriterion(\"icon_url not between\", value1, value2, \"iconUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelIsNull() {\n            addCriterion(\"`level` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelIsNotNull() {\n            addCriterion(\"`level` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelEqualTo(String value) {\n            addCriterion(\"`level` =\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelNotEqualTo(String value) {\n            addCriterion(\"`level` <>\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelGreaterThan(String value) {\n            addCriterion(\"`level` >\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`level` >=\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelLessThan(String value) {\n            addCriterion(\"`level` <\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelLessThanOrEqualTo(String value) {\n            addCriterion(\"`level` <=\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLevelLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"`level` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelLike(String value) {\n            addCriterion(\"`level` like\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelNotLike(String value) {\n            addCriterion(\"`level` not like\", value, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelIn(List<String> values) {\n            addCriterion(\"`level` in\", values, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelNotIn(List<String> values) {\n            addCriterion(\"`level` not in\", values, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelBetween(String value1, String value2) {\n            addCriterion(\"`level` between\", value1, value2, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLevelNotBetween(String value1, String value2) {\n            addCriterion(\"`level` not between\", value1, value2, \"level\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNull() {\n            addCriterion(\"sort_order is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNotNull() {\n            addCriterion(\"sort_order is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderEqualTo(Byte value) {\n            addCriterion(\"sort_order =\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotEqualTo(Byte value) {\n            addCriterion(\"sort_order <>\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThan(Byte value) {\n            addCriterion(\"sort_order >\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"sort_order >=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThan(Byte value) {\n            addCriterion(\"sort_order <\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThanOrEqualTo(Byte value) {\n            addCriterion(\"sort_order <=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIn(List<Byte> values) {\n            addCriterion(\"sort_order in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotIn(List<Byte> values) {\n            addCriterion(\"sort_order not in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderBetween(Byte value1, Byte value2) {\n            addCriterion(\"sort_order between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"sort_order not between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallCategory.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_category\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        private LitemallCategoryExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCategoryExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public LitemallCategoryExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallCategory.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallCategory.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_category\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_category\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_category\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCategoryExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCollect.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallCollect {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.value_id\n     *\n     * @mbg.generated\n     */\n    private Integer valueId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.type\n     *\n     * @mbg.generated\n     */\n    private Byte type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_collect.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.id\n     *\n     * @return the value of litemall_collect.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.id\n     *\n     * @param id the value for litemall_collect.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.user_id\n     *\n     * @return the value of litemall_collect.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.user_id\n     *\n     * @param userId the value for litemall_collect.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.value_id\n     *\n     * @return the value of litemall_collect.value_id\n     *\n     * @mbg.generated\n     */\n    public Integer getValueId() {\n        return valueId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.value_id\n     *\n     * @param valueId the value for litemall_collect.value_id\n     *\n     * @mbg.generated\n     */\n    public void setValueId(Integer valueId) {\n        this.valueId = valueId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.type\n     *\n     * @return the value of litemall_collect.type\n     *\n     * @mbg.generated\n     */\n    public Byte getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.type\n     *\n     * @param type the value for litemall_collect.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Byte type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.add_time\n     *\n     * @return the value of litemall_collect.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.add_time\n     *\n     * @param addTime the value for litemall_collect.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.update_time\n     *\n     * @return the value of litemall_collect.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.update_time\n     *\n     * @param updateTime the value for litemall_collect.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_collect.deleted\n     *\n     * @return the value of litemall_collect.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_collect.deleted\n     *\n     * @param deleted the value for litemall_collect.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", valueId=\").append(valueId);\n        sb.append(\", type=\").append(type);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallCollect other = (LitemallCollect) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getValueId() == null ? other.getValueId() == null : this.getValueId().equals(other.getValueId()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getValueId() == null) ? 0 : getValueId().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        valueId(\"value_id\", \"valueId\", \"INTEGER\", false),\n        type(\"type\", \"type\", \"TINYINT\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCollectExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCollectExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public LitemallCollectExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public LitemallCollectExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public LitemallCollectExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCollectExample example = new LitemallCollectExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public LitemallCollectExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public LitemallCollectExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIsNull() {\n            addCriterion(\"value_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIsNotNull() {\n            addCriterion(\"value_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdEqualTo(Integer value) {\n            addCriterion(\"value_id =\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotEqualTo(Integer value) {\n            addCriterion(\"value_id <>\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdGreaterThan(Integer value) {\n            addCriterion(\"value_id >\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"value_id >=\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdLessThan(Integer value) {\n            addCriterion(\"value_id <\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"value_id <=\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"value_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIn(List<Integer> values) {\n            addCriterion(\"value_id in\", values, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotIn(List<Integer> values) {\n            addCriterion(\"value_id not in\", values, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"value_id between\", value1, value2, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"value_id not between\", value1, value2, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Byte value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Byte value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Byte value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Byte value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Byte> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Byte> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallCollect.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_collect\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        private LitemallCollectExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCollectExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public LitemallCollectExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallCollect.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallCollect.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_collect\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_collect\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_collect\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCollectExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallComment.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallComment {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.value_id\n     *\n     * @mbg.generated\n     */\n    private Integer valueId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.type\n     *\n     * @mbg.generated\n     */\n    private Byte type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.content\n     *\n     * @mbg.generated\n     */\n    private String content;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.admin_content\n     *\n     * @mbg.generated\n     */\n    private String adminContent;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.has_picture\n     *\n     * @mbg.generated\n     */\n    private Boolean hasPicture;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.pic_urls\n     *\n     * @mbg.generated\n     */\n    private String[] picUrls;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.star\n     *\n     * @mbg.generated\n     */\n    private Short star;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_comment.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.id\n     *\n     * @return the value of litemall_comment.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.id\n     *\n     * @param id the value for litemall_comment.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.value_id\n     *\n     * @return the value of litemall_comment.value_id\n     *\n     * @mbg.generated\n     */\n    public Integer getValueId() {\n        return valueId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.value_id\n     *\n     * @param valueId the value for litemall_comment.value_id\n     *\n     * @mbg.generated\n     */\n    public void setValueId(Integer valueId) {\n        this.valueId = valueId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.type\n     *\n     * @return the value of litemall_comment.type\n     *\n     * @mbg.generated\n     */\n    public Byte getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.type\n     *\n     * @param type the value for litemall_comment.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Byte type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.content\n     *\n     * @return the value of litemall_comment.content\n     *\n     * @mbg.generated\n     */\n    public String getContent() {\n        return content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.content\n     *\n     * @param content the value for litemall_comment.content\n     *\n     * @mbg.generated\n     */\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.admin_content\n     *\n     * @return the value of litemall_comment.admin_content\n     *\n     * @mbg.generated\n     */\n    public String getAdminContent() {\n        return adminContent;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.admin_content\n     *\n     * @param adminContent the value for litemall_comment.admin_content\n     *\n     * @mbg.generated\n     */\n    public void setAdminContent(String adminContent) {\n        this.adminContent = adminContent;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.user_id\n     *\n     * @return the value of litemall_comment.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.user_id\n     *\n     * @param userId the value for litemall_comment.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.has_picture\n     *\n     * @return the value of litemall_comment.has_picture\n     *\n     * @mbg.generated\n     */\n    public Boolean getHasPicture() {\n        return hasPicture;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.has_picture\n     *\n     * @param hasPicture the value for litemall_comment.has_picture\n     *\n     * @mbg.generated\n     */\n    public void setHasPicture(Boolean hasPicture) {\n        this.hasPicture = hasPicture;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.pic_urls\n     *\n     * @return the value of litemall_comment.pic_urls\n     *\n     * @mbg.generated\n     */\n    public String[] getPicUrls() {\n        return picUrls;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.pic_urls\n     *\n     * @param picUrls the value for litemall_comment.pic_urls\n     *\n     * @mbg.generated\n     */\n    public void setPicUrls(String[] picUrls) {\n        this.picUrls = picUrls;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.star\n     *\n     * @return the value of litemall_comment.star\n     *\n     * @mbg.generated\n     */\n    public Short getStar() {\n        return star;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.star\n     *\n     * @param star the value for litemall_comment.star\n     *\n     * @mbg.generated\n     */\n    public void setStar(Short star) {\n        this.star = star;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.add_time\n     *\n     * @return the value of litemall_comment.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.add_time\n     *\n     * @param addTime the value for litemall_comment.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.update_time\n     *\n     * @return the value of litemall_comment.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.update_time\n     *\n     * @param updateTime the value for litemall_comment.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_comment.deleted\n     *\n     * @return the value of litemall_comment.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_comment.deleted\n     *\n     * @param deleted the value for litemall_comment.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", valueId=\").append(valueId);\n        sb.append(\", type=\").append(type);\n        sb.append(\", content=\").append(content);\n        sb.append(\", adminContent=\").append(adminContent);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", hasPicture=\").append(hasPicture);\n        sb.append(\", picUrls=\").append(picUrls);\n        sb.append(\", star=\").append(star);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallComment other = (LitemallComment) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getValueId() == null ? other.getValueId() == null : this.getValueId().equals(other.getValueId()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))\n            && (this.getAdminContent() == null ? other.getAdminContent() == null : this.getAdminContent().equals(other.getAdminContent()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getHasPicture() == null ? other.getHasPicture() == null : this.getHasPicture().equals(other.getHasPicture()))\n            && (Arrays.equals(this.getPicUrls(), other.getPicUrls()))\n            && (this.getStar() == null ? other.getStar() == null : this.getStar().equals(other.getStar()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getValueId() == null) ? 0 : getValueId().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());\n        result = prime * result + ((getAdminContent() == null) ? 0 : getAdminContent().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getHasPicture() == null) ? 0 : getHasPicture().hashCode());\n        result = prime * result + (Arrays.hashCode(getPicUrls()));\n        result = prime * result + ((getStar() == null) ? 0 : getStar().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        valueId(\"value_id\", \"valueId\", \"INTEGER\", false),\n        type(\"type\", \"type\", \"TINYINT\", true),\n        content(\"content\", \"content\", \"VARCHAR\", false),\n        adminContent(\"admin_content\", \"adminContent\", \"VARCHAR\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        hasPicture(\"has_picture\", \"hasPicture\", \"BIT\", false),\n        picUrls(\"pic_urls\", \"picUrls\", \"VARCHAR\", false),\n        star(\"star\", \"star\", \"SMALLINT\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCommentExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCommentExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public LitemallCommentExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public LitemallCommentExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public LitemallCommentExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCommentExample example = new LitemallCommentExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public LitemallCommentExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public LitemallCommentExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> picUrlsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            picUrlsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getPicUrlsCriteria() {\n            return picUrlsCriteria;\n        }\n\n        protected void addPicUrlsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            picUrlsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addPicUrlsCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            picUrlsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || picUrlsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(picUrlsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIsNull() {\n            addCriterion(\"value_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIsNotNull() {\n            addCriterion(\"value_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdEqualTo(Integer value) {\n            addCriterion(\"value_id =\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotEqualTo(Integer value) {\n            addCriterion(\"value_id <>\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdGreaterThan(Integer value) {\n            addCriterion(\"value_id >\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"value_id >=\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdLessThan(Integer value) {\n            addCriterion(\"value_id <\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"value_id <=\", value, \"valueId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueIdLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"value_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdIn(List<Integer> values) {\n            addCriterion(\"value_id in\", values, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotIn(List<Integer> values) {\n            addCriterion(\"value_id not in\", values, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"value_id between\", value1, value2, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"value_id not between\", value1, value2, \"valueId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Byte value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Byte value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Byte value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Byte value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Byte> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Byte> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNull() {\n            addCriterion(\"content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNotNull() {\n            addCriterion(\"content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentEqualTo(String value) {\n            addCriterion(\"content =\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotEqualTo(String value) {\n            addCriterion(\"content <>\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThan(String value) {\n            addCriterion(\"content >\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"content >=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThan(String value) {\n            addCriterion(\"content <\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThanOrEqualTo(String value) {\n            addCriterion(\"content <=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLike(String value) {\n            addCriterion(\"content like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotLike(String value) {\n            addCriterion(\"content not like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIn(List<String> values) {\n            addCriterion(\"content in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotIn(List<String> values) {\n            addCriterion(\"content not in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentBetween(String value1, String value2) {\n            addCriterion(\"content between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotBetween(String value1, String value2) {\n            addCriterion(\"content not between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentIsNull() {\n            addCriterion(\"admin_content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentIsNotNull() {\n            addCriterion(\"admin_content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentEqualTo(String value) {\n            addCriterion(\"admin_content =\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentNotEqualTo(String value) {\n            addCriterion(\"admin_content <>\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentGreaterThan(String value) {\n            addCriterion(\"admin_content >\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"admin_content >=\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentLessThan(String value) {\n            addCriterion(\"admin_content <\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentLessThanOrEqualTo(String value) {\n            addCriterion(\"admin_content <=\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminContentLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"admin_content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentLike(String value) {\n            addCriterion(\"admin_content like\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentNotLike(String value) {\n            addCriterion(\"admin_content not like\", value, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentIn(List<String> values) {\n            addCriterion(\"admin_content in\", values, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentNotIn(List<String> values) {\n            addCriterion(\"admin_content not in\", values, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentBetween(String value1, String value2) {\n            addCriterion(\"admin_content between\", value1, value2, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminContentNotBetween(String value1, String value2) {\n            addCriterion(\"admin_content not between\", value1, value2, \"adminContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIsNull() {\n            addCriterion(\"has_picture is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIsNotNull() {\n            addCriterion(\"has_picture is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureEqualTo(Boolean value) {\n            addCriterion(\"has_picture =\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotEqualTo(Boolean value) {\n            addCriterion(\"has_picture <>\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureGreaterThan(Boolean value) {\n            addCriterion(\"has_picture >\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"has_picture >=\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureLessThan(Boolean value) {\n            addCriterion(\"has_picture <\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"has_picture <=\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"has_picture <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIn(List<Boolean> values) {\n            addCriterion(\"has_picture in\", values, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotIn(List<Boolean> values) {\n            addCriterion(\"has_picture not in\", values, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"has_picture between\", value1, value2, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"has_picture not between\", value1, value2, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIsNull() {\n            addCriterion(\"pic_urls is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIsNotNull() {\n            addCriterion(\"pic_urls is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls =\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <>\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsGreaterThan(String[] value) {\n            addPicUrlsCriterion(\"pic_urls >\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsGreaterThanOrEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls >=\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLessThan(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLessThanOrEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <=\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLike(String[] value) {\n            addPicUrlsCriterion(\"pic_urls like\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotLike(String[] value) {\n            addPicUrlsCriterion(\"pic_urls not like\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIn(List<String[]> values) {\n            addPicUrlsCriterion(\"pic_urls in\", values, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotIn(List<String[]> values) {\n            addPicUrlsCriterion(\"pic_urls not in\", values, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsBetween(String[] value1, String[] value2) {\n            addPicUrlsCriterion(\"pic_urls between\", value1, value2, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotBetween(String[] value1, String[] value2) {\n            addPicUrlsCriterion(\"pic_urls not between\", value1, value2, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarIsNull() {\n            addCriterion(\"star is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarIsNotNull() {\n            addCriterion(\"star is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarEqualTo(Short value) {\n            addCriterion(\"star =\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarNotEqualTo(Short value) {\n            addCriterion(\"star <>\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarGreaterThan(Short value) {\n            addCriterion(\"star >\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"star >=\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarLessThan(Short value) {\n            addCriterion(\"star <\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarLessThanOrEqualTo(Short value) {\n            addCriterion(\"star <=\", value, \"star\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andStarLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"star <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStarIn(List<Short> values) {\n            addCriterion(\"star in\", values, \"star\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarNotIn(List<Short> values) {\n            addCriterion(\"star not in\", values, \"star\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarBetween(Short value1, Short value2) {\n            addCriterion(\"star between\", value1, value2, \"star\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStarNotBetween(Short value1, Short value2) {\n            addCriterion(\"star not between\", value1, value2, \"star\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallComment.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_comment\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        private LitemallCommentExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCommentExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public LitemallCommentExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallComment.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallComment.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_comment\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_comment\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_comment\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCommentExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCoupon.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallCoupon {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.desc\n     *\n     * @mbg.generated\n     */\n    private String desc;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.tag\n     *\n     * @mbg.generated\n     */\n    private String tag;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.total\n     *\n     * @mbg.generated\n     */\n    private Integer total;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.discount\n     *\n     * @mbg.generated\n     */\n    private BigDecimal discount;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.min\n     *\n     * @mbg.generated\n     */\n    private BigDecimal min;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.limit\n     *\n     * @mbg.generated\n     */\n    private Short limit;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.type\n     *\n     * @mbg.generated\n     */\n    private Short type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.status\n     *\n     * @mbg.generated\n     */\n    private Short status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.goods_type\n     *\n     * @mbg.generated\n     */\n    private Short goodsType;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.goods_value\n     *\n     * @mbg.generated\n     */\n    private Integer[] goodsValue;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.code\n     *\n     * @mbg.generated\n     */\n    private String code;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.time_type\n     *\n     * @mbg.generated\n     */\n    private Short timeType;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.days\n     *\n     * @mbg.generated\n     */\n    private Short days;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.start_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime startTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.end_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime endTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.id\n     *\n     * @return the value of litemall_coupon.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.id\n     *\n     * @param id the value for litemall_coupon.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.name\n     *\n     * @return the value of litemall_coupon.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.name\n     *\n     * @param name the value for litemall_coupon.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.desc\n     *\n     * @return the value of litemall_coupon.desc\n     *\n     * @mbg.generated\n     */\n    public String getDesc() {\n        return desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.desc\n     *\n     * @param desc the value for litemall_coupon.desc\n     *\n     * @mbg.generated\n     */\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.tag\n     *\n     * @return the value of litemall_coupon.tag\n     *\n     * @mbg.generated\n     */\n    public String getTag() {\n        return tag;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.tag\n     *\n     * @param tag the value for litemall_coupon.tag\n     *\n     * @mbg.generated\n     */\n    public void setTag(String tag) {\n        this.tag = tag;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.total\n     *\n     * @return the value of litemall_coupon.total\n     *\n     * @mbg.generated\n     */\n    public Integer getTotal() {\n        return total;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.total\n     *\n     * @param total the value for litemall_coupon.total\n     *\n     * @mbg.generated\n     */\n    public void setTotal(Integer total) {\n        this.total = total;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.discount\n     *\n     * @return the value of litemall_coupon.discount\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getDiscount() {\n        return discount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.discount\n     *\n     * @param discount the value for litemall_coupon.discount\n     *\n     * @mbg.generated\n     */\n    public void setDiscount(BigDecimal discount) {\n        this.discount = discount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.min\n     *\n     * @return the value of litemall_coupon.min\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getMin() {\n        return min;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.min\n     *\n     * @param min the value for litemall_coupon.min\n     *\n     * @mbg.generated\n     */\n    public void setMin(BigDecimal min) {\n        this.min = min;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.limit\n     *\n     * @return the value of litemall_coupon.limit\n     *\n     * @mbg.generated\n     */\n    public Short getLimit() {\n        return limit;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.limit\n     *\n     * @param limit the value for litemall_coupon.limit\n     *\n     * @mbg.generated\n     */\n    public void setLimit(Short limit) {\n        this.limit = limit;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.type\n     *\n     * @return the value of litemall_coupon.type\n     *\n     * @mbg.generated\n     */\n    public Short getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.type\n     *\n     * @param type the value for litemall_coupon.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Short type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.status\n     *\n     * @return the value of litemall_coupon.status\n     *\n     * @mbg.generated\n     */\n    public Short getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.status\n     *\n     * @param status the value for litemall_coupon.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Short status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.goods_type\n     *\n     * @return the value of litemall_coupon.goods_type\n     *\n     * @mbg.generated\n     */\n    public Short getGoodsType() {\n        return goodsType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.goods_type\n     *\n     * @param goodsType the value for litemall_coupon.goods_type\n     *\n     * @mbg.generated\n     */\n    public void setGoodsType(Short goodsType) {\n        this.goodsType = goodsType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.goods_value\n     *\n     * @return the value of litemall_coupon.goods_value\n     *\n     * @mbg.generated\n     */\n    public Integer[] getGoodsValue() {\n        return goodsValue;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.goods_value\n     *\n     * @param goodsValue the value for litemall_coupon.goods_value\n     *\n     * @mbg.generated\n     */\n    public void setGoodsValue(Integer[] goodsValue) {\n        this.goodsValue = goodsValue;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.code\n     *\n     * @return the value of litemall_coupon.code\n     *\n     * @mbg.generated\n     */\n    public String getCode() {\n        return code;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.code\n     *\n     * @param code the value for litemall_coupon.code\n     *\n     * @mbg.generated\n     */\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.time_type\n     *\n     * @return the value of litemall_coupon.time_type\n     *\n     * @mbg.generated\n     */\n    public Short getTimeType() {\n        return timeType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.time_type\n     *\n     * @param timeType the value for litemall_coupon.time_type\n     *\n     * @mbg.generated\n     */\n    public void setTimeType(Short timeType) {\n        this.timeType = timeType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.days\n     *\n     * @return the value of litemall_coupon.days\n     *\n     * @mbg.generated\n     */\n    public Short getDays() {\n        return days;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.days\n     *\n     * @param days the value for litemall_coupon.days\n     *\n     * @mbg.generated\n     */\n    public void setDays(Short days) {\n        this.days = days;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.start_time\n     *\n     * @return the value of litemall_coupon.start_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getStartTime() {\n        return startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.start_time\n     *\n     * @param startTime the value for litemall_coupon.start_time\n     *\n     * @mbg.generated\n     */\n    public void setStartTime(LocalDateTime startTime) {\n        this.startTime = startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.end_time\n     *\n     * @return the value of litemall_coupon.end_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getEndTime() {\n        return endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.end_time\n     *\n     * @param endTime the value for litemall_coupon.end_time\n     *\n     * @mbg.generated\n     */\n    public void setEndTime(LocalDateTime endTime) {\n        this.endTime = endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.add_time\n     *\n     * @return the value of litemall_coupon.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.add_time\n     *\n     * @param addTime the value for litemall_coupon.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.update_time\n     *\n     * @return the value of litemall_coupon.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.update_time\n     *\n     * @param updateTime the value for litemall_coupon.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon.deleted\n     *\n     * @return the value of litemall_coupon.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon.deleted\n     *\n     * @param deleted the value for litemall_coupon.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", desc=\").append(desc);\n        sb.append(\", tag=\").append(tag);\n        sb.append(\", total=\").append(total);\n        sb.append(\", discount=\").append(discount);\n        sb.append(\", min=\").append(min);\n        sb.append(\", limit=\").append(limit);\n        sb.append(\", type=\").append(type);\n        sb.append(\", status=\").append(status);\n        sb.append(\", goodsType=\").append(goodsType);\n        sb.append(\", goodsValue=\").append(goodsValue);\n        sb.append(\", code=\").append(code);\n        sb.append(\", timeType=\").append(timeType);\n        sb.append(\", days=\").append(days);\n        sb.append(\", startTime=\").append(startTime);\n        sb.append(\", endTime=\").append(endTime);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallCoupon other = (LitemallCoupon) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getDesc() == null ? other.getDesc() == null : this.getDesc().equals(other.getDesc()))\n            && (this.getTag() == null ? other.getTag() == null : this.getTag().equals(other.getTag()))\n            && (this.getTotal() == null ? other.getTotal() == null : this.getTotal().equals(other.getTotal()))\n            && (this.getDiscount() == null ? other.getDiscount() == null : this.getDiscount().equals(other.getDiscount()))\n            && (this.getMin() == null ? other.getMin() == null : this.getMin().equals(other.getMin()))\n            && (this.getLimit() == null ? other.getLimit() == null : this.getLimit().equals(other.getLimit()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getGoodsType() == null ? other.getGoodsType() == null : this.getGoodsType().equals(other.getGoodsType()))\n            && (Arrays.equals(this.getGoodsValue(), other.getGoodsValue()))\n            && (this.getCode() == null ? other.getCode() == null : this.getCode().equals(other.getCode()))\n            && (this.getTimeType() == null ? other.getTimeType() == null : this.getTimeType().equals(other.getTimeType()))\n            && (this.getDays() == null ? other.getDays() == null : this.getDays().equals(other.getDays()))\n            && (this.getStartTime() == null ? other.getStartTime() == null : this.getStartTime().equals(other.getStartTime()))\n            && (this.getEndTime() == null ? other.getEndTime() == null : this.getEndTime().equals(other.getEndTime()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getDesc() == null) ? 0 : getDesc().hashCode());\n        result = prime * result + ((getTag() == null) ? 0 : getTag().hashCode());\n        result = prime * result + ((getTotal() == null) ? 0 : getTotal().hashCode());\n        result = prime * result + ((getDiscount() == null) ? 0 : getDiscount().hashCode());\n        result = prime * result + ((getMin() == null) ? 0 : getMin().hashCode());\n        result = prime * result + ((getLimit() == null) ? 0 : getLimit().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getGoodsType() == null) ? 0 : getGoodsType().hashCode());\n        result = prime * result + (Arrays.hashCode(getGoodsValue()));\n        result = prime * result + ((getCode() == null) ? 0 : getCode().hashCode());\n        result = prime * result + ((getTimeType() == null) ? 0 : getTimeType().hashCode());\n        result = prime * result + ((getDays() == null) ? 0 : getDays().hashCode());\n        result = prime * result + ((getStartTime() == null) ? 0 : getStartTime().hashCode());\n        result = prime * result + ((getEndTime() == null) ? 0 : getEndTime().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        desc(\"desc\", \"desc\", \"VARCHAR\", true),\n        tag(\"tag\", \"tag\", \"VARCHAR\", false),\n        total(\"total\", \"total\", \"INTEGER\", false),\n        discount(\"discount\", \"discount\", \"DECIMAL\", false),\n        min(\"min\", \"min\", \"DECIMAL\", true),\n        limit(\"limit\", \"limit\", \"SMALLINT\", true),\n        type(\"type\", \"type\", \"SMALLINT\", true),\n        status(\"status\", \"status\", \"SMALLINT\", true),\n        goodsType(\"goods_type\", \"goodsType\", \"SMALLINT\", false),\n        goodsValue(\"goods_value\", \"goodsValue\", \"VARCHAR\", false),\n        code(\"code\", \"code\", \"VARCHAR\", false),\n        timeType(\"time_type\", \"timeType\", \"SMALLINT\", false),\n        days(\"days\", \"days\", \"SMALLINT\", true),\n        startTime(\"start_time\", \"startTime\", \"TIMESTAMP\", false),\n        endTime(\"end_time\", \"endTime\", \"TIMESTAMP\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCouponExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCouponExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCouponExample example = new LitemallCouponExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> goodsValueCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            goodsValueCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getGoodsValueCriteria() {\n            return goodsValueCriteria;\n        }\n\n        protected void addGoodsValueCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            goodsValueCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addGoodsValueCriterion(String condition, Integer[] value1, Integer[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            goodsValueCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || goodsValueCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(goodsValueCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNull() {\n            addCriterion(\"`desc` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNotNull() {\n            addCriterion(\"`desc` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescEqualTo(String value) {\n            addCriterion(\"`desc` =\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotEqualTo(String value) {\n            addCriterion(\"`desc` <>\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThan(String value) {\n            addCriterion(\"`desc` >\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`desc` >=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThan(String value) {\n            addCriterion(\"`desc` <\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThanOrEqualTo(String value) {\n            addCriterion(\"`desc` <=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLike(String value) {\n            addCriterion(\"`desc` like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotLike(String value) {\n            addCriterion(\"`desc` not like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIn(List<String> values) {\n            addCriterion(\"`desc` in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotIn(List<String> values) {\n            addCriterion(\"`desc` not in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescBetween(String value1, String value2) {\n            addCriterion(\"`desc` between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotBetween(String value1, String value2) {\n            addCriterion(\"`desc` not between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagIsNull() {\n            addCriterion(\"tag is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagIsNotNull() {\n            addCriterion(\"tag is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagEqualTo(String value) {\n            addCriterion(\"tag =\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagNotEqualTo(String value) {\n            addCriterion(\"tag <>\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagGreaterThan(String value) {\n            addCriterion(\"tag >\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagGreaterThanOrEqualTo(String value) {\n            addCriterion(\"tag >=\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagLessThan(String value) {\n            addCriterion(\"tag <\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagLessThanOrEqualTo(String value) {\n            addCriterion(\"tag <=\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTagLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"tag <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTagLike(String value) {\n            addCriterion(\"tag like\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagNotLike(String value) {\n            addCriterion(\"tag not like\", value, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagIn(List<String> values) {\n            addCriterion(\"tag in\", values, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagNotIn(List<String> values) {\n            addCriterion(\"tag not in\", values, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagBetween(String value1, String value2) {\n            addCriterion(\"tag between\", value1, value2, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTagNotBetween(String value1, String value2) {\n            addCriterion(\"tag not between\", value1, value2, \"tag\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalIsNull() {\n            addCriterion(\"total is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalIsNotNull() {\n            addCriterion(\"total is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalEqualTo(Integer value) {\n            addCriterion(\"total =\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalNotEqualTo(Integer value) {\n            addCriterion(\"total <>\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalGreaterThan(Integer value) {\n            addCriterion(\"total >\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"total >=\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalLessThan(Integer value) {\n            addCriterion(\"total <\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalLessThanOrEqualTo(Integer value) {\n            addCriterion(\"total <=\", value, \"total\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTotalLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"total <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalIn(List<Integer> values) {\n            addCriterion(\"total in\", values, \"total\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalNotIn(List<Integer> values) {\n            addCriterion(\"total not in\", values, \"total\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalBetween(Integer value1, Integer value2) {\n            addCriterion(\"total between\", value1, value2, \"total\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTotalNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"total not between\", value1, value2, \"total\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIsNull() {\n            addCriterion(\"discount is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIsNotNull() {\n            addCriterion(\"discount is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountEqualTo(BigDecimal value) {\n            addCriterion(\"discount =\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotEqualTo(BigDecimal value) {\n            addCriterion(\"discount <>\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountGreaterThan(BigDecimal value) {\n            addCriterion(\"discount >\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"discount >=\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountLessThan(BigDecimal value) {\n            addCriterion(\"discount <\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"discount <=\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"discount <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIn(List<BigDecimal> values) {\n            addCriterion(\"discount in\", values, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotIn(List<BigDecimal> values) {\n            addCriterion(\"discount not in\", values, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"discount between\", value1, value2, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"discount not between\", value1, value2, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinIsNull() {\n            addCriterion(\"`min` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinIsNotNull() {\n            addCriterion(\"`min` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinEqualTo(BigDecimal value) {\n            addCriterion(\"`min` =\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinNotEqualTo(BigDecimal value) {\n            addCriterion(\"`min` <>\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinGreaterThan(BigDecimal value) {\n            addCriterion(\"`min` >\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"`min` >=\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinLessThan(BigDecimal value) {\n            addCriterion(\"`min` <\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"`min` <=\", value, \"min\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andMinLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`min` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMinIn(List<BigDecimal> values) {\n            addCriterion(\"`min` in\", values, \"min\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinNotIn(List<BigDecimal> values) {\n            addCriterion(\"`min` not in\", values, \"min\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"`min` between\", value1, value2, \"min\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMinNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"`min` not between\", value1, value2, \"min\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitIsNull() {\n            addCriterion(\"`limit` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitIsNotNull() {\n            addCriterion(\"`limit` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitEqualTo(Short value) {\n            addCriterion(\"`limit` =\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitNotEqualTo(Short value) {\n            addCriterion(\"`limit` <>\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitGreaterThan(Short value) {\n            addCriterion(\"`limit` >\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`limit` >=\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitLessThan(Short value) {\n            addCriterion(\"`limit` <\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitLessThanOrEqualTo(Short value) {\n            addCriterion(\"`limit` <=\", value, \"limit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLimitLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`limit` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitIn(List<Short> values) {\n            addCriterion(\"`limit` in\", values, \"limit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitNotIn(List<Short> values) {\n            addCriterion(\"`limit` not in\", values, \"limit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitBetween(Short value1, Short value2) {\n            addCriterion(\"`limit` between\", value1, value2, \"limit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLimitNotBetween(Short value1, Short value2) {\n            addCriterion(\"`limit` not between\", value1, value2, \"limit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Short value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Short value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Short value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Short value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Short value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Short> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Short> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Short value1, Short value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Short value1, Short value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Short value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Short value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Short value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Short value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Short> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Short> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Short value1, Short value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeIsNull() {\n            addCriterion(\"goods_type is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeIsNotNull() {\n            addCriterion(\"goods_type is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeEqualTo(Short value) {\n            addCriterion(\"goods_type =\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeNotEqualTo(Short value) {\n            addCriterion(\"goods_type <>\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeGreaterThan(Short value) {\n            addCriterion(\"goods_type >\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"goods_type >=\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeLessThan(Short value) {\n            addCriterion(\"goods_type <\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeLessThanOrEqualTo(Short value) {\n            addCriterion(\"goods_type <=\", value, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsTypeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_type <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeIn(List<Short> values) {\n            addCriterion(\"goods_type in\", values, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeNotIn(List<Short> values) {\n            addCriterion(\"goods_type not in\", values, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeBetween(Short value1, Short value2) {\n            addCriterion(\"goods_type between\", value1, value2, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsTypeNotBetween(Short value1, Short value2) {\n            addCriterion(\"goods_type not between\", value1, value2, \"goodsType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueIsNull() {\n            addCriterion(\"goods_value is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueIsNotNull() {\n            addCriterion(\"goods_value is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueEqualTo(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value =\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueNotEqualTo(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value <>\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueGreaterThan(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value >\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueGreaterThanOrEqualTo(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value >=\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueLessThan(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value <\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueLessThanOrEqualTo(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value <=\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsValueLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"goods_value <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueLike(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value like\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueNotLike(Integer[] value) {\n            addGoodsValueCriterion(\"goods_value not like\", value, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueIn(List<Integer[]> values) {\n            addGoodsValueCriterion(\"goods_value in\", values, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueNotIn(List<Integer[]> values) {\n            addGoodsValueCriterion(\"goods_value not in\", values, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueBetween(Integer[] value1, Integer[] value2) {\n            addGoodsValueCriterion(\"goods_value between\", value1, value2, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsValueNotBetween(Integer[] value1, Integer[] value2) {\n            addGoodsValueCriterion(\"goods_value not between\", value1, value2, \"goodsValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIsNull() {\n            addCriterion(\"code is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIsNotNull() {\n            addCriterion(\"code is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeEqualTo(String value) {\n            addCriterion(\"code =\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotEqualTo(String value) {\n            addCriterion(\"code <>\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeGreaterThan(String value) {\n            addCriterion(\"code >\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"code >=\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeLessThan(String value) {\n            addCriterion(\"code <\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeLessThanOrEqualTo(String value) {\n            addCriterion(\"code <=\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"code <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeLike(String value) {\n            addCriterion(\"code like\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotLike(String value) {\n            addCriterion(\"code not like\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIn(List<String> values) {\n            addCriterion(\"code in\", values, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotIn(List<String> values) {\n            addCriterion(\"code not in\", values, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeBetween(String value1, String value2) {\n            addCriterion(\"code between\", value1, value2, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotBetween(String value1, String value2) {\n            addCriterion(\"code not between\", value1, value2, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeIsNull() {\n            addCriterion(\"time_type is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeIsNotNull() {\n            addCriterion(\"time_type is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeEqualTo(Short value) {\n            addCriterion(\"time_type =\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeNotEqualTo(Short value) {\n            addCriterion(\"time_type <>\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeGreaterThan(Short value) {\n            addCriterion(\"time_type >\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"time_type >=\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeLessThan(Short value) {\n            addCriterion(\"time_type <\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeLessThanOrEqualTo(Short value) {\n            addCriterion(\"time_type <=\", value, \"timeType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andTimeTypeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"time_type <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeIn(List<Short> values) {\n            addCriterion(\"time_type in\", values, \"timeType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeNotIn(List<Short> values) {\n            addCriterion(\"time_type not in\", values, \"timeType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeBetween(Short value1, Short value2) {\n            addCriterion(\"time_type between\", value1, value2, \"timeType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTimeTypeNotBetween(Short value1, Short value2) {\n            addCriterion(\"time_type not between\", value1, value2, \"timeType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysIsNull() {\n            addCriterion(\"`days` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysIsNotNull() {\n            addCriterion(\"`days` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysEqualTo(Short value) {\n            addCriterion(\"`days` =\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysNotEqualTo(Short value) {\n            addCriterion(\"`days` <>\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysGreaterThan(Short value) {\n            addCriterion(\"`days` >\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`days` >=\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysLessThan(Short value) {\n            addCriterion(\"`days` <\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysLessThanOrEqualTo(Short value) {\n            addCriterion(\"`days` <=\", value, \"days\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDaysLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"`days` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysIn(List<Short> values) {\n            addCriterion(\"`days` in\", values, \"days\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysNotIn(List<Short> values) {\n            addCriterion(\"`days` not in\", values, \"days\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysBetween(Short value1, Short value2) {\n            addCriterion(\"`days` between\", value1, value2, \"days\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDaysNotBetween(Short value1, Short value2) {\n            addCriterion(\"`days` not between\", value1, value2, \"days\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNull() {\n            addCriterion(\"start_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNotNull() {\n            addCriterion(\"start_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time =\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <>\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"start_time >\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time >=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThan(LocalDateTime value) {\n            addCriterion(\"start_time <\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"start_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time not in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time not between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNull() {\n            addCriterion(\"end_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNotNull() {\n            addCriterion(\"end_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time =\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <>\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"end_time >\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time >=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThan(LocalDateTime value) {\n            addCriterion(\"end_time <\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"end_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time not in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time not between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallCoupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        private LitemallCouponExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCouponExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public LitemallCouponExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallCoupon.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallCoupon.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_coupon\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCouponExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCouponUser.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallCouponUser {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.coupon_id\n     *\n     * @mbg.generated\n     */\n    private Integer couponId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.status\n     *\n     * @mbg.generated\n     */\n    private Short status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.used_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime usedTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.start_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime startTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.end_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime endTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.order_id\n     *\n     * @mbg.generated\n     */\n    private Integer orderId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_coupon_user.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.id\n     *\n     * @return the value of litemall_coupon_user.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.id\n     *\n     * @param id the value for litemall_coupon_user.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.user_id\n     *\n     * @return the value of litemall_coupon_user.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.user_id\n     *\n     * @param userId the value for litemall_coupon_user.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.coupon_id\n     *\n     * @return the value of litemall_coupon_user.coupon_id\n     *\n     * @mbg.generated\n     */\n    public Integer getCouponId() {\n        return couponId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.coupon_id\n     *\n     * @param couponId the value for litemall_coupon_user.coupon_id\n     *\n     * @mbg.generated\n     */\n    public void setCouponId(Integer couponId) {\n        this.couponId = couponId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.status\n     *\n     * @return the value of litemall_coupon_user.status\n     *\n     * @mbg.generated\n     */\n    public Short getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.status\n     *\n     * @param status the value for litemall_coupon_user.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Short status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.used_time\n     *\n     * @return the value of litemall_coupon_user.used_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUsedTime() {\n        return usedTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.used_time\n     *\n     * @param usedTime the value for litemall_coupon_user.used_time\n     *\n     * @mbg.generated\n     */\n    public void setUsedTime(LocalDateTime usedTime) {\n        this.usedTime = usedTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.start_time\n     *\n     * @return the value of litemall_coupon_user.start_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getStartTime() {\n        return startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.start_time\n     *\n     * @param startTime the value for litemall_coupon_user.start_time\n     *\n     * @mbg.generated\n     */\n    public void setStartTime(LocalDateTime startTime) {\n        this.startTime = startTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.end_time\n     *\n     * @return the value of litemall_coupon_user.end_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getEndTime() {\n        return endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.end_time\n     *\n     * @param endTime the value for litemall_coupon_user.end_time\n     *\n     * @mbg.generated\n     */\n    public void setEndTime(LocalDateTime endTime) {\n        this.endTime = endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.order_id\n     *\n     * @return the value of litemall_coupon_user.order_id\n     *\n     * @mbg.generated\n     */\n    public Integer getOrderId() {\n        return orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.order_id\n     *\n     * @param orderId the value for litemall_coupon_user.order_id\n     *\n     * @mbg.generated\n     */\n    public void setOrderId(Integer orderId) {\n        this.orderId = orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.add_time\n     *\n     * @return the value of litemall_coupon_user.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.add_time\n     *\n     * @param addTime the value for litemall_coupon_user.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.update_time\n     *\n     * @return the value of litemall_coupon_user.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.update_time\n     *\n     * @param updateTime the value for litemall_coupon_user.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_coupon_user.deleted\n     *\n     * @return the value of litemall_coupon_user.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_coupon_user.deleted\n     *\n     * @param deleted the value for litemall_coupon_user.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", couponId=\").append(couponId);\n        sb.append(\", status=\").append(status);\n        sb.append(\", usedTime=\").append(usedTime);\n        sb.append(\", startTime=\").append(startTime);\n        sb.append(\", endTime=\").append(endTime);\n        sb.append(\", orderId=\").append(orderId);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallCouponUser other = (LitemallCouponUser) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getCouponId() == null ? other.getCouponId() == null : this.getCouponId().equals(other.getCouponId()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getUsedTime() == null ? other.getUsedTime() == null : this.getUsedTime().equals(other.getUsedTime()))\n            && (this.getStartTime() == null ? other.getStartTime() == null : this.getStartTime().equals(other.getStartTime()))\n            && (this.getEndTime() == null ? other.getEndTime() == null : this.getEndTime().equals(other.getEndTime()))\n            && (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getCouponId() == null) ? 0 : getCouponId().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getUsedTime() == null) ? 0 : getUsedTime().hashCode());\n        result = prime * result + ((getStartTime() == null) ? 0 : getStartTime().hashCode());\n        result = prime * result + ((getEndTime() == null) ? 0 : getEndTime().hashCode());\n        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        couponId(\"coupon_id\", \"couponId\", \"INTEGER\", false),\n        status(\"status\", \"status\", \"SMALLINT\", true),\n        usedTime(\"used_time\", \"usedTime\", \"TIMESTAMP\", false),\n        startTime(\"start_time\", \"startTime\", \"TIMESTAMP\", false),\n        endTime(\"end_time\", \"endTime\", \"TIMESTAMP\", false),\n        orderId(\"order_id\", \"orderId\", \"INTEGER\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallCouponUserExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallCouponUserExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponUserExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponUserExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponUserExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponUserExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public LitemallCouponUserExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdIsNull() {\n            addCriterion(\"coupon_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdIsNotNull() {\n            addCriterion(\"coupon_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdEqualTo(Integer value) {\n            addCriterion(\"coupon_id =\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdNotEqualTo(Integer value) {\n            addCriterion(\"coupon_id <>\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdGreaterThan(Integer value) {\n            addCriterion(\"coupon_id >\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"coupon_id >=\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdLessThan(Integer value) {\n            addCriterion(\"coupon_id <\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"coupon_id <=\", value, \"couponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponIdLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"coupon_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdIn(List<Integer> values) {\n            addCriterion(\"coupon_id in\", values, \"couponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdNotIn(List<Integer> values) {\n            addCriterion(\"coupon_id not in\", values, \"couponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"coupon_id between\", value1, value2, \"couponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"coupon_id not between\", value1, value2, \"couponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Short value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Short value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Short value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Short value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Short> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Short> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Short value1, Short value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeIsNull() {\n            addCriterion(\"used_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeIsNotNull() {\n            addCriterion(\"used_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"used_time =\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"used_time <>\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"used_time >\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"used_time >=\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeLessThan(LocalDateTime value) {\n            addCriterion(\"used_time <\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"used_time <=\", value, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsedTimeLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"used_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"used_time in\", values, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"used_time not in\", values, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"used_time between\", value1, value2, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsedTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"used_time not between\", value1, value2, \"usedTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNull() {\n            addCriterion(\"start_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIsNotNull() {\n            addCriterion(\"start_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time =\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <>\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"start_time >\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time >=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThan(LocalDateTime value) {\n            addCriterion(\"start_time <\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"start_time <=\", value, \"startTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStartTimeLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"start_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"start_time not in\", values, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStartTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"start_time not between\", value1, value2, \"startTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNull() {\n            addCriterion(\"end_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNotNull() {\n            addCriterion(\"end_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time =\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <>\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"end_time >\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time >=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThan(LocalDateTime value) {\n            addCriterion(\"end_time <\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"end_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time not in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time not between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNull() {\n            addCriterion(\"order_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNotNull() {\n            addCriterion(\"order_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdEqualTo(Integer value) {\n            addCriterion(\"order_id =\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotEqualTo(Integer value) {\n            addCriterion(\"order_id <>\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThan(Integer value) {\n            addCriterion(\"order_id >\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id >=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThan(Integer value) {\n            addCriterion(\"order_id <\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id <=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"order_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIn(List<Integer> values) {\n            addCriterion(\"order_id in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotIn(List<Integer> values) {\n            addCriterion(\"order_id not in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id not between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallCouponUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        private LitemallCouponUserExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallCouponUserExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public LitemallCouponUserExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallCouponUser.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallCouponUser.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_coupon_user\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_coupon_user\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_coupon_user\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallCouponUserExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallFeedback.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallFeedback {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.username\n     *\n     * @mbg.generated\n     */\n    private String username;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.mobile\n     *\n     * @mbg.generated\n     */\n    private String mobile;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.feed_type\n     *\n     * @mbg.generated\n     */\n    private String feedType;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.content\n     *\n     * @mbg.generated\n     */\n    private String content;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.status\n     *\n     * @mbg.generated\n     */\n    private Integer status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.has_picture\n     *\n     * @mbg.generated\n     */\n    private Boolean hasPicture;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.pic_urls\n     *\n     * @mbg.generated\n     */\n    private String[] picUrls;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_feedback.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.id\n     *\n     * @return the value of litemall_feedback.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.id\n     *\n     * @param id the value for litemall_feedback.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.user_id\n     *\n     * @return the value of litemall_feedback.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.user_id\n     *\n     * @param userId the value for litemall_feedback.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.username\n     *\n     * @return the value of litemall_feedback.username\n     *\n     * @mbg.generated\n     */\n    public String getUsername() {\n        return username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.username\n     *\n     * @param username the value for litemall_feedback.username\n     *\n     * @mbg.generated\n     */\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.mobile\n     *\n     * @return the value of litemall_feedback.mobile\n     *\n     * @mbg.generated\n     */\n    public String getMobile() {\n        return mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.mobile\n     *\n     * @param mobile the value for litemall_feedback.mobile\n     *\n     * @mbg.generated\n     */\n    public void setMobile(String mobile) {\n        this.mobile = mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.feed_type\n     *\n     * @return the value of litemall_feedback.feed_type\n     *\n     * @mbg.generated\n     */\n    public String getFeedType() {\n        return feedType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.feed_type\n     *\n     * @param feedType the value for litemall_feedback.feed_type\n     *\n     * @mbg.generated\n     */\n    public void setFeedType(String feedType) {\n        this.feedType = feedType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.content\n     *\n     * @return the value of litemall_feedback.content\n     *\n     * @mbg.generated\n     */\n    public String getContent() {\n        return content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.content\n     *\n     * @param content the value for litemall_feedback.content\n     *\n     * @mbg.generated\n     */\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.status\n     *\n     * @return the value of litemall_feedback.status\n     *\n     * @mbg.generated\n     */\n    public Integer getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.status\n     *\n     * @param status the value for litemall_feedback.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Integer status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.has_picture\n     *\n     * @return the value of litemall_feedback.has_picture\n     *\n     * @mbg.generated\n     */\n    public Boolean getHasPicture() {\n        return hasPicture;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.has_picture\n     *\n     * @param hasPicture the value for litemall_feedback.has_picture\n     *\n     * @mbg.generated\n     */\n    public void setHasPicture(Boolean hasPicture) {\n        this.hasPicture = hasPicture;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.pic_urls\n     *\n     * @return the value of litemall_feedback.pic_urls\n     *\n     * @mbg.generated\n     */\n    public String[] getPicUrls() {\n        return picUrls;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.pic_urls\n     *\n     * @param picUrls the value for litemall_feedback.pic_urls\n     *\n     * @mbg.generated\n     */\n    public void setPicUrls(String[] picUrls) {\n        this.picUrls = picUrls;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.add_time\n     *\n     * @return the value of litemall_feedback.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.add_time\n     *\n     * @param addTime the value for litemall_feedback.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.update_time\n     *\n     * @return the value of litemall_feedback.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.update_time\n     *\n     * @param updateTime the value for litemall_feedback.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_feedback.deleted\n     *\n     * @return the value of litemall_feedback.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_feedback.deleted\n     *\n     * @param deleted the value for litemall_feedback.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", username=\").append(username);\n        sb.append(\", mobile=\").append(mobile);\n        sb.append(\", feedType=\").append(feedType);\n        sb.append(\", content=\").append(content);\n        sb.append(\", status=\").append(status);\n        sb.append(\", hasPicture=\").append(hasPicture);\n        sb.append(\", picUrls=\").append(picUrls);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallFeedback other = (LitemallFeedback) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))\n            && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile()))\n            && (this.getFeedType() == null ? other.getFeedType() == null : this.getFeedType().equals(other.getFeedType()))\n            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getHasPicture() == null ? other.getHasPicture() == null : this.getHasPicture().equals(other.getHasPicture()))\n            && (Arrays.equals(this.getPicUrls(), other.getPicUrls()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());\n        result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode());\n        result = prime * result + ((getFeedType() == null) ? 0 : getFeedType().hashCode());\n        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getHasPicture() == null) ? 0 : getHasPicture().hashCode());\n        result = prime * result + (Arrays.hashCode(getPicUrls()));\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        username(\"username\", \"username\", \"VARCHAR\", false),\n        mobile(\"mobile\", \"mobile\", \"VARCHAR\", false),\n        feedType(\"feed_type\", \"feedType\", \"VARCHAR\", false),\n        content(\"content\", \"content\", \"VARCHAR\", false),\n        status(\"status\", \"status\", \"INTEGER\", true),\n        hasPicture(\"has_picture\", \"hasPicture\", \"BIT\", false),\n        picUrls(\"pic_urls\", \"picUrls\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallFeedbackExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallFeedbackExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public LitemallFeedbackExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public LitemallFeedbackExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public LitemallFeedbackExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallFeedbackExample example = new LitemallFeedbackExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public LitemallFeedbackExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public LitemallFeedbackExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> picUrlsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            picUrlsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getPicUrlsCriteria() {\n            return picUrlsCriteria;\n        }\n\n        protected void addPicUrlsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            picUrlsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addPicUrlsCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            picUrlsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || picUrlsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(picUrlsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNull() {\n            addCriterion(\"username is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNotNull() {\n            addCriterion(\"username is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameEqualTo(String value) {\n            addCriterion(\"username =\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotEqualTo(String value) {\n            addCriterion(\"username <>\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThan(String value) {\n            addCriterion(\"username >\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"username >=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThan(String value) {\n            addCriterion(\"username <\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThanOrEqualTo(String value) {\n            addCriterion(\"username <=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"username <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLike(String value) {\n            addCriterion(\"username like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotLike(String value) {\n            addCriterion(\"username not like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIn(List<String> values) {\n            addCriterion(\"username in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotIn(List<String> values) {\n            addCriterion(\"username not in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameBetween(String value1, String value2) {\n            addCriterion(\"username between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotBetween(String value1, String value2) {\n            addCriterion(\"username not between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNull() {\n            addCriterion(\"mobile is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNotNull() {\n            addCriterion(\"mobile is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileEqualTo(String value) {\n            addCriterion(\"mobile =\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotEqualTo(String value) {\n            addCriterion(\"mobile <>\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThan(String value) {\n            addCriterion(\"mobile >\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThanOrEqualTo(String value) {\n            addCriterion(\"mobile >=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThan(String value) {\n            addCriterion(\"mobile <\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThanOrEqualTo(String value) {\n            addCriterion(\"mobile <=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"mobile <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLike(String value) {\n            addCriterion(\"mobile like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotLike(String value) {\n            addCriterion(\"mobile not like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIn(List<String> values) {\n            addCriterion(\"mobile in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotIn(List<String> values) {\n            addCriterion(\"mobile not in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileBetween(String value1, String value2) {\n            addCriterion(\"mobile between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotBetween(String value1, String value2) {\n            addCriterion(\"mobile not between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeIsNull() {\n            addCriterion(\"feed_type is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeIsNotNull() {\n            addCriterion(\"feed_type is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeEqualTo(String value) {\n            addCriterion(\"feed_type =\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeNotEqualTo(String value) {\n            addCriterion(\"feed_type <>\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeGreaterThan(String value) {\n            addCriterion(\"feed_type >\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"feed_type >=\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeLessThan(String value) {\n            addCriterion(\"feed_type <\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeLessThanOrEqualTo(String value) {\n            addCriterion(\"feed_type <=\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andFeedTypeLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"feed_type <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeLike(String value) {\n            addCriterion(\"feed_type like\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeNotLike(String value) {\n            addCriterion(\"feed_type not like\", value, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeIn(List<String> values) {\n            addCriterion(\"feed_type in\", values, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeNotIn(List<String> values) {\n            addCriterion(\"feed_type not in\", values, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeBetween(String value1, String value2) {\n            addCriterion(\"feed_type between\", value1, value2, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFeedTypeNotBetween(String value1, String value2) {\n            addCriterion(\"feed_type not between\", value1, value2, \"feedType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNull() {\n            addCriterion(\"content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNotNull() {\n            addCriterion(\"content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentEqualTo(String value) {\n            addCriterion(\"content =\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotEqualTo(String value) {\n            addCriterion(\"content <>\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThan(String value) {\n            addCriterion(\"content >\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"content >=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThan(String value) {\n            addCriterion(\"content <\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThanOrEqualTo(String value) {\n            addCriterion(\"content <=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLike(String value) {\n            addCriterion(\"content like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotLike(String value) {\n            addCriterion(\"content not like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIn(List<String> values) {\n            addCriterion(\"content in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotIn(List<String> values) {\n            addCriterion(\"content not in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentBetween(String value1, String value2) {\n            addCriterion(\"content between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotBetween(String value1, String value2) {\n            addCriterion(\"content not between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Integer value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Integer value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Integer value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Integer value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Integer value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Integer> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Integer> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Integer value1, Integer value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIsNull() {\n            addCriterion(\"has_picture is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIsNotNull() {\n            addCriterion(\"has_picture is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureEqualTo(Boolean value) {\n            addCriterion(\"has_picture =\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotEqualTo(Boolean value) {\n            addCriterion(\"has_picture <>\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureGreaterThan(Boolean value) {\n            addCriterion(\"has_picture >\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"has_picture >=\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureLessThan(Boolean value) {\n            addCriterion(\"has_picture <\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"has_picture <=\", value, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andHasPictureLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"has_picture <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureIn(List<Boolean> values) {\n            addCriterion(\"has_picture in\", values, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotIn(List<Boolean> values) {\n            addCriterion(\"has_picture not in\", values, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"has_picture between\", value1, value2, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andHasPictureNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"has_picture not between\", value1, value2, \"hasPicture\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIsNull() {\n            addCriterion(\"pic_urls is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIsNotNull() {\n            addCriterion(\"pic_urls is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls =\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <>\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsGreaterThan(String[] value) {\n            addPicUrlsCriterion(\"pic_urls >\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsGreaterThanOrEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls >=\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLessThan(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLessThanOrEqualTo(String[] value) {\n            addPicUrlsCriterion(\"pic_urls <=\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlsLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"pic_urls <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsLike(String[] value) {\n            addPicUrlsCriterion(\"pic_urls like\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotLike(String[] value) {\n            addPicUrlsCriterion(\"pic_urls not like\", value, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsIn(List<String[]> values) {\n            addPicUrlsCriterion(\"pic_urls in\", values, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotIn(List<String[]> values) {\n            addPicUrlsCriterion(\"pic_urls not in\", values, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsBetween(String[] value1, String[] value2) {\n            addPicUrlsCriterion(\"pic_urls between\", value1, value2, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlsNotBetween(String[] value1, String[] value2) {\n            addPicUrlsCriterion(\"pic_urls not between\", value1, value2, \"picUrls\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallFeedback.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        private LitemallFeedbackExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallFeedbackExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public LitemallFeedbackExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallFeedback.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallFeedback.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_feedback\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_feedback\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_feedback\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallFeedbackExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallFootprint.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallFootprint {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_footprint.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.id\n     *\n     * @return the value of litemall_footprint.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.id\n     *\n     * @param id the value for litemall_footprint.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.user_id\n     *\n     * @return the value of litemall_footprint.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.user_id\n     *\n     * @param userId the value for litemall_footprint.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.goods_id\n     *\n     * @return the value of litemall_footprint.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.goods_id\n     *\n     * @param goodsId the value for litemall_footprint.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.add_time\n     *\n     * @return the value of litemall_footprint.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.add_time\n     *\n     * @param addTime the value for litemall_footprint.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.update_time\n     *\n     * @return the value of litemall_footprint.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.update_time\n     *\n     * @param updateTime the value for litemall_footprint.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_footprint.deleted\n     *\n     * @return the value of litemall_footprint.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_footprint.deleted\n     *\n     * @param deleted the value for litemall_footprint.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallFootprint other = (LitemallFootprint) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallFootprintExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallFootprintExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public LitemallFootprintExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public LitemallFootprintExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public LitemallFootprintExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallFootprintExample example = new LitemallFootprintExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public LitemallFootprintExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public LitemallFootprintExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallFootprint.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        private LitemallFootprintExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallFootprintExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public LitemallFootprintExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallFootprint.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallFootprint.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_footprint\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_footprint\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_footprint\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallFootprintExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoods.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGoods {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    private String goodsSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.category_id\n     *\n     * @mbg.generated\n     */\n    private Integer categoryId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.brand_id\n     *\n     * @mbg.generated\n     */\n    private Integer brandId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.gallery\n     *\n     * @mbg.generated\n     */\n    private String[] gallery;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.keywords\n     *\n     * @mbg.generated\n     */\n    private String keywords;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.brief\n     *\n     * @mbg.generated\n     */\n    private String brief;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.is_on_sale\n     *\n     * @mbg.generated\n     */\n    private Boolean isOnSale;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.sort_order\n     *\n     * @mbg.generated\n     */\n    private Short sortOrder;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.share_url\n     *\n     * @mbg.generated\n     */\n    private String shareUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.is_new\n     *\n     * @mbg.generated\n     */\n    private Boolean isNew;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.is_hot\n     *\n     * @mbg.generated\n     */\n    private Boolean isHot;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.unit\n     *\n     * @mbg.generated\n     */\n    private String unit;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.counter_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal counterPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.retail_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal retailPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods.detail\n     *\n     * @mbg.generated\n     */\n    private String detail;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.id\n     *\n     * @return the value of litemall_goods.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.id\n     *\n     * @param id the value for litemall_goods.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.goods_sn\n     *\n     * @return the value of litemall_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    public String getGoodsSn() {\n        return goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.goods_sn\n     *\n     * @param goodsSn the value for litemall_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    public void setGoodsSn(String goodsSn) {\n        this.goodsSn = goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.name\n     *\n     * @return the value of litemall_goods.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.name\n     *\n     * @param name the value for litemall_goods.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.category_id\n     *\n     * @return the value of litemall_goods.category_id\n     *\n     * @mbg.generated\n     */\n    public Integer getCategoryId() {\n        return categoryId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.category_id\n     *\n     * @param categoryId the value for litemall_goods.category_id\n     *\n     * @mbg.generated\n     */\n    public void setCategoryId(Integer categoryId) {\n        this.categoryId = categoryId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.brand_id\n     *\n     * @return the value of litemall_goods.brand_id\n     *\n     * @mbg.generated\n     */\n    public Integer getBrandId() {\n        return brandId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.brand_id\n     *\n     * @param brandId the value for litemall_goods.brand_id\n     *\n     * @mbg.generated\n     */\n    public void setBrandId(Integer brandId) {\n        this.brandId = brandId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.gallery\n     *\n     * @return the value of litemall_goods.gallery\n     *\n     * @mbg.generated\n     */\n    public String[] getGallery() {\n        return gallery;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.gallery\n     *\n     * @param gallery the value for litemall_goods.gallery\n     *\n     * @mbg.generated\n     */\n    public void setGallery(String[] gallery) {\n        this.gallery = gallery;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.keywords\n     *\n     * @return the value of litemall_goods.keywords\n     *\n     * @mbg.generated\n     */\n    public String getKeywords() {\n        return keywords;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.keywords\n     *\n     * @param keywords the value for litemall_goods.keywords\n     *\n     * @mbg.generated\n     */\n    public void setKeywords(String keywords) {\n        this.keywords = keywords;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.brief\n     *\n     * @return the value of litemall_goods.brief\n     *\n     * @mbg.generated\n     */\n    public String getBrief() {\n        return brief;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.brief\n     *\n     * @param brief the value for litemall_goods.brief\n     *\n     * @mbg.generated\n     */\n    public void setBrief(String brief) {\n        this.brief = brief;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.is_on_sale\n     *\n     * @return the value of litemall_goods.is_on_sale\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsOnSale() {\n        return isOnSale;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.is_on_sale\n     *\n     * @param isOnSale the value for litemall_goods.is_on_sale\n     *\n     * @mbg.generated\n     */\n    public void setIsOnSale(Boolean isOnSale) {\n        this.isOnSale = isOnSale;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.sort_order\n     *\n     * @return the value of litemall_goods.sort_order\n     *\n     * @mbg.generated\n     */\n    public Short getSortOrder() {\n        return sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.sort_order\n     *\n     * @param sortOrder the value for litemall_goods.sort_order\n     *\n     * @mbg.generated\n     */\n    public void setSortOrder(Short sortOrder) {\n        this.sortOrder = sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.pic_url\n     *\n     * @return the value of litemall_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.pic_url\n     *\n     * @param picUrl the value for litemall_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.share_url\n     *\n     * @return the value of litemall_goods.share_url\n     *\n     * @mbg.generated\n     */\n    public String getShareUrl() {\n        return shareUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.share_url\n     *\n     * @param shareUrl the value for litemall_goods.share_url\n     *\n     * @mbg.generated\n     */\n    public void setShareUrl(String shareUrl) {\n        this.shareUrl = shareUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.is_new\n     *\n     * @return the value of litemall_goods.is_new\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsNew() {\n        return isNew;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.is_new\n     *\n     * @param isNew the value for litemall_goods.is_new\n     *\n     * @mbg.generated\n     */\n    public void setIsNew(Boolean isNew) {\n        this.isNew = isNew;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.is_hot\n     *\n     * @return the value of litemall_goods.is_hot\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsHot() {\n        return isHot;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.is_hot\n     *\n     * @param isHot the value for litemall_goods.is_hot\n     *\n     * @mbg.generated\n     */\n    public void setIsHot(Boolean isHot) {\n        this.isHot = isHot;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.unit\n     *\n     * @return the value of litemall_goods.unit\n     *\n     * @mbg.generated\n     */\n    public String getUnit() {\n        return unit;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.unit\n     *\n     * @param unit the value for litemall_goods.unit\n     *\n     * @mbg.generated\n     */\n    public void setUnit(String unit) {\n        this.unit = unit;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.counter_price\n     *\n     * @return the value of litemall_goods.counter_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getCounterPrice() {\n        return counterPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.counter_price\n     *\n     * @param counterPrice the value for litemall_goods.counter_price\n     *\n     * @mbg.generated\n     */\n    public void setCounterPrice(BigDecimal counterPrice) {\n        this.counterPrice = counterPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.retail_price\n     *\n     * @return the value of litemall_goods.retail_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getRetailPrice() {\n        return retailPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.retail_price\n     *\n     * @param retailPrice the value for litemall_goods.retail_price\n     *\n     * @mbg.generated\n     */\n    public void setRetailPrice(BigDecimal retailPrice) {\n        this.retailPrice = retailPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.add_time\n     *\n     * @return the value of litemall_goods.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.add_time\n     *\n     * @param addTime the value for litemall_goods.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.update_time\n     *\n     * @return the value of litemall_goods.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.update_time\n     *\n     * @param updateTime the value for litemall_goods.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.deleted\n     *\n     * @return the value of litemall_goods.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.deleted\n     *\n     * @param deleted the value for litemall_goods.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods.detail\n     *\n     * @return the value of litemall_goods.detail\n     *\n     * @mbg.generated\n     */\n    public String getDetail() {\n        return detail;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods.detail\n     *\n     * @param detail the value for litemall_goods.detail\n     *\n     * @mbg.generated\n     */\n    public void setDetail(String detail) {\n        this.detail = detail;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", goodsSn=\").append(goodsSn);\n        sb.append(\", name=\").append(name);\n        sb.append(\", categoryId=\").append(categoryId);\n        sb.append(\", brandId=\").append(brandId);\n        sb.append(\", gallery=\").append(gallery);\n        sb.append(\", keywords=\").append(keywords);\n        sb.append(\", brief=\").append(brief);\n        sb.append(\", isOnSale=\").append(isOnSale);\n        sb.append(\", sortOrder=\").append(sortOrder);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", shareUrl=\").append(shareUrl);\n        sb.append(\", isNew=\").append(isNew);\n        sb.append(\", isHot=\").append(isHot);\n        sb.append(\", unit=\").append(unit);\n        sb.append(\", counterPrice=\").append(counterPrice);\n        sb.append(\", retailPrice=\").append(retailPrice);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\", detail=\").append(detail);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGoods other = (LitemallGoods) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getGoodsSn() == null ? other.getGoodsSn() == null : this.getGoodsSn().equals(other.getGoodsSn()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getCategoryId() == null ? other.getCategoryId() == null : this.getCategoryId().equals(other.getCategoryId()))\n            && (this.getBrandId() == null ? other.getBrandId() == null : this.getBrandId().equals(other.getBrandId()))\n            && (Arrays.equals(this.getGallery(), other.getGallery()))\n            && (this.getKeywords() == null ? other.getKeywords() == null : this.getKeywords().equals(other.getKeywords()))\n            && (this.getBrief() == null ? other.getBrief() == null : this.getBrief().equals(other.getBrief()))\n            && (this.getIsOnSale() == null ? other.getIsOnSale() == null : this.getIsOnSale().equals(other.getIsOnSale()))\n            && (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getShareUrl() == null ? other.getShareUrl() == null : this.getShareUrl().equals(other.getShareUrl()))\n            && (this.getIsNew() == null ? other.getIsNew() == null : this.getIsNew().equals(other.getIsNew()))\n            && (this.getIsHot() == null ? other.getIsHot() == null : this.getIsHot().equals(other.getIsHot()))\n            && (this.getUnit() == null ? other.getUnit() == null : this.getUnit().equals(other.getUnit()))\n            && (this.getCounterPrice() == null ? other.getCounterPrice() == null : this.getCounterPrice().equals(other.getCounterPrice()))\n            && (this.getRetailPrice() == null ? other.getRetailPrice() == null : this.getRetailPrice().equals(other.getRetailPrice()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()))\n            && (this.getDetail() == null ? other.getDetail() == null : this.getDetail().equals(other.getDetail()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getGoodsSn() == null) ? 0 : getGoodsSn().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getCategoryId() == null) ? 0 : getCategoryId().hashCode());\n        result = prime * result + ((getBrandId() == null) ? 0 : getBrandId().hashCode());\n        result = prime * result + (Arrays.hashCode(getGallery()));\n        result = prime * result + ((getKeywords() == null) ? 0 : getKeywords().hashCode());\n        result = prime * result + ((getBrief() == null) ? 0 : getBrief().hashCode());\n        result = prime * result + ((getIsOnSale() == null) ? 0 : getIsOnSale().hashCode());\n        result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getShareUrl() == null) ? 0 : getShareUrl().hashCode());\n        result = prime * result + ((getIsNew() == null) ? 0 : getIsNew().hashCode());\n        result = prime * result + ((getIsHot() == null) ? 0 : getIsHot().hashCode());\n        result = prime * result + ((getUnit() == null) ? 0 : getUnit().hashCode());\n        result = prime * result + ((getCounterPrice() == null) ? 0 : getCounterPrice().hashCode());\n        result = prime * result + ((getRetailPrice() == null) ? 0 : getRetailPrice().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        result = prime * result + ((getDetail() == null) ? 0 : getDetail().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        goodsSn(\"goods_sn\", \"goodsSn\", \"VARCHAR\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        categoryId(\"category_id\", \"categoryId\", \"INTEGER\", false),\n        brandId(\"brand_id\", \"brandId\", \"INTEGER\", false),\n        gallery(\"gallery\", \"gallery\", \"VARCHAR\", false),\n        keywords(\"keywords\", \"keywords\", \"VARCHAR\", false),\n        brief(\"brief\", \"brief\", \"VARCHAR\", false),\n        isOnSale(\"is_on_sale\", \"isOnSale\", \"BIT\", false),\n        sortOrder(\"sort_order\", \"sortOrder\", \"SMALLINT\", false),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        shareUrl(\"share_url\", \"shareUrl\", \"VARCHAR\", false),\n        isNew(\"is_new\", \"isNew\", \"BIT\", false),\n        isHot(\"is_hot\", \"isHot\", \"BIT\", false),\n        unit(\"unit\", \"unit\", \"VARCHAR\", false),\n        counterPrice(\"counter_price\", \"counterPrice\", \"DECIMAL\", false),\n        retailPrice(\"retail_price\", \"retailPrice\", \"DECIMAL\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false),\n        detail(\"detail\", \"detail\", \"LONGVARCHAR\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsAttribute.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGoodsAttribute {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.attribute\n     *\n     * @mbg.generated\n     */\n    private String attribute;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.value\n     *\n     * @mbg.generated\n     */\n    private String value;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_attribute.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.id\n     *\n     * @return the value of litemall_goods_attribute.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.id\n     *\n     * @param id the value for litemall_goods_attribute.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.goods_id\n     *\n     * @return the value of litemall_goods_attribute.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.goods_id\n     *\n     * @param goodsId the value for litemall_goods_attribute.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.attribute\n     *\n     * @return the value of litemall_goods_attribute.attribute\n     *\n     * @mbg.generated\n     */\n    public String getAttribute() {\n        return attribute;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.attribute\n     *\n     * @param attribute the value for litemall_goods_attribute.attribute\n     *\n     * @mbg.generated\n     */\n    public void setAttribute(String attribute) {\n        this.attribute = attribute;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.value\n     *\n     * @return the value of litemall_goods_attribute.value\n     *\n     * @mbg.generated\n     */\n    public String getValue() {\n        return value;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.value\n     *\n     * @param value the value for litemall_goods_attribute.value\n     *\n     * @mbg.generated\n     */\n    public void setValue(String value) {\n        this.value = value;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.add_time\n     *\n     * @return the value of litemall_goods_attribute.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.add_time\n     *\n     * @param addTime the value for litemall_goods_attribute.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.update_time\n     *\n     * @return the value of litemall_goods_attribute.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.update_time\n     *\n     * @param updateTime the value for litemall_goods_attribute.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_attribute.deleted\n     *\n     * @return the value of litemall_goods_attribute.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_attribute.deleted\n     *\n     * @param deleted the value for litemall_goods_attribute.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", attribute=\").append(attribute);\n        sb.append(\", value=\").append(value);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGoodsAttribute other = (LitemallGoodsAttribute) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getAttribute() == null ? other.getAttribute() == null : this.getAttribute().equals(other.getAttribute()))\n            && (this.getValue() == null ? other.getValue() == null : this.getValue().equals(other.getValue()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getAttribute() == null) ? 0 : getAttribute().hashCode());\n        result = prime * result + ((getValue() == null) ? 0 : getValue().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        attribute(\"attribute\", \"attribute\", \"VARCHAR\", true),\n        value(\"value\", \"value\", \"VARCHAR\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsAttributeExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGoodsAttributeExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsAttributeExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsAttributeExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsAttributeExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGoodsAttributeExample example = new LitemallGoodsAttributeExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsAttributeExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsAttributeExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeIsNull() {\n            addCriterion(\"`attribute` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeIsNotNull() {\n            addCriterion(\"`attribute` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeEqualTo(String value) {\n            addCriterion(\"`attribute` =\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeNotEqualTo(String value) {\n            addCriterion(\"`attribute` <>\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeGreaterThan(String value) {\n            addCriterion(\"`attribute` >\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`attribute` >=\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeLessThan(String value) {\n            addCriterion(\"`attribute` <\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeLessThanOrEqualTo(String value) {\n            addCriterion(\"`attribute` <=\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAttributeLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`attribute` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeLike(String value) {\n            addCriterion(\"`attribute` like\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeNotLike(String value) {\n            addCriterion(\"`attribute` not like\", value, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeIn(List<String> values) {\n            addCriterion(\"`attribute` in\", values, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeNotIn(List<String> values) {\n            addCriterion(\"`attribute` not in\", values, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeBetween(String value1, String value2) {\n            addCriterion(\"`attribute` between\", value1, value2, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAttributeNotBetween(String value1, String value2) {\n            addCriterion(\"`attribute` not between\", value1, value2, \"attribute\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIsNull() {\n            addCriterion(\"`value` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIsNotNull() {\n            addCriterion(\"`value` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueEqualTo(String value) {\n            addCriterion(\"`value` =\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotEqualTo(String value) {\n            addCriterion(\"`value` <>\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueGreaterThan(String value) {\n            addCriterion(\"`value` >\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`value` >=\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLessThan(String value) {\n            addCriterion(\"`value` <\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLessThanOrEqualTo(String value) {\n            addCriterion(\"`value` <=\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"`value` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLike(String value) {\n            addCriterion(\"`value` like\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotLike(String value) {\n            addCriterion(\"`value` not like\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIn(List<String> values) {\n            addCriterion(\"`value` in\", values, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotIn(List<String> values) {\n            addCriterion(\"`value` not in\", values, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueBetween(String value1, String value2) {\n            addCriterion(\"`value` between\", value1, value2, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotBetween(String value1, String value2) {\n            addCriterion(\"`value` not between\", value1, value2, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGoodsAttribute.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        private LitemallGoodsAttributeExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGoodsAttributeExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public LitemallGoodsAttributeExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGoodsAttribute.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGoodsAttribute.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_goods_attribute\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_attribute\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_attribute\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGoodsExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> galleryCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            galleryCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getGalleryCriteria() {\n            return galleryCriteria;\n        }\n\n        protected void addGalleryCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            galleryCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addGalleryCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            galleryCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || galleryCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(galleryCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNull() {\n            addCriterion(\"goods_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNotNull() {\n            addCriterion(\"goods_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnEqualTo(String value) {\n            addCriterion(\"goods_sn =\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotEqualTo(String value) {\n            addCriterion(\"goods_sn <>\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThan(String value) {\n            addCriterion(\"goods_sn >\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn >=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThan(String value) {\n            addCriterion(\"goods_sn <\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn <=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLike(String value) {\n            addCriterion(\"goods_sn like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotLike(String value) {\n            addCriterion(\"goods_sn not like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIn(List<String> values) {\n            addCriterion(\"goods_sn in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotIn(List<String> values) {\n            addCriterion(\"goods_sn not in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnBetween(String value1, String value2) {\n            addCriterion(\"goods_sn between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotBetween(String value1, String value2) {\n            addCriterion(\"goods_sn not between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdIsNull() {\n            addCriterion(\"category_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdIsNotNull() {\n            addCriterion(\"category_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdEqualTo(Integer value) {\n            addCriterion(\"category_id =\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdNotEqualTo(Integer value) {\n            addCriterion(\"category_id <>\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdGreaterThan(Integer value) {\n            addCriterion(\"category_id >\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"category_id >=\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdLessThan(Integer value) {\n            addCriterion(\"category_id <\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"category_id <=\", value, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCategoryIdLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"category_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdIn(List<Integer> values) {\n            addCriterion(\"category_id in\", values, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdNotIn(List<Integer> values) {\n            addCriterion(\"category_id not in\", values, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"category_id between\", value1, value2, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCategoryIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"category_id not between\", value1, value2, \"categoryId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdIsNull() {\n            addCriterion(\"brand_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdIsNotNull() {\n            addCriterion(\"brand_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdEqualTo(Integer value) {\n            addCriterion(\"brand_id =\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdNotEqualTo(Integer value) {\n            addCriterion(\"brand_id <>\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdGreaterThan(Integer value) {\n            addCriterion(\"brand_id >\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"brand_id >=\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdLessThan(Integer value) {\n            addCriterion(\"brand_id <\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"brand_id <=\", value, \"brandId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBrandIdLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brand_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdIn(List<Integer> values) {\n            addCriterion(\"brand_id in\", values, \"brandId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdNotIn(List<Integer> values) {\n            addCriterion(\"brand_id not in\", values, \"brandId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"brand_id between\", value1, value2, \"brandId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBrandIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"brand_id not between\", value1, value2, \"brandId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryIsNull() {\n            addCriterion(\"gallery is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryIsNotNull() {\n            addCriterion(\"gallery is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryEqualTo(String[] value) {\n            addGalleryCriterion(\"gallery =\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryNotEqualTo(String[] value) {\n            addGalleryCriterion(\"gallery <>\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryGreaterThan(String[] value) {\n            addGalleryCriterion(\"gallery >\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryGreaterThanOrEqualTo(String[] value) {\n            addGalleryCriterion(\"gallery >=\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryLessThan(String[] value) {\n            addGalleryCriterion(\"gallery <\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryLessThanOrEqualTo(String[] value) {\n            addGalleryCriterion(\"gallery <=\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGalleryLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"gallery <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryLike(String[] value) {\n            addGalleryCriterion(\"gallery like\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryNotLike(String[] value) {\n            addGalleryCriterion(\"gallery not like\", value, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryIn(List<String[]> values) {\n            addGalleryCriterion(\"gallery in\", values, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryNotIn(List<String[]> values) {\n            addGalleryCriterion(\"gallery not in\", values, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryBetween(String[] value1, String[] value2) {\n            addGalleryCriterion(\"gallery between\", value1, value2, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGalleryNotBetween(String[] value1, String[] value2) {\n            addGalleryCriterion(\"gallery not between\", value1, value2, \"gallery\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIsNull() {\n            addCriterion(\"keywords is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIsNotNull() {\n            addCriterion(\"keywords is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsEqualTo(String value) {\n            addCriterion(\"keywords =\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotEqualTo(String value) {\n            addCriterion(\"keywords <>\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsGreaterThan(String value) {\n            addCriterion(\"keywords >\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsGreaterThanOrEqualTo(String value) {\n            addCriterion(\"keywords >=\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLessThan(String value) {\n            addCriterion(\"keywords <\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLessThanOrEqualTo(String value) {\n            addCriterion(\"keywords <=\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordsLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"keywords <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsLike(String value) {\n            addCriterion(\"keywords like\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotLike(String value) {\n            addCriterion(\"keywords not like\", value, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsIn(List<String> values) {\n            addCriterion(\"keywords in\", values, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotIn(List<String> values) {\n            addCriterion(\"keywords not in\", values, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsBetween(String value1, String value2) {\n            addCriterion(\"keywords between\", value1, value2, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordsNotBetween(String value1, String value2) {\n            addCriterion(\"keywords not between\", value1, value2, \"keywords\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefIsNull() {\n            addCriterion(\"brief is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefIsNotNull() {\n            addCriterion(\"brief is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefEqualTo(String value) {\n            addCriterion(\"brief =\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefNotEqualTo(String value) {\n            addCriterion(\"brief <>\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefGreaterThan(String value) {\n            addCriterion(\"brief >\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefGreaterThanOrEqualTo(String value) {\n            addCriterion(\"brief >=\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefLessThan(String value) {\n            addCriterion(\"brief <\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefLessThanOrEqualTo(String value) {\n            addCriterion(\"brief <=\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andBriefLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"brief <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefLike(String value) {\n            addCriterion(\"brief like\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefNotLike(String value) {\n            addCriterion(\"brief not like\", value, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefIn(List<String> values) {\n            addCriterion(\"brief in\", values, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefNotIn(List<String> values) {\n            addCriterion(\"brief not in\", values, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefBetween(String value1, String value2) {\n            addCriterion(\"brief between\", value1, value2, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBriefNotBetween(String value1, String value2) {\n            addCriterion(\"brief not between\", value1, value2, \"brief\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleIsNull() {\n            addCriterion(\"is_on_sale is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleIsNotNull() {\n            addCriterion(\"is_on_sale is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleEqualTo(Boolean value) {\n            addCriterion(\"is_on_sale =\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleNotEqualTo(Boolean value) {\n            addCriterion(\"is_on_sale <>\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleGreaterThan(Boolean value) {\n            addCriterion(\"is_on_sale >\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_on_sale >=\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleLessThan(Boolean value) {\n            addCriterion(\"is_on_sale <\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_on_sale <=\", value, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsOnSaleLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_on_sale <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleIn(List<Boolean> values) {\n            addCriterion(\"is_on_sale in\", values, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleNotIn(List<Boolean> values) {\n            addCriterion(\"is_on_sale not in\", values, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_on_sale between\", value1, value2, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsOnSaleNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_on_sale not between\", value1, value2, \"isOnSale\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNull() {\n            addCriterion(\"sort_order is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNotNull() {\n            addCriterion(\"sort_order is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderEqualTo(Short value) {\n            addCriterion(\"sort_order =\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotEqualTo(Short value) {\n            addCriterion(\"sort_order <>\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThan(Short value) {\n            addCriterion(\"sort_order >\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"sort_order >=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThan(Short value) {\n            addCriterion(\"sort_order <\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThanOrEqualTo(Short value) {\n            addCriterion(\"sort_order <=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIn(List<Short> values) {\n            addCriterion(\"sort_order in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotIn(List<Short> values) {\n            addCriterion(\"sort_order not in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderBetween(Short value1, Short value2) {\n            addCriterion(\"sort_order between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotBetween(Short value1, Short value2) {\n            addCriterion(\"sort_order not between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIsNull() {\n            addCriterion(\"share_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIsNotNull() {\n            addCriterion(\"share_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlEqualTo(String value) {\n            addCriterion(\"share_url =\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotEqualTo(String value) {\n            addCriterion(\"share_url <>\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlGreaterThan(String value) {\n            addCriterion(\"share_url >\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"share_url >=\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLessThan(String value) {\n            addCriterion(\"share_url <\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"share_url <=\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"share_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLike(String value) {\n            addCriterion(\"share_url like\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotLike(String value) {\n            addCriterion(\"share_url not like\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIn(List<String> values) {\n            addCriterion(\"share_url in\", values, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotIn(List<String> values) {\n            addCriterion(\"share_url not in\", values, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlBetween(String value1, String value2) {\n            addCriterion(\"share_url between\", value1, value2, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotBetween(String value1, String value2) {\n            addCriterion(\"share_url not between\", value1, value2, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewIsNull() {\n            addCriterion(\"is_new is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewIsNotNull() {\n            addCriterion(\"is_new is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewEqualTo(Boolean value) {\n            addCriterion(\"is_new =\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewNotEqualTo(Boolean value) {\n            addCriterion(\"is_new <>\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewGreaterThan(Boolean value) {\n            addCriterion(\"is_new >\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_new >=\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewLessThan(Boolean value) {\n            addCriterion(\"is_new <\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_new <=\", value, \"isNew\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsNewLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_new <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewIn(List<Boolean> values) {\n            addCriterion(\"is_new in\", values, \"isNew\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewNotIn(List<Boolean> values) {\n            addCriterion(\"is_new not in\", values, \"isNew\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_new between\", value1, value2, \"isNew\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsNewNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_new not between\", value1, value2, \"isNew\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIsNull() {\n            addCriterion(\"is_hot is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIsNotNull() {\n            addCriterion(\"is_hot is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotEqualTo(Boolean value) {\n            addCriterion(\"is_hot =\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotEqualTo(Boolean value) {\n            addCriterion(\"is_hot <>\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotGreaterThan(Boolean value) {\n            addCriterion(\"is_hot >\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_hot >=\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotLessThan(Boolean value) {\n            addCriterion(\"is_hot <\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_hot <=\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"is_hot <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIn(List<Boolean> values) {\n            addCriterion(\"is_hot in\", values, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotIn(List<Boolean> values) {\n            addCriterion(\"is_hot not in\", values, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_hot between\", value1, value2, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_hot not between\", value1, value2, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitIsNull() {\n            addCriterion(\"unit is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitIsNotNull() {\n            addCriterion(\"unit is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitEqualTo(String value) {\n            addCriterion(\"unit =\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitNotEqualTo(String value) {\n            addCriterion(\"unit <>\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitGreaterThan(String value) {\n            addCriterion(\"unit >\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitGreaterThanOrEqualTo(String value) {\n            addCriterion(\"unit >=\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitLessThan(String value) {\n            addCriterion(\"unit <\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitLessThanOrEqualTo(String value) {\n            addCriterion(\"unit <=\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUnitLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"unit <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitLike(String value) {\n            addCriterion(\"unit like\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitNotLike(String value) {\n            addCriterion(\"unit not like\", value, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitIn(List<String> values) {\n            addCriterion(\"unit in\", values, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitNotIn(List<String> values) {\n            addCriterion(\"unit not in\", values, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitBetween(String value1, String value2) {\n            addCriterion(\"unit between\", value1, value2, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUnitNotBetween(String value1, String value2) {\n            addCriterion(\"unit not between\", value1, value2, \"unit\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceIsNull() {\n            addCriterion(\"counter_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceIsNotNull() {\n            addCriterion(\"counter_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceEqualTo(BigDecimal value) {\n            addCriterion(\"counter_price =\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"counter_price <>\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"counter_price >\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"counter_price >=\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceLessThan(BigDecimal value) {\n            addCriterion(\"counter_price <\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"counter_price <=\", value, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCounterPriceLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"counter_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceIn(List<BigDecimal> values) {\n            addCriterion(\"counter_price in\", values, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"counter_price not in\", values, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"counter_price between\", value1, value2, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCounterPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"counter_price not between\", value1, value2, \"counterPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceIsNull() {\n            addCriterion(\"retail_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceIsNotNull() {\n            addCriterion(\"retail_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceEqualTo(BigDecimal value) {\n            addCriterion(\"retail_price =\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"retail_price <>\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"retail_price >\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"retail_price >=\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceLessThan(BigDecimal value) {\n            addCriterion(\"retail_price <\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"retail_price <=\", value, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andRetailPriceLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"retail_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceIn(List<BigDecimal> values) {\n            addCriterion(\"retail_price in\", values, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"retail_price not in\", values, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"retail_price between\", value1, value2, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRetailPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"retail_price not between\", value1, value2, \"retailPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        private LitemallGoodsExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGoodsExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public LitemallGoodsExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGoods.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGoods.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_goods\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGoodsExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsProduct.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGoodsProduct {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.specifications\n     *\n     * @mbg.generated\n     */\n    private String[] specifications;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal price;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.number\n     *\n     * @mbg.generated\n     */\n    private Integer number;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.url\n     *\n     * @mbg.generated\n     */\n    private String url;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_product.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.id\n     *\n     * @return the value of litemall_goods_product.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.id\n     *\n     * @param id the value for litemall_goods_product.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.goods_id\n     *\n     * @return the value of litemall_goods_product.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.goods_id\n     *\n     * @param goodsId the value for litemall_goods_product.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.specifications\n     *\n     * @return the value of litemall_goods_product.specifications\n     *\n     * @mbg.generated\n     */\n    public String[] getSpecifications() {\n        return specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.specifications\n     *\n     * @param specifications the value for litemall_goods_product.specifications\n     *\n     * @mbg.generated\n     */\n    public void setSpecifications(String[] specifications) {\n        this.specifications = specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.price\n     *\n     * @return the value of litemall_goods_product.price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.price\n     *\n     * @param price the value for litemall_goods_product.price\n     *\n     * @mbg.generated\n     */\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.number\n     *\n     * @return the value of litemall_goods_product.number\n     *\n     * @mbg.generated\n     */\n    public Integer getNumber() {\n        return number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.number\n     *\n     * @param number the value for litemall_goods_product.number\n     *\n     * @mbg.generated\n     */\n    public void setNumber(Integer number) {\n        this.number = number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.url\n     *\n     * @return the value of litemall_goods_product.url\n     *\n     * @mbg.generated\n     */\n    public String getUrl() {\n        return url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.url\n     *\n     * @param url the value for litemall_goods_product.url\n     *\n     * @mbg.generated\n     */\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.add_time\n     *\n     * @return the value of litemall_goods_product.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.add_time\n     *\n     * @param addTime the value for litemall_goods_product.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.update_time\n     *\n     * @return the value of litemall_goods_product.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.update_time\n     *\n     * @param updateTime the value for litemall_goods_product.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_product.deleted\n     *\n     * @return the value of litemall_goods_product.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_product.deleted\n     *\n     * @param deleted the value for litemall_goods_product.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", specifications=\").append(specifications);\n        sb.append(\", price=\").append(price);\n        sb.append(\", number=\").append(number);\n        sb.append(\", url=\").append(url);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGoodsProduct other = (LitemallGoodsProduct) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (Arrays.equals(this.getSpecifications(), other.getSpecifications()))\n            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))\n            && (this.getNumber() == null ? other.getNumber() == null : this.getNumber().equals(other.getNumber()))\n            && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + (Arrays.hashCode(getSpecifications()));\n        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());\n        result = prime * result + ((getNumber() == null) ? 0 : getNumber().hashCode());\n        result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        specifications(\"specifications\", \"specifications\", \"VARCHAR\", false),\n        price(\"price\", \"price\", \"DECIMAL\", false),\n        number(\"number\", \"number\", \"INTEGER\", true),\n        url(\"url\", \"url\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsProductExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGoodsProductExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsProductExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsProductExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsProductExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGoodsProductExample example = new LitemallGoodsProductExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsProductExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsProductExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> specificationsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            specificationsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getSpecificationsCriteria() {\n            return specificationsCriteria;\n        }\n\n        protected void addSpecificationsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addSpecificationsCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || specificationsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(specificationsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNull() {\n            addCriterion(\"specifications is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNotNull() {\n            addCriterion(\"specifications is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications =\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <>\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThan(String[] value) {\n            addSpecificationsCriterion(\"specifications >\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications >=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThan(String[] value) {\n            addSpecificationsCriterion(\"specifications <\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"specifications <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLike(String[] value) {\n            addSpecificationsCriterion(\"specifications like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotLike(String[] value) {\n            addSpecificationsCriterion(\"specifications not like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications not in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications not between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNull() {\n            addCriterion(\"price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNotNull() {\n            addCriterion(\"price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceEqualTo(BigDecimal value) {\n            addCriterion(\"price =\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"price <>\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"price >\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price >=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThan(BigDecimal value) {\n            addCriterion(\"price <\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price <=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIn(List<BigDecimal> values) {\n            addCriterion(\"price in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"price not in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price not between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNull() {\n            addCriterion(\"`number` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNotNull() {\n            addCriterion(\"`number` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberEqualTo(Integer value) {\n            addCriterion(\"`number` =\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotEqualTo(Integer value) {\n            addCriterion(\"`number` <>\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThan(Integer value) {\n            addCriterion(\"`number` >\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"`number` >=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThan(Integer value) {\n            addCriterion(\"`number` <\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThanOrEqualTo(Integer value) {\n            addCriterion(\"`number` <=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"`number` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIn(List<Integer> values) {\n            addCriterion(\"`number` in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotIn(List<Integer> values) {\n            addCriterion(\"`number` not in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberBetween(Integer value1, Integer value2) {\n            addCriterion(\"`number` between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"`number` not between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNull() {\n            addCriterion(\"url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNotNull() {\n            addCriterion(\"url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlEqualTo(String value) {\n            addCriterion(\"url =\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotEqualTo(String value) {\n            addCriterion(\"url <>\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThan(String value) {\n            addCriterion(\"url >\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"url >=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThan(String value) {\n            addCriterion(\"url <\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"url <=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLike(String value) {\n            addCriterion(\"url like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotLike(String value) {\n            addCriterion(\"url not like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIn(List<String> values) {\n            addCriterion(\"url in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotIn(List<String> values) {\n            addCriterion(\"url not in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlBetween(String value1, String value2) {\n            addCriterion(\"url between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotBetween(String value1, String value2) {\n            addCriterion(\"url not between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGoodsProduct.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        private LitemallGoodsProductExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGoodsProductExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public LitemallGoodsProductExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGoodsProduct.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGoodsProduct.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_goods_product\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_product\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_product\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGoodsProductExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsSpecification.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGoodsSpecification {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.specification\n     *\n     * @mbg.generated\n     */\n    private String specification;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.value\n     *\n     * @mbg.generated\n     */\n    private String value;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_goods_specification.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.id\n     *\n     * @return the value of litemall_goods_specification.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.id\n     *\n     * @param id the value for litemall_goods_specification.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.goods_id\n     *\n     * @return the value of litemall_goods_specification.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.goods_id\n     *\n     * @param goodsId the value for litemall_goods_specification.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.specification\n     *\n     * @return the value of litemall_goods_specification.specification\n     *\n     * @mbg.generated\n     */\n    public String getSpecification() {\n        return specification;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.specification\n     *\n     * @param specification the value for litemall_goods_specification.specification\n     *\n     * @mbg.generated\n     */\n    public void setSpecification(String specification) {\n        this.specification = specification;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.value\n     *\n     * @return the value of litemall_goods_specification.value\n     *\n     * @mbg.generated\n     */\n    public String getValue() {\n        return value;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.value\n     *\n     * @param value the value for litemall_goods_specification.value\n     *\n     * @mbg.generated\n     */\n    public void setValue(String value) {\n        this.value = value;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.pic_url\n     *\n     * @return the value of litemall_goods_specification.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.pic_url\n     *\n     * @param picUrl the value for litemall_goods_specification.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.add_time\n     *\n     * @return the value of litemall_goods_specification.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.add_time\n     *\n     * @param addTime the value for litemall_goods_specification.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.update_time\n     *\n     * @return the value of litemall_goods_specification.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.update_time\n     *\n     * @param updateTime the value for litemall_goods_specification.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_goods_specification.deleted\n     *\n     * @return the value of litemall_goods_specification.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_goods_specification.deleted\n     *\n     * @param deleted the value for litemall_goods_specification.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", specification=\").append(specification);\n        sb.append(\", value=\").append(value);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGoodsSpecification other = (LitemallGoodsSpecification) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getSpecification() == null ? other.getSpecification() == null : this.getSpecification().equals(other.getSpecification()))\n            && (this.getValue() == null ? other.getValue() == null : this.getValue().equals(other.getValue()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getSpecification() == null) ? 0 : getSpecification().hashCode());\n        result = prime * result + ((getValue() == null) ? 0 : getValue().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        specification(\"specification\", \"specification\", \"VARCHAR\", false),\n        value(\"value\", \"value\", \"VARCHAR\", true),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGoodsSpecificationExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGoodsSpecificationExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsSpecificationExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsSpecificationExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsSpecificationExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGoodsSpecificationExample example = new LitemallGoodsSpecificationExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsSpecificationExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public LitemallGoodsSpecificationExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationIsNull() {\n            addCriterion(\"specification is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationIsNotNull() {\n            addCriterion(\"specification is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationEqualTo(String value) {\n            addCriterion(\"specification =\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationNotEqualTo(String value) {\n            addCriterion(\"specification <>\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationGreaterThan(String value) {\n            addCriterion(\"specification >\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationGreaterThanOrEqualTo(String value) {\n            addCriterion(\"specification >=\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationLessThan(String value) {\n            addCriterion(\"specification <\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationLessThanOrEqualTo(String value) {\n            addCriterion(\"specification <=\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"specification <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationLike(String value) {\n            addCriterion(\"specification like\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationNotLike(String value) {\n            addCriterion(\"specification not like\", value, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationIn(List<String> values) {\n            addCriterion(\"specification in\", values, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationNotIn(List<String> values) {\n            addCriterion(\"specification not in\", values, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationBetween(String value1, String value2) {\n            addCriterion(\"specification between\", value1, value2, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationNotBetween(String value1, String value2) {\n            addCriterion(\"specification not between\", value1, value2, \"specification\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIsNull() {\n            addCriterion(\"`value` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIsNotNull() {\n            addCriterion(\"`value` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueEqualTo(String value) {\n            addCriterion(\"`value` =\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotEqualTo(String value) {\n            addCriterion(\"`value` <>\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueGreaterThan(String value) {\n            addCriterion(\"`value` >\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`value` >=\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLessThan(String value) {\n            addCriterion(\"`value` <\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLessThanOrEqualTo(String value) {\n            addCriterion(\"`value` <=\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andValueLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"`value` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andValueLike(String value) {\n            addCriterion(\"`value` like\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotLike(String value) {\n            addCriterion(\"`value` not like\", value, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueIn(List<String> values) {\n            addCriterion(\"`value` in\", values, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotIn(List<String> values) {\n            addCriterion(\"`value` not in\", values, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueBetween(String value1, String value2) {\n            addCriterion(\"`value` between\", value1, value2, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andValueNotBetween(String value1, String value2) {\n            addCriterion(\"`value` not between\", value1, value2, \"value\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGoodsSpecification.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        private LitemallGoodsSpecificationExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGoodsSpecificationExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public LitemallGoodsSpecificationExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGoodsSpecification.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGoodsSpecification.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_goods_specification\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_goods_specification\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_goods_specification\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGroupon.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGroupon {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.order_id\n     *\n     * @mbg.generated\n     */\n    private Integer orderId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.groupon_id\n     *\n     * @mbg.generated\n     */\n    private Integer grouponId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.rules_id\n     *\n     * @mbg.generated\n     */\n    private Integer rulesId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.share_url\n     *\n     * @mbg.generated\n     */\n    private String shareUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.creator_user_id\n     *\n     * @mbg.generated\n     */\n    private Integer creatorUserId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.creator_user_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime creatorUserTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.status\n     *\n     * @mbg.generated\n     */\n    private Short status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.id\n     *\n     * @return the value of litemall_groupon.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.id\n     *\n     * @param id the value for litemall_groupon.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.order_id\n     *\n     * @return the value of litemall_groupon.order_id\n     *\n     * @mbg.generated\n     */\n    public Integer getOrderId() {\n        return orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.order_id\n     *\n     * @param orderId the value for litemall_groupon.order_id\n     *\n     * @mbg.generated\n     */\n    public void setOrderId(Integer orderId) {\n        this.orderId = orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.groupon_id\n     *\n     * @return the value of litemall_groupon.groupon_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGrouponId() {\n        return grouponId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.groupon_id\n     *\n     * @param grouponId the value for litemall_groupon.groupon_id\n     *\n     * @mbg.generated\n     */\n    public void setGrouponId(Integer grouponId) {\n        this.grouponId = grouponId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.rules_id\n     *\n     * @return the value of litemall_groupon.rules_id\n     *\n     * @mbg.generated\n     */\n    public Integer getRulesId() {\n        return rulesId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.rules_id\n     *\n     * @param rulesId the value for litemall_groupon.rules_id\n     *\n     * @mbg.generated\n     */\n    public void setRulesId(Integer rulesId) {\n        this.rulesId = rulesId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.user_id\n     *\n     * @return the value of litemall_groupon.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.user_id\n     *\n     * @param userId the value for litemall_groupon.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.share_url\n     *\n     * @return the value of litemall_groupon.share_url\n     *\n     * @mbg.generated\n     */\n    public String getShareUrl() {\n        return shareUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.share_url\n     *\n     * @param shareUrl the value for litemall_groupon.share_url\n     *\n     * @mbg.generated\n     */\n    public void setShareUrl(String shareUrl) {\n        this.shareUrl = shareUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.creator_user_id\n     *\n     * @return the value of litemall_groupon.creator_user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getCreatorUserId() {\n        return creatorUserId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.creator_user_id\n     *\n     * @param creatorUserId the value for litemall_groupon.creator_user_id\n     *\n     * @mbg.generated\n     */\n    public void setCreatorUserId(Integer creatorUserId) {\n        this.creatorUserId = creatorUserId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.creator_user_time\n     *\n     * @return the value of litemall_groupon.creator_user_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getCreatorUserTime() {\n        return creatorUserTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.creator_user_time\n     *\n     * @param creatorUserTime the value for litemall_groupon.creator_user_time\n     *\n     * @mbg.generated\n     */\n    public void setCreatorUserTime(LocalDateTime creatorUserTime) {\n        this.creatorUserTime = creatorUserTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.status\n     *\n     * @return the value of litemall_groupon.status\n     *\n     * @mbg.generated\n     */\n    public Short getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.status\n     *\n     * @param status the value for litemall_groupon.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Short status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.add_time\n     *\n     * @return the value of litemall_groupon.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.add_time\n     *\n     * @param addTime the value for litemall_groupon.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.update_time\n     *\n     * @return the value of litemall_groupon.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.update_time\n     *\n     * @param updateTime the value for litemall_groupon.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon.deleted\n     *\n     * @return the value of litemall_groupon.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon.deleted\n     *\n     * @param deleted the value for litemall_groupon.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", orderId=\").append(orderId);\n        sb.append(\", grouponId=\").append(grouponId);\n        sb.append(\", rulesId=\").append(rulesId);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", shareUrl=\").append(shareUrl);\n        sb.append(\", creatorUserId=\").append(creatorUserId);\n        sb.append(\", creatorUserTime=\").append(creatorUserTime);\n        sb.append(\", status=\").append(status);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGroupon other = (LitemallGroupon) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))\n            && (this.getGrouponId() == null ? other.getGrouponId() == null : this.getGrouponId().equals(other.getGrouponId()))\n            && (this.getRulesId() == null ? other.getRulesId() == null : this.getRulesId().equals(other.getRulesId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getShareUrl() == null ? other.getShareUrl() == null : this.getShareUrl().equals(other.getShareUrl()))\n            && (this.getCreatorUserId() == null ? other.getCreatorUserId() == null : this.getCreatorUserId().equals(other.getCreatorUserId()))\n            && (this.getCreatorUserTime() == null ? other.getCreatorUserTime() == null : this.getCreatorUserTime().equals(other.getCreatorUserTime()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());\n        result = prime * result + ((getGrouponId() == null) ? 0 : getGrouponId().hashCode());\n        result = prime * result + ((getRulesId() == null) ? 0 : getRulesId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getShareUrl() == null) ? 0 : getShareUrl().hashCode());\n        result = prime * result + ((getCreatorUserId() == null) ? 0 : getCreatorUserId().hashCode());\n        result = prime * result + ((getCreatorUserTime() == null) ? 0 : getCreatorUserTime().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        orderId(\"order_id\", \"orderId\", \"INTEGER\", false),\n        grouponId(\"groupon_id\", \"grouponId\", \"INTEGER\", false),\n        rulesId(\"rules_id\", \"rulesId\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        shareUrl(\"share_url\", \"shareUrl\", \"VARCHAR\", false),\n        creatorUserId(\"creator_user_id\", \"creatorUserId\", \"INTEGER\", false),\n        creatorUserTime(\"creator_user_time\", \"creatorUserTime\", \"TIMESTAMP\", false),\n        status(\"status\", \"status\", \"SMALLINT\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGrouponExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGrouponExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNull() {\n            addCriterion(\"order_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNotNull() {\n            addCriterion(\"order_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdEqualTo(Integer value) {\n            addCriterion(\"order_id =\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotEqualTo(Integer value) {\n            addCriterion(\"order_id <>\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThan(Integer value) {\n            addCriterion(\"order_id >\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id >=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThan(Integer value) {\n            addCriterion(\"order_id <\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id <=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"order_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIn(List<Integer> values) {\n            addCriterion(\"order_id in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotIn(List<Integer> values) {\n            addCriterion(\"order_id not in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id not between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdIsNull() {\n            addCriterion(\"groupon_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdIsNotNull() {\n            addCriterion(\"groupon_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdEqualTo(Integer value) {\n            addCriterion(\"groupon_id =\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdNotEqualTo(Integer value) {\n            addCriterion(\"groupon_id <>\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdGreaterThan(Integer value) {\n            addCriterion(\"groupon_id >\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"groupon_id >=\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdLessThan(Integer value) {\n            addCriterion(\"groupon_id <\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"groupon_id <=\", value, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"groupon_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdIn(List<Integer> values) {\n            addCriterion(\"groupon_id in\", values, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdNotIn(List<Integer> values) {\n            addCriterion(\"groupon_id not in\", values, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"groupon_id between\", value1, value2, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"groupon_id not between\", value1, value2, \"grouponId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdIsNull() {\n            addCriterion(\"rules_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdIsNotNull() {\n            addCriterion(\"rules_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdEqualTo(Integer value) {\n            addCriterion(\"rules_id =\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdNotEqualTo(Integer value) {\n            addCriterion(\"rules_id <>\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdGreaterThan(Integer value) {\n            addCriterion(\"rules_id >\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"rules_id >=\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdLessThan(Integer value) {\n            addCriterion(\"rules_id <\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"rules_id <=\", value, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andRulesIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"rules_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdIn(List<Integer> values) {\n            addCriterion(\"rules_id in\", values, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdNotIn(List<Integer> values) {\n            addCriterion(\"rules_id not in\", values, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"rules_id between\", value1, value2, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRulesIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"rules_id not between\", value1, value2, \"rulesId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIsNull() {\n            addCriterion(\"share_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIsNotNull() {\n            addCriterion(\"share_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlEqualTo(String value) {\n            addCriterion(\"share_url =\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotEqualTo(String value) {\n            addCriterion(\"share_url <>\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlGreaterThan(String value) {\n            addCriterion(\"share_url >\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"share_url >=\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLessThan(String value) {\n            addCriterion(\"share_url <\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"share_url <=\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andShareUrlLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"share_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlLike(String value) {\n            addCriterion(\"share_url like\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotLike(String value) {\n            addCriterion(\"share_url not like\", value, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlIn(List<String> values) {\n            addCriterion(\"share_url in\", values, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotIn(List<String> values) {\n            addCriterion(\"share_url not in\", values, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlBetween(String value1, String value2) {\n            addCriterion(\"share_url between\", value1, value2, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShareUrlNotBetween(String value1, String value2) {\n            addCriterion(\"share_url not between\", value1, value2, \"shareUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdIsNull() {\n            addCriterion(\"creator_user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdIsNotNull() {\n            addCriterion(\"creator_user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdEqualTo(Integer value) {\n            addCriterion(\"creator_user_id =\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdNotEqualTo(Integer value) {\n            addCriterion(\"creator_user_id <>\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdGreaterThan(Integer value) {\n            addCriterion(\"creator_user_id >\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"creator_user_id >=\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdLessThan(Integer value) {\n            addCriterion(\"creator_user_id <\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"creator_user_id <=\", value, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserIdLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdIn(List<Integer> values) {\n            addCriterion(\"creator_user_id in\", values, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdNotIn(List<Integer> values) {\n            addCriterion(\"creator_user_id not in\", values, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"creator_user_id between\", value1, value2, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"creator_user_id not between\", value1, value2, \"creatorUserId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeIsNull() {\n            addCriterion(\"creator_user_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeIsNotNull() {\n            addCriterion(\"creator_user_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"creator_user_time =\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"creator_user_time <>\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"creator_user_time >\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"creator_user_time >=\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeLessThan(LocalDateTime value) {\n            addCriterion(\"creator_user_time <\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"creator_user_time <=\", value, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andCreatorUserTimeLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"creator_user_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"creator_user_time in\", values, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"creator_user_time not in\", values, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"creator_user_time between\", value1, value2, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCreatorUserTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"creator_user_time not between\", value1, value2, \"creatorUserTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Short value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Short value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Short value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Short value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Short> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Short> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Short value1, Short value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGroupon.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        private LitemallGrouponExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGrouponExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public LitemallGrouponExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGroupon.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGroupon.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_groupon\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGrouponExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGrouponRules.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallGrouponRules {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.goods_name\n     *\n     * @mbg.generated\n     */\n    private String goodsName;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.discount\n     *\n     * @mbg.generated\n     */\n    private BigDecimal discount;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.discount_member\n     *\n     * @mbg.generated\n     */\n    private Integer discountMember;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.expire_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime expireTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.status\n     *\n     * @mbg.generated\n     */\n    private Short status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_groupon_rules.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.id\n     *\n     * @return the value of litemall_groupon_rules.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.id\n     *\n     * @param id the value for litemall_groupon_rules.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.goods_id\n     *\n     * @return the value of litemall_groupon_rules.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.goods_id\n     *\n     * @param goodsId the value for litemall_groupon_rules.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.goods_name\n     *\n     * @return the value of litemall_groupon_rules.goods_name\n     *\n     * @mbg.generated\n     */\n    public String getGoodsName() {\n        return goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.goods_name\n     *\n     * @param goodsName the value for litemall_groupon_rules.goods_name\n     *\n     * @mbg.generated\n     */\n    public void setGoodsName(String goodsName) {\n        this.goodsName = goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.pic_url\n     *\n     * @return the value of litemall_groupon_rules.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.pic_url\n     *\n     * @param picUrl the value for litemall_groupon_rules.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.discount\n     *\n     * @return the value of litemall_groupon_rules.discount\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getDiscount() {\n        return discount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.discount\n     *\n     * @param discount the value for litemall_groupon_rules.discount\n     *\n     * @mbg.generated\n     */\n    public void setDiscount(BigDecimal discount) {\n        this.discount = discount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.discount_member\n     *\n     * @return the value of litemall_groupon_rules.discount_member\n     *\n     * @mbg.generated\n     */\n    public Integer getDiscountMember() {\n        return discountMember;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.discount_member\n     *\n     * @param discountMember the value for litemall_groupon_rules.discount_member\n     *\n     * @mbg.generated\n     */\n    public void setDiscountMember(Integer discountMember) {\n        this.discountMember = discountMember;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.expire_time\n     *\n     * @return the value of litemall_groupon_rules.expire_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getExpireTime() {\n        return expireTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.expire_time\n     *\n     * @param expireTime the value for litemall_groupon_rules.expire_time\n     *\n     * @mbg.generated\n     */\n    public void setExpireTime(LocalDateTime expireTime) {\n        this.expireTime = expireTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.status\n     *\n     * @return the value of litemall_groupon_rules.status\n     *\n     * @mbg.generated\n     */\n    public Short getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.status\n     *\n     * @param status the value for litemall_groupon_rules.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Short status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.add_time\n     *\n     * @return the value of litemall_groupon_rules.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.add_time\n     *\n     * @param addTime the value for litemall_groupon_rules.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.update_time\n     *\n     * @return the value of litemall_groupon_rules.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.update_time\n     *\n     * @param updateTime the value for litemall_groupon_rules.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_groupon_rules.deleted\n     *\n     * @return the value of litemall_groupon_rules.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_groupon_rules.deleted\n     *\n     * @param deleted the value for litemall_groupon_rules.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", goodsName=\").append(goodsName);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", discount=\").append(discount);\n        sb.append(\", discountMember=\").append(discountMember);\n        sb.append(\", expireTime=\").append(expireTime);\n        sb.append(\", status=\").append(status);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallGrouponRules other = (LitemallGrouponRules) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getGoodsName() == null ? other.getGoodsName() == null : this.getGoodsName().equals(other.getGoodsName()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getDiscount() == null ? other.getDiscount() == null : this.getDiscount().equals(other.getDiscount()))\n            && (this.getDiscountMember() == null ? other.getDiscountMember() == null : this.getDiscountMember().equals(other.getDiscountMember()))\n            && (this.getExpireTime() == null ? other.getExpireTime() == null : this.getExpireTime().equals(other.getExpireTime()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getGoodsName() == null) ? 0 : getGoodsName().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getDiscount() == null) ? 0 : getDiscount().hashCode());\n        result = prime * result + ((getDiscountMember() == null) ? 0 : getDiscountMember().hashCode());\n        result = prime * result + ((getExpireTime() == null) ? 0 : getExpireTime().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        goodsName(\"goods_name\", \"goodsName\", \"VARCHAR\", false),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        discount(\"discount\", \"discount\", \"DECIMAL\", false),\n        discountMember(\"discount_member\", \"discountMember\", \"INTEGER\", false),\n        expireTime(\"expire_time\", \"expireTime\", \"TIMESTAMP\", false),\n        status(\"status\", \"status\", \"SMALLINT\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallGrouponRulesExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallGrouponRulesExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponRulesExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponRulesExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponRulesExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponRulesExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public LitemallGrouponRulesExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNull() {\n            addCriterion(\"goods_name is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNotNull() {\n            addCriterion(\"goods_name is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameEqualTo(String value) {\n            addCriterion(\"goods_name =\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotEqualTo(String value) {\n            addCriterion(\"goods_name <>\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThan(String value) {\n            addCriterion(\"goods_name >\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_name >=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThan(String value) {\n            addCriterion(\"goods_name <\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_name <=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLike(String value) {\n            addCriterion(\"goods_name like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotLike(String value) {\n            addCriterion(\"goods_name not like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIn(List<String> values) {\n            addCriterion(\"goods_name in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotIn(List<String> values) {\n            addCriterion(\"goods_name not in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameBetween(String value1, String value2) {\n            addCriterion(\"goods_name between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotBetween(String value1, String value2) {\n            addCriterion(\"goods_name not between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIsNull() {\n            addCriterion(\"discount is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIsNotNull() {\n            addCriterion(\"discount is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountEqualTo(BigDecimal value) {\n            addCriterion(\"discount =\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotEqualTo(BigDecimal value) {\n            addCriterion(\"discount <>\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountGreaterThan(BigDecimal value) {\n            addCriterion(\"discount >\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"discount >=\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountLessThan(BigDecimal value) {\n            addCriterion(\"discount <\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"discount <=\", value, \"discount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountIn(List<BigDecimal> values) {\n            addCriterion(\"discount in\", values, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotIn(List<BigDecimal> values) {\n            addCriterion(\"discount not in\", values, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"discount between\", value1, value2, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"discount not between\", value1, value2, \"discount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberIsNull() {\n            addCriterion(\"discount_member is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberIsNotNull() {\n            addCriterion(\"discount_member is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberEqualTo(Integer value) {\n            addCriterion(\"discount_member =\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberNotEqualTo(Integer value) {\n            addCriterion(\"discount_member <>\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberGreaterThan(Integer value) {\n            addCriterion(\"discount_member >\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"discount_member >=\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberLessThan(Integer value) {\n            addCriterion(\"discount_member <\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberLessThanOrEqualTo(Integer value) {\n            addCriterion(\"discount_member <=\", value, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDiscountMemberLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"discount_member <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberIn(List<Integer> values) {\n            addCriterion(\"discount_member in\", values, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberNotIn(List<Integer> values) {\n            addCriterion(\"discount_member not in\", values, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberBetween(Integer value1, Integer value2) {\n            addCriterion(\"discount_member between\", value1, value2, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDiscountMemberNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"discount_member not between\", value1, value2, \"discountMember\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeIsNull() {\n            addCriterion(\"expire_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeIsNotNull() {\n            addCriterion(\"expire_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"expire_time =\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"expire_time <>\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"expire_time >\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"expire_time >=\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeLessThan(LocalDateTime value) {\n            addCriterion(\"expire_time <\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"expire_time <=\", value, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andExpireTimeLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"expire_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"expire_time in\", values, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"expire_time not in\", values, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"expire_time between\", value1, value2, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andExpireTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"expire_time not between\", value1, value2, \"expireTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Short value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Short value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Short value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Short value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Short> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Short> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Short value1, Short value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallGrouponRules.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        private LitemallGrouponRulesExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallGrouponRulesExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public LitemallGrouponRulesExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallGrouponRules.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallGrouponRules.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_groupon_rules\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_groupon_rules\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_groupon_rules\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallIssue.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallIssue {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.question\n     *\n     * @mbg.generated\n     */\n    private String question;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.answer\n     *\n     * @mbg.generated\n     */\n    private String answer;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_issue.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.id\n     *\n     * @return the value of litemall_issue.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.id\n     *\n     * @param id the value for litemall_issue.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.question\n     *\n     * @return the value of litemall_issue.question\n     *\n     * @mbg.generated\n     */\n    public String getQuestion() {\n        return question;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.question\n     *\n     * @param question the value for litemall_issue.question\n     *\n     * @mbg.generated\n     */\n    public void setQuestion(String question) {\n        this.question = question;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.answer\n     *\n     * @return the value of litemall_issue.answer\n     *\n     * @mbg.generated\n     */\n    public String getAnswer() {\n        return answer;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.answer\n     *\n     * @param answer the value for litemall_issue.answer\n     *\n     * @mbg.generated\n     */\n    public void setAnswer(String answer) {\n        this.answer = answer;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.add_time\n     *\n     * @return the value of litemall_issue.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.add_time\n     *\n     * @param addTime the value for litemall_issue.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.update_time\n     *\n     * @return the value of litemall_issue.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.update_time\n     *\n     * @param updateTime the value for litemall_issue.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_issue.deleted\n     *\n     * @return the value of litemall_issue.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_issue.deleted\n     *\n     * @param deleted the value for litemall_issue.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", question=\").append(question);\n        sb.append(\", answer=\").append(answer);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallIssue other = (LitemallIssue) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getQuestion() == null ? other.getQuestion() == null : this.getQuestion().equals(other.getQuestion()))\n            && (this.getAnswer() == null ? other.getAnswer() == null : this.getAnswer().equals(other.getAnswer()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getQuestion() == null) ? 0 : getQuestion().hashCode());\n        result = prime * result + ((getAnswer() == null) ? 0 : getAnswer().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        question(\"question\", \"question\", \"VARCHAR\", false),\n        answer(\"answer\", \"answer\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallIssueExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallIssueExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public LitemallIssueExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public LitemallIssueExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public LitemallIssueExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallIssueExample example = new LitemallIssueExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public LitemallIssueExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public LitemallIssueExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionIsNull() {\n            addCriterion(\"question is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionIsNotNull() {\n            addCriterion(\"question is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionEqualTo(String value) {\n            addCriterion(\"question =\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionNotEqualTo(String value) {\n            addCriterion(\"question <>\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionGreaterThan(String value) {\n            addCriterion(\"question >\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionGreaterThanOrEqualTo(String value) {\n            addCriterion(\"question >=\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionLessThan(String value) {\n            addCriterion(\"question <\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionLessThanOrEqualTo(String value) {\n            addCriterion(\"question <=\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andQuestionLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"question <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionLike(String value) {\n            addCriterion(\"question like\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionNotLike(String value) {\n            addCriterion(\"question not like\", value, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionIn(List<String> values) {\n            addCriterion(\"question in\", values, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionNotIn(List<String> values) {\n            addCriterion(\"question not in\", values, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionBetween(String value1, String value2) {\n            addCriterion(\"question between\", value1, value2, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andQuestionNotBetween(String value1, String value2) {\n            addCriterion(\"question not between\", value1, value2, \"question\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerIsNull() {\n            addCriterion(\"answer is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerIsNotNull() {\n            addCriterion(\"answer is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerEqualTo(String value) {\n            addCriterion(\"answer =\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerNotEqualTo(String value) {\n            addCriterion(\"answer <>\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerGreaterThan(String value) {\n            addCriterion(\"answer >\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerGreaterThanOrEqualTo(String value) {\n            addCriterion(\"answer >=\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerLessThan(String value) {\n            addCriterion(\"answer <\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerLessThanOrEqualTo(String value) {\n            addCriterion(\"answer <=\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAnswerLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"answer <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerLike(String value) {\n            addCriterion(\"answer like\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerNotLike(String value) {\n            addCriterion(\"answer not like\", value, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerIn(List<String> values) {\n            addCriterion(\"answer in\", values, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerNotIn(List<String> values) {\n            addCriterion(\"answer not in\", values, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerBetween(String value1, String value2) {\n            addCriterion(\"answer between\", value1, value2, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAnswerNotBetween(String value1, String value2) {\n            addCriterion(\"answer not between\", value1, value2, \"answer\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallIssue.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_issue\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        private LitemallIssueExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallIssueExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public LitemallIssueExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallIssue.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallIssue.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_issue\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_issue\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_issue\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallIssueExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallKeyword.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallKeyword {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.keyword\n     *\n     * @mbg.generated\n     */\n    private String keyword;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.url\n     *\n     * @mbg.generated\n     */\n    private String url;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.is_hot\n     *\n     * @mbg.generated\n     */\n    private Boolean isHot;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.is_default\n     *\n     * @mbg.generated\n     */\n    private Boolean isDefault;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.sort_order\n     *\n     * @mbg.generated\n     */\n    private Integer sortOrder;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_keyword.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.id\n     *\n     * @return the value of litemall_keyword.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.id\n     *\n     * @param id the value for litemall_keyword.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.keyword\n     *\n     * @return the value of litemall_keyword.keyword\n     *\n     * @mbg.generated\n     */\n    public String getKeyword() {\n        return keyword;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.keyword\n     *\n     * @param keyword the value for litemall_keyword.keyword\n     *\n     * @mbg.generated\n     */\n    public void setKeyword(String keyword) {\n        this.keyword = keyword;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.url\n     *\n     * @return the value of litemall_keyword.url\n     *\n     * @mbg.generated\n     */\n    public String getUrl() {\n        return url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.url\n     *\n     * @param url the value for litemall_keyword.url\n     *\n     * @mbg.generated\n     */\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.is_hot\n     *\n     * @return the value of litemall_keyword.is_hot\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsHot() {\n        return isHot;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.is_hot\n     *\n     * @param isHot the value for litemall_keyword.is_hot\n     *\n     * @mbg.generated\n     */\n    public void setIsHot(Boolean isHot) {\n        this.isHot = isHot;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.is_default\n     *\n     * @return the value of litemall_keyword.is_default\n     *\n     * @mbg.generated\n     */\n    public Boolean getIsDefault() {\n        return isDefault;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.is_default\n     *\n     * @param isDefault the value for litemall_keyword.is_default\n     *\n     * @mbg.generated\n     */\n    public void setIsDefault(Boolean isDefault) {\n        this.isDefault = isDefault;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.sort_order\n     *\n     * @return the value of litemall_keyword.sort_order\n     *\n     * @mbg.generated\n     */\n    public Integer getSortOrder() {\n        return sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.sort_order\n     *\n     * @param sortOrder the value for litemall_keyword.sort_order\n     *\n     * @mbg.generated\n     */\n    public void setSortOrder(Integer sortOrder) {\n        this.sortOrder = sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.add_time\n     *\n     * @return the value of litemall_keyword.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.add_time\n     *\n     * @param addTime the value for litemall_keyword.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.update_time\n     *\n     * @return the value of litemall_keyword.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.update_time\n     *\n     * @param updateTime the value for litemall_keyword.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_keyword.deleted\n     *\n     * @return the value of litemall_keyword.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_keyword.deleted\n     *\n     * @param deleted the value for litemall_keyword.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", keyword=\").append(keyword);\n        sb.append(\", url=\").append(url);\n        sb.append(\", isHot=\").append(isHot);\n        sb.append(\", isDefault=\").append(isDefault);\n        sb.append(\", sortOrder=\").append(sortOrder);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallKeyword other = (LitemallKeyword) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getKeyword() == null ? other.getKeyword() == null : this.getKeyword().equals(other.getKeyword()))\n            && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl()))\n            && (this.getIsHot() == null ? other.getIsHot() == null : this.getIsHot().equals(other.getIsHot()))\n            && (this.getIsDefault() == null ? other.getIsDefault() == null : this.getIsDefault().equals(other.getIsDefault()))\n            && (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getKeyword() == null) ? 0 : getKeyword().hashCode());\n        result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode());\n        result = prime * result + ((getIsHot() == null) ? 0 : getIsHot().hashCode());\n        result = prime * result + ((getIsDefault() == null) ? 0 : getIsDefault().hashCode());\n        result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        keyword(\"keyword\", \"keyword\", \"VARCHAR\", false),\n        url(\"url\", \"url\", \"VARCHAR\", false),\n        isHot(\"is_hot\", \"isHot\", \"BIT\", false),\n        isDefault(\"is_default\", \"isDefault\", \"BIT\", false),\n        sortOrder(\"sort_order\", \"sortOrder\", \"INTEGER\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallKeywordExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallKeywordExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public LitemallKeywordExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public LitemallKeywordExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public LitemallKeywordExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallKeywordExample example = new LitemallKeywordExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public LitemallKeywordExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public LitemallKeywordExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIsNull() {\n            addCriterion(\"keyword is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIsNotNull() {\n            addCriterion(\"keyword is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordEqualTo(String value) {\n            addCriterion(\"keyword =\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotEqualTo(String value) {\n            addCriterion(\"keyword <>\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordGreaterThan(String value) {\n            addCriterion(\"keyword >\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordGreaterThanOrEqualTo(String value) {\n            addCriterion(\"keyword >=\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLessThan(String value) {\n            addCriterion(\"keyword <\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLessThanOrEqualTo(String value) {\n            addCriterion(\"keyword <=\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"keyword <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLike(String value) {\n            addCriterion(\"keyword like\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotLike(String value) {\n            addCriterion(\"keyword not like\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIn(List<String> values) {\n            addCriterion(\"keyword in\", values, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotIn(List<String> values) {\n            addCriterion(\"keyword not in\", values, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordBetween(String value1, String value2) {\n            addCriterion(\"keyword between\", value1, value2, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotBetween(String value1, String value2) {\n            addCriterion(\"keyword not between\", value1, value2, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNull() {\n            addCriterion(\"url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNotNull() {\n            addCriterion(\"url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlEqualTo(String value) {\n            addCriterion(\"url =\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotEqualTo(String value) {\n            addCriterion(\"url <>\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThan(String value) {\n            addCriterion(\"url >\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"url >=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThan(String value) {\n            addCriterion(\"url <\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"url <=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLike(String value) {\n            addCriterion(\"url like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotLike(String value) {\n            addCriterion(\"url not like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIn(List<String> values) {\n            addCriterion(\"url in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotIn(List<String> values) {\n            addCriterion(\"url not in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlBetween(String value1, String value2) {\n            addCriterion(\"url between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotBetween(String value1, String value2) {\n            addCriterion(\"url not between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIsNull() {\n            addCriterion(\"is_hot is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIsNotNull() {\n            addCriterion(\"is_hot is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotEqualTo(Boolean value) {\n            addCriterion(\"is_hot =\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotEqualTo(Boolean value) {\n            addCriterion(\"is_hot <>\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotGreaterThan(Boolean value) {\n            addCriterion(\"is_hot >\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_hot >=\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotLessThan(Boolean value) {\n            addCriterion(\"is_hot <\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_hot <=\", value, \"isHot\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsHotLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_hot <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotIn(List<Boolean> values) {\n            addCriterion(\"is_hot in\", values, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotIn(List<Boolean> values) {\n            addCriterion(\"is_hot not in\", values, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_hot between\", value1, value2, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsHotNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_hot not between\", value1, value2, \"isHot\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIsNull() {\n            addCriterion(\"is_default is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIsNotNull() {\n            addCriterion(\"is_default is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultEqualTo(Boolean value) {\n            addCriterion(\"is_default =\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotEqualTo(Boolean value) {\n            addCriterion(\"is_default <>\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultGreaterThan(Boolean value) {\n            addCriterion(\"is_default >\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_default >=\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultLessThan(Boolean value) {\n            addCriterion(\"is_default <\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"is_default <=\", value, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andIsDefaultLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"is_default <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultIn(List<Boolean> values) {\n            addCriterion(\"is_default in\", values, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotIn(List<Boolean> values) {\n            addCriterion(\"is_default not in\", values, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_default between\", value1, value2, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIsDefaultNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"is_default not between\", value1, value2, \"isDefault\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNull() {\n            addCriterion(\"sort_order is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNotNull() {\n            addCriterion(\"sort_order is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderEqualTo(Integer value) {\n            addCriterion(\"sort_order =\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotEqualTo(Integer value) {\n            addCriterion(\"sort_order <>\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThan(Integer value) {\n            addCriterion(\"sort_order >\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"sort_order >=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThan(Integer value) {\n            addCriterion(\"sort_order <\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThanOrEqualTo(Integer value) {\n            addCriterion(\"sort_order <=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIn(List<Integer> values) {\n            addCriterion(\"sort_order in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotIn(List<Integer> values) {\n            addCriterion(\"sort_order not in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderBetween(Integer value1, Integer value2) {\n            addCriterion(\"sort_order between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"sort_order not between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallKeyword.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        private LitemallKeywordExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallKeywordExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public LitemallKeywordExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallKeyword.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallKeyword.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_keyword\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_keyword\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_keyword\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallKeywordExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallLog.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallLog {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.admin\n     *\n     * @mbg.generated\n     */\n    private String admin;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.ip\n     *\n     * @mbg.generated\n     */\n    private String ip;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.type\n     *\n     * @mbg.generated\n     */\n    private Integer type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.action\n     *\n     * @mbg.generated\n     */\n    private String action;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.status\n     *\n     * @mbg.generated\n     */\n    private Boolean status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.result\n     *\n     * @mbg.generated\n     */\n    private String result;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.comment\n     *\n     * @mbg.generated\n     */\n    private String comment;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_log.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.id\n     *\n     * @return the value of litemall_log.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.id\n     *\n     * @param id the value for litemall_log.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.admin\n     *\n     * @return the value of litemall_log.admin\n     *\n     * @mbg.generated\n     */\n    public String getAdmin() {\n        return admin;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.admin\n     *\n     * @param admin the value for litemall_log.admin\n     *\n     * @mbg.generated\n     */\n    public void setAdmin(String admin) {\n        this.admin = admin;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.ip\n     *\n     * @return the value of litemall_log.ip\n     *\n     * @mbg.generated\n     */\n    public String getIp() {\n        return ip;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.ip\n     *\n     * @param ip the value for litemall_log.ip\n     *\n     * @mbg.generated\n     */\n    public void setIp(String ip) {\n        this.ip = ip;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.type\n     *\n     * @return the value of litemall_log.type\n     *\n     * @mbg.generated\n     */\n    public Integer getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.type\n     *\n     * @param type the value for litemall_log.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Integer type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.action\n     *\n     * @return the value of litemall_log.action\n     *\n     * @mbg.generated\n     */\n    public String getAction() {\n        return action;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.action\n     *\n     * @param action the value for litemall_log.action\n     *\n     * @mbg.generated\n     */\n    public void setAction(String action) {\n        this.action = action;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.status\n     *\n     * @return the value of litemall_log.status\n     *\n     * @mbg.generated\n     */\n    public Boolean getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.status\n     *\n     * @param status the value for litemall_log.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Boolean status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.result\n     *\n     * @return the value of litemall_log.result\n     *\n     * @mbg.generated\n     */\n    public String getResult() {\n        return result;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.result\n     *\n     * @param result the value for litemall_log.result\n     *\n     * @mbg.generated\n     */\n    public void setResult(String result) {\n        this.result = result;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.comment\n     *\n     * @return the value of litemall_log.comment\n     *\n     * @mbg.generated\n     */\n    public String getComment() {\n        return comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.comment\n     *\n     * @param comment the value for litemall_log.comment\n     *\n     * @mbg.generated\n     */\n    public void setComment(String comment) {\n        this.comment = comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.add_time\n     *\n     * @return the value of litemall_log.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.add_time\n     *\n     * @param addTime the value for litemall_log.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.update_time\n     *\n     * @return the value of litemall_log.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.update_time\n     *\n     * @param updateTime the value for litemall_log.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_log.deleted\n     *\n     * @return the value of litemall_log.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_log.deleted\n     *\n     * @param deleted the value for litemall_log.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", admin=\").append(admin);\n        sb.append(\", ip=\").append(ip);\n        sb.append(\", type=\").append(type);\n        sb.append(\", action=\").append(action);\n        sb.append(\", status=\").append(status);\n        sb.append(\", result=\").append(result);\n        sb.append(\", comment=\").append(comment);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallLog other = (LitemallLog) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getAdmin() == null ? other.getAdmin() == null : this.getAdmin().equals(other.getAdmin()))\n            && (this.getIp() == null ? other.getIp() == null : this.getIp().equals(other.getIp()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getAction() == null ? other.getAction() == null : this.getAction().equals(other.getAction()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getResult() == null ? other.getResult() == null : this.getResult().equals(other.getResult()))\n            && (this.getComment() == null ? other.getComment() == null : this.getComment().equals(other.getComment()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getAdmin() == null) ? 0 : getAdmin().hashCode());\n        result = prime * result + ((getIp() == null) ? 0 : getIp().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getAction() == null) ? 0 : getAction().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getResult() == null) ? 0 : getResult().hashCode());\n        result = prime * result + ((getComment() == null) ? 0 : getComment().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        admin(\"admin\", \"admin\", \"VARCHAR\", true),\n        ip(\"ip\", \"ip\", \"VARCHAR\", false),\n        type(\"type\", \"type\", \"INTEGER\", true),\n        action(\"action\", \"action\", \"VARCHAR\", true),\n        status(\"status\", \"status\", \"BIT\", true),\n        result(\"result\", \"result\", \"VARCHAR\", true),\n        comment(\"comment\", \"comment\", \"VARCHAR\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallLogExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallLogExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public LitemallLogExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public LitemallLogExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public LitemallLogExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallLogExample example = new LitemallLogExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public LitemallLogExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public LitemallLogExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIsNull() {\n            addCriterion(\"`admin` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIsNotNull() {\n            addCriterion(\"`admin` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminEqualTo(String value) {\n            addCriterion(\"`admin` =\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminNotEqualTo(String value) {\n            addCriterion(\"`admin` <>\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminGreaterThan(String value) {\n            addCriterion(\"`admin` >\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`admin` >=\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminLessThan(String value) {\n            addCriterion(\"`admin` <\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminLessThanOrEqualTo(String value) {\n            addCriterion(\"`admin` <=\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`admin` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminLike(String value) {\n            addCriterion(\"`admin` like\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminNotLike(String value) {\n            addCriterion(\"`admin` not like\", value, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIn(List<String> values) {\n            addCriterion(\"`admin` in\", values, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminNotIn(List<String> values) {\n            addCriterion(\"`admin` not in\", values, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminBetween(String value1, String value2) {\n            addCriterion(\"`admin` between\", value1, value2, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminNotBetween(String value1, String value2) {\n            addCriterion(\"`admin` not between\", value1, value2, \"admin\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpIsNull() {\n            addCriterion(\"ip is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpIsNotNull() {\n            addCriterion(\"ip is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpEqualTo(String value) {\n            addCriterion(\"ip =\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpNotEqualTo(String value) {\n            addCriterion(\"ip <>\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpGreaterThan(String value) {\n            addCriterion(\"ip >\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpGreaterThanOrEqualTo(String value) {\n            addCriterion(\"ip >=\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpLessThan(String value) {\n            addCriterion(\"ip <\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpLessThanOrEqualTo(String value) {\n            addCriterion(\"ip <=\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andIpLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"ip <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIpLike(String value) {\n            addCriterion(\"ip like\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpNotLike(String value) {\n            addCriterion(\"ip not like\", value, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpIn(List<String> values) {\n            addCriterion(\"ip in\", values, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpNotIn(List<String> values) {\n            addCriterion(\"ip not in\", values, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpBetween(String value1, String value2) {\n            addCriterion(\"ip between\", value1, value2, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIpNotBetween(String value1, String value2) {\n            addCriterion(\"ip not between\", value1, value2, \"ip\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Integer value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Integer value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Integer value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Integer value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Integer value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Integer> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Integer> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Integer value1, Integer value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionIsNull() {\n            addCriterion(\"`action` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionIsNotNull() {\n            addCriterion(\"`action` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionEqualTo(String value) {\n            addCriterion(\"`action` =\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionNotEqualTo(String value) {\n            addCriterion(\"`action` <>\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionGreaterThan(String value) {\n            addCriterion(\"`action` >\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`action` >=\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionLessThan(String value) {\n            addCriterion(\"`action` <\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionLessThanOrEqualTo(String value) {\n            addCriterion(\"`action` <=\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andActionLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`action` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActionLike(String value) {\n            addCriterion(\"`action` like\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionNotLike(String value) {\n            addCriterion(\"`action` not like\", value, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionIn(List<String> values) {\n            addCriterion(\"`action` in\", values, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionNotIn(List<String> values) {\n            addCriterion(\"`action` not in\", values, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionBetween(String value1, String value2) {\n            addCriterion(\"`action` between\", value1, value2, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActionNotBetween(String value1, String value2) {\n            addCriterion(\"`action` not between\", value1, value2, \"action\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Boolean value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Boolean value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Boolean value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Boolean value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Boolean> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Boolean> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultIsNull() {\n            addCriterion(\"`result` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultIsNotNull() {\n            addCriterion(\"`result` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultEqualTo(String value) {\n            addCriterion(\"`result` =\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultNotEqualTo(String value) {\n            addCriterion(\"`result` <>\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultGreaterThan(String value) {\n            addCriterion(\"`result` >\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`result` >=\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultLessThan(String value) {\n            addCriterion(\"`result` <\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultLessThanOrEqualTo(String value) {\n            addCriterion(\"`result` <=\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andResultLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`result` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andResultLike(String value) {\n            addCriterion(\"`result` like\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultNotLike(String value) {\n            addCriterion(\"`result` not like\", value, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultIn(List<String> values) {\n            addCriterion(\"`result` in\", values, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultNotIn(List<String> values) {\n            addCriterion(\"`result` not in\", values, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultBetween(String value1, String value2) {\n            addCriterion(\"`result` between\", value1, value2, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andResultNotBetween(String value1, String value2) {\n            addCriterion(\"`result` not between\", value1, value2, \"result\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNull() {\n            addCriterion(\"`comment` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNotNull() {\n            addCriterion(\"`comment` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentEqualTo(String value) {\n            addCriterion(\"`comment` =\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotEqualTo(String value) {\n            addCriterion(\"`comment` <>\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThan(String value) {\n            addCriterion(\"`comment` >\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`comment` >=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThan(String value) {\n            addCriterion(\"`comment` <\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThanOrEqualTo(String value) {\n            addCriterion(\"`comment` <=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLike(String value) {\n            addCriterion(\"`comment` like\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotLike(String value) {\n            addCriterion(\"`comment` not like\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIn(List<String> values) {\n            addCriterion(\"`comment` in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotIn(List<String> values) {\n            addCriterion(\"`comment` not in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentBetween(String value1, String value2) {\n            addCriterion(\"`comment` between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotBetween(String value1, String value2) {\n            addCriterion(\"`comment` not between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallLog.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_log\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        private LitemallLogExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallLogExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public LitemallLogExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallLog.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallLog.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_log\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_log\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_log\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallLogExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallNotice.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallNotice {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.title\n     *\n     * @mbg.generated\n     */\n    private String title;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.content\n     *\n     * @mbg.generated\n     */\n    private String content;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.admin_id\n     *\n     * @mbg.generated\n     */\n    private Integer adminId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.id\n     *\n     * @return the value of litemall_notice.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.id\n     *\n     * @param id the value for litemall_notice.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.title\n     *\n     * @return the value of litemall_notice.title\n     *\n     * @mbg.generated\n     */\n    public String getTitle() {\n        return title;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.title\n     *\n     * @param title the value for litemall_notice.title\n     *\n     * @mbg.generated\n     */\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.content\n     *\n     * @return the value of litemall_notice.content\n     *\n     * @mbg.generated\n     */\n    public String getContent() {\n        return content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.content\n     *\n     * @param content the value for litemall_notice.content\n     *\n     * @mbg.generated\n     */\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.admin_id\n     *\n     * @return the value of litemall_notice.admin_id\n     *\n     * @mbg.generated\n     */\n    public Integer getAdminId() {\n        return adminId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.admin_id\n     *\n     * @param adminId the value for litemall_notice.admin_id\n     *\n     * @mbg.generated\n     */\n    public void setAdminId(Integer adminId) {\n        this.adminId = adminId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.add_time\n     *\n     * @return the value of litemall_notice.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.add_time\n     *\n     * @param addTime the value for litemall_notice.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.update_time\n     *\n     * @return the value of litemall_notice.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.update_time\n     *\n     * @param updateTime the value for litemall_notice.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice.deleted\n     *\n     * @return the value of litemall_notice.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice.deleted\n     *\n     * @param deleted the value for litemall_notice.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", title=\").append(title);\n        sb.append(\", content=\").append(content);\n        sb.append(\", adminId=\").append(adminId);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallNotice other = (LitemallNotice) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getTitle() == null ? other.getTitle() == null : this.getTitle().equals(other.getTitle()))\n            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()))\n            && (this.getAdminId() == null ? other.getAdminId() == null : this.getAdminId().equals(other.getAdminId()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode());\n        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());\n        result = prime * result + ((getAdminId() == null) ? 0 : getAdminId().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        title(\"title\", \"title\", \"VARCHAR\", false),\n        content(\"content\", \"content\", \"VARCHAR\", false),\n        adminId(\"admin_id\", \"adminId\", \"INTEGER\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallNoticeAdmin.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallNoticeAdmin {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.notice_id\n     *\n     * @mbg.generated\n     */\n    private Integer noticeId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.notice_title\n     *\n     * @mbg.generated\n     */\n    private String noticeTitle;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.admin_id\n     *\n     * @mbg.generated\n     */\n    private Integer adminId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.read_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime readTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_notice_admin.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.id\n     *\n     * @return the value of litemall_notice_admin.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.id\n     *\n     * @param id the value for litemall_notice_admin.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.notice_id\n     *\n     * @return the value of litemall_notice_admin.notice_id\n     *\n     * @mbg.generated\n     */\n    public Integer getNoticeId() {\n        return noticeId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.notice_id\n     *\n     * @param noticeId the value for litemall_notice_admin.notice_id\n     *\n     * @mbg.generated\n     */\n    public void setNoticeId(Integer noticeId) {\n        this.noticeId = noticeId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.notice_title\n     *\n     * @return the value of litemall_notice_admin.notice_title\n     *\n     * @mbg.generated\n     */\n    public String getNoticeTitle() {\n        return noticeTitle;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.notice_title\n     *\n     * @param noticeTitle the value for litemall_notice_admin.notice_title\n     *\n     * @mbg.generated\n     */\n    public void setNoticeTitle(String noticeTitle) {\n        this.noticeTitle = noticeTitle;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.admin_id\n     *\n     * @return the value of litemall_notice_admin.admin_id\n     *\n     * @mbg.generated\n     */\n    public Integer getAdminId() {\n        return adminId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.admin_id\n     *\n     * @param adminId the value for litemall_notice_admin.admin_id\n     *\n     * @mbg.generated\n     */\n    public void setAdminId(Integer adminId) {\n        this.adminId = adminId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.read_time\n     *\n     * @return the value of litemall_notice_admin.read_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getReadTime() {\n        return readTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.read_time\n     *\n     * @param readTime the value for litemall_notice_admin.read_time\n     *\n     * @mbg.generated\n     */\n    public void setReadTime(LocalDateTime readTime) {\n        this.readTime = readTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.add_time\n     *\n     * @return the value of litemall_notice_admin.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.add_time\n     *\n     * @param addTime the value for litemall_notice_admin.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.update_time\n     *\n     * @return the value of litemall_notice_admin.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.update_time\n     *\n     * @param updateTime the value for litemall_notice_admin.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_notice_admin.deleted\n     *\n     * @return the value of litemall_notice_admin.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_notice_admin.deleted\n     *\n     * @param deleted the value for litemall_notice_admin.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", noticeId=\").append(noticeId);\n        sb.append(\", noticeTitle=\").append(noticeTitle);\n        sb.append(\", adminId=\").append(adminId);\n        sb.append(\", readTime=\").append(readTime);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallNoticeAdmin other = (LitemallNoticeAdmin) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getNoticeId() == null ? other.getNoticeId() == null : this.getNoticeId().equals(other.getNoticeId()))\n            && (this.getNoticeTitle() == null ? other.getNoticeTitle() == null : this.getNoticeTitle().equals(other.getNoticeTitle()))\n            && (this.getAdminId() == null ? other.getAdminId() == null : this.getAdminId().equals(other.getAdminId()))\n            && (this.getReadTime() == null ? other.getReadTime() == null : this.getReadTime().equals(other.getReadTime()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getNoticeId() == null) ? 0 : getNoticeId().hashCode());\n        result = prime * result + ((getNoticeTitle() == null) ? 0 : getNoticeTitle().hashCode());\n        result = prime * result + ((getAdminId() == null) ? 0 : getAdminId().hashCode());\n        result = prime * result + ((getReadTime() == null) ? 0 : getReadTime().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        noticeId(\"notice_id\", \"noticeId\", \"INTEGER\", false),\n        noticeTitle(\"notice_title\", \"noticeTitle\", \"VARCHAR\", false),\n        adminId(\"admin_id\", \"adminId\", \"INTEGER\", false),\n        readTime(\"read_time\", \"readTime\", \"TIMESTAMP\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallNoticeAdminExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallNoticeAdminExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeAdminExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeAdminExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeAdminExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeAdminExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeAdminExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdIsNull() {\n            addCriterion(\"notice_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdIsNotNull() {\n            addCriterion(\"notice_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdEqualTo(Integer value) {\n            addCriterion(\"notice_id =\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdNotEqualTo(Integer value) {\n            addCriterion(\"notice_id <>\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdGreaterThan(Integer value) {\n            addCriterion(\"notice_id >\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"notice_id >=\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdLessThan(Integer value) {\n            addCriterion(\"notice_id <\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"notice_id <=\", value, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeIdLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdIn(List<Integer> values) {\n            addCriterion(\"notice_id in\", values, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdNotIn(List<Integer> values) {\n            addCriterion(\"notice_id not in\", values, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"notice_id between\", value1, value2, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"notice_id not between\", value1, value2, \"noticeId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleIsNull() {\n            addCriterion(\"notice_title is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleIsNotNull() {\n            addCriterion(\"notice_title is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleEqualTo(String value) {\n            addCriterion(\"notice_title =\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleNotEqualTo(String value) {\n            addCriterion(\"notice_title <>\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleGreaterThan(String value) {\n            addCriterion(\"notice_title >\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleGreaterThanOrEqualTo(String value) {\n            addCriterion(\"notice_title >=\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleLessThan(String value) {\n            addCriterion(\"notice_title <\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleLessThanOrEqualTo(String value) {\n            addCriterion(\"notice_title <=\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andNoticeTitleLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"notice_title <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleLike(String value) {\n            addCriterion(\"notice_title like\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleNotLike(String value) {\n            addCriterion(\"notice_title not like\", value, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleIn(List<String> values) {\n            addCriterion(\"notice_title in\", values, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleNotIn(List<String> values) {\n            addCriterion(\"notice_title not in\", values, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleBetween(String value1, String value2) {\n            addCriterion(\"notice_title between\", value1, value2, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNoticeTitleNotBetween(String value1, String value2) {\n            addCriterion(\"notice_title not between\", value1, value2, \"noticeTitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIsNull() {\n            addCriterion(\"admin_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIsNotNull() {\n            addCriterion(\"admin_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdEqualTo(Integer value) {\n            addCriterion(\"admin_id =\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotEqualTo(Integer value) {\n            addCriterion(\"admin_id <>\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdGreaterThan(Integer value) {\n            addCriterion(\"admin_id >\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"admin_id >=\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdLessThan(Integer value) {\n            addCriterion(\"admin_id <\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"admin_id <=\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"admin_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIn(List<Integer> values) {\n            addCriterion(\"admin_id in\", values, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotIn(List<Integer> values) {\n            addCriterion(\"admin_id not in\", values, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"admin_id between\", value1, value2, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"admin_id not between\", value1, value2, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeIsNull() {\n            addCriterion(\"read_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeIsNotNull() {\n            addCriterion(\"read_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"read_time =\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"read_time <>\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"read_time >\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"read_time >=\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeLessThan(LocalDateTime value) {\n            addCriterion(\"read_time <\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"read_time <=\", value, \"readTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadTimeLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"read_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"read_time in\", values, \"readTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"read_time not in\", values, \"readTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"read_time between\", value1, value2, \"readTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"read_time not between\", value1, value2, \"readTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallNoticeAdmin.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        private LitemallNoticeAdminExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallNoticeAdminExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public LitemallNoticeAdminExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallNoticeAdmin.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallNoticeAdmin.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_notice_admin\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice_admin\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice_admin\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallNoticeExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallNoticeExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallNoticeExample example = new LitemallNoticeExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public LitemallNoticeExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIsNull() {\n            addCriterion(\"title is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIsNotNull() {\n            addCriterion(\"title is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleEqualTo(String value) {\n            addCriterion(\"title =\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotEqualTo(String value) {\n            addCriterion(\"title <>\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleGreaterThan(String value) {\n            addCriterion(\"title >\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleGreaterThanOrEqualTo(String value) {\n            addCriterion(\"title >=\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLessThan(String value) {\n            addCriterion(\"title <\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLessThanOrEqualTo(String value) {\n            addCriterion(\"title <=\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"title <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLike(String value) {\n            addCriterion(\"title like\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotLike(String value) {\n            addCriterion(\"title not like\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIn(List<String> values) {\n            addCriterion(\"title in\", values, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotIn(List<String> values) {\n            addCriterion(\"title not in\", values, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleBetween(String value1, String value2) {\n            addCriterion(\"title between\", value1, value2, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotBetween(String value1, String value2) {\n            addCriterion(\"title not between\", value1, value2, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNull() {\n            addCriterion(\"content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIsNotNull() {\n            addCriterion(\"content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentEqualTo(String value) {\n            addCriterion(\"content =\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotEqualTo(String value) {\n            addCriterion(\"content <>\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThan(String value) {\n            addCriterion(\"content >\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"content >=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThan(String value) {\n            addCriterion(\"content <\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLessThanOrEqualTo(String value) {\n            addCriterion(\"content <=\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andContentLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andContentLike(String value) {\n            addCriterion(\"content like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotLike(String value) {\n            addCriterion(\"content not like\", value, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentIn(List<String> values) {\n            addCriterion(\"content in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotIn(List<String> values) {\n            addCriterion(\"content not in\", values, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentBetween(String value1, String value2) {\n            addCriterion(\"content between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andContentNotBetween(String value1, String value2) {\n            addCriterion(\"content not between\", value1, value2, \"content\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIsNull() {\n            addCriterion(\"admin_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIsNotNull() {\n            addCriterion(\"admin_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdEqualTo(Integer value) {\n            addCriterion(\"admin_id =\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotEqualTo(Integer value) {\n            addCriterion(\"admin_id <>\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdGreaterThan(Integer value) {\n            addCriterion(\"admin_id >\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"admin_id >=\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdLessThan(Integer value) {\n            addCriterion(\"admin_id <\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"admin_id <=\", value, \"adminId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAdminIdLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"admin_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdIn(List<Integer> values) {\n            addCriterion(\"admin_id in\", values, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotIn(List<Integer> values) {\n            addCriterion(\"admin_id not in\", values, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"admin_id between\", value1, value2, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAdminIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"admin_id not between\", value1, value2, \"adminId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallNotice.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        private LitemallNoticeExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallNoticeExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public LitemallNoticeExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallNotice.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallNotice.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_notice\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_notice\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_notice\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallNoticeExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallOrder.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallOrder {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.order_sn\n     *\n     * @mbg.generated\n     */\n    private String orderSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.order_status\n     *\n     * @mbg.generated\n     */\n    private Short orderStatus;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.aftersale_status\n     *\n     * @mbg.generated\n     */\n    private Short aftersaleStatus;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.consignee\n     *\n     * @mbg.generated\n     */\n    private String consignee;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.mobile\n     *\n     * @mbg.generated\n     */\n    private String mobile;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.address\n     *\n     * @mbg.generated\n     */\n    private String address;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.message\n     *\n     * @mbg.generated\n     */\n    private String message;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.goods_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal goodsPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.freight_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal freightPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.coupon_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal couponPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.integral_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal integralPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.groupon_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal grouponPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.order_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal orderPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.actual_price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal actualPrice;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.pay_id\n     *\n     * @mbg.generated\n     */\n    private String payId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.pay_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime payTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.ship_sn\n     *\n     * @mbg.generated\n     */\n    private String shipSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.ship_channel\n     *\n     * @mbg.generated\n     */\n    private String shipChannel;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.ship_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime shipTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.refund_amount\n     *\n     * @mbg.generated\n     */\n    private BigDecimal refundAmount;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.refund_type\n     *\n     * @mbg.generated\n     */\n    private String refundType;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.refund_content\n     *\n     * @mbg.generated\n     */\n    private String refundContent;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.refund_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime refundTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.confirm_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime confirmTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.comments\n     *\n     * @mbg.generated\n     */\n    private Short comments;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.end_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime endTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.id\n     *\n     * @return the value of litemall_order.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.id\n     *\n     * @param id the value for litemall_order.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.user_id\n     *\n     * @return the value of litemall_order.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.user_id\n     *\n     * @param userId the value for litemall_order.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.order_sn\n     *\n     * @return the value of litemall_order.order_sn\n     *\n     * @mbg.generated\n     */\n    public String getOrderSn() {\n        return orderSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.order_sn\n     *\n     * @param orderSn the value for litemall_order.order_sn\n     *\n     * @mbg.generated\n     */\n    public void setOrderSn(String orderSn) {\n        this.orderSn = orderSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.order_status\n     *\n     * @return the value of litemall_order.order_status\n     *\n     * @mbg.generated\n     */\n    public Short getOrderStatus() {\n        return orderStatus;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.order_status\n     *\n     * @param orderStatus the value for litemall_order.order_status\n     *\n     * @mbg.generated\n     */\n    public void setOrderStatus(Short orderStatus) {\n        this.orderStatus = orderStatus;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.aftersale_status\n     *\n     * @return the value of litemall_order.aftersale_status\n     *\n     * @mbg.generated\n     */\n    public Short getAftersaleStatus() {\n        return aftersaleStatus;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.aftersale_status\n     *\n     * @param aftersaleStatus the value for litemall_order.aftersale_status\n     *\n     * @mbg.generated\n     */\n    public void setAftersaleStatus(Short aftersaleStatus) {\n        this.aftersaleStatus = aftersaleStatus;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.consignee\n     *\n     * @return the value of litemall_order.consignee\n     *\n     * @mbg.generated\n     */\n    public String getConsignee() {\n        return consignee;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.consignee\n     *\n     * @param consignee the value for litemall_order.consignee\n     *\n     * @mbg.generated\n     */\n    public void setConsignee(String consignee) {\n        this.consignee = consignee;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.mobile\n     *\n     * @return the value of litemall_order.mobile\n     *\n     * @mbg.generated\n     */\n    public String getMobile() {\n        return mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.mobile\n     *\n     * @param mobile the value for litemall_order.mobile\n     *\n     * @mbg.generated\n     */\n    public void setMobile(String mobile) {\n        this.mobile = mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.address\n     *\n     * @return the value of litemall_order.address\n     *\n     * @mbg.generated\n     */\n    public String getAddress() {\n        return address;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.address\n     *\n     * @param address the value for litemall_order.address\n     *\n     * @mbg.generated\n     */\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.message\n     *\n     * @return the value of litemall_order.message\n     *\n     * @mbg.generated\n     */\n    public String getMessage() {\n        return message;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.message\n     *\n     * @param message the value for litemall_order.message\n     *\n     * @mbg.generated\n     */\n    public void setMessage(String message) {\n        this.message = message;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.goods_price\n     *\n     * @return the value of litemall_order.goods_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getGoodsPrice() {\n        return goodsPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.goods_price\n     *\n     * @param goodsPrice the value for litemall_order.goods_price\n     *\n     * @mbg.generated\n     */\n    public void setGoodsPrice(BigDecimal goodsPrice) {\n        this.goodsPrice = goodsPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.freight_price\n     *\n     * @return the value of litemall_order.freight_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getFreightPrice() {\n        return freightPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.freight_price\n     *\n     * @param freightPrice the value for litemall_order.freight_price\n     *\n     * @mbg.generated\n     */\n    public void setFreightPrice(BigDecimal freightPrice) {\n        this.freightPrice = freightPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.coupon_price\n     *\n     * @return the value of litemall_order.coupon_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getCouponPrice() {\n        return couponPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.coupon_price\n     *\n     * @param couponPrice the value for litemall_order.coupon_price\n     *\n     * @mbg.generated\n     */\n    public void setCouponPrice(BigDecimal couponPrice) {\n        this.couponPrice = couponPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.integral_price\n     *\n     * @return the value of litemall_order.integral_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getIntegralPrice() {\n        return integralPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.integral_price\n     *\n     * @param integralPrice the value for litemall_order.integral_price\n     *\n     * @mbg.generated\n     */\n    public void setIntegralPrice(BigDecimal integralPrice) {\n        this.integralPrice = integralPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.groupon_price\n     *\n     * @return the value of litemall_order.groupon_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getGrouponPrice() {\n        return grouponPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.groupon_price\n     *\n     * @param grouponPrice the value for litemall_order.groupon_price\n     *\n     * @mbg.generated\n     */\n    public void setGrouponPrice(BigDecimal grouponPrice) {\n        this.grouponPrice = grouponPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.order_price\n     *\n     * @return the value of litemall_order.order_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getOrderPrice() {\n        return orderPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.order_price\n     *\n     * @param orderPrice the value for litemall_order.order_price\n     *\n     * @mbg.generated\n     */\n    public void setOrderPrice(BigDecimal orderPrice) {\n        this.orderPrice = orderPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.actual_price\n     *\n     * @return the value of litemall_order.actual_price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getActualPrice() {\n        return actualPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.actual_price\n     *\n     * @param actualPrice the value for litemall_order.actual_price\n     *\n     * @mbg.generated\n     */\n    public void setActualPrice(BigDecimal actualPrice) {\n        this.actualPrice = actualPrice;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.pay_id\n     *\n     * @return the value of litemall_order.pay_id\n     *\n     * @mbg.generated\n     */\n    public String getPayId() {\n        return payId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.pay_id\n     *\n     * @param payId the value for litemall_order.pay_id\n     *\n     * @mbg.generated\n     */\n    public void setPayId(String payId) {\n        this.payId = payId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.pay_time\n     *\n     * @return the value of litemall_order.pay_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getPayTime() {\n        return payTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.pay_time\n     *\n     * @param payTime the value for litemall_order.pay_time\n     *\n     * @mbg.generated\n     */\n    public void setPayTime(LocalDateTime payTime) {\n        this.payTime = payTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.ship_sn\n     *\n     * @return the value of litemall_order.ship_sn\n     *\n     * @mbg.generated\n     */\n    public String getShipSn() {\n        return shipSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.ship_sn\n     *\n     * @param shipSn the value for litemall_order.ship_sn\n     *\n     * @mbg.generated\n     */\n    public void setShipSn(String shipSn) {\n        this.shipSn = shipSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.ship_channel\n     *\n     * @return the value of litemall_order.ship_channel\n     *\n     * @mbg.generated\n     */\n    public String getShipChannel() {\n        return shipChannel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.ship_channel\n     *\n     * @param shipChannel the value for litemall_order.ship_channel\n     *\n     * @mbg.generated\n     */\n    public void setShipChannel(String shipChannel) {\n        this.shipChannel = shipChannel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.ship_time\n     *\n     * @return the value of litemall_order.ship_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getShipTime() {\n        return shipTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.ship_time\n     *\n     * @param shipTime the value for litemall_order.ship_time\n     *\n     * @mbg.generated\n     */\n    public void setShipTime(LocalDateTime shipTime) {\n        this.shipTime = shipTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.refund_amount\n     *\n     * @return the value of litemall_order.refund_amount\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getRefundAmount() {\n        return refundAmount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.refund_amount\n     *\n     * @param refundAmount the value for litemall_order.refund_amount\n     *\n     * @mbg.generated\n     */\n    public void setRefundAmount(BigDecimal refundAmount) {\n        this.refundAmount = refundAmount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.refund_type\n     *\n     * @return the value of litemall_order.refund_type\n     *\n     * @mbg.generated\n     */\n    public String getRefundType() {\n        return refundType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.refund_type\n     *\n     * @param refundType the value for litemall_order.refund_type\n     *\n     * @mbg.generated\n     */\n    public void setRefundType(String refundType) {\n        this.refundType = refundType;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.refund_content\n     *\n     * @return the value of litemall_order.refund_content\n     *\n     * @mbg.generated\n     */\n    public String getRefundContent() {\n        return refundContent;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.refund_content\n     *\n     * @param refundContent the value for litemall_order.refund_content\n     *\n     * @mbg.generated\n     */\n    public void setRefundContent(String refundContent) {\n        this.refundContent = refundContent;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.refund_time\n     *\n     * @return the value of litemall_order.refund_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getRefundTime() {\n        return refundTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.refund_time\n     *\n     * @param refundTime the value for litemall_order.refund_time\n     *\n     * @mbg.generated\n     */\n    public void setRefundTime(LocalDateTime refundTime) {\n        this.refundTime = refundTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.confirm_time\n     *\n     * @return the value of litemall_order.confirm_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getConfirmTime() {\n        return confirmTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.confirm_time\n     *\n     * @param confirmTime the value for litemall_order.confirm_time\n     *\n     * @mbg.generated\n     */\n    public void setConfirmTime(LocalDateTime confirmTime) {\n        this.confirmTime = confirmTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.comments\n     *\n     * @return the value of litemall_order.comments\n     *\n     * @mbg.generated\n     */\n    public Short getComments() {\n        return comments;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.comments\n     *\n     * @param comments the value for litemall_order.comments\n     *\n     * @mbg.generated\n     */\n    public void setComments(Short comments) {\n        this.comments = comments;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.end_time\n     *\n     * @return the value of litemall_order.end_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getEndTime() {\n        return endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.end_time\n     *\n     * @param endTime the value for litemall_order.end_time\n     *\n     * @mbg.generated\n     */\n    public void setEndTime(LocalDateTime endTime) {\n        this.endTime = endTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.add_time\n     *\n     * @return the value of litemall_order.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.add_time\n     *\n     * @param addTime the value for litemall_order.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.update_time\n     *\n     * @return the value of litemall_order.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.update_time\n     *\n     * @param updateTime the value for litemall_order.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order.deleted\n     *\n     * @return the value of litemall_order.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order.deleted\n     *\n     * @param deleted the value for litemall_order.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", orderSn=\").append(orderSn);\n        sb.append(\", orderStatus=\").append(orderStatus);\n        sb.append(\", aftersaleStatus=\").append(aftersaleStatus);\n        sb.append(\", consignee=\").append(consignee);\n        sb.append(\", mobile=\").append(mobile);\n        sb.append(\", address=\").append(address);\n        sb.append(\", message=\").append(message);\n        sb.append(\", goodsPrice=\").append(goodsPrice);\n        sb.append(\", freightPrice=\").append(freightPrice);\n        sb.append(\", couponPrice=\").append(couponPrice);\n        sb.append(\", integralPrice=\").append(integralPrice);\n        sb.append(\", grouponPrice=\").append(grouponPrice);\n        sb.append(\", orderPrice=\").append(orderPrice);\n        sb.append(\", actualPrice=\").append(actualPrice);\n        sb.append(\", payId=\").append(payId);\n        sb.append(\", payTime=\").append(payTime);\n        sb.append(\", shipSn=\").append(shipSn);\n        sb.append(\", shipChannel=\").append(shipChannel);\n        sb.append(\", shipTime=\").append(shipTime);\n        sb.append(\", refundAmount=\").append(refundAmount);\n        sb.append(\", refundType=\").append(refundType);\n        sb.append(\", refundContent=\").append(refundContent);\n        sb.append(\", refundTime=\").append(refundTime);\n        sb.append(\", confirmTime=\").append(confirmTime);\n        sb.append(\", comments=\").append(comments);\n        sb.append(\", endTime=\").append(endTime);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallOrder other = (LitemallOrder) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getOrderSn() == null ? other.getOrderSn() == null : this.getOrderSn().equals(other.getOrderSn()))\n            && (this.getOrderStatus() == null ? other.getOrderStatus() == null : this.getOrderStatus().equals(other.getOrderStatus()))\n            && (this.getAftersaleStatus() == null ? other.getAftersaleStatus() == null : this.getAftersaleStatus().equals(other.getAftersaleStatus()))\n            && (this.getConsignee() == null ? other.getConsignee() == null : this.getConsignee().equals(other.getConsignee()))\n            && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile()))\n            && (this.getAddress() == null ? other.getAddress() == null : this.getAddress().equals(other.getAddress()))\n            && (this.getMessage() == null ? other.getMessage() == null : this.getMessage().equals(other.getMessage()))\n            && (this.getGoodsPrice() == null ? other.getGoodsPrice() == null : this.getGoodsPrice().equals(other.getGoodsPrice()))\n            && (this.getFreightPrice() == null ? other.getFreightPrice() == null : this.getFreightPrice().equals(other.getFreightPrice()))\n            && (this.getCouponPrice() == null ? other.getCouponPrice() == null : this.getCouponPrice().equals(other.getCouponPrice()))\n            && (this.getIntegralPrice() == null ? other.getIntegralPrice() == null : this.getIntegralPrice().equals(other.getIntegralPrice()))\n            && (this.getGrouponPrice() == null ? other.getGrouponPrice() == null : this.getGrouponPrice().equals(other.getGrouponPrice()))\n            && (this.getOrderPrice() == null ? other.getOrderPrice() == null : this.getOrderPrice().equals(other.getOrderPrice()))\n            && (this.getActualPrice() == null ? other.getActualPrice() == null : this.getActualPrice().equals(other.getActualPrice()))\n            && (this.getPayId() == null ? other.getPayId() == null : this.getPayId().equals(other.getPayId()))\n            && (this.getPayTime() == null ? other.getPayTime() == null : this.getPayTime().equals(other.getPayTime()))\n            && (this.getShipSn() == null ? other.getShipSn() == null : this.getShipSn().equals(other.getShipSn()))\n            && (this.getShipChannel() == null ? other.getShipChannel() == null : this.getShipChannel().equals(other.getShipChannel()))\n            && (this.getShipTime() == null ? other.getShipTime() == null : this.getShipTime().equals(other.getShipTime()))\n            && (this.getRefundAmount() == null ? other.getRefundAmount() == null : this.getRefundAmount().equals(other.getRefundAmount()))\n            && (this.getRefundType() == null ? other.getRefundType() == null : this.getRefundType().equals(other.getRefundType()))\n            && (this.getRefundContent() == null ? other.getRefundContent() == null : this.getRefundContent().equals(other.getRefundContent()))\n            && (this.getRefundTime() == null ? other.getRefundTime() == null : this.getRefundTime().equals(other.getRefundTime()))\n            && (this.getConfirmTime() == null ? other.getConfirmTime() == null : this.getConfirmTime().equals(other.getConfirmTime()))\n            && (this.getComments() == null ? other.getComments() == null : this.getComments().equals(other.getComments()))\n            && (this.getEndTime() == null ? other.getEndTime() == null : this.getEndTime().equals(other.getEndTime()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getOrderSn() == null) ? 0 : getOrderSn().hashCode());\n        result = prime * result + ((getOrderStatus() == null) ? 0 : getOrderStatus().hashCode());\n        result = prime * result + ((getAftersaleStatus() == null) ? 0 : getAftersaleStatus().hashCode());\n        result = prime * result + ((getConsignee() == null) ? 0 : getConsignee().hashCode());\n        result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode());\n        result = prime * result + ((getAddress() == null) ? 0 : getAddress().hashCode());\n        result = prime * result + ((getMessage() == null) ? 0 : getMessage().hashCode());\n        result = prime * result + ((getGoodsPrice() == null) ? 0 : getGoodsPrice().hashCode());\n        result = prime * result + ((getFreightPrice() == null) ? 0 : getFreightPrice().hashCode());\n        result = prime * result + ((getCouponPrice() == null) ? 0 : getCouponPrice().hashCode());\n        result = prime * result + ((getIntegralPrice() == null) ? 0 : getIntegralPrice().hashCode());\n        result = prime * result + ((getGrouponPrice() == null) ? 0 : getGrouponPrice().hashCode());\n        result = prime * result + ((getOrderPrice() == null) ? 0 : getOrderPrice().hashCode());\n        result = prime * result + ((getActualPrice() == null) ? 0 : getActualPrice().hashCode());\n        result = prime * result + ((getPayId() == null) ? 0 : getPayId().hashCode());\n        result = prime * result + ((getPayTime() == null) ? 0 : getPayTime().hashCode());\n        result = prime * result + ((getShipSn() == null) ? 0 : getShipSn().hashCode());\n        result = prime * result + ((getShipChannel() == null) ? 0 : getShipChannel().hashCode());\n        result = prime * result + ((getShipTime() == null) ? 0 : getShipTime().hashCode());\n        result = prime * result + ((getRefundAmount() == null) ? 0 : getRefundAmount().hashCode());\n        result = prime * result + ((getRefundType() == null) ? 0 : getRefundType().hashCode());\n        result = prime * result + ((getRefundContent() == null) ? 0 : getRefundContent().hashCode());\n        result = prime * result + ((getRefundTime() == null) ? 0 : getRefundTime().hashCode());\n        result = prime * result + ((getConfirmTime() == null) ? 0 : getConfirmTime().hashCode());\n        result = prime * result + ((getComments() == null) ? 0 : getComments().hashCode());\n        result = prime * result + ((getEndTime() == null) ? 0 : getEndTime().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        orderSn(\"order_sn\", \"orderSn\", \"VARCHAR\", false),\n        orderStatus(\"order_status\", \"orderStatus\", \"SMALLINT\", false),\n        aftersaleStatus(\"aftersale_status\", \"aftersaleStatus\", \"SMALLINT\", false),\n        consignee(\"consignee\", \"consignee\", \"VARCHAR\", false),\n        mobile(\"mobile\", \"mobile\", \"VARCHAR\", false),\n        address(\"address\", \"address\", \"VARCHAR\", false),\n        message(\"message\", \"message\", \"VARCHAR\", false),\n        goodsPrice(\"goods_price\", \"goodsPrice\", \"DECIMAL\", false),\n        freightPrice(\"freight_price\", \"freightPrice\", \"DECIMAL\", false),\n        couponPrice(\"coupon_price\", \"couponPrice\", \"DECIMAL\", false),\n        integralPrice(\"integral_price\", \"integralPrice\", \"DECIMAL\", false),\n        grouponPrice(\"groupon_price\", \"grouponPrice\", \"DECIMAL\", false),\n        orderPrice(\"order_price\", \"orderPrice\", \"DECIMAL\", false),\n        actualPrice(\"actual_price\", \"actualPrice\", \"DECIMAL\", false),\n        payId(\"pay_id\", \"payId\", \"VARCHAR\", false),\n        payTime(\"pay_time\", \"payTime\", \"TIMESTAMP\", false),\n        shipSn(\"ship_sn\", \"shipSn\", \"VARCHAR\", false),\n        shipChannel(\"ship_channel\", \"shipChannel\", \"VARCHAR\", false),\n        shipTime(\"ship_time\", \"shipTime\", \"TIMESTAMP\", false),\n        refundAmount(\"refund_amount\", \"refundAmount\", \"DECIMAL\", false),\n        refundType(\"refund_type\", \"refundType\", \"VARCHAR\", false),\n        refundContent(\"refund_content\", \"refundContent\", \"VARCHAR\", false),\n        refundTime(\"refund_time\", \"refundTime\", \"TIMESTAMP\", false),\n        confirmTime(\"confirm_time\", \"confirmTime\", \"TIMESTAMP\", false),\n        comments(\"comments\", \"comments\", \"SMALLINT\", false),\n        endTime(\"end_time\", \"endTime\", \"TIMESTAMP\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallOrderExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallOrderExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallOrderExample example = new LitemallOrderExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnIsNull() {\n            addCriterion(\"order_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnIsNotNull() {\n            addCriterion(\"order_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnEqualTo(String value) {\n            addCriterion(\"order_sn =\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnNotEqualTo(String value) {\n            addCriterion(\"order_sn <>\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnGreaterThan(String value) {\n            addCriterion(\"order_sn >\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"order_sn >=\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnLessThan(String value) {\n            addCriterion(\"order_sn <\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnLessThanOrEqualTo(String value) {\n            addCriterion(\"order_sn <=\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderSnLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnLike(String value) {\n            addCriterion(\"order_sn like\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnNotLike(String value) {\n            addCriterion(\"order_sn not like\", value, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnIn(List<String> values) {\n            addCriterion(\"order_sn in\", values, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnNotIn(List<String> values) {\n            addCriterion(\"order_sn not in\", values, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnBetween(String value1, String value2) {\n            addCriterion(\"order_sn between\", value1, value2, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderSnNotBetween(String value1, String value2) {\n            addCriterion(\"order_sn not between\", value1, value2, \"orderSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusIsNull() {\n            addCriterion(\"order_status is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusIsNotNull() {\n            addCriterion(\"order_status is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusEqualTo(Short value) {\n            addCriterion(\"order_status =\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusNotEqualTo(Short value) {\n            addCriterion(\"order_status <>\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusGreaterThan(Short value) {\n            addCriterion(\"order_status >\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"order_status >=\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusLessThan(Short value) {\n            addCriterion(\"order_status <\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"order_status <=\", value, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderStatusLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_status <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusIn(List<Short> values) {\n            addCriterion(\"order_status in\", values, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusNotIn(List<Short> values) {\n            addCriterion(\"order_status not in\", values, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusBetween(Short value1, Short value2) {\n            addCriterion(\"order_status between\", value1, value2, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"order_status not between\", value1, value2, \"orderStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusIsNull() {\n            addCriterion(\"aftersale_status is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusIsNotNull() {\n            addCriterion(\"aftersale_status is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusEqualTo(Short value) {\n            addCriterion(\"aftersale_status =\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusNotEqualTo(Short value) {\n            addCriterion(\"aftersale_status <>\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusGreaterThan(Short value) {\n            addCriterion(\"aftersale_status >\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"aftersale_status >=\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusLessThan(Short value) {\n            addCriterion(\"aftersale_status <\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusLessThanOrEqualTo(Short value) {\n            addCriterion(\"aftersale_status <=\", value, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAftersaleStatusLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"aftersale_status <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusIn(List<Short> values) {\n            addCriterion(\"aftersale_status in\", values, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusNotIn(List<Short> values) {\n            addCriterion(\"aftersale_status not in\", values, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusBetween(Short value1, Short value2) {\n            addCriterion(\"aftersale_status between\", value1, value2, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAftersaleStatusNotBetween(Short value1, Short value2) {\n            addCriterion(\"aftersale_status not between\", value1, value2, \"aftersaleStatus\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeIsNull() {\n            addCriterion(\"consignee is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeIsNotNull() {\n            addCriterion(\"consignee is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeEqualTo(String value) {\n            addCriterion(\"consignee =\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeNotEqualTo(String value) {\n            addCriterion(\"consignee <>\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeGreaterThan(String value) {\n            addCriterion(\"consignee >\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"consignee >=\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeLessThan(String value) {\n            addCriterion(\"consignee <\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeLessThanOrEqualTo(String value) {\n            addCriterion(\"consignee <=\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConsigneeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"consignee <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeLike(String value) {\n            addCriterion(\"consignee like\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeNotLike(String value) {\n            addCriterion(\"consignee not like\", value, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeIn(List<String> values) {\n            addCriterion(\"consignee in\", values, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeNotIn(List<String> values) {\n            addCriterion(\"consignee not in\", values, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeBetween(String value1, String value2) {\n            addCriterion(\"consignee between\", value1, value2, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConsigneeNotBetween(String value1, String value2) {\n            addCriterion(\"consignee not between\", value1, value2, \"consignee\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNull() {\n            addCriterion(\"mobile is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNotNull() {\n            addCriterion(\"mobile is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileEqualTo(String value) {\n            addCriterion(\"mobile =\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotEqualTo(String value) {\n            addCriterion(\"mobile <>\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThan(String value) {\n            addCriterion(\"mobile >\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThanOrEqualTo(String value) {\n            addCriterion(\"mobile >=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThan(String value) {\n            addCriterion(\"mobile <\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThanOrEqualTo(String value) {\n            addCriterion(\"mobile <=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"mobile <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLike(String value) {\n            addCriterion(\"mobile like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotLike(String value) {\n            addCriterion(\"mobile not like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIn(List<String> values) {\n            addCriterion(\"mobile in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotIn(List<String> values) {\n            addCriterion(\"mobile not in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileBetween(String value1, String value2) {\n            addCriterion(\"mobile between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotBetween(String value1, String value2) {\n            addCriterion(\"mobile not between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressIsNull() {\n            addCriterion(\"address is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressIsNotNull() {\n            addCriterion(\"address is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressEqualTo(String value) {\n            addCriterion(\"address =\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressNotEqualTo(String value) {\n            addCriterion(\"address <>\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressGreaterThan(String value) {\n            addCriterion(\"address >\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressGreaterThanOrEqualTo(String value) {\n            addCriterion(\"address >=\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressLessThan(String value) {\n            addCriterion(\"address <\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressLessThanOrEqualTo(String value) {\n            addCriterion(\"address <=\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddressLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"address <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressLike(String value) {\n            addCriterion(\"address like\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressNotLike(String value) {\n            addCriterion(\"address not like\", value, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressIn(List<String> values) {\n            addCriterion(\"address in\", values, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressNotIn(List<String> values) {\n            addCriterion(\"address not in\", values, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressBetween(String value1, String value2) {\n            addCriterion(\"address between\", value1, value2, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddressNotBetween(String value1, String value2) {\n            addCriterion(\"address not between\", value1, value2, \"address\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageIsNull() {\n            addCriterion(\"message is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageIsNotNull() {\n            addCriterion(\"message is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageEqualTo(String value) {\n            addCriterion(\"message =\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageNotEqualTo(String value) {\n            addCriterion(\"message <>\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageGreaterThan(String value) {\n            addCriterion(\"message >\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageGreaterThanOrEqualTo(String value) {\n            addCriterion(\"message >=\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageLessThan(String value) {\n            addCriterion(\"message <\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageLessThanOrEqualTo(String value) {\n            addCriterion(\"message <=\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andMessageLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"message <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageLike(String value) {\n            addCriterion(\"message like\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageNotLike(String value) {\n            addCriterion(\"message not like\", value, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageIn(List<String> values) {\n            addCriterion(\"message in\", values, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageNotIn(List<String> values) {\n            addCriterion(\"message not in\", values, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageBetween(String value1, String value2) {\n            addCriterion(\"message between\", value1, value2, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMessageNotBetween(String value1, String value2) {\n            addCriterion(\"message not between\", value1, value2, \"message\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceIsNull() {\n            addCriterion(\"goods_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceIsNotNull() {\n            addCriterion(\"goods_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceEqualTo(BigDecimal value) {\n            addCriterion(\"goods_price =\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"goods_price <>\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"goods_price >\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"goods_price >=\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceLessThan(BigDecimal value) {\n            addCriterion(\"goods_price <\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"goods_price <=\", value, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"goods_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceIn(List<BigDecimal> values) {\n            addCriterion(\"goods_price in\", values, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"goods_price not in\", values, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"goods_price between\", value1, value2, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"goods_price not between\", value1, value2, \"goodsPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceIsNull() {\n            addCriterion(\"freight_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceIsNotNull() {\n            addCriterion(\"freight_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceEqualTo(BigDecimal value) {\n            addCriterion(\"freight_price =\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"freight_price <>\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"freight_price >\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"freight_price >=\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceLessThan(BigDecimal value) {\n            addCriterion(\"freight_price <\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"freight_price <=\", value, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andFreightPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"freight_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceIn(List<BigDecimal> values) {\n            addCriterion(\"freight_price in\", values, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"freight_price not in\", values, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"freight_price between\", value1, value2, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFreightPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"freight_price not between\", value1, value2, \"freightPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceIsNull() {\n            addCriterion(\"coupon_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceIsNotNull() {\n            addCriterion(\"coupon_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceEqualTo(BigDecimal value) {\n            addCriterion(\"coupon_price =\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"coupon_price <>\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"coupon_price >\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"coupon_price >=\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceLessThan(BigDecimal value) {\n            addCriterion(\"coupon_price <\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"coupon_price <=\", value, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCouponPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"coupon_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceIn(List<BigDecimal> values) {\n            addCriterion(\"coupon_price in\", values, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"coupon_price not in\", values, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"coupon_price between\", value1, value2, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCouponPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"coupon_price not between\", value1, value2, \"couponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceIsNull() {\n            addCriterion(\"integral_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceIsNotNull() {\n            addCriterion(\"integral_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceEqualTo(BigDecimal value) {\n            addCriterion(\"integral_price =\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"integral_price <>\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"integral_price >\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"integral_price >=\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceLessThan(BigDecimal value) {\n            addCriterion(\"integral_price <\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"integral_price <=\", value, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andIntegralPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"integral_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceIn(List<BigDecimal> values) {\n            addCriterion(\"integral_price in\", values, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"integral_price not in\", values, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"integral_price between\", value1, value2, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIntegralPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"integral_price not between\", value1, value2, \"integralPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceIsNull() {\n            addCriterion(\"groupon_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceIsNotNull() {\n            addCriterion(\"groupon_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceEqualTo(BigDecimal value) {\n            addCriterion(\"groupon_price =\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"groupon_price <>\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"groupon_price >\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"groupon_price >=\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceLessThan(BigDecimal value) {\n            addCriterion(\"groupon_price <\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"groupon_price <=\", value, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andGrouponPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"groupon_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceIn(List<BigDecimal> values) {\n            addCriterion(\"groupon_price in\", values, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"groupon_price not in\", values, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"groupon_price between\", value1, value2, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGrouponPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"groupon_price not between\", value1, value2, \"grouponPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceIsNull() {\n            addCriterion(\"order_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceIsNotNull() {\n            addCriterion(\"order_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceEqualTo(BigDecimal value) {\n            addCriterion(\"order_price =\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"order_price <>\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"order_price >\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"order_price >=\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceLessThan(BigDecimal value) {\n            addCriterion(\"order_price <\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"order_price <=\", value, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"order_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceIn(List<BigDecimal> values) {\n            addCriterion(\"order_price in\", values, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"order_price not in\", values, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"order_price between\", value1, value2, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"order_price not between\", value1, value2, \"orderPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceIsNull() {\n            addCriterion(\"actual_price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceIsNotNull() {\n            addCriterion(\"actual_price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceEqualTo(BigDecimal value) {\n            addCriterion(\"actual_price =\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"actual_price <>\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"actual_price >\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"actual_price >=\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceLessThan(BigDecimal value) {\n            addCriterion(\"actual_price <\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"actual_price <=\", value, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andActualPriceLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"actual_price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceIn(List<BigDecimal> values) {\n            addCriterion(\"actual_price in\", values, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"actual_price not in\", values, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"actual_price between\", value1, value2, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andActualPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"actual_price not between\", value1, value2, \"actualPrice\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdIsNull() {\n            addCriterion(\"pay_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdIsNotNull() {\n            addCriterion(\"pay_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdEqualTo(String value) {\n            addCriterion(\"pay_id =\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdNotEqualTo(String value) {\n            addCriterion(\"pay_id <>\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdGreaterThan(String value) {\n            addCriterion(\"pay_id >\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pay_id >=\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdLessThan(String value) {\n            addCriterion(\"pay_id <\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdLessThanOrEqualTo(String value) {\n            addCriterion(\"pay_id <=\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayIdLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdLike(String value) {\n            addCriterion(\"pay_id like\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdNotLike(String value) {\n            addCriterion(\"pay_id not like\", value, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdIn(List<String> values) {\n            addCriterion(\"pay_id in\", values, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdNotIn(List<String> values) {\n            addCriterion(\"pay_id not in\", values, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdBetween(String value1, String value2) {\n            addCriterion(\"pay_id between\", value1, value2, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayIdNotBetween(String value1, String value2) {\n            addCriterion(\"pay_id not between\", value1, value2, \"payId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeIsNull() {\n            addCriterion(\"pay_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeIsNotNull() {\n            addCriterion(\"pay_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"pay_time =\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"pay_time <>\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"pay_time >\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"pay_time >=\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeLessThan(LocalDateTime value) {\n            addCriterion(\"pay_time <\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"pay_time <=\", value, \"payTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andPayTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"pay_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"pay_time in\", values, \"payTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"pay_time not in\", values, \"payTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"pay_time between\", value1, value2, \"payTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPayTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"pay_time not between\", value1, value2, \"payTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnIsNull() {\n            addCriterion(\"ship_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnIsNotNull() {\n            addCriterion(\"ship_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnEqualTo(String value) {\n            addCriterion(\"ship_sn =\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnNotEqualTo(String value) {\n            addCriterion(\"ship_sn <>\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnGreaterThan(String value) {\n            addCriterion(\"ship_sn >\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"ship_sn >=\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnLessThan(String value) {\n            addCriterion(\"ship_sn <\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnLessThanOrEqualTo(String value) {\n            addCriterion(\"ship_sn <=\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipSnLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnLike(String value) {\n            addCriterion(\"ship_sn like\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnNotLike(String value) {\n            addCriterion(\"ship_sn not like\", value, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnIn(List<String> values) {\n            addCriterion(\"ship_sn in\", values, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnNotIn(List<String> values) {\n            addCriterion(\"ship_sn not in\", values, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnBetween(String value1, String value2) {\n            addCriterion(\"ship_sn between\", value1, value2, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipSnNotBetween(String value1, String value2) {\n            addCriterion(\"ship_sn not between\", value1, value2, \"shipSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelIsNull() {\n            addCriterion(\"ship_channel is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelIsNotNull() {\n            addCriterion(\"ship_channel is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelEqualTo(String value) {\n            addCriterion(\"ship_channel =\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelNotEqualTo(String value) {\n            addCriterion(\"ship_channel <>\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelGreaterThan(String value) {\n            addCriterion(\"ship_channel >\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelGreaterThanOrEqualTo(String value) {\n            addCriterion(\"ship_channel >=\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelLessThan(String value) {\n            addCriterion(\"ship_channel <\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelLessThanOrEqualTo(String value) {\n            addCriterion(\"ship_channel <=\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipChannelLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_channel <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelLike(String value) {\n            addCriterion(\"ship_channel like\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelNotLike(String value) {\n            addCriterion(\"ship_channel not like\", value, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelIn(List<String> values) {\n            addCriterion(\"ship_channel in\", values, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelNotIn(List<String> values) {\n            addCriterion(\"ship_channel not in\", values, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelBetween(String value1, String value2) {\n            addCriterion(\"ship_channel between\", value1, value2, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipChannelNotBetween(String value1, String value2) {\n            addCriterion(\"ship_channel not between\", value1, value2, \"shipChannel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeIsNull() {\n            addCriterion(\"ship_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeIsNotNull() {\n            addCriterion(\"ship_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"ship_time =\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"ship_time <>\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"ship_time >\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"ship_time >=\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeLessThan(LocalDateTime value) {\n            addCriterion(\"ship_time <\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"ship_time <=\", value, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andShipTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"ship_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"ship_time in\", values, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"ship_time not in\", values, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"ship_time between\", value1, value2, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andShipTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"ship_time not between\", value1, value2, \"shipTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountIsNull() {\n            addCriterion(\"refund_amount is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountIsNotNull() {\n            addCriterion(\"refund_amount is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountEqualTo(BigDecimal value) {\n            addCriterion(\"refund_amount =\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountNotEqualTo(BigDecimal value) {\n            addCriterion(\"refund_amount <>\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountGreaterThan(BigDecimal value) {\n            addCriterion(\"refund_amount >\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"refund_amount >=\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountLessThan(BigDecimal value) {\n            addCriterion(\"refund_amount <\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"refund_amount <=\", value, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundAmountLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_amount <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountIn(List<BigDecimal> values) {\n            addCriterion(\"refund_amount in\", values, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountNotIn(List<BigDecimal> values) {\n            addCriterion(\"refund_amount not in\", values, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"refund_amount between\", value1, value2, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundAmountNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"refund_amount not between\", value1, value2, \"refundAmount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeIsNull() {\n            addCriterion(\"refund_type is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeIsNotNull() {\n            addCriterion(\"refund_type is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeEqualTo(String value) {\n            addCriterion(\"refund_type =\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeNotEqualTo(String value) {\n            addCriterion(\"refund_type <>\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeGreaterThan(String value) {\n            addCriterion(\"refund_type >\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"refund_type >=\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeLessThan(String value) {\n            addCriterion(\"refund_type <\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeLessThanOrEqualTo(String value) {\n            addCriterion(\"refund_type <=\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTypeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_type <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeLike(String value) {\n            addCriterion(\"refund_type like\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeNotLike(String value) {\n            addCriterion(\"refund_type not like\", value, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeIn(List<String> values) {\n            addCriterion(\"refund_type in\", values, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeNotIn(List<String> values) {\n            addCriterion(\"refund_type not in\", values, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeBetween(String value1, String value2) {\n            addCriterion(\"refund_type between\", value1, value2, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTypeNotBetween(String value1, String value2) {\n            addCriterion(\"refund_type not between\", value1, value2, \"refundType\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentIsNull() {\n            addCriterion(\"refund_content is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentIsNotNull() {\n            addCriterion(\"refund_content is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentEqualTo(String value) {\n            addCriterion(\"refund_content =\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentNotEqualTo(String value) {\n            addCriterion(\"refund_content <>\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentGreaterThan(String value) {\n            addCriterion(\"refund_content >\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentGreaterThanOrEqualTo(String value) {\n            addCriterion(\"refund_content >=\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentLessThan(String value) {\n            addCriterion(\"refund_content <\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentLessThanOrEqualTo(String value) {\n            addCriterion(\"refund_content <=\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundContentLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_content <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentLike(String value) {\n            addCriterion(\"refund_content like\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentNotLike(String value) {\n            addCriterion(\"refund_content not like\", value, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentIn(List<String> values) {\n            addCriterion(\"refund_content in\", values, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentNotIn(List<String> values) {\n            addCriterion(\"refund_content not in\", values, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentBetween(String value1, String value2) {\n            addCriterion(\"refund_content between\", value1, value2, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundContentNotBetween(String value1, String value2) {\n            addCriterion(\"refund_content not between\", value1, value2, \"refundContent\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeIsNull() {\n            addCriterion(\"refund_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeIsNotNull() {\n            addCriterion(\"refund_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"refund_time =\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"refund_time <>\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"refund_time >\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"refund_time >=\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeLessThan(LocalDateTime value) {\n            addCriterion(\"refund_time <\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"refund_time <=\", value, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andRefundTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"refund_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"refund_time in\", values, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"refund_time not in\", values, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"refund_time between\", value1, value2, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRefundTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"refund_time not between\", value1, value2, \"refundTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeIsNull() {\n            addCriterion(\"confirm_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeIsNotNull() {\n            addCriterion(\"confirm_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"confirm_time =\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"confirm_time <>\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"confirm_time >\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"confirm_time >=\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeLessThan(LocalDateTime value) {\n            addCriterion(\"confirm_time <\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"confirm_time <=\", value, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andConfirmTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"confirm_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"confirm_time in\", values, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"confirm_time not in\", values, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"confirm_time between\", value1, value2, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andConfirmTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"confirm_time not between\", value1, value2, \"confirmTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsIsNull() {\n            addCriterion(\"comments is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsIsNotNull() {\n            addCriterion(\"comments is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsEqualTo(Short value) {\n            addCriterion(\"comments =\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsNotEqualTo(Short value) {\n            addCriterion(\"comments <>\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsGreaterThan(Short value) {\n            addCriterion(\"comments >\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"comments >=\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsLessThan(Short value) {\n            addCriterion(\"comments <\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsLessThanOrEqualTo(Short value) {\n            addCriterion(\"comments <=\", value, \"comments\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentsLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"comments <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsIn(List<Short> values) {\n            addCriterion(\"comments in\", values, \"comments\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsNotIn(List<Short> values) {\n            addCriterion(\"comments not in\", values, \"comments\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsBetween(Short value1, Short value2) {\n            addCriterion(\"comments between\", value1, value2, \"comments\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentsNotBetween(Short value1, Short value2) {\n            addCriterion(\"comments not between\", value1, value2, \"comments\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNull() {\n            addCriterion(\"end_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIsNotNull() {\n            addCriterion(\"end_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time =\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <>\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"end_time >\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time >=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThan(LocalDateTime value) {\n            addCriterion(\"end_time <\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"end_time <=\", value, \"endTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andEndTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"end_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"end_time not in\", values, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEndTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"end_time not between\", value1, value2, \"endTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallOrder.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        private LitemallOrderExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallOrderExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public LitemallOrderExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallOrder.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallOrder.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_order\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallOrderExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallOrderGoods.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallOrderGoods {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.order_id\n     *\n     * @mbg.generated\n     */\n    private Integer orderId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.goods_id\n     *\n     * @mbg.generated\n     */\n    private Integer goodsId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.goods_name\n     *\n     * @mbg.generated\n     */\n    private String goodsName;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    private String goodsSn;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.product_id\n     *\n     * @mbg.generated\n     */\n    private Integer productId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.number\n     *\n     * @mbg.generated\n     */\n    private Short number;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal price;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.specifications\n     *\n     * @mbg.generated\n     */\n    private String[] specifications;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.comment\n     *\n     * @mbg.generated\n     */\n    private Integer comment;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_order_goods.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.id\n     *\n     * @return the value of litemall_order_goods.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.id\n     *\n     * @param id the value for litemall_order_goods.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.order_id\n     *\n     * @return the value of litemall_order_goods.order_id\n     *\n     * @mbg.generated\n     */\n    public Integer getOrderId() {\n        return orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.order_id\n     *\n     * @param orderId the value for litemall_order_goods.order_id\n     *\n     * @mbg.generated\n     */\n    public void setOrderId(Integer orderId) {\n        this.orderId = orderId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.goods_id\n     *\n     * @return the value of litemall_order_goods.goods_id\n     *\n     * @mbg.generated\n     */\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.goods_id\n     *\n     * @param goodsId the value for litemall_order_goods.goods_id\n     *\n     * @mbg.generated\n     */\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.goods_name\n     *\n     * @return the value of litemall_order_goods.goods_name\n     *\n     * @mbg.generated\n     */\n    public String getGoodsName() {\n        return goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.goods_name\n     *\n     * @param goodsName the value for litemall_order_goods.goods_name\n     *\n     * @mbg.generated\n     */\n    public void setGoodsName(String goodsName) {\n        this.goodsName = goodsName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.goods_sn\n     *\n     * @return the value of litemall_order_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    public String getGoodsSn() {\n        return goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.goods_sn\n     *\n     * @param goodsSn the value for litemall_order_goods.goods_sn\n     *\n     * @mbg.generated\n     */\n    public void setGoodsSn(String goodsSn) {\n        this.goodsSn = goodsSn;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.product_id\n     *\n     * @return the value of litemall_order_goods.product_id\n     *\n     * @mbg.generated\n     */\n    public Integer getProductId() {\n        return productId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.product_id\n     *\n     * @param productId the value for litemall_order_goods.product_id\n     *\n     * @mbg.generated\n     */\n    public void setProductId(Integer productId) {\n        this.productId = productId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.number\n     *\n     * @return the value of litemall_order_goods.number\n     *\n     * @mbg.generated\n     */\n    public Short getNumber() {\n        return number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.number\n     *\n     * @param number the value for litemall_order_goods.number\n     *\n     * @mbg.generated\n     */\n    public void setNumber(Short number) {\n        this.number = number;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.price\n     *\n     * @return the value of litemall_order_goods.price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.price\n     *\n     * @param price the value for litemall_order_goods.price\n     *\n     * @mbg.generated\n     */\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.specifications\n     *\n     * @return the value of litemall_order_goods.specifications\n     *\n     * @mbg.generated\n     */\n    public String[] getSpecifications() {\n        return specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.specifications\n     *\n     * @param specifications the value for litemall_order_goods.specifications\n     *\n     * @mbg.generated\n     */\n    public void setSpecifications(String[] specifications) {\n        this.specifications = specifications;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.pic_url\n     *\n     * @return the value of litemall_order_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.pic_url\n     *\n     * @param picUrl the value for litemall_order_goods.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.comment\n     *\n     * @return the value of litemall_order_goods.comment\n     *\n     * @mbg.generated\n     */\n    public Integer getComment() {\n        return comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.comment\n     *\n     * @param comment the value for litemall_order_goods.comment\n     *\n     * @mbg.generated\n     */\n    public void setComment(Integer comment) {\n        this.comment = comment;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.add_time\n     *\n     * @return the value of litemall_order_goods.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.add_time\n     *\n     * @param addTime the value for litemall_order_goods.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.update_time\n     *\n     * @return the value of litemall_order_goods.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.update_time\n     *\n     * @param updateTime the value for litemall_order_goods.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_order_goods.deleted\n     *\n     * @return the value of litemall_order_goods.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_order_goods.deleted\n     *\n     * @param deleted the value for litemall_order_goods.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", orderId=\").append(orderId);\n        sb.append(\", goodsId=\").append(goodsId);\n        sb.append(\", goodsName=\").append(goodsName);\n        sb.append(\", goodsSn=\").append(goodsSn);\n        sb.append(\", productId=\").append(productId);\n        sb.append(\", number=\").append(number);\n        sb.append(\", price=\").append(price);\n        sb.append(\", specifications=\").append(specifications);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", comment=\").append(comment);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallOrderGoods other = (LitemallOrderGoods) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getOrderId() == null ? other.getOrderId() == null : this.getOrderId().equals(other.getOrderId()))\n            && (this.getGoodsId() == null ? other.getGoodsId() == null : this.getGoodsId().equals(other.getGoodsId()))\n            && (this.getGoodsName() == null ? other.getGoodsName() == null : this.getGoodsName().equals(other.getGoodsName()))\n            && (this.getGoodsSn() == null ? other.getGoodsSn() == null : this.getGoodsSn().equals(other.getGoodsSn()))\n            && (this.getProductId() == null ? other.getProductId() == null : this.getProductId().equals(other.getProductId()))\n            && (this.getNumber() == null ? other.getNumber() == null : this.getNumber().equals(other.getNumber()))\n            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))\n            && (Arrays.equals(this.getSpecifications(), other.getSpecifications()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getComment() == null ? other.getComment() == null : this.getComment().equals(other.getComment()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getOrderId() == null) ? 0 : getOrderId().hashCode());\n        result = prime * result + ((getGoodsId() == null) ? 0 : getGoodsId().hashCode());\n        result = prime * result + ((getGoodsName() == null) ? 0 : getGoodsName().hashCode());\n        result = prime * result + ((getGoodsSn() == null) ? 0 : getGoodsSn().hashCode());\n        result = prime * result + ((getProductId() == null) ? 0 : getProductId().hashCode());\n        result = prime * result + ((getNumber() == null) ? 0 : getNumber().hashCode());\n        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());\n        result = prime * result + (Arrays.hashCode(getSpecifications()));\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getComment() == null) ? 0 : getComment().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        orderId(\"order_id\", \"orderId\", \"INTEGER\", false),\n        goodsId(\"goods_id\", \"goodsId\", \"INTEGER\", false),\n        goodsName(\"goods_name\", \"goodsName\", \"VARCHAR\", false),\n        goodsSn(\"goods_sn\", \"goodsSn\", \"VARCHAR\", false),\n        productId(\"product_id\", \"productId\", \"INTEGER\", false),\n        number(\"number\", \"number\", \"SMALLINT\", true),\n        price(\"price\", \"price\", \"DECIMAL\", false),\n        specifications(\"specifications\", \"specifications\", \"VARCHAR\", false),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        comment(\"comment\", \"comment\", \"INTEGER\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallOrderGoodsExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallOrderGoodsExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderGoodsExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderGoodsExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderGoodsExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallOrderGoodsExample example = new LitemallOrderGoodsExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderGoodsExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public LitemallOrderGoodsExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> specificationsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            specificationsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getSpecificationsCriteria() {\n            return specificationsCriteria;\n        }\n\n        protected void addSpecificationsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addSpecificationsCriterion(String condition, String[] value1, String[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            specificationsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || specificationsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(specificationsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNull() {\n            addCriterion(\"order_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIsNotNull() {\n            addCriterion(\"order_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdEqualTo(Integer value) {\n            addCriterion(\"order_id =\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotEqualTo(Integer value) {\n            addCriterion(\"order_id <>\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThan(Integer value) {\n            addCriterion(\"order_id >\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id >=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThan(Integer value) {\n            addCriterion(\"order_id <\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"order_id <=\", value, \"orderId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andOrderIdLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"order_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdIn(List<Integer> values) {\n            addCriterion(\"order_id in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotIn(List<Integer> values) {\n            addCriterion(\"order_id not in\", values, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andOrderIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"order_id not between\", value1, value2, \"orderId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNull() {\n            addCriterion(\"goods_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIsNotNull() {\n            addCriterion(\"goods_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdEqualTo(Integer value) {\n            addCriterion(\"goods_id =\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotEqualTo(Integer value) {\n            addCriterion(\"goods_id <>\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThan(Integer value) {\n            addCriterion(\"goods_id >\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id >=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThan(Integer value) {\n            addCriterion(\"goods_id <\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"goods_id <=\", value, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsIdLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdIn(List<Integer> values) {\n            addCriterion(\"goods_id in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotIn(List<Integer> values) {\n            addCriterion(\"goods_id not in\", values, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"goods_id not between\", value1, value2, \"goodsId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNull() {\n            addCriterion(\"goods_name is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIsNotNull() {\n            addCriterion(\"goods_name is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameEqualTo(String value) {\n            addCriterion(\"goods_name =\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotEqualTo(String value) {\n            addCriterion(\"goods_name <>\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThan(String value) {\n            addCriterion(\"goods_name >\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_name >=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThan(String value) {\n            addCriterion(\"goods_name <\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_name <=\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNameLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_name <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameLike(String value) {\n            addCriterion(\"goods_name like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotLike(String value) {\n            addCriterion(\"goods_name not like\", value, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameIn(List<String> values) {\n            addCriterion(\"goods_name in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotIn(List<String> values) {\n            addCriterion(\"goods_name not in\", values, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameBetween(String value1, String value2) {\n            addCriterion(\"goods_name between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNameNotBetween(String value1, String value2) {\n            addCriterion(\"goods_name not between\", value1, value2, \"goodsName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNull() {\n            addCriterion(\"goods_sn is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIsNotNull() {\n            addCriterion(\"goods_sn is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnEqualTo(String value) {\n            addCriterion(\"goods_sn =\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotEqualTo(String value) {\n            addCriterion(\"goods_sn <>\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThan(String value) {\n            addCriterion(\"goods_sn >\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnGreaterThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn >=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThan(String value) {\n            addCriterion(\"goods_sn <\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLessThanOrEqualTo(String value) {\n            addCriterion(\"goods_sn <=\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsSnLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"goods_sn <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnLike(String value) {\n            addCriterion(\"goods_sn like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotLike(String value) {\n            addCriterion(\"goods_sn not like\", value, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnIn(List<String> values) {\n            addCriterion(\"goods_sn in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotIn(List<String> values) {\n            addCriterion(\"goods_sn not in\", values, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnBetween(String value1, String value2) {\n            addCriterion(\"goods_sn between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsSnNotBetween(String value1, String value2) {\n            addCriterion(\"goods_sn not between\", value1, value2, \"goodsSn\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIsNull() {\n            addCriterion(\"product_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIsNotNull() {\n            addCriterion(\"product_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdEqualTo(Integer value) {\n            addCriterion(\"product_id =\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotEqualTo(Integer value) {\n            addCriterion(\"product_id <>\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdGreaterThan(Integer value) {\n            addCriterion(\"product_id >\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"product_id >=\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdLessThan(Integer value) {\n            addCriterion(\"product_id <\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"product_id <=\", value, \"productId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andProductIdLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"product_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdIn(List<Integer> values) {\n            addCriterion(\"product_id in\", values, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotIn(List<Integer> values) {\n            addCriterion(\"product_id not in\", values, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"product_id between\", value1, value2, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andProductIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"product_id not between\", value1, value2, \"productId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNull() {\n            addCriterion(\"`number` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIsNotNull() {\n            addCriterion(\"`number` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberEqualTo(Short value) {\n            addCriterion(\"`number` =\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotEqualTo(Short value) {\n            addCriterion(\"`number` <>\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThan(Short value) {\n            addCriterion(\"`number` >\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberGreaterThanOrEqualTo(Short value) {\n            addCriterion(\"`number` >=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThan(Short value) {\n            addCriterion(\"`number` <\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberLessThanOrEqualTo(Short value) {\n            addCriterion(\"`number` <=\", value, \"number\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andNumberLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`number` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberIn(List<Short> values) {\n            addCriterion(\"`number` in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotIn(List<Short> values) {\n            addCriterion(\"`number` not in\", values, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberBetween(Short value1, Short value2) {\n            addCriterion(\"`number` between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNumberNotBetween(Short value1, Short value2) {\n            addCriterion(\"`number` not between\", value1, value2, \"number\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNull() {\n            addCriterion(\"price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNotNull() {\n            addCriterion(\"price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceEqualTo(BigDecimal value) {\n            addCriterion(\"price =\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"price <>\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"price >\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price >=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThan(BigDecimal value) {\n            addCriterion(\"price <\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price <=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIn(List<BigDecimal> values) {\n            addCriterion(\"price in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"price not in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price not between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNull() {\n            addCriterion(\"specifications is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIsNotNull() {\n            addCriterion(\"specifications is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications =\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <>\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThan(String[] value) {\n            addSpecificationsCriterion(\"specifications >\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsGreaterThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications >=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThan(String[] value) {\n            addSpecificationsCriterion(\"specifications <\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLessThanOrEqualTo(String[] value) {\n            addSpecificationsCriterion(\"specifications <=\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andSpecificationsLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"specifications <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsLike(String[] value) {\n            addSpecificationsCriterion(\"specifications like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotLike(String[] value) {\n            addSpecificationsCriterion(\"specifications not like\", value, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotIn(List<String[]> values) {\n            addSpecificationsCriterion(\"specifications not in\", values, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSpecificationsNotBetween(String[] value1, String[] value2) {\n            addSpecificationsCriterion(\"specifications not between\", value1, value2, \"specifications\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNull() {\n            addCriterion(\"`comment` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIsNotNull() {\n            addCriterion(\"`comment` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentEqualTo(Integer value) {\n            addCriterion(\"`comment` =\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotEqualTo(Integer value) {\n            addCriterion(\"`comment` <>\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThan(Integer value) {\n            addCriterion(\"`comment` >\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"`comment` >=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThan(Integer value) {\n            addCriterion(\"`comment` <\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentLessThanOrEqualTo(Integer value) {\n            addCriterion(\"`comment` <=\", value, \"comment\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andCommentLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"`comment` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentIn(List<Integer> values) {\n            addCriterion(\"`comment` in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotIn(List<Integer> values) {\n            addCriterion(\"`comment` not in\", values, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentBetween(Integer value1, Integer value2) {\n            addCriterion(\"`comment` between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCommentNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"`comment` not between\", value1, value2, \"comment\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallOrderGoods.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        private LitemallOrderGoodsExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallOrderGoodsExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public LitemallOrderGoodsExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallOrderGoods.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallOrderGoods.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_order_goods\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_order_goods\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_order_goods\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallPermission.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallPermission {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.role_id\n     *\n     * @mbg.generated\n     */\n    private Integer roleId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.permission\n     *\n     * @mbg.generated\n     */\n    private String permission;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_permission.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.id\n     *\n     * @return the value of litemall_permission.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.id\n     *\n     * @param id the value for litemall_permission.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.role_id\n     *\n     * @return the value of litemall_permission.role_id\n     *\n     * @mbg.generated\n     */\n    public Integer getRoleId() {\n        return roleId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.role_id\n     *\n     * @param roleId the value for litemall_permission.role_id\n     *\n     * @mbg.generated\n     */\n    public void setRoleId(Integer roleId) {\n        this.roleId = roleId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.permission\n     *\n     * @return the value of litemall_permission.permission\n     *\n     * @mbg.generated\n     */\n    public String getPermission() {\n        return permission;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.permission\n     *\n     * @param permission the value for litemall_permission.permission\n     *\n     * @mbg.generated\n     */\n    public void setPermission(String permission) {\n        this.permission = permission;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.add_time\n     *\n     * @return the value of litemall_permission.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.add_time\n     *\n     * @param addTime the value for litemall_permission.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.update_time\n     *\n     * @return the value of litemall_permission.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.update_time\n     *\n     * @param updateTime the value for litemall_permission.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_permission.deleted\n     *\n     * @return the value of litemall_permission.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_permission.deleted\n     *\n     * @param deleted the value for litemall_permission.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", roleId=\").append(roleId);\n        sb.append(\", permission=\").append(permission);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallPermission other = (LitemallPermission) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getRoleId() == null ? other.getRoleId() == null : this.getRoleId().equals(other.getRoleId()))\n            && (this.getPermission() == null ? other.getPermission() == null : this.getPermission().equals(other.getPermission()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getRoleId() == null) ? 0 : getRoleId().hashCode());\n        result = prime * result + ((getPermission() == null) ? 0 : getPermission().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        roleId(\"role_id\", \"roleId\", \"INTEGER\", false),\n        permission(\"permission\", \"permission\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallPermissionExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallPermissionExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public LitemallPermissionExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public LitemallPermissionExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public LitemallPermissionExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public LitemallPermissionExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public LitemallPermissionExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdIsNull() {\n            addCriterion(\"role_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdIsNotNull() {\n            addCriterion(\"role_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdEqualTo(Integer value) {\n            addCriterion(\"role_id =\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdNotEqualTo(Integer value) {\n            addCriterion(\"role_id <>\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdGreaterThan(Integer value) {\n            addCriterion(\"role_id >\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"role_id >=\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdLessThan(Integer value) {\n            addCriterion(\"role_id <\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"role_id <=\", value, \"roleId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andRoleIdLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"role_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdIn(List<Integer> values) {\n            addCriterion(\"role_id in\", values, \"roleId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdNotIn(List<Integer> values) {\n            addCriterion(\"role_id not in\", values, \"roleId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"role_id between\", value1, value2, \"roleId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andRoleIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"role_id not between\", value1, value2, \"roleId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionIsNull() {\n            addCriterion(\"permission is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionIsNotNull() {\n            addCriterion(\"permission is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionEqualTo(String value) {\n            addCriterion(\"permission =\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionNotEqualTo(String value) {\n            addCriterion(\"permission <>\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionGreaterThan(String value) {\n            addCriterion(\"permission >\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionGreaterThanOrEqualTo(String value) {\n            addCriterion(\"permission >=\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionLessThan(String value) {\n            addCriterion(\"permission <\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionLessThanOrEqualTo(String value) {\n            addCriterion(\"permission <=\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andPermissionLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"permission <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionLike(String value) {\n            addCriterion(\"permission like\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionNotLike(String value) {\n            addCriterion(\"permission not like\", value, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionIn(List<String> values) {\n            addCriterion(\"permission in\", values, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionNotIn(List<String> values) {\n            addCriterion(\"permission not in\", values, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionBetween(String value1, String value2) {\n            addCriterion(\"permission between\", value1, value2, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPermissionNotBetween(String value1, String value2) {\n            addCriterion(\"permission not between\", value1, value2, \"permission\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallPermission.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_permission\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        private LitemallPermissionExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallPermissionExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public LitemallPermissionExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallPermission.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallPermission.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_permission\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_permission\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_permission\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallPermissionExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRegion.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallRegion {\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_region.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_region.pid\n     *\n     * @mbg.generated\n     */\n    private Integer pid;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_region.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_region.type\n     *\n     * @mbg.generated\n     */\n    private Byte type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_region.code\n     *\n     * @mbg.generated\n     */\n    private Integer code;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_region.id\n     *\n     * @return the value of litemall_region.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_region.id\n     *\n     * @param id the value for litemall_region.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_region.pid\n     *\n     * @return the value of litemall_region.pid\n     *\n     * @mbg.generated\n     */\n    public Integer getPid() {\n        return pid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_region.pid\n     *\n     * @param pid the value for litemall_region.pid\n     *\n     * @mbg.generated\n     */\n    public void setPid(Integer pid) {\n        this.pid = pid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_region.name\n     *\n     * @return the value of litemall_region.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_region.name\n     *\n     * @param name the value for litemall_region.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_region.type\n     *\n     * @return the value of litemall_region.type\n     *\n     * @mbg.generated\n     */\n    public Byte getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_region.type\n     *\n     * @param type the value for litemall_region.type\n     *\n     * @mbg.generated\n     */\n    public void setType(Byte type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_region.code\n     *\n     * @return the value of litemall_region.code\n     *\n     * @mbg.generated\n     */\n    public Integer getCode() {\n        return code;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_region.code\n     *\n     * @param code the value for litemall_region.code\n     *\n     * @mbg.generated\n     */\n    public void setCode(Integer code) {\n        this.code = code;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", id=\").append(id);\n        sb.append(\", pid=\").append(pid);\n        sb.append(\", name=\").append(name);\n        sb.append(\", type=\").append(type);\n        sb.append(\", code=\").append(code);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallRegion other = (LitemallRegion) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getPid() == null ? other.getPid() == null : this.getPid().equals(other.getPid()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getCode() == null ? other.getCode() == null : this.getCode().equals(other.getCode()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getPid() == null) ? 0 : getPid().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getCode() == null) ? 0 : getCode().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        pid(\"pid\", \"pid\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        type(\"type\", \"type\", \"TINYINT\", true),\n        code(\"code\", \"code\", \"INTEGER\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRegionExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallRegionExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public LitemallRegionExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public LitemallRegionExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public LitemallRegionExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallRegionExample example = new LitemallRegionExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public LitemallRegionExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public LitemallRegionExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIsNull() {\n            addCriterion(\"pid is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIsNotNull() {\n            addCriterion(\"pid is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidEqualTo(Integer value) {\n            addCriterion(\"pid =\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotEqualTo(Integer value) {\n            addCriterion(\"pid <>\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidNotEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidGreaterThan(Integer value) {\n            addCriterion(\"pid >\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidGreaterThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"pid >=\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidGreaterThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidLessThan(Integer value) {\n            addCriterion(\"pid <\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidLessThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidLessThanOrEqualTo(Integer value) {\n            addCriterion(\"pid <=\", value, \"pid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andPidLessThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"pid <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPidIn(List<Integer> values) {\n            addCriterion(\"pid in\", values, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotIn(List<Integer> values) {\n            addCriterion(\"pid not in\", values, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidBetween(Integer value1, Integer value2) {\n            addCriterion(\"pid between\", value1, value2, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPidNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"pid not between\", value1, value2, \"pid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(Byte value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(Byte value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(Byte value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(Byte value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(Byte value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<Byte> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<Byte> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIsNull() {\n            addCriterion(\"code is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIsNotNull() {\n            addCriterion(\"code is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeEqualTo(Integer value) {\n            addCriterion(\"code =\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotEqualTo(Integer value) {\n            addCriterion(\"code <>\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeNotEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeGreaterThan(Integer value) {\n            addCriterion(\"code >\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeGreaterThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"code >=\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeGreaterThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeLessThan(Integer value) {\n            addCriterion(\"code <\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeLessThanColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeLessThanOrEqualTo(Integer value) {\n            addCriterion(\"code <=\", value, \"code\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria andCodeLessThanOrEqualToColumn(LitemallRegion.Column column) {\n            addCriterion(new StringBuilder(\"code <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeIn(List<Integer> values) {\n            addCriterion(\"code in\", values, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotIn(List<Integer> values) {\n            addCriterion(\"code not in\", values, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeBetween(Integer value1, Integer value2) {\n            addCriterion(\"code between\", value1, value2, \"code\");\n            return (Criteria) this;\n        }\n\n        public Criteria andCodeNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"code not between\", value1, value2, \"code\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_region\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        private LitemallRegionExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallRegionExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public LitemallRegionExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_region\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_region\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_region\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallRegionExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRole.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallRole {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.desc\n     *\n     * @mbg.generated\n     */\n    private String desc;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.enabled\n     *\n     * @mbg.generated\n     */\n    private Boolean enabled;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_role.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.id\n     *\n     * @return the value of litemall_role.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.id\n     *\n     * @param id the value for litemall_role.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.name\n     *\n     * @return the value of litemall_role.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.name\n     *\n     * @param name the value for litemall_role.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.desc\n     *\n     * @return the value of litemall_role.desc\n     *\n     * @mbg.generated\n     */\n    public String getDesc() {\n        return desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.desc\n     *\n     * @param desc the value for litemall_role.desc\n     *\n     * @mbg.generated\n     */\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.enabled\n     *\n     * @return the value of litemall_role.enabled\n     *\n     * @mbg.generated\n     */\n    public Boolean getEnabled() {\n        return enabled;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.enabled\n     *\n     * @param enabled the value for litemall_role.enabled\n     *\n     * @mbg.generated\n     */\n    public void setEnabled(Boolean enabled) {\n        this.enabled = enabled;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.add_time\n     *\n     * @return the value of litemall_role.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.add_time\n     *\n     * @param addTime the value for litemall_role.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.update_time\n     *\n     * @return the value of litemall_role.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.update_time\n     *\n     * @param updateTime the value for litemall_role.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_role.deleted\n     *\n     * @return the value of litemall_role.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_role.deleted\n     *\n     * @param deleted the value for litemall_role.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", name=\").append(name);\n        sb.append(\", desc=\").append(desc);\n        sb.append(\", enabled=\").append(enabled);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallRole other = (LitemallRole) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getDesc() == null ? other.getDesc() == null : this.getDesc().equals(other.getDesc()))\n            && (this.getEnabled() == null ? other.getEnabled() == null : this.getEnabled().equals(other.getEnabled()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getDesc() == null) ? 0 : getDesc().hashCode());\n        result = prime * result + ((getEnabled() == null) ? 0 : getEnabled().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        desc(\"desc\", \"desc\", \"VARCHAR\", true),\n        enabled(\"enabled\", \"enabled\", \"BIT\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallRoleExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallRoleExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public LitemallRoleExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public LitemallRoleExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public LitemallRoleExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallRoleExample example = new LitemallRoleExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public LitemallRoleExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public LitemallRoleExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNull() {\n            addCriterion(\"`desc` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIsNotNull() {\n            addCriterion(\"`desc` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescEqualTo(String value) {\n            addCriterion(\"`desc` =\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotEqualTo(String value) {\n            addCriterion(\"`desc` <>\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThan(String value) {\n            addCriterion(\"`desc` >\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`desc` >=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThan(String value) {\n            addCriterion(\"`desc` <\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLessThanOrEqualTo(String value) {\n            addCriterion(\"`desc` <=\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDescLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"`desc` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDescLike(String value) {\n            addCriterion(\"`desc` like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotLike(String value) {\n            addCriterion(\"`desc` not like\", value, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescIn(List<String> values) {\n            addCriterion(\"`desc` in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotIn(List<String> values) {\n            addCriterion(\"`desc` not in\", values, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescBetween(String value1, String value2) {\n            addCriterion(\"`desc` between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDescNotBetween(String value1, String value2) {\n            addCriterion(\"`desc` not between\", value1, value2, \"desc\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIsNull() {\n            addCriterion(\"enabled is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIsNotNull() {\n            addCriterion(\"enabled is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledEqualTo(Boolean value) {\n            addCriterion(\"enabled =\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotEqualTo(Boolean value) {\n            addCriterion(\"enabled <>\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledGreaterThan(Boolean value) {\n            addCriterion(\"enabled >\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"enabled >=\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledLessThan(Boolean value) {\n            addCriterion(\"enabled <\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"enabled <=\", value, \"enabled\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andEnabledLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"enabled <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledIn(List<Boolean> values) {\n            addCriterion(\"enabled in\", values, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotIn(List<Boolean> values) {\n            addCriterion(\"enabled not in\", values, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"enabled between\", value1, value2, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andEnabledNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"enabled not between\", value1, value2, \"enabled\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallRole.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_role\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        private LitemallRoleExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallRoleExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public LitemallRoleExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallRole.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallRole.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_role\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_role\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_role\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallRoleExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallSearchHistory.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallSearchHistory {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.user_id\n     *\n     * @mbg.generated\n     */\n    private Integer userId;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.keyword\n     *\n     * @mbg.generated\n     */\n    private String keyword;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.from\n     *\n     * @mbg.generated\n     */\n    private String from;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_search_history.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.id\n     *\n     * @return the value of litemall_search_history.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.id\n     *\n     * @param id the value for litemall_search_history.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.user_id\n     *\n     * @return the value of litemall_search_history.user_id\n     *\n     * @mbg.generated\n     */\n    public Integer getUserId() {\n        return userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.user_id\n     *\n     * @param userId the value for litemall_search_history.user_id\n     *\n     * @mbg.generated\n     */\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.keyword\n     *\n     * @return the value of litemall_search_history.keyword\n     *\n     * @mbg.generated\n     */\n    public String getKeyword() {\n        return keyword;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.keyword\n     *\n     * @param keyword the value for litemall_search_history.keyword\n     *\n     * @mbg.generated\n     */\n    public void setKeyword(String keyword) {\n        this.keyword = keyword;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.from\n     *\n     * @return the value of litemall_search_history.from\n     *\n     * @mbg.generated\n     */\n    public String getFrom() {\n        return from;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.from\n     *\n     * @param from the value for litemall_search_history.from\n     *\n     * @mbg.generated\n     */\n    public void setFrom(String from) {\n        this.from = from;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.add_time\n     *\n     * @return the value of litemall_search_history.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.add_time\n     *\n     * @param addTime the value for litemall_search_history.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.update_time\n     *\n     * @return the value of litemall_search_history.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.update_time\n     *\n     * @param updateTime the value for litemall_search_history.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_search_history.deleted\n     *\n     * @return the value of litemall_search_history.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_search_history.deleted\n     *\n     * @param deleted the value for litemall_search_history.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", userId=\").append(userId);\n        sb.append(\", keyword=\").append(keyword);\n        sb.append(\", from=\").append(from);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallSearchHistory other = (LitemallSearchHistory) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUserId() == null ? other.getUserId() == null : this.getUserId().equals(other.getUserId()))\n            && (this.getKeyword() == null ? other.getKeyword() == null : this.getKeyword().equals(other.getKeyword()))\n            && (this.getFrom() == null ? other.getFrom() == null : this.getFrom().equals(other.getFrom()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUserId() == null) ? 0 : getUserId().hashCode());\n        result = prime * result + ((getKeyword() == null) ? 0 : getKeyword().hashCode());\n        result = prime * result + ((getFrom() == null) ? 0 : getFrom().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        userId(\"user_id\", \"userId\", \"INTEGER\", false),\n        keyword(\"keyword\", \"keyword\", \"VARCHAR\", false),\n        from(\"from\", \"from\", \"VARCHAR\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallSearchHistoryExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallSearchHistoryExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public LitemallSearchHistoryExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public LitemallSearchHistoryExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public LitemallSearchHistoryExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallSearchHistoryExample example = new LitemallSearchHistoryExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public LitemallSearchHistoryExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public LitemallSearchHistoryExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNull() {\n            addCriterion(\"user_id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIsNotNull() {\n            addCriterion(\"user_id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdEqualTo(Integer value) {\n            addCriterion(\"user_id =\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotEqualTo(Integer value) {\n            addCriterion(\"user_id <>\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThan(Integer value) {\n            addCriterion(\"user_id >\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id >=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThan(Integer value) {\n            addCriterion(\"user_id <\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"user_id <=\", value, \"userId\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserIdLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"user_id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdIn(List<Integer> values) {\n            addCriterion(\"user_id in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotIn(List<Integer> values) {\n            addCriterion(\"user_id not in\", values, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"user_id not between\", value1, value2, \"userId\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIsNull() {\n            addCriterion(\"keyword is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIsNotNull() {\n            addCriterion(\"keyword is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordEqualTo(String value) {\n            addCriterion(\"keyword =\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotEqualTo(String value) {\n            addCriterion(\"keyword <>\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordGreaterThan(String value) {\n            addCriterion(\"keyword >\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordGreaterThanOrEqualTo(String value) {\n            addCriterion(\"keyword >=\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLessThan(String value) {\n            addCriterion(\"keyword <\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLessThanOrEqualTo(String value) {\n            addCriterion(\"keyword <=\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeywordLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"keyword <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordLike(String value) {\n            addCriterion(\"keyword like\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotLike(String value) {\n            addCriterion(\"keyword not like\", value, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordIn(List<String> values) {\n            addCriterion(\"keyword in\", values, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotIn(List<String> values) {\n            addCriterion(\"keyword not in\", values, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordBetween(String value1, String value2) {\n            addCriterion(\"keyword between\", value1, value2, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeywordNotBetween(String value1, String value2) {\n            addCriterion(\"keyword not between\", value1, value2, \"keyword\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromIsNull() {\n            addCriterion(\"`from` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromIsNotNull() {\n            addCriterion(\"`from` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromEqualTo(String value) {\n            addCriterion(\"`from` =\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromNotEqualTo(String value) {\n            addCriterion(\"`from` <>\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromGreaterThan(String value) {\n            addCriterion(\"`from` >\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`from` >=\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromLessThan(String value) {\n            addCriterion(\"`from` <\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromLessThanOrEqualTo(String value) {\n            addCriterion(\"`from` <=\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andFromLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"`from` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andFromLike(String value) {\n            addCriterion(\"`from` like\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromNotLike(String value) {\n            addCriterion(\"`from` not like\", value, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromIn(List<String> values) {\n            addCriterion(\"`from` in\", values, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromNotIn(List<String> values) {\n            addCriterion(\"`from` not in\", values, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromBetween(String value1, String value2) {\n            addCriterion(\"`from` between\", value1, value2, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andFromNotBetween(String value1, String value2) {\n            addCriterion(\"`from` not between\", value1, value2, \"from\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallSearchHistory.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        private LitemallSearchHistoryExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallSearchHistoryExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public LitemallSearchHistoryExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallSearchHistory.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallSearchHistory.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_search_history\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_search_history\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_search_history\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallStorage.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallStorage {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.key\n     *\n     * @mbg.generated\n     */\n    private String key;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.name\n     *\n     * @mbg.generated\n     */\n    private String name;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.type\n     *\n     * @mbg.generated\n     */\n    private String type;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.size\n     *\n     * @mbg.generated\n     */\n    private Integer size;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.url\n     *\n     * @mbg.generated\n     */\n    private String url;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_storage.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.id\n     *\n     * @return the value of litemall_storage.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.id\n     *\n     * @param id the value for litemall_storage.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.key\n     *\n     * @return the value of litemall_storage.key\n     *\n     * @mbg.generated\n     */\n    public String getKey() {\n        return key;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.key\n     *\n     * @param key the value for litemall_storage.key\n     *\n     * @mbg.generated\n     */\n    public void setKey(String key) {\n        this.key = key;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.name\n     *\n     * @return the value of litemall_storage.name\n     *\n     * @mbg.generated\n     */\n    public String getName() {\n        return name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.name\n     *\n     * @param name the value for litemall_storage.name\n     *\n     * @mbg.generated\n     */\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.type\n     *\n     * @return the value of litemall_storage.type\n     *\n     * @mbg.generated\n     */\n    public String getType() {\n        return type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.type\n     *\n     * @param type the value for litemall_storage.type\n     *\n     * @mbg.generated\n     */\n    public void setType(String type) {\n        this.type = type;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.size\n     *\n     * @return the value of litemall_storage.size\n     *\n     * @mbg.generated\n     */\n    public Integer getSize() {\n        return size;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.size\n     *\n     * @param size the value for litemall_storage.size\n     *\n     * @mbg.generated\n     */\n    public void setSize(Integer size) {\n        this.size = size;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.url\n     *\n     * @return the value of litemall_storage.url\n     *\n     * @mbg.generated\n     */\n    public String getUrl() {\n        return url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.url\n     *\n     * @param url the value for litemall_storage.url\n     *\n     * @mbg.generated\n     */\n    public void setUrl(String url) {\n        this.url = url;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.add_time\n     *\n     * @return the value of litemall_storage.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.add_time\n     *\n     * @param addTime the value for litemall_storage.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.update_time\n     *\n     * @return the value of litemall_storage.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.update_time\n     *\n     * @param updateTime the value for litemall_storage.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_storage.deleted\n     *\n     * @return the value of litemall_storage.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_storage.deleted\n     *\n     * @param deleted the value for litemall_storage.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", key=\").append(key);\n        sb.append(\", name=\").append(name);\n        sb.append(\", type=\").append(type);\n        sb.append(\", size=\").append(size);\n        sb.append(\", url=\").append(url);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallStorage other = (LitemallStorage) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getKey() == null ? other.getKey() == null : this.getKey().equals(other.getKey()))\n            && (this.getName() == null ? other.getName() == null : this.getName().equals(other.getName()))\n            && (this.getType() == null ? other.getType() == null : this.getType().equals(other.getType()))\n            && (this.getSize() == null ? other.getSize() == null : this.getSize().equals(other.getSize()))\n            && (this.getUrl() == null ? other.getUrl() == null : this.getUrl().equals(other.getUrl()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getKey() == null) ? 0 : getKey().hashCode());\n        result = prime * result + ((getName() == null) ? 0 : getName().hashCode());\n        result = prime * result + ((getType() == null) ? 0 : getType().hashCode());\n        result = prime * result + ((getSize() == null) ? 0 : getSize().hashCode());\n        result = prime * result + ((getUrl() == null) ? 0 : getUrl().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        key(\"key\", \"key\", \"VARCHAR\", true),\n        name(\"name\", \"name\", \"VARCHAR\", true),\n        type(\"type\", \"type\", \"VARCHAR\", true),\n        size(\"size\", \"size\", \"INTEGER\", true),\n        url(\"url\", \"url\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallStorageExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallStorageExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public LitemallStorageExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public LitemallStorageExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public LitemallStorageExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallStorageExample example = new LitemallStorageExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public LitemallStorageExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public LitemallStorageExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyIsNull() {\n            addCriterion(\"`key` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyIsNotNull() {\n            addCriterion(\"`key` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyEqualTo(String value) {\n            addCriterion(\"`key` =\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNotEqualTo(String value) {\n            addCriterion(\"`key` <>\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyGreaterThan(String value) {\n            addCriterion(\"`key` >\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`key` >=\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyLessThan(String value) {\n            addCriterion(\"`key` <\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyLessThanOrEqualTo(String value) {\n            addCriterion(\"`key` <=\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`key` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyLike(String value) {\n            addCriterion(\"`key` like\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNotLike(String value) {\n            addCriterion(\"`key` not like\", value, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyIn(List<String> values) {\n            addCriterion(\"`key` in\", values, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNotIn(List<String> values) {\n            addCriterion(\"`key` not in\", values, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyBetween(String value1, String value2) {\n            addCriterion(\"`key` between\", value1, value2, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNotBetween(String value1, String value2) {\n            addCriterion(\"`key` not between\", value1, value2, \"key\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNull() {\n            addCriterion(\"`name` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIsNotNull() {\n            addCriterion(\"`name` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameEqualTo(String value) {\n            addCriterion(\"`name` =\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotEqualTo(String value) {\n            addCriterion(\"`name` <>\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThan(String value) {\n            addCriterion(\"`name` >\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`name` >=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThan(String value) {\n            addCriterion(\"`name` <\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLessThanOrEqualTo(String value) {\n            addCriterion(\"`name` <=\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andNameLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`name` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNameLike(String value) {\n            addCriterion(\"`name` like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotLike(String value) {\n            addCriterion(\"`name` not like\", value, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameIn(List<String> values) {\n            addCriterion(\"`name` in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotIn(List<String> values) {\n            addCriterion(\"`name` not in\", values, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameBetween(String value1, String value2) {\n            addCriterion(\"`name` between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNameNotBetween(String value1, String value2) {\n            addCriterion(\"`name` not between\", value1, value2, \"name\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNull() {\n            addCriterion(\"`type` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIsNotNull() {\n            addCriterion(\"`type` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeEqualTo(String value) {\n            addCriterion(\"`type` =\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotEqualTo(String value) {\n            addCriterion(\"`type` <>\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThan(String value) {\n            addCriterion(\"`type` >\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`type` >=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThan(String value) {\n            addCriterion(\"`type` <\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLessThanOrEqualTo(String value) {\n            addCriterion(\"`type` <=\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andTypeLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`type` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeLike(String value) {\n            addCriterion(\"`type` like\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotLike(String value) {\n            addCriterion(\"`type` not like\", value, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeIn(List<String> values) {\n            addCriterion(\"`type` in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotIn(List<String> values) {\n            addCriterion(\"`type` not in\", values, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeBetween(String value1, String value2) {\n            addCriterion(\"`type` between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTypeNotBetween(String value1, String value2) {\n            addCriterion(\"`type` not between\", value1, value2, \"type\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeIsNull() {\n            addCriterion(\"`size` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeIsNotNull() {\n            addCriterion(\"`size` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeEqualTo(Integer value) {\n            addCriterion(\"`size` =\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeNotEqualTo(Integer value) {\n            addCriterion(\"`size` <>\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeGreaterThan(Integer value) {\n            addCriterion(\"`size` >\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"`size` >=\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeLessThan(Integer value) {\n            addCriterion(\"`size` <\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeLessThanOrEqualTo(Integer value) {\n            addCriterion(\"`size` <=\", value, \"size\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andSizeLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"`size` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeIn(List<Integer> values) {\n            addCriterion(\"`size` in\", values, \"size\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeNotIn(List<Integer> values) {\n            addCriterion(\"`size` not in\", values, \"size\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeBetween(Integer value1, Integer value2) {\n            addCriterion(\"`size` between\", value1, value2, \"size\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSizeNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"`size` not between\", value1, value2, \"size\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNull() {\n            addCriterion(\"url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIsNotNull() {\n            addCriterion(\"url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlEqualTo(String value) {\n            addCriterion(\"url =\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotEqualTo(String value) {\n            addCriterion(\"url <>\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThan(String value) {\n            addCriterion(\"url >\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"url >=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThan(String value) {\n            addCriterion(\"url <\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"url <=\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUrlLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlLike(String value) {\n            addCriterion(\"url like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotLike(String value) {\n            addCriterion(\"url not like\", value, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlIn(List<String> values) {\n            addCriterion(\"url in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotIn(List<String> values) {\n            addCriterion(\"url not in\", values, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlBetween(String value1, String value2) {\n            addCriterion(\"url between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUrlNotBetween(String value1, String value2) {\n            addCriterion(\"url not between\", value1, value2, \"url\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallStorage.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_storage\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        private LitemallStorageExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallStorageExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public LitemallStorageExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallStorage.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallStorage.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_storage\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_storage\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_storage\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallStorageExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallSystem.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallSystem {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.key_name\n     *\n     * @mbg.generated\n     */\n    private String keyName;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.key_value\n     *\n     * @mbg.generated\n     */\n    private String keyValue;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_system.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.id\n     *\n     * @return the value of litemall_system.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.id\n     *\n     * @param id the value for litemall_system.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.key_name\n     *\n     * @return the value of litemall_system.key_name\n     *\n     * @mbg.generated\n     */\n    public String getKeyName() {\n        return keyName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.key_name\n     *\n     * @param keyName the value for litemall_system.key_name\n     *\n     * @mbg.generated\n     */\n    public void setKeyName(String keyName) {\n        this.keyName = keyName;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.key_value\n     *\n     * @return the value of litemall_system.key_value\n     *\n     * @mbg.generated\n     */\n    public String getKeyValue() {\n        return keyValue;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.key_value\n     *\n     * @param keyValue the value for litemall_system.key_value\n     *\n     * @mbg.generated\n     */\n    public void setKeyValue(String keyValue) {\n        this.keyValue = keyValue;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.add_time\n     *\n     * @return the value of litemall_system.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.add_time\n     *\n     * @param addTime the value for litemall_system.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.update_time\n     *\n     * @return the value of litemall_system.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.update_time\n     *\n     * @param updateTime the value for litemall_system.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_system.deleted\n     *\n     * @return the value of litemall_system.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_system.deleted\n     *\n     * @param deleted the value for litemall_system.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", keyName=\").append(keyName);\n        sb.append(\", keyValue=\").append(keyValue);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallSystem other = (LitemallSystem) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getKeyName() == null ? other.getKeyName() == null : this.getKeyName().equals(other.getKeyName()))\n            && (this.getKeyValue() == null ? other.getKeyValue() == null : this.getKeyValue().equals(other.getKeyValue()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getKeyName() == null) ? 0 : getKeyName().hashCode());\n        result = prime * result + ((getKeyValue() == null) ? 0 : getKeyValue().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        keyName(\"key_name\", \"keyName\", \"VARCHAR\", false),\n        keyValue(\"key_value\", \"keyValue\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallSystemExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallSystemExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public LitemallSystemExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public LitemallSystemExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public LitemallSystemExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public LitemallSystemExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public LitemallSystemExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameIsNull() {\n            addCriterion(\"key_name is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameIsNotNull() {\n            addCriterion(\"key_name is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameEqualTo(String value) {\n            addCriterion(\"key_name =\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameNotEqualTo(String value) {\n            addCriterion(\"key_name <>\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameGreaterThan(String value) {\n            addCriterion(\"key_name >\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"key_name >=\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameLessThan(String value) {\n            addCriterion(\"key_name <\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameLessThanOrEqualTo(String value) {\n            addCriterion(\"key_name <=\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyNameLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_name <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameLike(String value) {\n            addCriterion(\"key_name like\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameNotLike(String value) {\n            addCriterion(\"key_name not like\", value, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameIn(List<String> values) {\n            addCriterion(\"key_name in\", values, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameNotIn(List<String> values) {\n            addCriterion(\"key_name not in\", values, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameBetween(String value1, String value2) {\n            addCriterion(\"key_name between\", value1, value2, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyNameNotBetween(String value1, String value2) {\n            addCriterion(\"key_name not between\", value1, value2, \"keyName\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueIsNull() {\n            addCriterion(\"key_value is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueIsNotNull() {\n            addCriterion(\"key_value is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueEqualTo(String value) {\n            addCriterion(\"key_value =\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueNotEqualTo(String value) {\n            addCriterion(\"key_value <>\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueGreaterThan(String value) {\n            addCriterion(\"key_value >\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueGreaterThanOrEqualTo(String value) {\n            addCriterion(\"key_value >=\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueLessThan(String value) {\n            addCriterion(\"key_value <\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueLessThanOrEqualTo(String value) {\n            addCriterion(\"key_value <=\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andKeyValueLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"key_value <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueLike(String value) {\n            addCriterion(\"key_value like\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueNotLike(String value) {\n            addCriterion(\"key_value not like\", value, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueIn(List<String> values) {\n            addCriterion(\"key_value in\", values, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueNotIn(List<String> values) {\n            addCriterion(\"key_value not in\", values, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueBetween(String value1, String value2) {\n            addCriterion(\"key_value between\", value1, value2, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andKeyValueNotBetween(String value1, String value2) {\n            addCriterion(\"key_value not between\", value1, value2, \"keyValue\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallSystem.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_system\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        private LitemallSystemExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallSystemExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public LitemallSystemExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallSystem.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallSystem.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_system\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_system\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_system\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallSystemExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallTopic.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallTopic {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.title\n     *\n     * @mbg.generated\n     */\n    private String title;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.subtitle\n     *\n     * @mbg.generated\n     */\n    private String subtitle;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.price\n     *\n     * @mbg.generated\n     */\n    private BigDecimal price;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.read_count\n     *\n     * @mbg.generated\n     */\n    private String readCount;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.pic_url\n     *\n     * @mbg.generated\n     */\n    private String picUrl;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.sort_order\n     *\n     * @mbg.generated\n     */\n    private Integer sortOrder;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.goods\n     *\n     * @mbg.generated\n     */\n    private Integer[] goods;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_topic.content\n     *\n     * @mbg.generated\n     */\n    private String content;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.id\n     *\n     * @return the value of litemall_topic.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.id\n     *\n     * @param id the value for litemall_topic.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.title\n     *\n     * @return the value of litemall_topic.title\n     *\n     * @mbg.generated\n     */\n    public String getTitle() {\n        return title;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.title\n     *\n     * @param title the value for litemall_topic.title\n     *\n     * @mbg.generated\n     */\n    public void setTitle(String title) {\n        this.title = title;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.subtitle\n     *\n     * @return the value of litemall_topic.subtitle\n     *\n     * @mbg.generated\n     */\n    public String getSubtitle() {\n        return subtitle;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.subtitle\n     *\n     * @param subtitle the value for litemall_topic.subtitle\n     *\n     * @mbg.generated\n     */\n    public void setSubtitle(String subtitle) {\n        this.subtitle = subtitle;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.price\n     *\n     * @return the value of litemall_topic.price\n     *\n     * @mbg.generated\n     */\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.price\n     *\n     * @param price the value for litemall_topic.price\n     *\n     * @mbg.generated\n     */\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.read_count\n     *\n     * @return the value of litemall_topic.read_count\n     *\n     * @mbg.generated\n     */\n    public String getReadCount() {\n        return readCount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.read_count\n     *\n     * @param readCount the value for litemall_topic.read_count\n     *\n     * @mbg.generated\n     */\n    public void setReadCount(String readCount) {\n        this.readCount = readCount;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.pic_url\n     *\n     * @return the value of litemall_topic.pic_url\n     *\n     * @mbg.generated\n     */\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.pic_url\n     *\n     * @param picUrl the value for litemall_topic.pic_url\n     *\n     * @mbg.generated\n     */\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.sort_order\n     *\n     * @return the value of litemall_topic.sort_order\n     *\n     * @mbg.generated\n     */\n    public Integer getSortOrder() {\n        return sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.sort_order\n     *\n     * @param sortOrder the value for litemall_topic.sort_order\n     *\n     * @mbg.generated\n     */\n    public void setSortOrder(Integer sortOrder) {\n        this.sortOrder = sortOrder;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.goods\n     *\n     * @return the value of litemall_topic.goods\n     *\n     * @mbg.generated\n     */\n    public Integer[] getGoods() {\n        return goods;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.goods\n     *\n     * @param goods the value for litemall_topic.goods\n     *\n     * @mbg.generated\n     */\n    public void setGoods(Integer[] goods) {\n        this.goods = goods;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.add_time\n     *\n     * @return the value of litemall_topic.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.add_time\n     *\n     * @param addTime the value for litemall_topic.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.update_time\n     *\n     * @return the value of litemall_topic.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.update_time\n     *\n     * @param updateTime the value for litemall_topic.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.deleted\n     *\n     * @return the value of litemall_topic.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.deleted\n     *\n     * @param deleted the value for litemall_topic.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_topic.content\n     *\n     * @return the value of litemall_topic.content\n     *\n     * @mbg.generated\n     */\n    public String getContent() {\n        return content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_topic.content\n     *\n     * @param content the value for litemall_topic.content\n     *\n     * @mbg.generated\n     */\n    public void setContent(String content) {\n        this.content = content;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", title=\").append(title);\n        sb.append(\", subtitle=\").append(subtitle);\n        sb.append(\", price=\").append(price);\n        sb.append(\", readCount=\").append(readCount);\n        sb.append(\", picUrl=\").append(picUrl);\n        sb.append(\", sortOrder=\").append(sortOrder);\n        sb.append(\", goods=\").append(goods);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\", content=\").append(content);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallTopic other = (LitemallTopic) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getTitle() == null ? other.getTitle() == null : this.getTitle().equals(other.getTitle()))\n            && (this.getSubtitle() == null ? other.getSubtitle() == null : this.getSubtitle().equals(other.getSubtitle()))\n            && (this.getPrice() == null ? other.getPrice() == null : this.getPrice().equals(other.getPrice()))\n            && (this.getReadCount() == null ? other.getReadCount() == null : this.getReadCount().equals(other.getReadCount()))\n            && (this.getPicUrl() == null ? other.getPicUrl() == null : this.getPicUrl().equals(other.getPicUrl()))\n            && (this.getSortOrder() == null ? other.getSortOrder() == null : this.getSortOrder().equals(other.getSortOrder()))\n            && (Arrays.equals(this.getGoods(), other.getGoods()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()))\n            && (this.getContent() == null ? other.getContent() == null : this.getContent().equals(other.getContent()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getTitle() == null) ? 0 : getTitle().hashCode());\n        result = prime * result + ((getSubtitle() == null) ? 0 : getSubtitle().hashCode());\n        result = prime * result + ((getPrice() == null) ? 0 : getPrice().hashCode());\n        result = prime * result + ((getReadCount() == null) ? 0 : getReadCount().hashCode());\n        result = prime * result + ((getPicUrl() == null) ? 0 : getPicUrl().hashCode());\n        result = prime * result + ((getSortOrder() == null) ? 0 : getSortOrder().hashCode());\n        result = prime * result + (Arrays.hashCode(getGoods()));\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        result = prime * result + ((getContent() == null) ? 0 : getContent().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        title(\"title\", \"title\", \"VARCHAR\", false),\n        subtitle(\"subtitle\", \"subtitle\", \"VARCHAR\", false),\n        price(\"price\", \"price\", \"DECIMAL\", false),\n        readCount(\"read_count\", \"readCount\", \"VARCHAR\", false),\n        picUrl(\"pic_url\", \"picUrl\", \"VARCHAR\", false),\n        sortOrder(\"sort_order\", \"sortOrder\", \"INTEGER\", false),\n        goods(\"goods\", \"goods\", \"VARCHAR\", false),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false),\n        content(\"content\", \"content\", \"LONGVARCHAR\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallTopicExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallTopicExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public LitemallTopicExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public LitemallTopicExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public LitemallTopicExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallTopicExample example = new LitemallTopicExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public LitemallTopicExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public LitemallTopicExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> goodsCriteria;\n\n        protected List<Criterion> allCriteria;\n\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n            goodsCriteria = new ArrayList<Criterion>();\n        }\n\n        public List<Criterion> getGoodsCriteria() {\n            return goodsCriteria;\n        }\n\n        protected void addGoodsCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            goodsCriteria.add(new Criterion(condition, value, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        protected void addGoodsCriterion(String condition, Integer[] value1, Integer[] value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            goodsCriteria.add(new Criterion(condition, value1, value2, \"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\"));\n            allCriteria = null;\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0\n                || goodsCriteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            if (allCriteria == null) {\n                allCriteria = new ArrayList<Criterion>();\n                allCriteria.addAll(criteria);\n                allCriteria.addAll(goodsCriteria);\n            }\n            return allCriteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n            allCriteria = null;\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n            allCriteria = null;\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIsNull() {\n            addCriterion(\"title is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIsNotNull() {\n            addCriterion(\"title is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleEqualTo(String value) {\n            addCriterion(\"title =\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotEqualTo(String value) {\n            addCriterion(\"title <>\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleGreaterThan(String value) {\n            addCriterion(\"title >\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleGreaterThanOrEqualTo(String value) {\n            addCriterion(\"title >=\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLessThan(String value) {\n            addCriterion(\"title <\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLessThanOrEqualTo(String value) {\n            addCriterion(\"title <=\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andTitleLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"title <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleLike(String value) {\n            addCriterion(\"title like\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotLike(String value) {\n            addCriterion(\"title not like\", value, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleIn(List<String> values) {\n            addCriterion(\"title in\", values, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotIn(List<String> values) {\n            addCriterion(\"title not in\", values, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleBetween(String value1, String value2) {\n            addCriterion(\"title between\", value1, value2, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andTitleNotBetween(String value1, String value2) {\n            addCriterion(\"title not between\", value1, value2, \"title\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleIsNull() {\n            addCriterion(\"subtitle is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleIsNotNull() {\n            addCriterion(\"subtitle is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleEqualTo(String value) {\n            addCriterion(\"subtitle =\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleNotEqualTo(String value) {\n            addCriterion(\"subtitle <>\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleGreaterThan(String value) {\n            addCriterion(\"subtitle >\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleGreaterThanOrEqualTo(String value) {\n            addCriterion(\"subtitle >=\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleLessThan(String value) {\n            addCriterion(\"subtitle <\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleLessThanOrEqualTo(String value) {\n            addCriterion(\"subtitle <=\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSubtitleLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"subtitle <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleLike(String value) {\n            addCriterion(\"subtitle like\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleNotLike(String value) {\n            addCriterion(\"subtitle not like\", value, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleIn(List<String> values) {\n            addCriterion(\"subtitle in\", values, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleNotIn(List<String> values) {\n            addCriterion(\"subtitle not in\", values, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleBetween(String value1, String value2) {\n            addCriterion(\"subtitle between\", value1, value2, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSubtitleNotBetween(String value1, String value2) {\n            addCriterion(\"subtitle not between\", value1, value2, \"subtitle\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNull() {\n            addCriterion(\"price is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIsNotNull() {\n            addCriterion(\"price is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceEqualTo(BigDecimal value) {\n            addCriterion(\"price =\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotEqualTo(BigDecimal value) {\n            addCriterion(\"price <>\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThan(BigDecimal value) {\n            addCriterion(\"price >\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceGreaterThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price >=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThan(BigDecimal value) {\n            addCriterion(\"price <\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceLessThanOrEqualTo(BigDecimal value) {\n            addCriterion(\"price <=\", value, \"price\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPriceLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"price <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceIn(List<BigDecimal> values) {\n            addCriterion(\"price in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotIn(List<BigDecimal> values) {\n            addCriterion(\"price not in\", values, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPriceNotBetween(BigDecimal value1, BigDecimal value2) {\n            addCriterion(\"price not between\", value1, value2, \"price\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountIsNull() {\n            addCriterion(\"read_count is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountIsNotNull() {\n            addCriterion(\"read_count is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountEqualTo(String value) {\n            addCriterion(\"read_count =\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountNotEqualTo(String value) {\n            addCriterion(\"read_count <>\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountGreaterThan(String value) {\n            addCriterion(\"read_count >\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountGreaterThanOrEqualTo(String value) {\n            addCriterion(\"read_count >=\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountLessThan(String value) {\n            addCriterion(\"read_count <\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountLessThanOrEqualTo(String value) {\n            addCriterion(\"read_count <=\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andReadCountLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"read_count <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountLike(String value) {\n            addCriterion(\"read_count like\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountNotLike(String value) {\n            addCriterion(\"read_count not like\", value, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountIn(List<String> values) {\n            addCriterion(\"read_count in\", values, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountNotIn(List<String> values) {\n            addCriterion(\"read_count not in\", values, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountBetween(String value1, String value2) {\n            addCriterion(\"read_count between\", value1, value2, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andReadCountNotBetween(String value1, String value2) {\n            addCriterion(\"read_count not between\", value1, value2, \"readCount\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNull() {\n            addCriterion(\"pic_url is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIsNotNull() {\n            addCriterion(\"pic_url is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlEqualTo(String value) {\n            addCriterion(\"pic_url =\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotEqualTo(String value) {\n            addCriterion(\"pic_url <>\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThan(String value) {\n            addCriterion(\"pic_url >\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlGreaterThanOrEqualTo(String value) {\n            addCriterion(\"pic_url >=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThan(String value) {\n            addCriterion(\"pic_url <\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLessThanOrEqualTo(String value) {\n            addCriterion(\"pic_url <=\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andPicUrlLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"pic_url <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlLike(String value) {\n            addCriterion(\"pic_url like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotLike(String value) {\n            addCriterion(\"pic_url not like\", value, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlIn(List<String> values) {\n            addCriterion(\"pic_url in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotIn(List<String> values) {\n            addCriterion(\"pic_url not in\", values, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlBetween(String value1, String value2) {\n            addCriterion(\"pic_url between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPicUrlNotBetween(String value1, String value2) {\n            addCriterion(\"pic_url not between\", value1, value2, \"picUrl\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNull() {\n            addCriterion(\"sort_order is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIsNotNull() {\n            addCriterion(\"sort_order is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderEqualTo(Integer value) {\n            addCriterion(\"sort_order =\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotEqualTo(Integer value) {\n            addCriterion(\"sort_order <>\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThan(Integer value) {\n            addCriterion(\"sort_order >\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"sort_order >=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThan(Integer value) {\n            addCriterion(\"sort_order <\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderLessThanOrEqualTo(Integer value) {\n            addCriterion(\"sort_order <=\", value, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andSortOrderLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"sort_order <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderIn(List<Integer> values) {\n            addCriterion(\"sort_order in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotIn(List<Integer> values) {\n            addCriterion(\"sort_order not in\", values, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderBetween(Integer value1, Integer value2) {\n            addCriterion(\"sort_order between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSortOrderNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"sort_order not between\", value1, value2, \"sortOrder\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIsNull() {\n            addCriterion(\"goods is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIsNotNull() {\n            addCriterion(\"goods is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsEqualTo(Integer[] value) {\n            addGoodsCriterion(\"goods =\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNotEqualTo(Integer[] value) {\n            addGoodsCriterion(\"goods <>\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsGreaterThan(Integer[] value) {\n            addGoodsCriterion(\"goods >\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsGreaterThanOrEqualTo(Integer[] value) {\n            addGoodsCriterion(\"goods >=\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsLessThan(Integer[] value) {\n            addGoodsCriterion(\"goods <\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsLessThanOrEqualTo(Integer[] value) {\n            addGoodsCriterion(\"goods <=\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andGoodsLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"goods <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsLike(Integer[] value) {\n            addGoodsCriterion(\"goods like\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNotLike(Integer[] value) {\n            addGoodsCriterion(\"goods not like\", value, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsIn(List<Integer[]> values) {\n            addGoodsCriterion(\"goods in\", values, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNotIn(List<Integer[]> values) {\n            addGoodsCriterion(\"goods not in\", values, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsBetween(Integer[] value1, Integer[] value2) {\n            addGoodsCriterion(\"goods between\", value1, value2, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGoodsNotBetween(Integer[] value1, Integer[] value2) {\n            addGoodsCriterion(\"goods not between\", value1, value2, \"goods\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallTopic.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_topic\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        private LitemallTopicExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallTopicExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public LitemallTopicExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallTopic.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallTopic.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_topic\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_topic\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_topic\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallTopicExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallUser.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\n\npublic class LitemallUser {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public static final Boolean IS_DELETED = Deleted.IS_DELETED.value();\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public static final Boolean NOT_DELETED = Deleted.NOT_DELETED.value();\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.id\n     *\n     * @mbg.generated\n     */\n    private Integer id;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.username\n     *\n     * @mbg.generated\n     */\n    private String username;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.password\n     *\n     * @mbg.generated\n     */\n    private String password;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.gender\n     *\n     * @mbg.generated\n     */\n    private Byte gender;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.birthday\n     *\n     * @mbg.generated\n     */\n    private LocalDate birthday;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.last_login_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime lastLoginTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.last_login_ip\n     *\n     * @mbg.generated\n     */\n    private String lastLoginIp;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.user_level\n     *\n     * @mbg.generated\n     */\n    private Byte userLevel;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.nickname\n     *\n     * @mbg.generated\n     */\n    private String nickname;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.mobile\n     *\n     * @mbg.generated\n     */\n    private String mobile;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.avatar\n     *\n     * @mbg.generated\n     */\n    private String avatar;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.weixin_openid\n     *\n     * @mbg.generated\n     */\n    private String weixinOpenid;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.session_key\n     *\n     * @mbg.generated\n     */\n    private String sessionKey;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.status\n     *\n     * @mbg.generated\n     */\n    private Byte status;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.add_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime addTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.update_time\n     *\n     * @mbg.generated\n     */\n    private LocalDateTime updateTime;\n\n    /**\n     *\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database column litemall_user.deleted\n     *\n     * @mbg.generated\n     */\n    private Boolean deleted;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.id\n     *\n     * @return the value of litemall_user.id\n     *\n     * @mbg.generated\n     */\n    public Integer getId() {\n        return id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.id\n     *\n     * @param id the value for litemall_user.id\n     *\n     * @mbg.generated\n     */\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.username\n     *\n     * @return the value of litemall_user.username\n     *\n     * @mbg.generated\n     */\n    public String getUsername() {\n        return username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.username\n     *\n     * @param username the value for litemall_user.username\n     *\n     * @mbg.generated\n     */\n    public void setUsername(String username) {\n        this.username = username;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.password\n     *\n     * @return the value of litemall_user.password\n     *\n     * @mbg.generated\n     */\n    public String getPassword() {\n        return password;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.password\n     *\n     * @param password the value for litemall_user.password\n     *\n     * @mbg.generated\n     */\n    public void setPassword(String password) {\n        this.password = password;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.gender\n     *\n     * @return the value of litemall_user.gender\n     *\n     * @mbg.generated\n     */\n    public Byte getGender() {\n        return gender;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.gender\n     *\n     * @param gender the value for litemall_user.gender\n     *\n     * @mbg.generated\n     */\n    public void setGender(Byte gender) {\n        this.gender = gender;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.birthday\n     *\n     * @return the value of litemall_user.birthday\n     *\n     * @mbg.generated\n     */\n    public LocalDate getBirthday() {\n        return birthday;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.birthday\n     *\n     * @param birthday the value for litemall_user.birthday\n     *\n     * @mbg.generated\n     */\n    public void setBirthday(LocalDate birthday) {\n        this.birthday = birthday;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.last_login_time\n     *\n     * @return the value of litemall_user.last_login_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getLastLoginTime() {\n        return lastLoginTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.last_login_time\n     *\n     * @param lastLoginTime the value for litemall_user.last_login_time\n     *\n     * @mbg.generated\n     */\n    public void setLastLoginTime(LocalDateTime lastLoginTime) {\n        this.lastLoginTime = lastLoginTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.last_login_ip\n     *\n     * @return the value of litemall_user.last_login_ip\n     *\n     * @mbg.generated\n     */\n    public String getLastLoginIp() {\n        return lastLoginIp;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.last_login_ip\n     *\n     * @param lastLoginIp the value for litemall_user.last_login_ip\n     *\n     * @mbg.generated\n     */\n    public void setLastLoginIp(String lastLoginIp) {\n        this.lastLoginIp = lastLoginIp;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.user_level\n     *\n     * @return the value of litemall_user.user_level\n     *\n     * @mbg.generated\n     */\n    public Byte getUserLevel() {\n        return userLevel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.user_level\n     *\n     * @param userLevel the value for litemall_user.user_level\n     *\n     * @mbg.generated\n     */\n    public void setUserLevel(Byte userLevel) {\n        this.userLevel = userLevel;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.nickname\n     *\n     * @return the value of litemall_user.nickname\n     *\n     * @mbg.generated\n     */\n    public String getNickname() {\n        return nickname;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.nickname\n     *\n     * @param nickname the value for litemall_user.nickname\n     *\n     * @mbg.generated\n     */\n    public void setNickname(String nickname) {\n        this.nickname = nickname;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.mobile\n     *\n     * @return the value of litemall_user.mobile\n     *\n     * @mbg.generated\n     */\n    public String getMobile() {\n        return mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.mobile\n     *\n     * @param mobile the value for litemall_user.mobile\n     *\n     * @mbg.generated\n     */\n    public void setMobile(String mobile) {\n        this.mobile = mobile;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.avatar\n     *\n     * @return the value of litemall_user.avatar\n     *\n     * @mbg.generated\n     */\n    public String getAvatar() {\n        return avatar;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.avatar\n     *\n     * @param avatar the value for litemall_user.avatar\n     *\n     * @mbg.generated\n     */\n    public void setAvatar(String avatar) {\n        this.avatar = avatar;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.weixin_openid\n     *\n     * @return the value of litemall_user.weixin_openid\n     *\n     * @mbg.generated\n     */\n    public String getWeixinOpenid() {\n        return weixinOpenid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.weixin_openid\n     *\n     * @param weixinOpenid the value for litemall_user.weixin_openid\n     *\n     * @mbg.generated\n     */\n    public void setWeixinOpenid(String weixinOpenid) {\n        this.weixinOpenid = weixinOpenid;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.session_key\n     *\n     * @return the value of litemall_user.session_key\n     *\n     * @mbg.generated\n     */\n    public String getSessionKey() {\n        return sessionKey;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.session_key\n     *\n     * @param sessionKey the value for litemall_user.session_key\n     *\n     * @mbg.generated\n     */\n    public void setSessionKey(String sessionKey) {\n        this.sessionKey = sessionKey;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.status\n     *\n     * @return the value of litemall_user.status\n     *\n     * @mbg.generated\n     */\n    public Byte getStatus() {\n        return status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.status\n     *\n     * @param status the value for litemall_user.status\n     *\n     * @mbg.generated\n     */\n    public void setStatus(Byte status) {\n        this.status = status;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.add_time\n     *\n     * @return the value of litemall_user.add_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.add_time\n     *\n     * @param addTime the value for litemall_user.add_time\n     *\n     * @mbg.generated\n     */\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.update_time\n     *\n     * @return the value of litemall_user.update_time\n     *\n     * @mbg.generated\n     */\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.update_time\n     *\n     * @param updateTime the value for litemall_user.update_time\n     *\n     * @mbg.generated\n     */\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public void andLogicalDeleted(boolean deleted) {\n        setDeleted(deleted ? Deleted.IS_DELETED.value() : Deleted.NOT_DELETED.value());\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method returns the value of the database column litemall_user.deleted\n     *\n     * @return the value of litemall_user.deleted\n     *\n     * @mbg.generated\n     */\n    public Boolean getDeleted() {\n        return deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method sets the value of the database column litemall_user.deleted\n     *\n     * @param deleted the value for litemall_user.deleted\n     *\n     * @mbg.generated\n     */\n    public void setDeleted(Boolean deleted) {\n        this.deleted = deleted;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public String toString() {\n        StringBuilder sb = new StringBuilder();\n        sb.append(getClass().getSimpleName());\n        sb.append(\" [\");\n        sb.append(\"Hash = \").append(hashCode());\n        sb.append(\", IS_DELETED=\").append(IS_DELETED);\n        sb.append(\", NOT_DELETED=\").append(NOT_DELETED);\n        sb.append(\", id=\").append(id);\n        sb.append(\", username=\").append(username);\n        sb.append(\", password=\").append(password);\n        sb.append(\", gender=\").append(gender);\n        sb.append(\", birthday=\").append(birthday);\n        sb.append(\", lastLoginTime=\").append(lastLoginTime);\n        sb.append(\", lastLoginIp=\").append(lastLoginIp);\n        sb.append(\", userLevel=\").append(userLevel);\n        sb.append(\", nickname=\").append(nickname);\n        sb.append(\", mobile=\").append(mobile);\n        sb.append(\", avatar=\").append(avatar);\n        sb.append(\", weixinOpenid=\").append(weixinOpenid);\n        sb.append(\", sessionKey=\").append(sessionKey);\n        sb.append(\", status=\").append(status);\n        sb.append(\", addTime=\").append(addTime);\n        sb.append(\", updateTime=\").append(updateTime);\n        sb.append(\", deleted=\").append(deleted);\n        sb.append(\"]\");\n        return sb.toString();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public boolean equals(Object that) {\n        if (this == that) {\n            return true;\n        }\n        if (that == null) {\n            return false;\n        }\n        if (getClass() != that.getClass()) {\n            return false;\n        }\n        LitemallUser other = (LitemallUser) that;\n        return (this.getId() == null ? other.getId() == null : this.getId().equals(other.getId()))\n            && (this.getUsername() == null ? other.getUsername() == null : this.getUsername().equals(other.getUsername()))\n            && (this.getPassword() == null ? other.getPassword() == null : this.getPassword().equals(other.getPassword()))\n            && (this.getGender() == null ? other.getGender() == null : this.getGender().equals(other.getGender()))\n            && (this.getBirthday() == null ? other.getBirthday() == null : this.getBirthday().equals(other.getBirthday()))\n            && (this.getLastLoginTime() == null ? other.getLastLoginTime() == null : this.getLastLoginTime().equals(other.getLastLoginTime()))\n            && (this.getLastLoginIp() == null ? other.getLastLoginIp() == null : this.getLastLoginIp().equals(other.getLastLoginIp()))\n            && (this.getUserLevel() == null ? other.getUserLevel() == null : this.getUserLevel().equals(other.getUserLevel()))\n            && (this.getNickname() == null ? other.getNickname() == null : this.getNickname().equals(other.getNickname()))\n            && (this.getMobile() == null ? other.getMobile() == null : this.getMobile().equals(other.getMobile()))\n            && (this.getAvatar() == null ? other.getAvatar() == null : this.getAvatar().equals(other.getAvatar()))\n            && (this.getWeixinOpenid() == null ? other.getWeixinOpenid() == null : this.getWeixinOpenid().equals(other.getWeixinOpenid()))\n            && (this.getSessionKey() == null ? other.getSessionKey() == null : this.getSessionKey().equals(other.getSessionKey()))\n            && (this.getStatus() == null ? other.getStatus() == null : this.getStatus().equals(other.getStatus()))\n            && (this.getAddTime() == null ? other.getAddTime() == null : this.getAddTime().equals(other.getAddTime()))\n            && (this.getUpdateTime() == null ? other.getUpdateTime() == null : this.getUpdateTime().equals(other.getUpdateTime()))\n            && (this.getDeleted() == null ? other.getDeleted() == null : this.getDeleted().equals(other.getDeleted()));\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    @Override\n    public int hashCode() {\n        final int prime = 31;\n        int result = 1;\n        result = prime * result + ((getId() == null) ? 0 : getId().hashCode());\n        result = prime * result + ((getUsername() == null) ? 0 : getUsername().hashCode());\n        result = prime * result + ((getPassword() == null) ? 0 : getPassword().hashCode());\n        result = prime * result + ((getGender() == null) ? 0 : getGender().hashCode());\n        result = prime * result + ((getBirthday() == null) ? 0 : getBirthday().hashCode());\n        result = prime * result + ((getLastLoginTime() == null) ? 0 : getLastLoginTime().hashCode());\n        result = prime * result + ((getLastLoginIp() == null) ? 0 : getLastLoginIp().hashCode());\n        result = prime * result + ((getUserLevel() == null) ? 0 : getUserLevel().hashCode());\n        result = prime * result + ((getNickname() == null) ? 0 : getNickname().hashCode());\n        result = prime * result + ((getMobile() == null) ? 0 : getMobile().hashCode());\n        result = prime * result + ((getAvatar() == null) ? 0 : getAvatar().hashCode());\n        result = prime * result + ((getWeixinOpenid() == null) ? 0 : getWeixinOpenid().hashCode());\n        result = prime * result + ((getSessionKey() == null) ? 0 : getSessionKey().hashCode());\n        result = prime * result + ((getStatus() == null) ? 0 : getStatus().hashCode());\n        result = prime * result + ((getAddTime() == null) ? 0 : getAddTime().hashCode());\n        result = prime * result + ((getUpdateTime() == null) ? 0 : getUpdateTime().hashCode());\n        result = prime * result + ((getDeleted() == null) ? 0 : getDeleted().hashCode());\n        return result;\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public enum Deleted {\n        NOT_DELETED(new Boolean(\"0\"), \"未删除\"),\n        IS_DELETED(new Boolean(\"1\"), \"已删除\");\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final Boolean value;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final String name;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        Deleted(Boolean value, String name) {\n            this.value = value;\n            this.name = name;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Boolean getValue() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Boolean value() {\n            return this.value;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getName() {\n            return this.name;\n        }\n    }\n\n    /**\n     * This enum was generated by MyBatis Generator.\n     * This enum corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public enum Column {\n        id(\"id\", \"id\", \"INTEGER\", false),\n        username(\"username\", \"username\", \"VARCHAR\", false),\n        password(\"password\", \"password\", \"VARCHAR\", true),\n        gender(\"gender\", \"gender\", \"TINYINT\", false),\n        birthday(\"birthday\", \"birthday\", \"DATE\", false),\n        lastLoginTime(\"last_login_time\", \"lastLoginTime\", \"TIMESTAMP\", false),\n        lastLoginIp(\"last_login_ip\", \"lastLoginIp\", \"VARCHAR\", false),\n        userLevel(\"user_level\", \"userLevel\", \"TINYINT\", false),\n        nickname(\"nickname\", \"nickname\", \"VARCHAR\", false),\n        mobile(\"mobile\", \"mobile\", \"VARCHAR\", false),\n        avatar(\"avatar\", \"avatar\", \"VARCHAR\", false),\n        weixinOpenid(\"weixin_openid\", \"weixinOpenid\", \"VARCHAR\", false),\n        sessionKey(\"session_key\", \"sessionKey\", \"VARCHAR\", false),\n        status(\"status\", \"status\", \"TINYINT\", true),\n        addTime(\"add_time\", \"addTime\", \"TIMESTAMP\", false),\n        updateTime(\"update_time\", \"updateTime\", \"TIMESTAMP\", false),\n        deleted(\"deleted\", \"deleted\", \"BIT\", false);\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private static final String BEGINNING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private static final String ENDING_DELIMITER = \"`\";\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final String column;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final boolean isColumnNameDelimited;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final String javaProperty;\n\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private final String jdbcType;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String value() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getValue() {\n            return this.column;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getJavaProperty() {\n            return this.javaProperty;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getJdbcType() {\n            return this.jdbcType;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        Column(String column, String javaProperty, String jdbcType, boolean isColumnNameDelimited) {\n            this.column = column;\n            this.javaProperty = javaProperty;\n            this.jdbcType = jdbcType;\n            this.isColumnNameDelimited = isColumnNameDelimited;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String desc() {\n            return this.getEscapedColumnName() + \" DESC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String asc() {\n            return this.getEscapedColumnName() + \" ASC\";\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public static Column[] excludes(Column ... excludes) {\n            ArrayList<Column> columns = new ArrayList<>(Arrays.asList(Column.values()));\n            if (excludes != null && excludes.length > 0) {\n                columns.removeAll(new ArrayList<>(Arrays.asList(excludes)));\n            }\n            return columns.toArray(new Column[]{});\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getEscapedColumnName() {\n            if (this.isColumnNameDelimited) {\n                return new StringBuilder().append(BEGINNING_DELIMITER).append(this.column).append(ENDING_DELIMITER).toString();\n            } else {\n                return this.column;\n            }\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public String getAliasedEscapedColumnName() {\n            return this.getEscapedColumnName();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/LitemallUserExample.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\npublic class LitemallUserExample {\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    protected String orderByClause;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    protected boolean distinct;\n\n    /**\n     * This field was generated by MyBatis Generator.\n     * This field corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    protected List<Criteria> oredCriteria;\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public LitemallUserExample() {\n        oredCriteria = new ArrayList<Criteria>();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public void setOrderByClause(String orderByClause) {\n        this.orderByClause = orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public String getOrderByClause() {\n        return orderByClause;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public void setDistinct(boolean distinct) {\n        this.distinct = distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public boolean isDistinct() {\n        return distinct;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public List<Criteria> getOredCriteria() {\n        return oredCriteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public void or(Criteria criteria) {\n        oredCriteria.add(criteria);\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public Criteria or() {\n        Criteria criteria = createCriteriaInternal();\n        oredCriteria.add(criteria);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public LitemallUserExample orderBy(String orderByClause) {\n        this.setOrderByClause(orderByClause);\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public LitemallUserExample orderBy(String ... orderByClauses) {\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < orderByClauses.length; i++) {\n            sb.append(orderByClauses[i]);\n            if (i < orderByClauses.length - 1) {\n                sb.append(\" , \");\n            }\n        }\n        this.setOrderByClause(sb.toString());\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public Criteria createCriteria() {\n        Criteria criteria = createCriteriaInternal();\n        if (oredCriteria.size() == 0) {\n            oredCriteria.add(criteria);\n        }\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    protected Criteria createCriteriaInternal() {\n        Criteria criteria = new Criteria(this);\n        return criteria;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public void clear() {\n        oredCriteria.clear();\n        orderByClause = null;\n        distinct = false;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public static Criteria newAndCreateCriteria() {\n        LitemallUserExample example = new LitemallUserExample();\n        return example.createCriteria();\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public LitemallUserExample when(boolean condition, IExampleWhen then) {\n        if (condition) {\n            then.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This method was generated by MyBatis Generator.\n     * This method corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public LitemallUserExample when(boolean condition, IExampleWhen then, IExampleWhen otherwise) {\n        if (condition) {\n            then.example(this);\n        } else {\n            otherwise.example(this);\n        }\n        return this;\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    protected abstract static class GeneratedCriteria {\n        protected List<Criterion> criteria;\n\n        protected GeneratedCriteria() {\n            super();\n            criteria = new ArrayList<Criterion>();\n        }\n\n        public boolean isValid() {\n            return criteria.size() > 0;\n        }\n\n        public List<Criterion> getAllCriteria() {\n            return criteria;\n        }\n\n        public List<Criterion> getCriteria() {\n            return criteria;\n        }\n\n        protected void addCriterion(String condition) {\n            if (condition == null) {\n                throw new RuntimeException(\"Value for condition cannot be null\");\n            }\n            criteria.add(new Criterion(condition));\n        }\n\n        protected void addCriterion(String condition, Object value, String property) {\n            if (value == null) {\n                throw new RuntimeException(\"Value for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value));\n        }\n\n        protected void addCriterion(String condition, Object value1, Object value2, String property) {\n            if (value1 == null || value2 == null) {\n                throw new RuntimeException(\"Between values for \" + property + \" cannot be null\");\n            }\n            criteria.add(new Criterion(condition, value1, value2));\n        }\n\n        public Criteria andIdIsNull() {\n            addCriterion(\"id is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIsNotNull() {\n            addCriterion(\"id is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdEqualTo(Integer value) {\n            addCriterion(\"id =\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotEqualTo(Integer value) {\n            addCriterion(\"id <>\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThan(Integer value) {\n            addCriterion(\"id >\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdGreaterThanOrEqualTo(Integer value) {\n            addCriterion(\"id >=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThan(Integer value) {\n            addCriterion(\"id <\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdLessThanOrEqualTo(Integer value) {\n            addCriterion(\"id <=\", value, \"id\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andIdLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"id <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andIdIn(List<Integer> values) {\n            addCriterion(\"id in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotIn(List<Integer> values) {\n            addCriterion(\"id not in\", values, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdBetween(Integer value1, Integer value2) {\n            addCriterion(\"id between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andIdNotBetween(Integer value1, Integer value2) {\n            addCriterion(\"id not between\", value1, value2, \"id\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNull() {\n            addCriterion(\"username is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIsNotNull() {\n            addCriterion(\"username is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameEqualTo(String value) {\n            addCriterion(\"username =\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotEqualTo(String value) {\n            addCriterion(\"username <>\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThan(String value) {\n            addCriterion(\"username >\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"username >=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThan(String value) {\n            addCriterion(\"username <\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLessThanOrEqualTo(String value) {\n            addCriterion(\"username <=\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUsernameLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"username <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameLike(String value) {\n            addCriterion(\"username like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotLike(String value) {\n            addCriterion(\"username not like\", value, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameIn(List<String> values) {\n            addCriterion(\"username in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotIn(List<String> values) {\n            addCriterion(\"username not in\", values, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameBetween(String value1, String value2) {\n            addCriterion(\"username between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUsernameNotBetween(String value1, String value2) {\n            addCriterion(\"username not between\", value1, value2, \"username\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIsNull() {\n            addCriterion(\"`password` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIsNotNull() {\n            addCriterion(\"`password` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordEqualTo(String value) {\n            addCriterion(\"`password` =\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotEqualTo(String value) {\n            addCriterion(\"`password` <>\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordGreaterThan(String value) {\n            addCriterion(\"`password` >\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordGreaterThanOrEqualTo(String value) {\n            addCriterion(\"`password` >=\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLessThan(String value) {\n            addCriterion(\"`password` <\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLessThanOrEqualTo(String value) {\n            addCriterion(\"`password` <=\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andPasswordLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`password` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordLike(String value) {\n            addCriterion(\"`password` like\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotLike(String value) {\n            addCriterion(\"`password` not like\", value, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordIn(List<String> values) {\n            addCriterion(\"`password` in\", values, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotIn(List<String> values) {\n            addCriterion(\"`password` not in\", values, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordBetween(String value1, String value2) {\n            addCriterion(\"`password` between\", value1, value2, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andPasswordNotBetween(String value1, String value2) {\n            addCriterion(\"`password` not between\", value1, value2, \"password\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderIsNull() {\n            addCriterion(\"gender is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderIsNotNull() {\n            addCriterion(\"gender is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderEqualTo(Byte value) {\n            addCriterion(\"gender =\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderNotEqualTo(Byte value) {\n            addCriterion(\"gender <>\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderGreaterThan(Byte value) {\n            addCriterion(\"gender >\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"gender >=\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderLessThan(Byte value) {\n            addCriterion(\"gender <\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderLessThanOrEqualTo(Byte value) {\n            addCriterion(\"gender <=\", value, \"gender\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andGenderLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"gender <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderIn(List<Byte> values) {\n            addCriterion(\"gender in\", values, \"gender\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderNotIn(List<Byte> values) {\n            addCriterion(\"gender not in\", values, \"gender\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderBetween(Byte value1, Byte value2) {\n            addCriterion(\"gender between\", value1, value2, \"gender\");\n            return (Criteria) this;\n        }\n\n        public Criteria andGenderNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"gender not between\", value1, value2, \"gender\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayIsNull() {\n            addCriterion(\"birthday is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayIsNotNull() {\n            addCriterion(\"birthday is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayEqualTo(LocalDate value) {\n            addCriterion(\"birthday =\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayNotEqualTo(LocalDate value) {\n            addCriterion(\"birthday <>\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayGreaterThan(LocalDate value) {\n            addCriterion(\"birthday >\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayGreaterThanOrEqualTo(LocalDate value) {\n            addCriterion(\"birthday >=\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayLessThan(LocalDate value) {\n            addCriterion(\"birthday <\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayLessThanOrEqualTo(LocalDate value) {\n            addCriterion(\"birthday <=\", value, \"birthday\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andBirthdayLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"birthday <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayIn(List<LocalDate> values) {\n            addCriterion(\"birthday in\", values, \"birthday\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayNotIn(List<LocalDate> values) {\n            addCriterion(\"birthday not in\", values, \"birthday\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayBetween(LocalDate value1, LocalDate value2) {\n            addCriterion(\"birthday between\", value1, value2, \"birthday\");\n            return (Criteria) this;\n        }\n\n        public Criteria andBirthdayNotBetween(LocalDate value1, LocalDate value2) {\n            addCriterion(\"birthday not between\", value1, value2, \"birthday\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIsNull() {\n            addCriterion(\"last_login_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIsNotNull() {\n            addCriterion(\"last_login_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time =\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time <>\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"last_login_time >\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time >=\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeLessThan(LocalDateTime value) {\n            addCriterion(\"last_login_time <\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"last_login_time <=\", value, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginTimeLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"last_login_time in\", values, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"last_login_time not in\", values, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"last_login_time between\", value1, value2, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"last_login_time not between\", value1, value2, \"lastLoginTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIsNull() {\n            addCriterion(\"last_login_ip is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIsNotNull() {\n            addCriterion(\"last_login_ip is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpEqualTo(String value) {\n            addCriterion(\"last_login_ip =\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotEqualTo(String value) {\n            addCriterion(\"last_login_ip <>\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpGreaterThan(String value) {\n            addCriterion(\"last_login_ip >\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpGreaterThanOrEqualTo(String value) {\n            addCriterion(\"last_login_ip >=\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLessThan(String value) {\n            addCriterion(\"last_login_ip <\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLessThanOrEqualTo(String value) {\n            addCriterion(\"last_login_ip <=\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLastLoginIpLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"last_login_ip <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpLike(String value) {\n            addCriterion(\"last_login_ip like\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotLike(String value) {\n            addCriterion(\"last_login_ip not like\", value, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpIn(List<String> values) {\n            addCriterion(\"last_login_ip in\", values, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotIn(List<String> values) {\n            addCriterion(\"last_login_ip not in\", values, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpBetween(String value1, String value2) {\n            addCriterion(\"last_login_ip between\", value1, value2, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andLastLoginIpNotBetween(String value1, String value2) {\n            addCriterion(\"last_login_ip not between\", value1, value2, \"lastLoginIp\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelIsNull() {\n            addCriterion(\"user_level is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelIsNotNull() {\n            addCriterion(\"user_level is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelEqualTo(Byte value) {\n            addCriterion(\"user_level =\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelNotEqualTo(Byte value) {\n            addCriterion(\"user_level <>\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelGreaterThan(Byte value) {\n            addCriterion(\"user_level >\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"user_level >=\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelLessThan(Byte value) {\n            addCriterion(\"user_level <\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelLessThanOrEqualTo(Byte value) {\n            addCriterion(\"user_level <=\", value, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUserLevelLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"user_level <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelIn(List<Byte> values) {\n            addCriterion(\"user_level in\", values, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelNotIn(List<Byte> values) {\n            addCriterion(\"user_level not in\", values, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelBetween(Byte value1, Byte value2) {\n            addCriterion(\"user_level between\", value1, value2, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUserLevelNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"user_level not between\", value1, value2, \"userLevel\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameIsNull() {\n            addCriterion(\"nickname is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameIsNotNull() {\n            addCriterion(\"nickname is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameEqualTo(String value) {\n            addCriterion(\"nickname =\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameNotEqualTo(String value) {\n            addCriterion(\"nickname <>\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameGreaterThan(String value) {\n            addCriterion(\"nickname >\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameGreaterThanOrEqualTo(String value) {\n            addCriterion(\"nickname >=\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameLessThan(String value) {\n            addCriterion(\"nickname <\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameLessThanOrEqualTo(String value) {\n            addCriterion(\"nickname <=\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andNicknameLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"nickname <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameLike(String value) {\n            addCriterion(\"nickname like\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameNotLike(String value) {\n            addCriterion(\"nickname not like\", value, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameIn(List<String> values) {\n            addCriterion(\"nickname in\", values, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameNotIn(List<String> values) {\n            addCriterion(\"nickname not in\", values, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameBetween(String value1, String value2) {\n            addCriterion(\"nickname between\", value1, value2, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andNicknameNotBetween(String value1, String value2) {\n            addCriterion(\"nickname not between\", value1, value2, \"nickname\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNull() {\n            addCriterion(\"mobile is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIsNotNull() {\n            addCriterion(\"mobile is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileEqualTo(String value) {\n            addCriterion(\"mobile =\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotEqualTo(String value) {\n            addCriterion(\"mobile <>\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThan(String value) {\n            addCriterion(\"mobile >\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileGreaterThanOrEqualTo(String value) {\n            addCriterion(\"mobile >=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThan(String value) {\n            addCriterion(\"mobile <\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLessThanOrEqualTo(String value) {\n            addCriterion(\"mobile <=\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andMobileLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"mobile <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileLike(String value) {\n            addCriterion(\"mobile like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotLike(String value) {\n            addCriterion(\"mobile not like\", value, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileIn(List<String> values) {\n            addCriterion(\"mobile in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotIn(List<String> values) {\n            addCriterion(\"mobile not in\", values, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileBetween(String value1, String value2) {\n            addCriterion(\"mobile between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andMobileNotBetween(String value1, String value2) {\n            addCriterion(\"mobile not between\", value1, value2, \"mobile\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIsNull() {\n            addCriterion(\"avatar is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIsNotNull() {\n            addCriterion(\"avatar is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarEqualTo(String value) {\n            addCriterion(\"avatar =\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotEqualTo(String value) {\n            addCriterion(\"avatar <>\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarGreaterThan(String value) {\n            addCriterion(\"avatar >\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarGreaterThanOrEqualTo(String value) {\n            addCriterion(\"avatar >=\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLessThan(String value) {\n            addCriterion(\"avatar <\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLessThanOrEqualTo(String value) {\n            addCriterion(\"avatar <=\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAvatarLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"avatar <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarLike(String value) {\n            addCriterion(\"avatar like\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotLike(String value) {\n            addCriterion(\"avatar not like\", value, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarIn(List<String> values) {\n            addCriterion(\"avatar in\", values, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotIn(List<String> values) {\n            addCriterion(\"avatar not in\", values, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarBetween(String value1, String value2) {\n            addCriterion(\"avatar between\", value1, value2, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAvatarNotBetween(String value1, String value2) {\n            addCriterion(\"avatar not between\", value1, value2, \"avatar\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidIsNull() {\n            addCriterion(\"weixin_openid is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidIsNotNull() {\n            addCriterion(\"weixin_openid is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidEqualTo(String value) {\n            addCriterion(\"weixin_openid =\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidNotEqualTo(String value) {\n            addCriterion(\"weixin_openid <>\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidGreaterThan(String value) {\n            addCriterion(\"weixin_openid >\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidGreaterThanOrEqualTo(String value) {\n            addCriterion(\"weixin_openid >=\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidLessThan(String value) {\n            addCriterion(\"weixin_openid <\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidLessThanOrEqualTo(String value) {\n            addCriterion(\"weixin_openid <=\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andWeixinOpenidLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"weixin_openid <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidLike(String value) {\n            addCriterion(\"weixin_openid like\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidNotLike(String value) {\n            addCriterion(\"weixin_openid not like\", value, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidIn(List<String> values) {\n            addCriterion(\"weixin_openid in\", values, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidNotIn(List<String> values) {\n            addCriterion(\"weixin_openid not in\", values, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidBetween(String value1, String value2) {\n            addCriterion(\"weixin_openid between\", value1, value2, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andWeixinOpenidNotBetween(String value1, String value2) {\n            addCriterion(\"weixin_openid not between\", value1, value2, \"weixinOpenid\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyIsNull() {\n            addCriterion(\"session_key is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyIsNotNull() {\n            addCriterion(\"session_key is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyEqualTo(String value) {\n            addCriterion(\"session_key =\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyNotEqualTo(String value) {\n            addCriterion(\"session_key <>\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyGreaterThan(String value) {\n            addCriterion(\"session_key >\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyGreaterThanOrEqualTo(String value) {\n            addCriterion(\"session_key >=\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyLessThan(String value) {\n            addCriterion(\"session_key <\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyLessThanOrEqualTo(String value) {\n            addCriterion(\"session_key <=\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andSessionKeyLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"session_key <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyLike(String value) {\n            addCriterion(\"session_key like\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyNotLike(String value) {\n            addCriterion(\"session_key not like\", value, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyIn(List<String> values) {\n            addCriterion(\"session_key in\", values, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyNotIn(List<String> values) {\n            addCriterion(\"session_key not in\", values, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyBetween(String value1, String value2) {\n            addCriterion(\"session_key between\", value1, value2, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andSessionKeyNotBetween(String value1, String value2) {\n            addCriterion(\"session_key not between\", value1, value2, \"sessionKey\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNull() {\n            addCriterion(\"`status` is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIsNotNull() {\n            addCriterion(\"`status` is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusEqualTo(Byte value) {\n            addCriterion(\"`status` =\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotEqualTo(Byte value) {\n            addCriterion(\"`status` <>\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThan(Byte value) {\n            addCriterion(\"`status` >\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusGreaterThanOrEqualTo(Byte value) {\n            addCriterion(\"`status` >=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThan(Byte value) {\n            addCriterion(\"`status` <\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusLessThanOrEqualTo(Byte value) {\n            addCriterion(\"`status` <=\", value, \"status\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andStatusLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"`status` <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusIn(List<Byte> values) {\n            addCriterion(\"`status` in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotIn(List<Byte> values) {\n            addCriterion(\"`status` not in\", values, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusBetween(Byte value1, Byte value2) {\n            addCriterion(\"`status` between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andStatusNotBetween(Byte value1, Byte value2) {\n            addCriterion(\"`status` not between\", value1, value2, \"status\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNull() {\n            addCriterion(\"add_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIsNotNull() {\n            addCriterion(\"add_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time =\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <>\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"add_time >\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time >=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThan(LocalDateTime value) {\n            addCriterion(\"add_time <\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"add_time <=\", value, \"addTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andAddTimeLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"add_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"add_time not in\", values, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andAddTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"add_time not between\", value1, value2, \"addTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNull() {\n            addCriterion(\"update_time is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIsNotNull() {\n            addCriterion(\"update_time is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time =\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <>\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThan(LocalDateTime value) {\n            addCriterion(\"update_time >\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeGreaterThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time >=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThan(LocalDateTime value) {\n            addCriterion(\"update_time <\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeLessThanOrEqualTo(LocalDateTime value) {\n            addCriterion(\"update_time <=\", value, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andUpdateTimeLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"update_time <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotIn(List<LocalDateTime> values) {\n            addCriterion(\"update_time not in\", values, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andUpdateTimeNotBetween(LocalDateTime value1, LocalDateTime value2) {\n            addCriterion(\"update_time not between\", value1, value2, \"updateTime\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNull() {\n            addCriterion(\"deleted is null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIsNotNull() {\n            addCriterion(\"deleted is not null\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedEqualTo(Boolean value) {\n            addCriterion(\"deleted =\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted = \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotEqualTo(Boolean value) {\n            addCriterion(\"deleted <>\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedNotEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted <> \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThan(Boolean value) {\n            addCriterion(\"deleted >\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted > \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedGreaterThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted >=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedGreaterThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted >= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThan(Boolean value) {\n            addCriterion(\"deleted <\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted < \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedLessThanOrEqualTo(Boolean value) {\n            addCriterion(\"deleted <=\", value, \"deleted\");\n            return (Criteria) this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andDeletedLessThanOrEqualToColumn(LitemallUser.Column column) {\n            addCriterion(new StringBuilder(\"deleted <= \").append(column.getEscapedColumnName()).toString());\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedIn(List<Boolean> values) {\n            addCriterion(\"deleted in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotIn(List<Boolean> values) {\n            addCriterion(\"deleted not in\", values, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n\n        public Criteria andDeletedNotBetween(Boolean value1, Boolean value2) {\n            addCriterion(\"deleted not between\", value1, value2, \"deleted\");\n            return (Criteria) this;\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_user\n     *\n     * @mbg.generated do_not_delete_during_merge\n     */\n    public static class Criteria extends GeneratedCriteria {\n        /**\n         * This field was generated by MyBatis Generator.\n         * This field corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        private LitemallUserExample example;\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        protected Criteria(LitemallUserExample example) {\n            super();\n            this.example = example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public LitemallUserExample example() {\n            return this.example;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        @Deprecated\n        public Criteria andIf(boolean ifAdd, ICriteriaAdd add) {\n            if (ifAdd) {\n                add.add(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then) {\n            if (condition) {\n                then.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria when(boolean condition, ICriteriaWhen then, ICriteriaWhen otherwise) {\n            if (condition) {\n                then.criteria(this);\n            } else {\n                otherwise.criteria(this);\n            }\n            return this;\n        }\n\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        public Criteria andLogicalDeleted(boolean deleted) {\n            return deleted ? andDeletedEqualTo(LitemallUser.Deleted.IS_DELETED.value()) : andDeletedNotEqualTo(LitemallUser.Deleted.IS_DELETED.value());\n        }\n\n        @Deprecated\n        public interface ICriteriaAdd {\n            /**\n             * This method was generated by MyBatis Generator.\n             * This method corresponds to the database table litemall_user\n             *\n             * @mbg.generated\n             */\n            Criteria add(Criteria add);\n        }\n    }\n\n    /**\n     * This class was generated by MyBatis Generator.\n     * This class corresponds to the database table litemall_user\n     *\n     * @mbg.generated\n     */\n    public static class Criterion {\n        private String condition;\n\n        private Object value;\n\n        private Object secondValue;\n\n        private boolean noValue;\n\n        private boolean singleValue;\n\n        private boolean betweenValue;\n\n        private boolean listValue;\n\n        private String typeHandler;\n\n        public String getCondition() {\n            return condition;\n        }\n\n        public Object getValue() {\n            return value;\n        }\n\n        public Object getSecondValue() {\n            return secondValue;\n        }\n\n        public boolean isNoValue() {\n            return noValue;\n        }\n\n        public boolean isSingleValue() {\n            return singleValue;\n        }\n\n        public boolean isBetweenValue() {\n            return betweenValue;\n        }\n\n        public boolean isListValue() {\n            return listValue;\n        }\n\n        public String getTypeHandler() {\n            return typeHandler;\n        }\n\n        protected Criterion(String condition) {\n            super();\n            this.condition = condition;\n            this.typeHandler = null;\n            this.noValue = true;\n        }\n\n        protected Criterion(String condition, Object value, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.typeHandler = typeHandler;\n            if (value instanceof List<?>) {\n                this.listValue = true;\n            } else {\n                this.singleValue = true;\n            }\n        }\n\n        protected Criterion(String condition, Object value) {\n            this(condition, value, null);\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue, String typeHandler) {\n            super();\n            this.condition = condition;\n            this.value = value;\n            this.secondValue = secondValue;\n            this.typeHandler = typeHandler;\n            this.betweenValue = true;\n        }\n\n        protected Criterion(String condition, Object value, Object secondValue) {\n            this(condition, value, secondValue, null);\n        }\n    }\n\n    public interface ICriteriaWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        void criteria(Criteria criteria);\n    }\n\n    public interface IExampleWhen {\n        /**\n         * This method was generated by MyBatis Generator.\n         * This method corresponds to the database table litemall_user\n         *\n         * @mbg.generated\n         */\n        void example(org.linlinjava.litemall.db.domain.LitemallUserExample example);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/OrderGoodsVo.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.util.Arrays;\n\npublic class OrderGoodsVo {\n    private Integer id;\n    private String goodsName;\n    private String picUrl;\n    private Integer goodsId;\n    private Integer productId;\n    private String[] specifications;\n    private Integer number;\n    private BigDecimal price;\n    private String location;\n\n    public Integer getProductId() {\n        return productId;\n    }\n\n    public void setProductId(Integer productId) {\n        this.productId = productId;\n    }\n\n    public Integer getGoodsId() {\n        return goodsId;\n    }\n\n    public void setGoodsId(Integer goodsId) {\n        this.goodsId = goodsId;\n    }\n\n    public String getLocation() {\n        return location;\n    }\n\n    public void setLocation(String location) {\n        this.location = location;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    public String getGoodsName() {\n        return goodsName;\n    }\n\n    public void setGoodsName(String goodsName) {\n        this.goodsName = goodsName;\n    }\n\n    public String[] getSpecifications() {\n        return specifications;\n    }\n\n    public void setSpecifications(String[] specifications) {\n        this.specifications = specifications;\n    }\n\n    public Integer getNumber() {\n        return number;\n    }\n\n    public void setNumber(Integer number) {\n        this.number = number;\n    }\n\n    public BigDecimal getPrice() {\n        return price;\n    }\n\n    public void setPrice(BigDecimal price) {\n        this.price = price;\n    }\n\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/OrderVo.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\npublic class OrderVo {\n    private Integer id;\n    private String orderSn;\n    private Integer orderStatus;\n    private BigDecimal actualPrice;\n    private BigDecimal integralPrice;\n    private BigDecimal freightPrice;\n    private BigDecimal orderPrice;\n    private LocalDateTime addTime;\n    private Integer userId;\n    private String userName;\n    private String userAvatar;\n    private String consignee;\n    private String address;\n    private String mobile;\n    private String shipChannel;\n    private String shipSn;\n    private String message;\n    private LocalDateTime payTime;\n    private List<OrderGoodsVo> goodsVoList;\n\n    public LocalDateTime getPayTime() {\n        return payTime;\n    }\n\n    public void setPayTime(LocalDateTime payTime) {\n        this.payTime = payTime;\n    }\n\n    public BigDecimal getIntegralPrice() {\n        return integralPrice;\n    }\n\n    public void setIntegralPrice(BigDecimal integralPrice) {\n        this.integralPrice = integralPrice;\n    }\n\n    public String getMessage() {\n        return message;\n    }\n\n    public void setMessage(String message) {\n        this.message = message;\n    }\n\n    public String getShipChannel() {\n        return shipChannel;\n    }\n\n    public void setShipChannel(String shipChannel) {\n        this.shipChannel = shipChannel;\n    }\n\n    public String getShipSn() {\n        return shipSn;\n    }\n\n    public void setShipSn(String shipSn) {\n        this.shipSn = shipSn;\n    }\n\n    public BigDecimal getOrderPrice() {\n        return orderPrice;\n    }\n\n    public void setOrderPrice(BigDecimal orderPrice) {\n        this.orderPrice = orderPrice;\n    }\n\n    public BigDecimal getFreightPrice() {\n        return freightPrice;\n    }\n\n    public void setFreightPrice(BigDecimal freightPrice) {\n        this.freightPrice = freightPrice;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getOrderSn() {\n        return orderSn;\n    }\n\n    public void setOrderSn(String orderSn) {\n        this.orderSn = orderSn;\n    }\n\n    public Integer getOrderStatus() {\n        return orderStatus;\n    }\n\n    public void setOrderStatus(Integer orderStatus) {\n        this.orderStatus = orderStatus;\n    }\n\n    public BigDecimal getActualPrice() {\n        return actualPrice;\n    }\n\n    public void setActualPrice(BigDecimal actualPrice) {\n        this.actualPrice = actualPrice;\n    }\n\n    public LocalDateTime getAddTime() {\n        return addTime;\n    }\n\n    public void setAddTime(LocalDateTime addTime) {\n        this.addTime = addTime;\n    }\n\n    public Integer getUserId() {\n        return userId;\n    }\n\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    public String getUserName() {\n        return userName;\n    }\n\n    public void setUserName(String userName) {\n        this.userName = userName;\n    }\n\n    public String getUserAvatar() {\n        return userAvatar;\n    }\n\n    public void setUserAvatar(String userAvatar) {\n        this.userAvatar = userAvatar;\n    }\n\n    public String getConsignee() {\n        return consignee;\n    }\n\n    public void setConsignee(String consignee) {\n        this.consignee = consignee;\n    }\n\n    public String getAddress() {\n        return address;\n    }\n\n    public void setAddress(String address) {\n        this.address = address;\n    }\n\n    public String getMobile() {\n        return mobile;\n    }\n\n    public void setMobile(String mobile) {\n        this.mobile = mobile;\n    }\n\n    public List<OrderGoodsVo> getGoodsVoList() {\n        return goodsVoList;\n    }\n\n    public void setGoodsVoList(List<OrderGoodsVo> goodsVoList) {\n        this.goodsVoList = goodsVoList;\n    }\n\n    @Override\n    public String toString() {\n        return \"OrderVo{\" +\n                \"id=\" + id +\n                \", orderSn='\" + orderSn + '\\'' +\n                \", orderStatus=\" + orderStatus +\n                \", actualPrice=\" + actualPrice +\n                \", integralPrice=\" + integralPrice +\n                \", freightPrice=\" + freightPrice +\n                \", orderPrice=\" + orderPrice +\n                \", addTime=\" + addTime +\n                \", userId=\" + userId +\n                \", userName='\" + userName + '\\'' +\n                \", userAvatar='\" + userAvatar + '\\'' +\n                \", consignee='\" + consignee + '\\'' +\n                \", address='\" + address + '\\'' +\n                \", mobile='\" + mobile + '\\'' +\n                \", shipChannel='\" + shipChannel + '\\'' +\n                \", shipSn='\" + shipSn + '\\'' +\n                \", message='\" + message + '\\'' +\n                \", payTime=\" + payTime +\n                \", goodsVoList=\" + goodsVoList +\n                '}';\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/domain/UserVo.java",
    "content": "package org.linlinjava.litemall.db.domain;\n\npublic class UserVo {\n    private String nickname;\n    private String avatar;\n\n    public String getNickname() {\n        return nickname;\n    }\n\n    public void setNickname(String nickname) {\n        this.nickname = nickname;\n    }\n\n    public String getAvatar() {\n        return avatar;\n    }\n\n    public void setAvatar(String avatar) {\n        this.avatar = avatar;\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/mybatis/JsonIntegerArrayTypeHandler.java",
    "content": "package org.linlinjava.litemall.db.mybatis;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.apache.ibatis.type.BaseTypeHandler;\nimport org.apache.ibatis.type.JdbcType;\n\nimport java.sql.CallableStatement;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\n/*\n   <columnOverride column=\"ids\" javaType=\"java.lang.Integer[]\" typeHandler=\"JsonIntegerArrayTypeHandler\"/>\n */\npublic class JsonIntegerArrayTypeHandler extends BaseTypeHandler<Integer[]> {\n    private static final ObjectMapper mapper = new ObjectMapper();\n\n    @Override\n    public void setNonNullParameter(PreparedStatement ps, int i, Integer[] parameter, JdbcType jdbcType) throws SQLException {\n        ps.setString(i, toJson(parameter));\n    }\n\n    @Override\n    public Integer[] getNullableResult(ResultSet rs, String columnName) throws SQLException {\n        return this.toObject(rs.getString(columnName));\n    }\n\n    @Override\n    public Integer[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException {\n        return this.toObject(rs.getString(columnIndex));\n    }\n\n    @Override\n    public Integer[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {\n        return this.toObject(cs.getString(columnIndex));\n    }\n\n    private String toJson(Integer[] params) {\n        try {\n            return mapper.writeValueAsString(params);\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n        return \"[]\";\n    }\n\n    private Integer[] toObject(String content) {\n        if (content != null && !content.isEmpty()) {\n            try {\n                return (Integer[]) mapper.readValue(content, Integer[].class);\n            } catch (Exception e) {\n                throw new RuntimeException(e);\n            }\n        } else {\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/mybatis/JsonNodeTypeHandler.java",
    "content": "package org.linlinjava.litemall.db.mybatis;\n\nimport com.fasterxml.jackson.core.JsonProcessingException;\nimport com.fasterxml.jackson.databind.JsonNode;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.apache.ibatis.type.BaseTypeHandler;\nimport org.apache.ibatis.type.JdbcType;\n\nimport java.io.IOException;\nimport java.sql.CallableStatement;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\n/*\n   <columnOverride column=\"json_string\" javaType=\"com.fasterxml.jackson.databind.JsonNode\" typeHandler=\"JsonNodeTypeHandler\"/>\n */\npublic class JsonNodeTypeHandler extends BaseTypeHandler<com.fasterxml.jackson.databind.JsonNode> {\n    private static final ObjectMapper mapper = new ObjectMapper();\n\n\n    @Override\n    public void setNonNullParameter(PreparedStatement ps, int i, JsonNode parameter, JdbcType jdbcType) throws SQLException {\n        String str = null;\n        try {\n            str = mapper.writeValueAsString(parameter);\n        } catch (JsonProcessingException e) {\n            e.printStackTrace();\n            str = \"{}\";\n        }\n        ps.setString(i, str);\n    }\n\n    @Override\n    public JsonNode getNullableResult(ResultSet rs, String columnName) throws SQLException {\n        String jsonSource = rs.getString(columnName);\n        if (jsonSource == null) {\n            return null;\n        }\n        try {\n            JsonNode jsonNode = mapper.readTree(jsonSource);\n            return jsonNode;\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        return null;\n    }\n\n    @Override\n    public JsonNode getNullableResult(ResultSet rs, int columnIndex) throws SQLException {\n        String jsonSource = rs.getString(columnIndex);\n        if (jsonSource == null) {\n            return null;\n        }\n        try {\n            JsonNode jsonNode = mapper.readTree(jsonSource);\n            return jsonNode;\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        return null;\n\n    }\n\n    @Override\n    public JsonNode getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {\n        String jsonSource = cs.getString(columnIndex);\n        if (jsonSource == null) {\n            return null;\n        }\n        try {\n            JsonNode jsonNode = mapper.readTree(jsonSource);\n            return jsonNode;\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        return null;\n    }\n\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/mybatis/JsonStringArrayTypeHandler.java",
    "content": "package org.linlinjava.litemall.db.mybatis;\n\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.apache.ibatis.type.BaseTypeHandler;\nimport org.apache.ibatis.type.JdbcType;\n\nimport java.sql.CallableStatement;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.SQLException;\n\n/*\n   <columnOverride column=\"urls\" javaType=\"java.lang.String[]\" typeHandler=\"JsonStringArrayTypeHandler\"/>\n */\npublic class JsonStringArrayTypeHandler extends BaseTypeHandler<String[]> {\n    private static final ObjectMapper mapper = new ObjectMapper();\n\n    @Override\n    public void setNonNullParameter(PreparedStatement ps, int i, String[] parameter, JdbcType jdbcType) throws SQLException {\n        ps.setString(i, toJson(parameter));\n    }\n\n    @Override\n    public String[] getNullableResult(ResultSet rs, String columnName) throws SQLException {\n        return this.toObject(rs.getString(columnName));\n    }\n\n    @Override\n    public String[] getNullableResult(ResultSet rs, int columnIndex) throws SQLException {\n        return this.toObject(rs.getString(columnIndex));\n    }\n\n    @Override\n    public String[] getNullableResult(CallableStatement cs, int columnIndex) throws SQLException {\n        return this.toObject(cs.getString(columnIndex));\n    }\n\n    private String toJson(String[] params) {\n        try {\n            return mapper.writeValueAsString(params);\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n        return \"[]\";\n    }\n\n    private String[] toObject(String content) {\n        if (content != null && !content.isEmpty()) {\n            try {\n                return (String[]) mapper.readValue(content, String[].class);\n            } catch (Exception e) {\n                throw new RuntimeException(e);\n            }\n        } else {\n            return null;\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/CouponAssignService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class CouponAssignService {\n\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n    @Autowired\n    private LitemallCouponService couponService;\n\n    /**\n     * 分发注册优惠券\n     *\n     * @param userId\n     * @return\n     */\n    public void assignForRegister(Integer userId) {\n        List<LitemallCoupon> couponList = couponService.queryRegister();\n        for(LitemallCoupon coupon : couponList){\n            Integer couponId = coupon.getId();\n\n            Integer count = couponUserService.countUserAndCoupon(userId, couponId);\n            if (count > 0) {\n                continue;\n            }\n\n            Short limit = coupon.getLimit();\n            while(limit > 0){\n                LitemallCouponUser couponUser = new LitemallCouponUser();\n                couponUser.setCouponId(couponId);\n                couponUser.setUserId(userId);\n                Short timeType = coupon.getTimeType();\n                if (timeType.equals(CouponConstant.TIME_TYPE_TIME)) {\n                    couponUser.setStartTime(coupon.getStartTime());\n                    couponUser.setEndTime(coupon.getEndTime());\n                }\n                else{\n                    LocalDateTime now = LocalDateTime.now();\n                    couponUser.setStartTime(now);\n                    couponUser.setEndTime(now.plusDays(coupon.getDays()));\n                }\n                couponUserService.add(couponUser);\n\n                limit--;\n            }\n        }\n\n    }\n\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/CouponVerifyService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.domain.LitemallCart;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.*;\n\n@Service\npublic class CouponVerifyService {\n\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n\n    /**\n     * 检测优惠券是否适合\n     *\n     * @param userId\n     * @param couponId\n     * @param checkedGoodsPrice\n     * @return\n     */\n    public LitemallCoupon checkCoupon(Integer userId, Integer couponId, Integer userCouponId, BigDecimal checkedGoodsPrice, List<LitemallCart> cartList) {\n        LitemallCoupon coupon = couponService.findById(couponId);\n        if (coupon == null || coupon.getDeleted()) {\n            return null;\n        }\n\n        LitemallCouponUser couponUser = couponUserService.findById(userCouponId);\n        if (couponUser == null) {\n            couponUser = couponUserService.queryOne(userId, couponId);\n        } else if (!couponId.equals(couponUser.getCouponId())) {\n            return null;\n        }\n\n        if (couponUser == null) {\n            return null;\n        }\n\n        // 检查是否超期\n        Short timeType = coupon.getTimeType();\n        Short days = coupon.getDays();\n        LocalDateTime now = LocalDateTime.now();\n        if (timeType.equals(CouponConstant.TIME_TYPE_TIME)) {\n            if (now.isBefore(coupon.getStartTime()) || now.isAfter(coupon.getEndTime())) {\n                return null;\n            }\n        }\n        else if(timeType.equals(CouponConstant.TIME_TYPE_DAYS)) {\n            LocalDateTime expired = couponUser.getAddTime().plusDays(days);\n            if (now.isAfter(expired)) {\n                return null;\n            }\n        }\n        else {\n            return null;\n        }\n\n        // 检测商品是否符合\n        Map<Integer, List<LitemallCart>> cartMap = new HashMap<>();\n        //可使用优惠券的商品或分类\n        List<Integer> goodsValueList = new ArrayList<>(Arrays.asList(coupon.getGoodsValue()));\n        Short goodType = coupon.getGoodsType();\n\n        if (goodType.equals(CouponConstant.GOODS_TYPE_CATEGORY) ||\n                goodType.equals((CouponConstant.GOODS_TYPE_ARRAY))) {\n            for (LitemallCart cart : cartList) {\n                Integer key = goodType.equals(CouponConstant.GOODS_TYPE_ARRAY) ? cart.getGoodsId() :\n                        goodsService.findById(cart.getGoodsId()).getCategoryId();\n                List<LitemallCart> carts = cartMap.get(key);\n                if (carts == null) {\n                    carts = new LinkedList<>();\n                }\n                carts.add(cart);\n                cartMap.put(key, carts);\n            }\n            //购物车中可以使用优惠券的商品或分类\n            goodsValueList.retainAll(cartMap.keySet());\n            //可使用优惠券的商品的总价格\n            BigDecimal total = new BigDecimal(0);\n\n            for (Integer goodsId : goodsValueList) {\n                List<LitemallCart> carts = cartMap.get(goodsId);\n                for (LitemallCart cart : carts) {\n                    total = total.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));\n                }\n            }\n            //是否达到优惠券满减金额\n            if (goodsValueList.isEmpty() || total.compareTo(coupon.getMin()) == -1) {\n                return null;\n            }\n        }\n\n        // 检测订单状态\n        Short status = coupon.getStatus();\n        if (!status.equals(CouponConstant.STATUS_NORMAL)) {\n            return null;\n        }\n        // 检测是否满足最低消费\n        if (checkedGoodsPrice.compareTo(coupon.getMin()) == -1) {\n            return null;\n        }\n\n        return coupon;\n    }\n\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAdService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallAdMapper;\nimport org.linlinjava.litemall.db.domain.LitemallAd;\nimport org.linlinjava.litemall.db.domain.LitemallAdExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallAdService {\n    @Resource\n    private LitemallAdMapper adMapper;\n\n    public List<LitemallAd> queryIndex() {\n        LitemallAdExample example = new LitemallAdExample();\n        example.or().andPositionEqualTo((byte) 1).andDeletedEqualTo(false).andEnabledEqualTo(true);\n        return adMapper.selectByExample(example);\n    }\n\n    public List<LitemallAd> querySelective(String name, String content, Integer page, Integer limit, String sort, String order) {\n        LitemallAdExample example = new LitemallAdExample();\n        LitemallAdExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        if (!StringUtils.isEmpty(content)) {\n            criteria.andContentLike(\"%\" + content + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return adMapper.selectByExample(example);\n    }\n\n    public int updateById(LitemallAd ad) {\n        ad.setUpdateTime(LocalDateTime.now());\n        return adMapper.updateByPrimaryKeySelective(ad);\n    }\n\n    public void deleteById(Integer id) {\n        adMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallAd ad) {\n        ad.setAddTime(LocalDateTime.now());\n        ad.setUpdateTime(LocalDateTime.now());\n        adMapper.insertSelective(ad);\n    }\n\n    public LitemallAd findById(Integer id) {\n        return adMapper.selectByPrimaryKey(id);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAddressService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallAddressMapper;\nimport org.linlinjava.litemall.db.domain.LitemallAddress;\nimport org.linlinjava.litemall.db.domain.LitemallAddressExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallAddressService {\n    @Resource\n    private LitemallAddressMapper addressMapper;\n\n    public List<LitemallAddress> queryByUid(Integer uid) {\n        LitemallAddressExample example = new LitemallAddressExample();\n        example.or().andUserIdEqualTo(uid).andDeletedEqualTo(false);\n        return addressMapper.selectByExample(example);\n    }\n\n    public LitemallAddress query(Integer userId, Integer id) {\n        LitemallAddressExample example = new LitemallAddressExample();\n        example.or().andIdEqualTo(id).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return addressMapper.selectOneByExample(example);\n    }\n\n    public int add(LitemallAddress address) {\n        address.setAddTime(LocalDateTime.now());\n        address.setUpdateTime(LocalDateTime.now());\n        return addressMapper.insertSelective(address);\n    }\n\n    public int update(LitemallAddress address) {\n        address.setUpdateTime(LocalDateTime.now());\n        return addressMapper.updateByPrimaryKeySelective(address);\n    }\n\n    public void delete(Integer id) {\n        addressMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public LitemallAddress findDefault(Integer userId) {\n        LitemallAddressExample example = new LitemallAddressExample();\n        example.or().andUserIdEqualTo(userId).andIsDefaultEqualTo(true).andDeletedEqualTo(false);\n        return addressMapper.selectOneByExample(example);\n    }\n\n    public void resetDefault(Integer userId) {\n        LitemallAddress address = new LitemallAddress();\n        address.setIsDefault(false);\n        address.setUpdateTime(LocalDateTime.now());\n        LitemallAddressExample example = new LitemallAddressExample();\n        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        addressMapper.updateByExampleSelective(address, example);\n    }\n\n    public List<LitemallAddress> querySelective(Integer userId, String name, Integer page, Integer limit, String sort, String order) {\n        LitemallAddressExample example = new LitemallAddressExample();\n        LitemallAddressExample.Criteria criteria = example.createCriteria();\n\n        if (userId != null) {\n            criteria.andUserIdEqualTo(userId);\n        }\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return addressMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAdminService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallAdminMapper;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallAdmin.Column;\nimport org.linlinjava.litemall.db.domain.LitemallAdminExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallAdminService {\n    private final Column[] result = new Column[]{Column.id, Column.username, Column.avatar, Column.roleIds};\n    @Resource\n    private LitemallAdminMapper adminMapper;\n\n    public List<LitemallAdmin> findAdmin(String username) {\n        LitemallAdminExample example = new LitemallAdminExample();\n        example.or().andUsernameEqualTo(username).andDeletedEqualTo(false);\n        return adminMapper.selectByExample(example);\n    }\n\n    public LitemallAdmin findAdmin(Integer id) {\n        return adminMapper.selectByPrimaryKey(id);\n    }\n\n    public List<LitemallAdmin> querySelective(String username, Integer page, Integer limit, String sort, String order) {\n        LitemallAdminExample example = new LitemallAdminExample();\n        LitemallAdminExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(username)) {\n            criteria.andUsernameLike(\"%\" + username + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return adminMapper.selectByExampleSelective(example, result);\n    }\n\n    public int updateById(LitemallAdmin admin) {\n        admin.setUpdateTime(LocalDateTime.now());\n        return adminMapper.updateByPrimaryKeySelective(admin);\n    }\n\n    public void deleteById(Integer id) {\n        adminMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallAdmin admin) {\n        admin.setAddTime(LocalDateTime.now());\n        admin.setUpdateTime(LocalDateTime.now());\n        adminMapper.insertSelective(admin);\n    }\n\n    public LitemallAdmin findById(Integer id) {\n        return adminMapper.selectByPrimaryKeySelective(id, result);\n    }\n\n    public List<LitemallAdmin> all() {\n        LitemallAdminExample example = new LitemallAdminExample();\n        example.or().andDeletedEqualTo(false);\n        return adminMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallAftersaleService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallAftersaleMapper;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.util.AftersaleConstant;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.util.List;\nimport java.util.Random;\n\n@Service\npublic class LitemallAftersaleService {\n    @Resource\n    private LitemallAftersaleMapper aftersaleMapper;\n\n    public LitemallAftersale findById(Integer id) {\n        return aftersaleMapper.selectByPrimaryKey(id);\n    }\n\n    public LitemallAftersale findById(Integer userId, Integer id) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        example.or().andIdEqualTo(id).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return aftersaleMapper.selectOneByExample(example);\n    }\n\n    public List<LitemallAftersale> queryList(Integer userId, Short status, Integer page, Integer limit, String sort, String order) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        LitemallAftersaleExample.Criteria criteria = example.or();\n        criteria.andUserIdEqualTo(userId);\n        if (status != null) {\n            criteria.andStatusEqualTo(status);\n        }\n        criteria.andDeletedEqualTo(false);\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n        else{\n            example.setOrderByClause(LitemallAftersale.Column.addTime.desc());\n        }\n\n        PageHelper.startPage(page, limit);\n        return aftersaleMapper.selectByExample(example);\n    }\n\n    public List<LitemallAftersale> querySelective(Integer orderId, String aftersaleSn, Short status, Integer page, Integer limit, String sort, String order) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        LitemallAftersaleExample.Criteria criteria = example.or();\n        if (orderId != null) {\n            criteria.andOrderIdEqualTo(orderId);\n        }\n        if (!StringUtils.isEmpty(aftersaleSn)) {\n            criteria.andAftersaleSnEqualTo(aftersaleSn);\n        }\n        if (status != null) {\n            criteria.andStatusEqualTo(status);\n        }\n        criteria.andDeletedEqualTo(false);\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n        else{\n            example.setOrderByClause(LitemallAftersale.Column.addTime.desc());\n        }\n\n        PageHelper.startPage(page, limit);\n        return aftersaleMapper.selectByExample(example);\n    }\n\n    private String getRandomNum(Integer num) {\n        String base = \"0123456789\";\n        Random random = new Random();\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < num; i++) {\n            int number = random.nextInt(base.length());\n            sb.append(base.charAt(number));\n        }\n        return sb.toString();\n    }\n\n    public int countByAftersaleSn(Integer userId, String aftersaleSn) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        example.or().andUserIdEqualTo(userId).andAftersaleSnEqualTo(aftersaleSn).andDeletedEqualTo(false);\n        return (int) aftersaleMapper.countByExample(example);\n    }\n\n    // TODO 这里应该产生一个唯一的编号，但是实际上这里仍然存在两个售后编号相同的可能性\n    public String generateAftersaleSn(Integer userId) {\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyyMMdd\");\n        String now = df.format(LocalDate.now());\n        String aftersaleSn = now + getRandomNum(6);\n        while (countByAftersaleSn(userId, aftersaleSn) != 0) {\n            aftersaleSn = now + getRandomNum(6);\n        }\n        return aftersaleSn;\n    }\n\n    public void add(LitemallAftersale aftersale) {\n        aftersale.setAddTime(LocalDateTime.now());\n        aftersale.setUpdateTime(LocalDateTime.now());\n        aftersaleMapper.insertSelective(aftersale);\n    }\n\n    public void deleteByIds(List<Integer> ids) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        example.or().andIdIn(ids).andDeletedEqualTo(false);\n        LitemallAftersale aftersale = new LitemallAftersale();\n        aftersale.setUpdateTime(LocalDateTime.now());\n        aftersale.setDeleted(true);\n        aftersaleMapper.updateByExampleSelective(aftersale, example);\n    }\n\n    public void deleteById(Integer id) {\n        aftersaleMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void deleteByOrderId(Integer userId, Integer orderId) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        example.or().andOrderIdEqualTo(orderId).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        LitemallAftersale aftersale = new LitemallAftersale();\n        aftersale.setUpdateTime(LocalDateTime.now());\n        aftersale.setDeleted(true);\n        aftersaleMapper.updateByExampleSelective(aftersale, example);\n    }\n\n    public void updateById(LitemallAftersale aftersale) {\n        aftersale.setUpdateTime(LocalDateTime.now());\n        aftersaleMapper.updateByPrimaryKeySelective(aftersale);\n    }\n\n    public LitemallAftersale findByOrderId(Integer userId, Integer orderId) {\n        LitemallAftersaleExample example = new LitemallAftersaleExample();\n        example.or().andOrderIdEqualTo(orderId).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return aftersaleMapper.selectOneByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallBrandService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallBrandMapper;\nimport org.linlinjava.litemall.db.domain.LitemallBrand;\nimport org.linlinjava.litemall.db.domain.LitemallBrand.Column;\nimport org.linlinjava.litemall.db.domain.LitemallBrandExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallBrandService {\n    @Resource\n    private LitemallBrandMapper brandMapper;\n    private Column[] columns = new Column[]{Column.id, Column.name, Column.desc, Column.picUrl, Column.floorPrice};\n\n    public List<LitemallBrand> query(Integer page, Integer limit, String sort, String order) {\n        LitemallBrandExample example = new LitemallBrandExample();\n        example.or().andDeletedEqualTo(false);\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n        PageHelper.startPage(page, limit);\n        return brandMapper.selectByExampleSelective(example, columns);\n    }\n\n    public List<LitemallBrand> query(Integer page, Integer limit) {\n        return query(page, limit, null, null);\n    }\n\n    public LitemallBrand findById(Integer id) {\n        return brandMapper.selectByPrimaryKey(id);\n    }\n\n    public List<LitemallBrand> querySelective(String id, String name, Integer page, Integer size, String sort, String order) {\n        LitemallBrandExample example = new LitemallBrandExample();\n        LitemallBrandExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(id)) {\n            criteria.andIdEqualTo(Integer.valueOf(id));\n        }\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return brandMapper.selectByExample(example);\n    }\n\n    public int updateById(LitemallBrand brand) {\n        brand.setUpdateTime(LocalDateTime.now());\n        return brandMapper.updateByPrimaryKeySelective(brand);\n    }\n\n    public void deleteById(Integer id) {\n        brandMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallBrand brand) {\n        brand.setAddTime(LocalDateTime.now());\n        brand.setUpdateTime(LocalDateTime.now());\n        brandMapper.insertSelective(brand);\n    }\n\n    public List<LitemallBrand> all() {\n        LitemallBrandExample example = new LitemallBrandExample();\n        example.or().andDeletedEqualTo(false);\n        return brandMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCartService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCartMapper;\nimport org.linlinjava.litemall.db.domain.LitemallCart;\nimport org.linlinjava.litemall.db.domain.LitemallCartExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallCartService {\n    @Resource\n    private LitemallCartMapper cartMapper;\n\n    public LitemallCart queryExist(Integer goodsId, Integer productId, Integer userId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andGoodsIdEqualTo(goodsId).andProductIdEqualTo(productId).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return cartMapper.selectOneByExample(example);\n    }\n\n    public void add(LitemallCart cart) {\n        cart.setAddTime(LocalDateTime.now());\n        cart.setUpdateTime(LocalDateTime.now());\n        cartMapper.insertSelective(cart);\n    }\n\n    public int updateById(LitemallCart cart) {\n        cart.setUpdateTime(LocalDateTime.now());\n        return cartMapper.updateByPrimaryKeySelective(cart);\n    }\n\n    public List<LitemallCart> queryByUid(int userId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return cartMapper.selectByExample(example);\n    }\n\n\n    public List<LitemallCart> queryByUidAndChecked(Integer userId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andCheckedEqualTo(true).andDeletedEqualTo(false);\n        return cartMapper.selectByExample(example);\n    }\n\n    public int delete(List<Integer> productIdList, int userId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andProductIdIn(productIdList);\n        return cartMapper.logicalDeleteByExample(example);\n    }\n\n    public LitemallCart findById(Integer id) {\n        return cartMapper.selectByPrimaryKey(id);\n    }\n\n    public LitemallCart findById(Integer userId, Integer id) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andIdEqualTo(id).andDeletedEqualTo(false);\n        return cartMapper.selectOneByExample(example);\n    }\n\n    public int updateCheck(Integer userId, List<Integer> idsList, Boolean checked) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andProductIdIn(idsList).andDeletedEqualTo(false);\n        LitemallCart cart = new LitemallCart();\n        cart.setChecked(checked);\n        cart.setUpdateTime(LocalDateTime.now());\n        return cartMapper.updateByExampleSelective(cart, example);\n    }\n\n    public void clearGoods(Integer userId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andUserIdEqualTo(userId).andCheckedEqualTo(true);\n        LitemallCart cart = new LitemallCart();\n        cart.setDeleted(true);\n        cartMapper.updateByExampleSelective(cart, example);\n    }\n\n    public List<LitemallCart> querySelective(Integer userId, Integer goodsId, Integer page, Integer limit, String sort, String order) {\n        LitemallCartExample example = new LitemallCartExample();\n        LitemallCartExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(userId)) {\n            criteria.andUserIdEqualTo(userId);\n        }\n        if (!StringUtils.isEmpty(goodsId)) {\n            criteria.andGoodsIdEqualTo(goodsId);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return cartMapper.selectByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        cartMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public boolean checkExist(Integer goodsId) {\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andGoodsIdEqualTo(goodsId).andCheckedEqualTo(true).andDeletedEqualTo(false);\n        return cartMapper.countByExample(example) != 0;\n    }\n\n    public void updateProduct(Integer id, String goodsSn, String goodsName, BigDecimal price, String url) {\n        LitemallCart cart = new LitemallCart();\n        cart.setPrice(price);\n        cart.setPicUrl(url);\n        cart.setGoodsSn(goodsSn);\n        cart.setGoodsName(goodsName);\n        LitemallCartExample example = new LitemallCartExample();\n        example.or().andProductIdEqualTo(id);\n        cartMapper.updateByExampleSelective(cart, example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCategoryService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCategoryMapper;\nimport org.linlinjava.litemall.db.domain.LitemallCategory;\nimport org.linlinjava.litemall.db.domain.LitemallCategoryExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallCategoryService {\n    @Resource\n    private LitemallCategoryMapper categoryMapper;\n    private LitemallCategory.Column[] CHANNEL = {LitemallCategory.Column.id, LitemallCategory.Column.name, LitemallCategory.Column.iconUrl};\n\n    public List<LitemallCategory> queryL1WithoutRecommend(int offset, int limit) {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andLevelEqualTo(\"L1\").andNameNotEqualTo(\"推荐\").andDeletedEqualTo(false);\n        PageHelper.startPage(offset, limit);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public List<LitemallCategory> queryL1(int offset, int limit) {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andLevelEqualTo(\"L1\").andDeletedEqualTo(false);\n        PageHelper.startPage(offset, limit);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public List<LitemallCategory> queryL1() {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andLevelEqualTo(\"L1\").andDeletedEqualTo(false);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public List<LitemallCategory> queryByPid(Integer pid) {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andPidEqualTo(pid).andDeletedEqualTo(false);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public List<LitemallCategory> queryL2ByIds(List<Integer> ids) {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andIdIn(ids).andLevelEqualTo(\"L2\").andDeletedEqualTo(false);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public LitemallCategory findById(Integer id) {\n        return categoryMapper.selectByPrimaryKey(id);\n    }\n\n    public List<LitemallCategory> querySelective(String id, String name, Integer page, Integer size, String sort, String order) {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        LitemallCategoryExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(id)) {\n            criteria.andIdEqualTo(Integer.valueOf(id));\n        }\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return categoryMapper.selectByExample(example);\n    }\n\n    public int updateById(LitemallCategory category) {\n        category.setUpdateTime(LocalDateTime.now());\n        return categoryMapper.updateByPrimaryKeySelective(category);\n    }\n\n    public void deleteById(Integer id) {\n        categoryMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallCategory category) {\n        category.setAddTime(LocalDateTime.now());\n        category.setUpdateTime(LocalDateTime.now());\n        categoryMapper.insertSelective(category);\n    }\n\n    public List<LitemallCategory> queryChannel() {\n        LitemallCategoryExample example = new LitemallCategoryExample();\n        example.or().andLevelEqualTo(\"L1\").andDeletedEqualTo(false);\n        return categoryMapper.selectByExampleSelective(example, CHANNEL);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCollectService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCollectMapper;\nimport org.linlinjava.litemall.db.domain.LitemallCollect;\nimport org.linlinjava.litemall.db.domain.LitemallCollectExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallCollectService {\n    @Resource\n    private LitemallCollectMapper collectMapper;\n\n    public int count(int uid, byte type, Integer gid) {\n        LitemallCollectExample example = new LitemallCollectExample();\n        example.or().andUserIdEqualTo(uid).andTypeEqualTo(type).andValueIdEqualTo(gid).andDeletedEqualTo(false);\n        return (int) collectMapper.countByExample(example);\n    }\n\n    public List<LitemallCollect> queryByType(Integer userId, Byte type, Integer page, Integer limit, String sort, String order) {\n        LitemallCollectExample example = new LitemallCollectExample();\n        LitemallCollectExample.Criteria criteria = example.createCriteria();\n\n        if (type != null) {\n            criteria.andTypeEqualTo(type);\n        }\n        criteria.andUserIdEqualTo(userId);\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return collectMapper.selectByExample(example);\n    }\n\n    public int countByType(Integer userId, Byte type) {\n        LitemallCollectExample example = new LitemallCollectExample();\n        example.or().andUserIdEqualTo(userId).andTypeEqualTo(type).andDeletedEqualTo(false);\n        return (int) collectMapper.countByExample(example);\n    }\n\n    public LitemallCollect queryByTypeAndValue(Integer userId, Byte type, Integer valueId) {\n        LitemallCollectExample example = new LitemallCollectExample();\n        example.or().andUserIdEqualTo(userId).andValueIdEqualTo(valueId).andTypeEqualTo(type).andDeletedEqualTo(false);\n        return collectMapper.selectOneByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        collectMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public int add(LitemallCollect collect) {\n        collect.setAddTime(LocalDateTime.now());\n        collect.setUpdateTime(LocalDateTime.now());\n        return collectMapper.insertSelective(collect);\n    }\n\n    public List<LitemallCollect> querySelective(String userId, String valueId, Integer page, Integer size, String sort, String order) {\n        LitemallCollectExample example = new LitemallCollectExample();\n        LitemallCollectExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(userId)) {\n            criteria.andUserIdEqualTo(Integer.valueOf(userId));\n        }\n        if (!StringUtils.isEmpty(valueId)) {\n            criteria.andValueIdEqualTo(Integer.valueOf(valueId));\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return collectMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCommentService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCommentMapper;\nimport org.linlinjava.litemall.db.domain.LitemallComment;\nimport org.linlinjava.litemall.db.domain.LitemallCommentExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallCommentService {\n    @Resource\n    private LitemallCommentMapper commentMapper;\n\n    public List<LitemallComment> queryGoodsByGid(Integer id, int offset, int limit) {\n        LitemallCommentExample example = new LitemallCommentExample();\n        example.setOrderByClause(LitemallComment.Column.addTime.desc());\n        example.or().andValueIdEqualTo(id).andTypeEqualTo((byte) 0).andDeletedEqualTo(false);\n        PageHelper.startPage(offset, limit);\n        return commentMapper.selectByExample(example);\n    }\n\n    public List<LitemallComment> query(Byte type, Integer valueId, Integer showType, Integer offset, Integer limit) {\n        LitemallCommentExample example = new LitemallCommentExample();\n        example.setOrderByClause(LitemallComment.Column.addTime.desc());\n        if (showType == 0) {\n            example.or().andValueIdEqualTo(valueId).andTypeEqualTo(type).andDeletedEqualTo(false);\n        } else if (showType == 1) {\n            example.or().andValueIdEqualTo(valueId).andTypeEqualTo(type).andHasPictureEqualTo(true).andDeletedEqualTo(false);\n        } else {\n            throw new RuntimeException(\"showType不支持\");\n        }\n        PageHelper.startPage(offset, limit);\n        return commentMapper.selectByExample(example);\n    }\n\n    public int count(Byte type, Integer valueId, Integer showType) {\n        LitemallCommentExample example = new LitemallCommentExample();\n        if (showType == 0) {\n            example.or().andValueIdEqualTo(valueId).andTypeEqualTo(type).andDeletedEqualTo(false);\n        } else if (showType == 1) {\n            example.or().andValueIdEqualTo(valueId).andTypeEqualTo(type).andHasPictureEqualTo(true).andDeletedEqualTo(false);\n        } else {\n            throw new RuntimeException(\"showType不支持\");\n        }\n        return (int) commentMapper.countByExample(example);\n    }\n\n    public int save(LitemallComment comment) {\n        comment.setAddTime(LocalDateTime.now());\n        comment.setUpdateTime(LocalDateTime.now());\n        return commentMapper.insertSelective(comment);\n    }\n\n    public List<LitemallComment> querySelective(String userId, String valueId, Integer page, Integer size, String sort, String order) {\n        LitemallCommentExample example = new LitemallCommentExample();\n        LitemallCommentExample.Criteria criteria = example.createCriteria();\n\n        // type=2 是订单商品回复，这里过滤\n        criteria.andTypeNotEqualTo((byte) 2);\n\n        if (!StringUtils.isEmpty(userId)) {\n            criteria.andUserIdEqualTo(Integer.valueOf(userId));\n        }\n        if (!StringUtils.isEmpty(valueId)) {\n            criteria.andValueIdEqualTo(Integer.valueOf(valueId)).andTypeEqualTo((byte) 0);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return commentMapper.selectByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        commentMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public LitemallComment findById(Integer id) {\n        return commentMapper.selectByPrimaryKey(id);\n    }\n\n    public int updateById(LitemallComment comment) {\n        return commentMapper.updateByPrimaryKeySelective(comment);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCouponService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.alibaba.druid.util.StringUtils;\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCouponMapper;\nimport org.linlinjava.litemall.db.dao.LitemallCouponUserMapper;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon.Column;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\nimport java.util.Random;\nimport java.util.stream.Collectors;\n\n@Service\npublic class LitemallCouponService {\n    @Resource\n    private LitemallCouponMapper couponMapper;\n    @Resource\n    private LitemallCouponUserMapper couponUserMapper;\n\n    private Column[] result = new Column[]{Column.id, Column.name, Column.desc, Column.tag,\n                                            Column.days, Column.startTime, Column.endTime,\n                                            Column.discount, Column.min};\n\n    /**\n     * 查询，空参数\n     *\n     * @param offset\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    public List<LitemallCoupon> queryList(int offset, int limit, String sort, String order) {\n        return queryList(LitemallCouponExample.newAndCreateCriteria(), offset, limit, sort, order);\n    }\n\n    /**\n     * 查询\n     *\n     * @param criteria 可扩展的条件\n     * @param offset\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    public List<LitemallCoupon> queryList(LitemallCouponExample.Criteria criteria, int offset, int limit, String sort, String order) {\n        criteria.andTypeEqualTo(CouponConstant.TYPE_COMMON).andStatusEqualTo(CouponConstant.STATUS_NORMAL).andDeletedEqualTo(false);\n        criteria.example().setOrderByClause(sort + \" \" + order);\n        PageHelper.startPage(offset, limit);\n        return couponMapper.selectByExampleSelective(criteria.example(), result);\n    }\n\n    public List<LitemallCoupon> queryAvailableList(Integer userId, int offset, int limit) {\n        assert userId != null;\n        // 过滤掉登录账号已经领取过的coupon\n        LitemallCouponExample.Criteria c = LitemallCouponExample.newAndCreateCriteria();\n        List<LitemallCouponUser> used = couponUserMapper.selectByExample(\n                LitemallCouponUserExample.newAndCreateCriteria().andUserIdEqualTo(userId).example()\n        );\n        if(used!=null && !used.isEmpty()){\n            c.andIdNotIn(used.stream().map(LitemallCouponUser::getCouponId).collect(Collectors.toList()));\n        }\n        return queryList(c, offset, limit, \"add_time\", \"desc\");\n    }\n\n    public List<LitemallCoupon> queryList(int offset, int limit) {\n        return queryList(offset, limit, \"add_time\", \"desc\");\n    }\n\n    public LitemallCoupon findById(Integer id) {\n        return couponMapper.selectByPrimaryKey(id);\n    }\n\n\n    public LitemallCoupon findByCode(String code) {\n        LitemallCouponExample example = new LitemallCouponExample();\n        example.or().andCodeEqualTo(code).andTypeEqualTo(CouponConstant.TYPE_CODE).andStatusEqualTo(CouponConstant.STATUS_NORMAL).andDeletedEqualTo(false);\n        List<LitemallCoupon> couponList =  couponMapper.selectByExample(example);\n        if(couponList.size() > 1){\n            throw new RuntimeException(\"\");\n        }\n        else if(couponList.size() == 0){\n            return null;\n        }\n        else {\n            return couponList.get(0);\n        }\n    }\n\n    /**\n     * 查询新用户注册优惠券\n     *\n     * @return\n     */\n    public List<LitemallCoupon> queryRegister() {\n        LitemallCouponExample example = new LitemallCouponExample();\n        example.or().andTypeEqualTo(CouponConstant.TYPE_REGISTER).andStatusEqualTo(CouponConstant.STATUS_NORMAL).andDeletedEqualTo(false);\n        return couponMapper.selectByExample(example);\n    }\n\n    public List<LitemallCoupon> querySelective(String name, Short type, Short status, Integer page, Integer limit, String sort, String order) {\n        LitemallCouponExample example = new LitemallCouponExample();\n        LitemallCouponExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        if (type != null) {\n            criteria.andTypeEqualTo(type);\n        }\n        if (status != null) {\n            criteria.andStatusEqualTo(status);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return couponMapper.selectByExample(example);\n    }\n\n    public void add(LitemallCoupon coupon) {\n        coupon.setAddTime(LocalDateTime.now());\n        coupon.setUpdateTime(LocalDateTime.now());\n        couponMapper.insertSelective(coupon);\n    }\n\n    public int updateById(LitemallCoupon coupon) {\n        coupon.setUpdateTime(LocalDateTime.now());\n        return couponMapper.updateByPrimaryKeySelective(coupon);\n    }\n\n    public void deleteById(Integer id) {\n        couponMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    private String getRandomNum(Integer num) {\n        String base = \"ABCDEFGHIJKLMNOPQRSTUVWXYZ\";\n        base += \"0123456789\";\n\n        Random random = new Random();\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < num; i++) {\n            int number = random.nextInt(base.length());\n            sb.append(base.charAt(number));\n        }\n        return sb.toString();\n    }\n\n    /**\n     * 生成优惠码\n     *\n     * @return 可使用优惠码\n     */\n    public String generateCode() {\n        String code = getRandomNum(8);\n        while(findByCode(code) != null){\n            code = getRandomNum(8);\n        }\n        return code;\n    }\n\n    /**\n     * 查询过期的优惠券:\n     * 注意：如果timeType=0, 即基于领取时间有效期的优惠券，则优惠券不会过期\n     *\n     * @return\n     */\n    public List<LitemallCoupon> queryExpired() {\n        LitemallCouponExample example = new LitemallCouponExample();\n        example.or().andStatusEqualTo(CouponConstant.STATUS_NORMAL).andTimeTypeEqualTo(CouponConstant.TIME_TYPE_TIME).andEndTimeLessThan(LocalDateTime.now()).andDeletedEqualTo(false);\n        return couponMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallCouponUserService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallCouponUserMapper;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUserExample;\nimport org.linlinjava.litemall.db.util.CouponUserConstant;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallCouponUserService {\n    @Resource\n    private LitemallCouponUserMapper couponUserMapper;\n\n    public Integer countCoupon(Integer couponId) {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        example.or().andCouponIdEqualTo(couponId).andDeletedEqualTo(false);\n        return (int)couponUserMapper.countByExample(example);\n    }\n\n    public Integer countUserAndCoupon(Integer userId, Integer couponId) {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        example.or().andUserIdEqualTo(userId).andCouponIdEqualTo(couponId).andDeletedEqualTo(false);\n        return (int)couponUserMapper.countByExample(example);\n    }\n\n    public void add(LitemallCouponUser couponUser) {\n        couponUser.setAddTime(LocalDateTime.now());\n        couponUser.setUpdateTime(LocalDateTime.now());\n        couponUserMapper.insertSelective(couponUser);\n    }\n\n    public List<LitemallCouponUser> queryList(Integer userId, Integer couponId, Short status, Integer page, Integer size, String sort, String order) {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        LitemallCouponUserExample.Criteria criteria = example.createCriteria();\n        if (userId != null) {\n            criteria.andUserIdEqualTo(userId);\n        }\n        if(couponId != null){\n            criteria.andCouponIdEqualTo(couponId);\n        }\n        if (status != null) {\n            criteria.andStatusEqualTo(status);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        if (!StringUtils.isEmpty(page) && !StringUtils.isEmpty(size)) {\n            PageHelper.startPage(page, size);\n        }\n\n        return couponUserMapper.selectByExample(example);\n    }\n\n    public List<LitemallCouponUser> queryAll(Integer userId, Integer couponId) {\n        return queryList(userId, couponId, CouponUserConstant.STATUS_USABLE, null, null, \"add_time\", \"desc\");\n    }\n\n    public List<LitemallCouponUser> queryAll(Integer userId) {\n        return queryList(userId, null, CouponUserConstant.STATUS_USABLE, null, null, \"add_time\", \"desc\");\n    }\n\n    public LitemallCouponUser queryOne(Integer userId, Integer couponId) {\n        List<LitemallCouponUser> couponUserList = queryList(userId, couponId, CouponUserConstant.STATUS_USABLE, 1, 1, \"add_time\", \"desc\");\n        if(couponUserList.size() == 0){\n            return null;\n        }\n        return couponUserList.get(0);\n    }\n\n    public LitemallCouponUser findById(Integer id) {\n        return couponUserMapper.selectByPrimaryKey(id);\n    }\n\n\n    public int update(LitemallCouponUser couponUser) {\n        couponUser.setUpdateTime(LocalDateTime.now());\n        return couponUserMapper.updateByPrimaryKeySelective(couponUser);\n    }\n\n    public List<LitemallCouponUser> queryExpired() {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        example.or().andStatusEqualTo(CouponUserConstant.STATUS_USABLE).andEndTimeLessThan(LocalDateTime.now()).andDeletedEqualTo(false);\n        return couponUserMapper.selectByExample(example);\n    }\n\n    public List<LitemallCouponUser> findByOid(Integer orderId) {\n        LitemallCouponUserExample example = new LitemallCouponUserExample();\n        example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);\n        return couponUserMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallFeedbackService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallFeedbackMapper;\nimport org.linlinjava.litemall.db.domain.LitemallFeedback;\nimport org.linlinjava.litemall.db.domain.LitemallFeedbackExample;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n/**\n * @author Yogeek\n * @date 2018/8/27 11:39\n */\n@Service\npublic class LitemallFeedbackService {\n    @Autowired\n    private LitemallFeedbackMapper feedbackMapper;\n\n    public Integer add(LitemallFeedback feedback) {\n        feedback.setAddTime(LocalDateTime.now());\n        feedback.setUpdateTime(LocalDateTime.now());\n        return feedbackMapper.insertSelective(feedback);\n    }\n\n    public List<LitemallFeedback> querySelective(Integer userId, String username, Integer page, Integer limit, String sort, String order) {\n        LitemallFeedbackExample example = new LitemallFeedbackExample();\n        LitemallFeedbackExample.Criteria criteria = example.createCriteria();\n\n        if (userId != null) {\n            criteria.andUserIdEqualTo(userId);\n        }\n        if (!StringUtils.isEmpty(username)) {\n            criteria.andUsernameLike(\"%\" + username + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return feedbackMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallFootprintService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallFootprintMapper;\nimport org.linlinjava.litemall.db.domain.LitemallFootprint;\nimport org.linlinjava.litemall.db.domain.LitemallFootprintExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallFootprintService {\n    @Resource\n    private LitemallFootprintMapper footprintMapper;\n\n    public List<LitemallFootprint> queryByAddTime(Integer userId, Integer page, Integer size) {\n        LitemallFootprintExample example = new LitemallFootprintExample();\n        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        example.setOrderByClause(LitemallFootprint.Column.addTime.desc());\n        PageHelper.startPage(page, size);\n        return footprintMapper.selectByExample(example);\n    }\n\n    public LitemallFootprint findById(Integer id) {\n        return footprintMapper.selectByPrimaryKey(id);\n    }\n\n    public LitemallFootprint findById(Integer userId, Integer id) {\n        LitemallFootprintExample example = new LitemallFootprintExample();\n        example.or().andIdEqualTo(id).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return footprintMapper.selectOneByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        footprintMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallFootprint footprint) {\n        footprint.setAddTime(LocalDateTime.now());\n        footprint.setUpdateTime(LocalDateTime.now());\n        footprintMapper.insertSelective(footprint);\n    }\n\n    public List<LitemallFootprint> querySelective(String userId, String goodsId, Integer page, Integer size, String sort, String order) {\n        LitemallFootprintExample example = new LitemallFootprintExample();\n        LitemallFootprintExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(userId)) {\n            criteria.andUserIdEqualTo(Integer.valueOf(userId));\n        }\n        if (!StringUtils.isEmpty(goodsId)) {\n            criteria.andGoodsIdEqualTo(Integer.valueOf(goodsId));\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return footprintMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGoodsAttributeService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.LitemallGoodsAttributeMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsAttribute;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallGoodsAttributeService {\n    @Resource\n    private LitemallGoodsAttributeMapper goodsAttributeMapper;\n\n    public List<LitemallGoodsAttribute> queryByGid(Integer goodsId) {\n        LitemallGoodsAttributeExample example = new LitemallGoodsAttributeExample();\n        example.or().andGoodsIdEqualTo(goodsId).andDeletedEqualTo(false);\n        return goodsAttributeMapper.selectByExample(example);\n    }\n\n    public void add(LitemallGoodsAttribute goodsAttribute) {\n        goodsAttribute.setAddTime(LocalDateTime.now());\n        goodsAttribute.setUpdateTime(LocalDateTime.now());\n        goodsAttributeMapper.insertSelective(goodsAttribute);\n    }\n\n    public LitemallGoodsAttribute findById(Integer id) {\n        return goodsAttributeMapper.selectByPrimaryKey(id);\n    }\n\n    public void deleteByGid(Integer gid) {\n        LitemallGoodsAttributeExample example = new LitemallGoodsAttributeExample();\n        example.or().andGoodsIdEqualTo(gid);\n        goodsAttributeMapper.logicalDeleteByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        goodsAttributeMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void updateById(LitemallGoodsAttribute attribute) {\n        attribute.setUpdateTime(LocalDateTime.now());\n        goodsAttributeMapper.updateByPrimaryKeySelective(attribute);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGoodsProductService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.apache.ibatis.annotations.Param;\nimport org.linlinjava.litemall.db.dao.GoodsProductMapper;\nimport org.linlinjava.litemall.db.dao.LitemallGoodsProductMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProduct;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsProductExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallGoodsProductService {\n    @Resource\n    private LitemallGoodsProductMapper litemallGoodsProductMapper;\n    @Resource\n    private GoodsProductMapper goodsProductMapper;\n\n    public List<LitemallGoodsProduct> queryByGid(Integer gid) {\n        LitemallGoodsProductExample example = new LitemallGoodsProductExample();\n        example.or().andGoodsIdEqualTo(gid).andDeletedEqualTo(false);\n        return litemallGoodsProductMapper.selectByExample(example);\n    }\n\n    public LitemallGoodsProduct findById(Integer id) {\n        return litemallGoodsProductMapper.selectByPrimaryKey(id);\n    }\n\n    public void deleteById(Integer id) {\n        litemallGoodsProductMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallGoodsProduct goodsProduct) {\n        goodsProduct.setAddTime(LocalDateTime.now());\n        goodsProduct.setUpdateTime(LocalDateTime.now());\n        litemallGoodsProductMapper.insertSelective(goodsProduct);\n    }\n\n    public int count() {\n        LitemallGoodsProductExample example = new LitemallGoodsProductExample();\n        example.or().andDeletedEqualTo(false);\n        return (int) litemallGoodsProductMapper.countByExample(example);\n    }\n\n    public void deleteByGid(Integer gid) {\n        LitemallGoodsProductExample example = new LitemallGoodsProductExample();\n        example.or().andGoodsIdEqualTo(gid);\n        litemallGoodsProductMapper.logicalDeleteByExample(example);\n    }\n\n    public int addStock(Integer id, Short num){\n        return goodsProductMapper.addStock(id, num);\n    }\n\n    public int reduceStock(Integer id, Short num){\n        return goodsProductMapper.reduceStock(id, num);\n    }\n\n    public void updateById(LitemallGoodsProduct product) {\n        product.setUpdateTime(LocalDateTime.now());\n        litemallGoodsProductMapper.updateByPrimaryKeySelective(product);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGoodsService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallGoodsMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGoods.Column;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.Arrays;\nimport java.util.List;\n\n@Service\npublic class LitemallGoodsService {\n    Column[] columns = new Column[]{Column.id, Column.name, Column.brief, Column.picUrl, Column.isHot, Column.isNew, Column.counterPrice, Column.retailPrice};\n    @Resource\n    private LitemallGoodsMapper goodsMapper;\n\n    /**\n     * 获取热卖商品\n     *\n     * @param offset\n     * @param limit\n     * @return\n     */\n    public List<LitemallGoods> queryByHot(int offset, int limit) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIsHotEqualTo(true).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        example.setOrderByClause(\"add_time desc\");\n        PageHelper.startPage(offset, limit);\n\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n\n    /**\n     * 获取新品上市\n     *\n     * @param offset\n     * @param limit\n     * @return\n     */\n    public List<LitemallGoods> queryByNew(int offset, int limit) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIsNewEqualTo(true).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        example.setOrderByClause(\"add_time desc\");\n        PageHelper.startPage(offset, limit);\n\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n\n    /**\n     * 获取分类下的商品\n     *\n     * @param catList\n     * @param offset\n     * @param limit\n     * @return\n     */\n    public List<LitemallGoods> queryByCategory(List<Integer> catList, int offset, int limit) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andCategoryIdIn(catList).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        example.setOrderByClause(\"add_time  desc\");\n        PageHelper.startPage(offset, limit);\n\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n\n\n    /**\n     * 获取分类下的商品\n     *\n     * @param catId\n     * @param offset\n     * @param limit\n     * @return\n     */\n    public List<LitemallGoods> queryByCategory(Integer catId, int offset, int limit) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andCategoryIdEqualTo(catId).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        example.setOrderByClause(\"add_time desc\");\n        PageHelper.startPage(offset, limit);\n\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n\n\n    public List<LitemallGoods> querySelective(Integer catId, Integer brandId, String keywords, Boolean isHot, Boolean isNew, Integer offset, Integer limit, String sort, String order) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        LitemallGoodsExample.Criteria criteria1 = example.or();\n        LitemallGoodsExample.Criteria criteria2 = example.or();\n\n        if (!StringUtils.isEmpty(catId) && catId != 0) {\n            criteria1.andCategoryIdEqualTo(catId);\n            criteria2.andCategoryIdEqualTo(catId);\n        }\n        if (!StringUtils.isEmpty(brandId)) {\n            criteria1.andBrandIdEqualTo(brandId);\n            criteria2.andBrandIdEqualTo(brandId);\n        }\n        if (!StringUtils.isEmpty(isNew)) {\n            criteria1.andIsNewEqualTo(isNew);\n            criteria2.andIsNewEqualTo(isNew);\n        }\n        if (!StringUtils.isEmpty(isHot)) {\n            criteria1.andIsHotEqualTo(isHot);\n            criteria2.andIsHotEqualTo(isHot);\n        }\n        if (!StringUtils.isEmpty(keywords)) {\n            criteria1.andKeywordsLike(\"%\" + keywords + \"%\");\n            criteria2.andNameLike(\"%\" + keywords + \"%\");\n        }\n        criteria1.andIsOnSaleEqualTo(true);\n        criteria2.andIsOnSaleEqualTo(true);\n        criteria1.andDeletedEqualTo(false);\n        criteria2.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(offset, limit);\n\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n\n    public List<LitemallGoods> querySelective(Integer goodsId, String goodsSn, String name, Integer page, Integer size, String sort, String order) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        LitemallGoodsExample.Criteria criteria = example.createCriteria();\n\n        if (goodsId != null) {\n            criteria.andIdEqualTo(goodsId);\n        }\n        if (!StringUtils.isEmpty(goodsSn)) {\n            criteria.andGoodsSnEqualTo(goodsSn);\n        }\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return goodsMapper.selectByExampleWithBLOBs(example);\n    }\n\n    /**\n     * 获取某个商品信息,包含完整信息\n     *\n     * @param id\n     * @return\n     */\n    public LitemallGoods findById(Integer id) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIdEqualTo(id).andDeletedEqualTo(false);\n        return goodsMapper.selectOneByExampleWithBLOBs(example);\n    }\n\n    /**\n     * 获取某个商品信息，仅展示相关内容\n     *\n     * @param id\n     * @return\n     */\n    public LitemallGoods findByIdVO(Integer id) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIdEqualTo(id).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        return goodsMapper.selectOneByExampleSelective(example, columns);\n    }\n\n\n    /**\n     * 获取所有在售物品总数\n     *\n     * @return\n     */\n    public Integer queryOnSale() {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        return (int) goodsMapper.countByExample(example);\n    }\n\n    public int updateById(LitemallGoods goods) {\n        goods.setUpdateTime(LocalDateTime.now());\n        return goodsMapper.updateByPrimaryKeySelective(goods);\n    }\n\n    public void deleteById(Integer id) {\n        goodsMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallGoods goods) {\n        goods.setAddTime(LocalDateTime.now());\n        goods.setUpdateTime(LocalDateTime.now());\n        goodsMapper.insertSelective(goods);\n    }\n\n    /**\n     * 获取所有物品总数，包括在售的和下架的，但是不包括已删除的商品\n     *\n     * @return\n     */\n    public int count() {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andDeletedEqualTo(false);\n        return (int) goodsMapper.countByExample(example);\n    }\n\n    public List<Integer> getCatIds(Integer brandId, String keywords, Boolean isHot, Boolean isNew) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        LitemallGoodsExample.Criteria criteria1 = example.or();\n        LitemallGoodsExample.Criteria criteria2 = example.or();\n\n        if (!StringUtils.isEmpty(brandId)) {\n            criteria1.andBrandIdEqualTo(brandId);\n            criteria2.andBrandIdEqualTo(brandId);\n        }\n        if (!StringUtils.isEmpty(isNew)) {\n            criteria1.andIsNewEqualTo(isNew);\n            criteria2.andIsNewEqualTo(isNew);\n        }\n        if (!StringUtils.isEmpty(isHot)) {\n            criteria1.andIsHotEqualTo(isHot);\n            criteria2.andIsHotEqualTo(isHot);\n        }\n        if (!StringUtils.isEmpty(keywords)) {\n            criteria1.andKeywordsLike(\"%\" + keywords + \"%\");\n            criteria2.andNameLike(\"%\" + keywords + \"%\");\n        }\n        criteria1.andIsOnSaleEqualTo(true);\n        criteria2.andIsOnSaleEqualTo(true);\n        criteria1.andDeletedEqualTo(false);\n        criteria2.andDeletedEqualTo(false);\n\n        List<LitemallGoods> goodsList = goodsMapper.selectByExampleSelective(example, Column.categoryId);\n        List<Integer> cats = new ArrayList<Integer>();\n        for (LitemallGoods goods : goodsList) {\n            cats.add(goods.getCategoryId());\n        }\n        return cats;\n    }\n\n    public boolean checkExistByName(String name) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andNameEqualTo(name).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        return goodsMapper.countByExample(example) != 0;\n    }\n\n    public List<LitemallGoods> queryByIds(Integer[] ids) {\n        LitemallGoodsExample example = new LitemallGoodsExample();\n        example.or().andIdIn(Arrays.asList(ids)).andIsOnSaleEqualTo(true).andDeletedEqualTo(false);\n        return goodsMapper.selectByExampleSelective(example, columns);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGoodsSpecificationService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.LitemallGoodsSpecificationMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsSpecification;\nimport org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@Service\npublic class LitemallGoodsSpecificationService {\n    @Resource\n    private LitemallGoodsSpecificationMapper goodsSpecificationMapper;\n\n    public List<LitemallGoodsSpecification> queryByGid(Integer id) {\n        LitemallGoodsSpecificationExample example = new LitemallGoodsSpecificationExample();\n        example.or().andGoodsIdEqualTo(id).andDeletedEqualTo(false);\n        return goodsSpecificationMapper.selectByExample(example);\n    }\n\n    public LitemallGoodsSpecification findById(Integer id) {\n        return goodsSpecificationMapper.selectByPrimaryKey(id);\n    }\n\n    public void deleteByGid(Integer gid) {\n        LitemallGoodsSpecificationExample example = new LitemallGoodsSpecificationExample();\n        example.or().andGoodsIdEqualTo(gid);\n        goodsSpecificationMapper.logicalDeleteByExample(example);\n    }\n\n    public void add(LitemallGoodsSpecification goodsSpecification) {\n        goodsSpecification.setAddTime(LocalDateTime.now());\n        goodsSpecification.setUpdateTime(LocalDateTime.now());\n        goodsSpecificationMapper.insertSelective(goodsSpecification);\n    }\n\n    /**\n     * [\n     * {\n     * name: '',\n     * valueList: [ {}, {}]\n     * },\n     * {\n     * name: '',\n     * valueList: [ {}, {}]\n     * }\n     * ]\n     *\n     * @param id\n     * @return\n     */\n    public Object getSpecificationVoList(Integer id) {\n        List<LitemallGoodsSpecification> goodsSpecificationList = queryByGid(id);\n\n        Map<String, VO> map = new HashMap<>();\n        List<VO> specificationVoList = new ArrayList<>();\n\n        for (LitemallGoodsSpecification goodsSpecification : goodsSpecificationList) {\n            String specification = goodsSpecification.getSpecification();\n            VO goodsSpecificationVo = map.get(specification);\n            if (goodsSpecificationVo == null) {\n                goodsSpecificationVo = new VO();\n                goodsSpecificationVo.setName(specification);\n                List<LitemallGoodsSpecification> valueList = new ArrayList<>();\n                valueList.add(goodsSpecification);\n                goodsSpecificationVo.setValueList(valueList);\n                map.put(specification, goodsSpecificationVo);\n                specificationVoList.add(goodsSpecificationVo);\n            } else {\n                List<LitemallGoodsSpecification> valueList = goodsSpecificationVo.getValueList();\n                valueList.add(goodsSpecification);\n            }\n        }\n\n        return specificationVoList;\n    }\n\n    public void updateById(LitemallGoodsSpecification specification) {\n        specification.setUpdateTime(LocalDateTime.now());\n        goodsSpecificationMapper.updateByPrimaryKeySelective(specification);\n    }\n\n    private class VO {\n        private String name;\n        private List<LitemallGoodsSpecification> valueList;\n\n        public String getName() {\n            return name;\n        }\n\n        public void setName(String name) {\n            this.name = name;\n        }\n\n        public List<LitemallGoodsSpecification> getValueList() {\n            return valueList;\n        }\n\n        public void setValueList(List<LitemallGoodsSpecification> valueList) {\n            this.valueList = valueList;\n        }\n    }\n\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponRulesService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.alibaba.druid.util.StringUtils;\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallGoodsMapper;\nimport org.linlinjava.litemall.db.dao.LitemallGrouponRulesMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@Service\npublic class LitemallGrouponRulesService {\n    @Resource\n    private LitemallGrouponRulesMapper mapper;\n    @Resource\n    private LitemallGoodsMapper goodsMapper;\n    private LitemallGoods.Column[] goodsColumns = new LitemallGoods.Column[]{LitemallGoods.Column.id, LitemallGoods.Column.name, LitemallGoods.Column.brief, LitemallGoods.Column.picUrl, LitemallGoods.Column.counterPrice, LitemallGoods.Column.retailPrice};\n\n    public int createRules(LitemallGrouponRules rules) {\n        rules.setAddTime(LocalDateTime.now());\n        rules.setUpdateTime(LocalDateTime.now());\n        return mapper.insertSelective(rules);\n    }\n\n    /**\n     * 根据ID查找对应团购项\n     *\n     * @param id\n     * @return\n     */\n    public LitemallGrouponRules findById(Integer id) {\n        return mapper.selectByPrimaryKey(id);\n    }\n\n    /**\n     * 查询某个商品关联的团购规则\n     *\n     * @param goodsId\n     * @return\n     */\n    public List<LitemallGrouponRules> queryByGoodsId(Integer goodsId) {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        example.or().andGoodsIdEqualTo(goodsId).andStatusEqualTo(GrouponConstant.RULE_STATUS_ON).andDeletedEqualTo(false);\n        return mapper.selectByExample(example);\n    }\n\n    public int countByGoodsId(Integer goodsId) {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        example.or().andGoodsIdEqualTo(goodsId).andStatusEqualTo(GrouponConstant.RULE_STATUS_ON).andDeletedEqualTo(false);\n        return (int)mapper.countByExample(example);\n    }\n\n    public List<LitemallGrouponRules> queryByStatus(Short status) {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        example.or().andStatusEqualTo(status).andDeletedEqualTo(false);\n        return mapper.selectByExample(example);\n    }\n\n    /**\n     * 获取首页团购规则列表\n     *\n     * @param page\n     * @param limit\n     * @return\n     */\n    public List<LitemallGrouponRules> queryList(Integer page, Integer limit) {\n        return queryList(page, limit, \"add_time\", \"desc\");\n    }\n\n    public List<LitemallGrouponRules> queryList(Integer page, Integer limit, String sort, String order) {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        example.or().andStatusEqualTo(GrouponConstant.RULE_STATUS_ON).andDeletedEqualTo(false);\n        example.setOrderByClause(sort + \" \" + order);\n        PageHelper.startPage(page, limit);\n        return mapper.selectByExample(example);\n    }\n\n    /**\n     * 判断某个团购规则是否已经过期\n     *\n     * @return\n     */\n    public boolean isExpired(LitemallGrouponRules rules) {\n        return (rules == null || rules.getExpireTime().isBefore(LocalDateTime.now()));\n    }\n\n    /**\n     * 获取团购规则列表\n     *\n     * @param goodsId\n     * @param page\n     * @param size\n     * @param sort\n     * @param order\n     * @return\n     */\n    public List<LitemallGrouponRules> querySelective(String goodsId, Integer page, Integer size, String sort, String order) {\n        LitemallGrouponRulesExample example = new LitemallGrouponRulesExample();\n        example.setOrderByClause(sort + \" \" + order);\n\n        LitemallGrouponRulesExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(goodsId)) {\n            criteria.andGoodsIdEqualTo(Integer.parseInt(goodsId));\n        }\n        criteria.andDeletedEqualTo(false);\n\n        PageHelper.startPage(page, size);\n        return mapper.selectByExample(example);\n    }\n\n    public void delete(Integer id) {\n        mapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public int updateById(LitemallGrouponRules grouponRules) {\n        grouponRules.setUpdateTime(LocalDateTime.now());\n        return mapper.updateByPrimaryKeySelective(grouponRules);\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallGrouponService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.alibaba.druid.util.StringUtils;\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallGrouponMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponExample;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallGrouponService {\n    @Resource\n    private LitemallGrouponMapper mapper;\n\n    /**\n     * 获取用户发起的团购记录\n     *\n     * @param userId\n     * @return\n     */\n    public List<LitemallGroupon> queryMyGroupon(Integer userId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andUserIdEqualTo(userId).andCreatorUserIdEqualTo(userId).andGrouponIdEqualTo(0).andStatusNotEqualTo(GrouponConstant.STATUS_NONE).andDeletedEqualTo(false);\n        example.orderBy(\"add_time desc\");\n        return mapper.selectByExample(example);\n    }\n\n    /**\n     * 获取用户参与的团购记录\n     *\n     * @param userId\n     * @return\n     */\n    public List<LitemallGroupon> queryMyJoinGroupon(Integer userId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andUserIdEqualTo(userId).andGrouponIdNotEqualTo(0).andStatusNotEqualTo(GrouponConstant.STATUS_NONE).andDeletedEqualTo(false);\n        example.orderBy(\"add_time desc\");\n        return mapper.selectByExample(example);\n    }\n\n    /**\n     * 根据OrderId查询团购记录\n     *\n     * @param orderId\n     * @return\n     */\n    public LitemallGroupon queryByOrderId(Integer orderId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);\n        return mapper.selectOneByExample(example);\n    }\n\n    /**\n     * 获取某个团购活动参与的记录\n     *\n     * @param id\n     * @return\n     */\n    public List<LitemallGroupon> queryJoinRecord(Integer id) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andGrouponIdEqualTo(id).andStatusNotEqualTo(GrouponConstant.STATUS_NONE).andDeletedEqualTo(false);\n        example.orderBy(\"add_time desc\");\n        return mapper.selectByExample(example);\n    }\n\n    /**\n     * 根据ID查询记录\n     *\n     * @param id\n     * @return\n     */\n    public LitemallGroupon queryById(Integer id) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andIdEqualTo(id).andDeletedEqualTo(false);\n        return mapper.selectOneByExample(example);\n    }\n\n    /**\n     * 根据ID查询记录\n     *\n     * @param userId\n     * @param id\n     * @return\n     */\n    public LitemallGroupon queryById(Integer userId, Integer id) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andIdEqualTo(id).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return mapper.selectOneByExample(example);\n    }\n\n    /**\n     * 返回某个发起的团购参与人数\n     *\n     * @param grouponId\n     * @return\n     */\n    public int countGroupon(Integer grouponId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andGrouponIdEqualTo(grouponId).andStatusNotEqualTo(GrouponConstant.STATUS_NONE).andDeletedEqualTo(false);\n        return (int) mapper.countByExample(example);\n    }\n\n    public boolean hasJoin(Integer userId, Integer grouponId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andUserIdEqualTo(userId).andGrouponIdEqualTo(grouponId).andStatusNotEqualTo(GrouponConstant.STATUS_NONE).andDeletedEqualTo(false);\n        return  mapper.countByExample(example) != 0;\n    }\n\n    public int updateById(LitemallGroupon groupon) {\n        groupon.setUpdateTime(LocalDateTime.now());\n        return mapper.updateByPrimaryKeySelective(groupon);\n    }\n\n    /**\n     * 创建或参与一个团购\n     *\n     * @param groupon\n     * @return\n     */\n    public int createGroupon(LitemallGroupon groupon) {\n        groupon.setAddTime(LocalDateTime.now());\n        groupon.setUpdateTime(LocalDateTime.now());\n        return mapper.insertSelective(groupon);\n    }\n\n\n    /**\n     * 查询所有发起的团购记录\n     *\n     * @param rulesId\n     * @param page\n     * @param size\n     * @param sort\n     * @param order\n     * @return\n     */\n    public List<LitemallGroupon> querySelective(String rulesId, Integer page, Integer size, String sort, String order) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        LitemallGrouponExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(rulesId)) {\n            criteria.andRulesIdEqualTo(Integer.parseInt(rulesId));\n        }\n        criteria.andDeletedEqualTo(false);\n        criteria.andStatusNotEqualTo(GrouponConstant.STATUS_NONE);\n        criteria.andGrouponIdEqualTo(0);\n\n        PageHelper.startPage(page, size);\n        return mapper.selectByExample(example);\n    }\n\n    public List<LitemallGroupon> queryByRuleId(int grouponRuleId) {\n        LitemallGrouponExample example = new LitemallGrouponExample();\n        example.or().andRulesIdEqualTo(grouponRuleId).andDeletedEqualTo(false);\n        return mapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallIssueService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallIssueMapper;\nimport org.linlinjava.litemall.db.domain.LitemallIssue;\nimport org.linlinjava.litemall.db.domain.LitemallIssueExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallIssueService {\n    @Resource\n    private LitemallIssueMapper issueMapper;\n\n    public void deleteById(Integer id) {\n        issueMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallIssue issue) {\n        issue.setAddTime(LocalDateTime.now());\n        issue.setUpdateTime(LocalDateTime.now());\n        issueMapper.insertSelective(issue);\n    }\n\n    public List<LitemallIssue> querySelective(String question, Integer page, Integer limit, String sort, String order) {\n        LitemallIssueExample example = new LitemallIssueExample();\n        LitemallIssueExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(question)) {\n            criteria.andQuestionLike(\"%\" + question + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return issueMapper.selectByExample(example);\n    }\n\n    public int updateById(LitemallIssue issue) {\n        issue.setUpdateTime(LocalDateTime.now());\n        return issueMapper.updateByPrimaryKeySelective(issue);\n    }\n\n    public LitemallIssue findById(Integer id) {\n        return issueMapper.selectByPrimaryKey(id);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallKeywordService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallKeywordMapper;\nimport org.linlinjava.litemall.db.domain.LitemallKeyword;\nimport org.linlinjava.litemall.db.domain.LitemallKeywordExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallKeywordService {\n    @Resource\n    private LitemallKeywordMapper keywordsMapper;\n\n    public LitemallKeyword queryDefault() {\n        LitemallKeywordExample example = new LitemallKeywordExample();\n        example.or().andIsDefaultEqualTo(true).andDeletedEqualTo(false);\n        return keywordsMapper.selectOneByExample(example);\n    }\n\n    public List<LitemallKeyword> queryHots() {\n        LitemallKeywordExample example = new LitemallKeywordExample();\n        example.or().andIsHotEqualTo(true).andDeletedEqualTo(false);\n        return keywordsMapper.selectByExample(example);\n    }\n\n    public List<LitemallKeyword> queryByKeyword(String keyword, Integer page, Integer limit) {\n        LitemallKeywordExample example = new LitemallKeywordExample();\n        example.setDistinct(true);\n        example.or().andKeywordLike(\"%\" + keyword + \"%\").andDeletedEqualTo(false);\n        PageHelper.startPage(page, limit);\n        return keywordsMapper.selectByExampleSelective(example, LitemallKeyword.Column.keyword);\n    }\n\n    public List<LitemallKeyword> querySelective(String keyword, String url, Integer page, Integer limit, String sort, String order) {\n        LitemallKeywordExample example = new LitemallKeywordExample();\n        LitemallKeywordExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(keyword)) {\n            criteria.andKeywordLike(\"%\" + keyword + \"%\");\n        }\n        if (!StringUtils.isEmpty(url)) {\n            criteria.andUrlLike(\"%\" + url + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return keywordsMapper.selectByExample(example);\n    }\n\n    public void add(LitemallKeyword keywords) {\n        keywords.setAddTime(LocalDateTime.now());\n        keywords.setUpdateTime(LocalDateTime.now());\n        keywordsMapper.insertSelective(keywords);\n    }\n\n    public LitemallKeyword findById(Integer id) {\n        return keywordsMapper.selectByPrimaryKey(id);\n    }\n\n    public int updateById(LitemallKeyword keywords) {\n        keywords.setUpdateTime(LocalDateTime.now());\n        return keywordsMapper.updateByPrimaryKeySelective(keywords);\n    }\n\n    public void deleteById(Integer id) {\n        keywordsMapper.logicalDeleteByPrimaryKey(id);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallLogService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallLogMapper;\nimport org.linlinjava.litemall.db.domain.LitemallAd;\nimport org.linlinjava.litemall.db.domain.LitemallLog;\nimport org.linlinjava.litemall.db.domain.LitemallLogExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallLogService {\n    @Resource\n    private LitemallLogMapper logMapper;\n\n    public void deleteById(Integer id) {\n        logMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallLog log) {\n        log.setAddTime(LocalDateTime.now());\n        log.setUpdateTime(LocalDateTime.now());\n        logMapper.insertSelective(log);\n    }\n\n    public List<LitemallLog> querySelective(String name, Integer page, Integer size, String sort, String order) {\n        LitemallLogExample example = new LitemallLogExample();\n        LitemallLogExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andAdminLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return logMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallNoticeAdminService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallNoticeAdminMapper;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallNoticeAdminService {\n    @Resource\n    private LitemallNoticeAdminMapper noticeAdminMapper;\n\n    public List<LitemallNoticeAdmin> querySelective(String title, String type, Integer adminId, Integer page, Integer limit, String sort, String order) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        LitemallNoticeAdminExample.Criteria criteria = example.createCriteria();\n\n        if(!StringUtils.isEmpty(title)){\n            criteria.andNoticeTitleLike(\"%\" + title + \"%\");\n        }\n\n        if(type.equals(\"read\")){\n         criteria.andReadTimeIsNotNull();\n        }\n        else if(type.equals(\"unread\")){\n            criteria.andReadTimeIsNull();\n        }\n        criteria.andAdminIdEqualTo(adminId);\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return noticeAdminMapper.selectByExample(example);\n    }\n\n    public LitemallNoticeAdmin find(Integer noticeId, Integer adminId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdEqualTo(noticeId).andAdminIdEqualTo(adminId).andDeletedEqualTo(false);\n        return noticeAdminMapper.selectOneByExample(example);\n    }\n\n    public void add(LitemallNoticeAdmin noticeAdmin) {\n        noticeAdmin.setAddTime(LocalDateTime.now());\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdminMapper.insertSelective(noticeAdmin);\n    }\n\n    public void update(LitemallNoticeAdmin noticeAdmin) {\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdminMapper.updateByPrimaryKeySelective(noticeAdmin);\n    }\n\n    public void markReadByIds(List<Integer> ids, Integer adminId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andIdIn(ids).andAdminIdEqualTo(adminId).andDeletedEqualTo(false);\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        LocalDateTime now = LocalDateTime.now();\n        noticeAdmin.setReadTime(now);\n        noticeAdmin.setUpdateTime(now);\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n\n    public void deleteById(Integer id, Integer adminId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andIdEqualTo(id).andAdminIdEqualTo(adminId).andDeletedEqualTo(false);\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdmin.setDeleted(true);\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n\n    public void deleteByIds(List<Integer> ids, Integer adminId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andIdIn(ids).andAdminIdEqualTo(adminId).andDeletedEqualTo(false);\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdmin.setDeleted(true);\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n\n    public int countUnread(Integer adminId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andAdminIdEqualTo(adminId).andReadTimeIsNull().andDeletedEqualTo(false);\n        return (int)noticeAdminMapper.countByExample(example);\n    }\n\n    public List<LitemallNoticeAdmin> queryByNoticeId(Integer noticeId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdEqualTo(noticeId).andDeletedEqualTo(false);\n        return noticeAdminMapper.selectByExample(example);\n    }\n\n    public void deleteByNoticeId(Integer id) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdEqualTo(id).andDeletedEqualTo(false);\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdmin.setDeleted(true);\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n\n    public void deleteByNoticeIds(List<Integer> ids) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdIn(ids).andDeletedEqualTo(false);\n        LitemallNoticeAdmin noticeAdmin = new LitemallNoticeAdmin();\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdmin.setDeleted(true);\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n\n    public int countReadByNoticeId(Integer noticeId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdEqualTo(noticeId).andReadTimeIsNotNull().andDeletedEqualTo(false);\n        return (int)noticeAdminMapper.countByExample(example);\n    }\n\n    public void updateByNoticeId(LitemallNoticeAdmin noticeAdmin, Integer noticeId) {\n        LitemallNoticeAdminExample example = new LitemallNoticeAdminExample();\n        example.or().andNoticeIdEqualTo(noticeId).andDeletedEqualTo(false);\n        noticeAdmin.setUpdateTime(LocalDateTime.now());\n        noticeAdminMapper.updateByExampleSelective(noticeAdmin, example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallNoticeService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallNoticeMapper;\nimport org.linlinjava.litemall.db.domain.LitemallNotice;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeAdmin;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample;\nimport org.linlinjava.litemall.db.domain.LitemallNoticeExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallNoticeService {\n    @Resource\n    private LitemallNoticeMapper noticeMapper;\n\n\n    public List<LitemallNotice> querySelective(String title, String content, Integer page, Integer limit, String sort, String order) {\n        LitemallNoticeExample example = new LitemallNoticeExample();\n        LitemallNoticeExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(title)) {\n            criteria.andTitleLike(\"%\" + title + \"%\");\n        }\n        if (!StringUtils.isEmpty(content)) {\n            criteria.andContentLike(\"%\" + content + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return noticeMapper.selectByExample(example);\n    }\n\n    public int updateById(LitemallNotice notice) {\n        notice.setUpdateTime(LocalDateTime.now());\n        return noticeMapper.updateByPrimaryKeySelective(notice);\n    }\n\n    public void deleteById(Integer id) {\n        noticeMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallNotice notice) {\n        notice.setAddTime(LocalDateTime.now());\n        notice.setUpdateTime(LocalDateTime.now());\n        noticeMapper.insertSelective(notice);\n    }\n\n    public LitemallNotice findById(Integer id) {\n        return noticeMapper.selectByPrimaryKey(id);\n    }\n\n    public void deleteByIds(List<Integer> ids) {\n        LitemallNoticeExample example = new LitemallNoticeExample();\n        example.or().andIdIn(ids).andDeletedEqualTo(false);\n        LitemallNotice notice = new LitemallNotice();\n        notice.setUpdateTime(LocalDateTime.now());\n        notice.setDeleted(true);\n        noticeMapper.updateByExampleSelective(notice, example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderGoodsService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.LitemallOrderGoodsMapper;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoods;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallOrderGoodsService {\n    @Resource\n    private LitemallOrderGoodsMapper orderGoodsMapper;\n\n    public int add(LitemallOrderGoods orderGoods) {\n        orderGoods.setAddTime(LocalDateTime.now());\n        orderGoods.setUpdateTime(LocalDateTime.now());\n        return orderGoodsMapper.insertSelective(orderGoods);\n    }\n\n    public List<LitemallOrderGoods> queryByOid(Integer orderId) {\n        LitemallOrderGoodsExample example = new LitemallOrderGoodsExample();\n        example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);\n        return orderGoodsMapper.selectByExample(example);\n    }\n\n    public LitemallOrderGoods findById(Integer id) {\n        return orderGoodsMapper.selectByPrimaryKey(id);\n    }\n\n    public void updateById(LitemallOrderGoods orderGoods) {\n        orderGoods.setUpdateTime(LocalDateTime.now());\n        orderGoodsMapper.updateByPrimaryKeySelective(orderGoods);\n    }\n\n    public Short getComments(Integer orderId) {\n        LitemallOrderGoodsExample example = new LitemallOrderGoodsExample();\n        example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);\n        long count = orderGoodsMapper.countByExample(example);\n        return (short) count;\n    }\n\n    public boolean checkExist(Integer goodsId) {\n        LitemallOrderGoodsExample example = new LitemallOrderGoodsExample();\n        example.or().andGoodsIdEqualTo(goodsId).andDeletedEqualTo(false);\n        return orderGoodsMapper.countByExample(example) != 0;\n    }\n\n    public void deleteByOrderId(Integer orderId) {\n        LitemallOrderGoodsExample example = new LitemallOrderGoodsExample();\n        example.or().andOrderIdEqualTo(orderId).andDeletedEqualTo(false);\n        orderGoodsMapper.logicalDeleteByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallOrderService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.Page;\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallOrderMapper;\nimport org.linlinjava.litemall.db.dao.OrderMapper;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.domain.LitemallOrderExample;\nimport org.linlinjava.litemall.db.domain.OrderVo;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDate;\nimport java.time.LocalDateTime;\nimport java.time.format.DateTimeFormatter;\nimport java.util.*;\n\n@Service\npublic class LitemallOrderService {\n    @Resource\n    private LitemallOrderMapper litemallOrderMapper;\n    @Resource\n    private OrderMapper orderMapper;\n\n    public int add(LitemallOrder order) {\n        order.setAddTime(LocalDateTime.now());\n        order.setUpdateTime(LocalDateTime.now());\n        return litemallOrderMapper.insertSelective(order);\n    }\n\n    public int count(Integer userId) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return (int) litemallOrderMapper.countByExample(example);\n    }\n\n    public LitemallOrder findById(Integer orderId) {\n        return litemallOrderMapper.selectByPrimaryKey(orderId);\n    }\n\n    public LitemallOrder findById(Integer userId, Integer orderId) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andIdEqualTo(orderId).andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        return litemallOrderMapper.selectOneByExample(example);\n    }\n\n    private String getRandomNum(Integer num) {\n        String base = \"0123456789\";\n        Random random = new Random();\n        StringBuffer sb = new StringBuffer();\n        for (int i = 0; i < num; i++) {\n            int number = random.nextInt(base.length());\n            sb.append(base.charAt(number));\n        }\n        return sb.toString();\n    }\n\n    public int countByOrderSn(Integer userId, String orderSn) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andUserIdEqualTo(userId).andOrderSnEqualTo(orderSn).andDeletedEqualTo(false);\n        return (int) litemallOrderMapper.countByExample(example);\n    }\n\n    // TODO 这里应该产生一个唯一的订单，但是实际上这里仍然存在两个订单相同的可能性\n    public String generateOrderSn(Integer userId) {\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyyMMdd\");\n        String now = df.format(LocalDate.now());\n        String orderSn = now + getRandomNum(6);\n        while (countByOrderSn(userId, orderSn) != 0) {\n            orderSn = now + getRandomNum(6);\n        }\n        return orderSn;\n    }\n\n    public List<LitemallOrder> queryByOrderStatus(Integer userId, List<Short> orderStatus, Integer page, Integer limit, String sort, String order) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.setOrderByClause(LitemallOrder.Column.addTime.desc());\n        LitemallOrderExample.Criteria criteria = example.or();\n        criteria.andUserIdEqualTo(userId);\n        if (orderStatus != null) {\n            criteria.andOrderStatusIn(orderStatus);\n        }\n        criteria.andDeletedEqualTo(false);\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return litemallOrderMapper.selectByExample(example);\n    }\n\n    public List<LitemallOrder> querySelective(Integer userId, String orderSn, LocalDateTime start, LocalDateTime end, List<Short> orderStatusArray, Integer page, Integer limit, String sort, String order) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        LitemallOrderExample.Criteria criteria = example.createCriteria();\n\n        if (userId != null) {\n            criteria.andUserIdEqualTo(userId);\n        }\n        if (!StringUtils.isEmpty(orderSn)) {\n            criteria.andOrderSnEqualTo(orderSn);\n        }\n        if(start != null){\n            criteria.andAddTimeGreaterThanOrEqualTo(start);\n        }\n        if(end != null){\n            criteria.andAddTimeLessThanOrEqualTo(end);\n        }\n        if (orderStatusArray != null && orderStatusArray.size() != 0) {\n            criteria.andOrderStatusIn(orderStatusArray);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return litemallOrderMapper.selectByExample(example);\n    }\n\n    public int updateWithOptimisticLocker(LitemallOrder order) {\n        LocalDateTime preUpdateTime = order.getUpdateTime();\n        order.setUpdateTime(LocalDateTime.now());\n        return orderMapper.updateWithOptimisticLocker(preUpdateTime, order);\n    }\n\n    public int updateSelective(LitemallOrder order) {\n        return litemallOrderMapper.updateByPrimaryKeySelective(order);\n    }\n\n\n    public void deleteById(Integer id) {\n        litemallOrderMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public int count() {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andDeletedEqualTo(false);\n        return (int) litemallOrderMapper.countByExample(example);\n    }\n\n    public List<LitemallOrder> queryUnpaid(int minutes) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andOrderStatusEqualTo(OrderUtil.STATUS_CREATE).andDeletedEqualTo(false);\n        return litemallOrderMapper.selectByExample(example);\n    }\n\n    public List<LitemallOrder> queryUnconfirm(int days) {\n        LocalDateTime now = LocalDateTime.now();\n        LocalDateTime expired = now.minusDays(days);\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andOrderStatusEqualTo(OrderUtil.STATUS_SHIP).andShipTimeLessThan(expired).andDeletedEqualTo(false);\n        return litemallOrderMapper.selectByExample(example);\n    }\n\n    public LitemallOrder findBySn(String orderSn) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andOrderSnEqualTo(orderSn).andDeletedEqualTo(false);\n        return litemallOrderMapper.selectOneByExample(example);\n    }\n\n    public Map<Object, Object> orderInfo(Integer userId) {\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andUserIdEqualTo(userId).andDeletedEqualTo(false);\n        List<LitemallOrder> orders = litemallOrderMapper.selectByExampleSelective(example, LitemallOrder.Column.orderStatus, LitemallOrder.Column.comments);\n\n        int unpaid = 0;\n        int unship = 0;\n        int unrecv = 0;\n        int uncomment = 0;\n        for (LitemallOrder order : orders) {\n            if (OrderUtil.isCreateStatus(order)) {\n                unpaid++;\n            } else if (OrderUtil.isPayStatus(order)) {\n                unship++;\n            } else if (OrderUtil.isShipStatus(order)) {\n                unrecv++;\n            } else if (OrderUtil.isConfirmStatus(order) || OrderUtil.isAutoConfirmStatus(order)) {\n                uncomment += order.getComments();\n            } else {\n                // do nothing\n            }\n        }\n\n        Map<Object, Object> orderInfo = new HashMap<Object, Object>();\n        orderInfo.put(\"unpaid\", unpaid);\n        orderInfo.put(\"unship\", unship);\n        orderInfo.put(\"unrecv\", unrecv);\n        orderInfo.put(\"uncomment\", uncomment);\n        return orderInfo;\n\n    }\n\n    public List<LitemallOrder> queryComment(int days) {\n        LocalDateTime now = LocalDateTime.now();\n        LocalDateTime expired = now.minusDays(days);\n        LitemallOrderExample example = new LitemallOrderExample();\n        example.or().andCommentsGreaterThan((short) 0).andConfirmTimeLessThan(expired).andDeletedEqualTo(false);\n        return litemallOrderMapper.selectByExample(example);\n    }\n\n    public void updateAftersaleStatus(Integer orderId, Short statusReject) {\n        LitemallOrder order = new LitemallOrder();\n        order.setId(orderId);\n        order.setAftersaleStatus(statusReject);\n        order.setUpdateTime(LocalDateTime.now());\n        litemallOrderMapper.updateByPrimaryKeySelective(order);\n    }\n\n\n    public Map<String, Object> queryVoSelective(String nickname, String consignee, String orderSn, LocalDateTime start, LocalDateTime end, List<Short> orderStatusArray, Integer page, Integer limit, String sort, String order) {\n        List<String> querys = new ArrayList<>(4);\n        if (!StringUtils.isEmpty(nickname)) {\n            querys.add(\" u.nickname like '%\" + nickname + \"%' \");\n        }\n        if (!StringUtils.isEmpty(consignee)) {\n            querys.add(\" o.consignee like '%\" + consignee + \"%' \");\n        }\n        if (!StringUtils.isEmpty(orderSn)) {\n            querys.add(\" o.order_sn = '\" + orderSn + \"' \");\n        }\n        DateTimeFormatter df = DateTimeFormatter.ofPattern(\"yyyy-MM-dd HH:mm:ss\");\n        if (start != null) {\n            querys.add(\" o.add_time >= '\" + df.format(start) + \"' \");\n        }\n        if (end != null) {\n            querys.add(\" o.add_time < '\" + df.format(end) + \"' \");\n        }\n        if (orderStatusArray != null && orderStatusArray.size() > 0) {\n            querys.add(\" o.order_status in (\" + StringUtils.collectionToDelimitedString(orderStatusArray, \",\") + \") \");\n        }\n        querys.add(\" o.deleted = 0 and og.deleted = 0 \");\n        String query = StringUtils.collectionToDelimitedString(querys, \"and\");\n        String orderByClause = null;\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            orderByClause = \"o.\" + sort + \" \" + order +\", o.id desc \";\n        }\n\n        PageHelper.startPage(page, limit);\n        Page<Map> list1 = (Page) orderMapper.getOrderIds(query, orderByClause);\n        List<Integer> ids = new ArrayList<>();\n        for (Map map : list1) {\n            Integer id = (Integer) map.get(\"id\");\n            ids.add(id);\n        }\n\n        List<OrderVo> list2 = new ArrayList<>();\n        if (!ids.isEmpty()) {\n            querys.add(\" o.id in (\" + StringUtils.collectionToDelimitedString(ids, \",\") + \") \");\n            query = StringUtils.collectionToDelimitedString(querys, \"and\");\n            list2 = orderMapper.getOrderList(query, orderByClause);\n        }\n        Map<String, Object> data = new HashMap<String, Object>(5);\n        data.put(\"list\", list2);\n        data.put(\"total\", list1.getTotal());\n        data.put(\"page\", list1.getPageNum());\n        data.put(\"limit\", list1.getPageSize());\n        data.put(\"pages\", list1.getPages());\n        return data;\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallPermissionService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.LitemallPermissionMapper;\nimport org.linlinjava.litemall.db.dao.LitemallRoleMapper;\nimport org.linlinjava.litemall.db.domain.LitemallPermission;\nimport org.linlinjava.litemall.db.domain.LitemallPermissionExample;\nimport org.linlinjava.litemall.db.domain.LitemallRole;\nimport org.linlinjava.litemall.db.domain.LitemallRoleExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.Arrays;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n@Service\npublic class LitemallPermissionService {\n    @Resource\n    private LitemallPermissionMapper permissionMapper;\n\n    public Set<String> queryByRoleIds(Integer[] roleIds) {\n        Set<String> permissions = new HashSet<String>();\n        if(roleIds.length == 0){\n            return permissions;\n        }\n\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdIn(Arrays.asList(roleIds)).andDeletedEqualTo(false);\n        List<LitemallPermission> permissionList = permissionMapper.selectByExample(example);\n\n        for(LitemallPermission permission : permissionList){\n            permissions.add(permission.getPermission());\n        }\n\n        return permissions;\n    }\n\n\n    public Set<String> queryByRoleId(Integer roleId) {\n        Set<String> permissions = new HashSet<String>();\n        if(roleId == null){\n            return permissions;\n        }\n\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdEqualTo(roleId).andDeletedEqualTo(false);\n        List<LitemallPermission> permissionList = permissionMapper.selectByExample(example);\n\n        for(LitemallPermission permission : permissionList){\n            permissions.add(permission.getPermission());\n        }\n\n        return permissions;\n    }\n\n    public Set<String> queryByRoleId(List<Integer> roleIds) {\n        Set<String> permissions = new HashSet<String>();\n        if(roleIds == null || roleIds.isEmpty()){\n            return permissions;\n        }\n\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdIn(roleIds).andDeletedEqualTo(false);\n        List<LitemallPermission> permissionList = permissionMapper.selectByExample(example);\n\n        for(LitemallPermission permission : permissionList){\n            permissions.add(permission.getPermission());\n        }\n\n        return permissions;\n    }\n\n    public boolean checkSuperPermission(Integer roleId) {\n        if(roleId == null){\n            return false;\n        }\n\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdEqualTo(roleId).andPermissionEqualTo(\"*\").andDeletedEqualTo(false);\n        return permissionMapper.countByExample(example) != 0;\n    }\n\n    public boolean checkSuperPermission(List<Integer> roleIds) {\n        if(roleIds == null || roleIds.isEmpty()){\n            return false;\n        }\n\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdIn(roleIds).andPermissionEqualTo(\"*\").andDeletedEqualTo(false);\n        return permissionMapper.countByExample(example) != 0;\n    }\n\n    public void deleteByRoleId(Integer roleId) {\n        LitemallPermissionExample example = new LitemallPermissionExample();\n        example.or().andRoleIdEqualTo(roleId).andDeletedEqualTo(false);\n        permissionMapper.logicalDeleteByExample(example);\n    }\n\n    public void add(LitemallPermission litemallPermission) {\n        litemallPermission.setAddTime(LocalDateTime.now());\n        litemallPermission.setUpdateTime(LocalDateTime.now());\n        permissionMapper.insertSelective(litemallPermission);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallRegionService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallRegionMapper;\nimport org.linlinjava.litemall.db.domain.LitemallRegion;\nimport org.linlinjava.litemall.db.domain.LitemallRegionExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.util.List;\n\n@Service\npublic class LitemallRegionService {\n\n    @Resource\n    private LitemallRegionMapper regionMapper;\n\n    public List<LitemallRegion> getAll(){\n        LitemallRegionExample example = new LitemallRegionExample();\n        byte b = 4;\n        example.or().andTypeNotEqualTo(b);\n        return regionMapper.selectByExample(example);\n    }\n\n    public List<LitemallRegion> queryByPid(Integer parentId) {\n        LitemallRegionExample example = new LitemallRegionExample();\n        example.or().andPidEqualTo(parentId);\n        return regionMapper.selectByExample(example);\n    }\n\n    public LitemallRegion findById(Integer id) {\n        return regionMapper.selectByPrimaryKey(id);\n    }\n\n    public List<LitemallRegion> querySelective(String name, Integer code, Integer page, Integer size, String sort, String order) {\n        LitemallRegionExample example = new LitemallRegionExample();\n        LitemallRegionExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        if (!StringUtils.isEmpty(code)) {\n            criteria.andCodeEqualTo(code);\n        }\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return regionMapper.selectByExample(example);\n    }\n\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallRoleService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.alibaba.druid.util.StringUtils;\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallRoleMapper;\nimport org.linlinjava.litemall.db.domain.LitemallRole;\nimport org.linlinjava.litemall.db.domain.LitemallRoleExample;\nimport org.springframework.stereotype.Service;\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.Arrays;\nimport java.util.HashSet;\nimport java.util.List;\nimport java.util.Set;\n\n@Service\npublic class LitemallRoleService {\n    @Resource\n    private LitemallRoleMapper roleMapper;\n\n\n    public Set<String> queryByIds(Integer[] roleIds) {\n        Set<String> roles = new HashSet<String>();\n        if(roleIds.length == 0){\n            return roles;\n        }\n\n        LitemallRoleExample example = new LitemallRoleExample();\n        example.or().andIdIn(Arrays.asList(roleIds)).andEnabledEqualTo(true).andDeletedEqualTo(false);\n        List<LitemallRole> roleList = roleMapper.selectByExample(example);\n\n        for(LitemallRole role : roleList){\n            roles.add(role.getName());\n        }\n\n        return roles;\n\n    }\n\n    public List<LitemallRole> querySelective(String name, Integer page, Integer limit, String sort, String order) {\n        LitemallRoleExample example = new LitemallRoleExample();\n        LitemallRoleExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return roleMapper.selectByExample(example);\n    }\n\n    public LitemallRole findById(Integer id) {\n        return roleMapper.selectByPrimaryKey(id);\n    }\n\n    public void add(LitemallRole role) {\n        role.setAddTime(LocalDateTime.now());\n        role.setUpdateTime(LocalDateTime.now());\n        roleMapper.insertSelective(role);\n    }\n\n    public void deleteById(Integer id) {\n        roleMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void updateById(LitemallRole role) {\n        role.setUpdateTime(LocalDateTime.now());\n        roleMapper.updateByPrimaryKeySelective(role);\n    }\n\n    public boolean checkExist(String name) {\n        LitemallRoleExample example = new LitemallRoleExample();\n        example.or().andNameEqualTo(name).andDeletedEqualTo(false);\n        return roleMapper.countByExample(example) != 0;\n    }\n\n    public List<LitemallRole> queryAll() {\n        LitemallRoleExample example = new LitemallRoleExample();\n        example.or().andDeletedEqualTo(false);\n        return roleMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallSearchHistoryService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallSearchHistoryMapper;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistory;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallSearchHistoryService {\n    @Resource\n    private LitemallSearchHistoryMapper searchHistoryMapper;\n\n    public void save(LitemallSearchHistory searchHistory) {\n        searchHistory.setAddTime(LocalDateTime.now());\n        searchHistory.setUpdateTime(LocalDateTime.now());\n        searchHistoryMapper.insertSelective(searchHistory);\n    }\n\n    public List<LitemallSearchHistory> queryByUid(int uid) {\n        LitemallSearchHistoryExample example = new LitemallSearchHistoryExample();\n        example.or().andUserIdEqualTo(uid).andDeletedEqualTo(false);\n        example.setDistinct(true);\n        return searchHistoryMapper.selectByExampleSelective(example, LitemallSearchHistory.Column.keyword);\n    }\n\n    public void deleteByUid(int uid) {\n        LitemallSearchHistoryExample example = new LitemallSearchHistoryExample();\n        example.or().andUserIdEqualTo(uid);\n        searchHistoryMapper.logicalDeleteByExample(example);\n    }\n\n    public List<LitemallSearchHistory> querySelective(String userId, String keyword, Integer page, Integer size, String sort, String order) {\n        LitemallSearchHistoryExample example = new LitemallSearchHistoryExample();\n        LitemallSearchHistoryExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(userId)) {\n            criteria.andUserIdEqualTo(Integer.valueOf(userId));\n        }\n        if (!StringUtils.isEmpty(keyword)) {\n            criteria.andKeywordLike(\"%\" + keyword + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return searchHistoryMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallStorageService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallStorageMapper;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.linlinjava.litemall.db.domain.LitemallStorageExample;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallStorageService {\n    @Autowired\n    private LitemallStorageMapper storageMapper;\n\n    public void deleteByKey(String key) {\n        LitemallStorageExample example = new LitemallStorageExample();\n        example.or().andKeyEqualTo(key);\n        storageMapper.logicalDeleteByExample(example);\n    }\n\n    public void add(LitemallStorage storageInfo) {\n        storageInfo.setAddTime(LocalDateTime.now());\n        storageInfo.setUpdateTime(LocalDateTime.now());\n        storageMapper.insertSelective(storageInfo);\n    }\n\n    public LitemallStorage findByKey(String key) {\n        LitemallStorageExample example = new LitemallStorageExample();\n        example.or().andKeyEqualTo(key).andDeletedEqualTo(false);\n        return storageMapper.selectOneByExample(example);\n    }\n\n    public int update(LitemallStorage storageInfo) {\n        storageInfo.setUpdateTime(LocalDateTime.now());\n        return storageMapper.updateByPrimaryKeySelective(storageInfo);\n    }\n\n    public LitemallStorage findById(Integer id) {\n        return storageMapper.selectByPrimaryKey(id);\n    }\n\n    public List<LitemallStorage> querySelective(String key, String name, Integer page, Integer limit, String sort, String order) {\n        LitemallStorageExample example = new LitemallStorageExample();\n        LitemallStorageExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(key)) {\n            criteria.andKeyEqualTo(key);\n        }\n        if (!StringUtils.isEmpty(name)) {\n            criteria.andNameLike(\"%\" + name + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return storageMapper.selectByExample(example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallSystemConfigService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.LitemallSystemMapper;\nimport org.linlinjava.litemall.db.domain.LitemallSystem;\nimport org.linlinjava.litemall.db.domain.LitemallSystemExample;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@Service\npublic class LitemallSystemConfigService {\n    @Resource\n    private LitemallSystemMapper systemMapper;\n\n    public Map<String, String> queryAll() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        example.or().andDeletedEqualTo(false);\n\n        List<LitemallSystem> systemList = systemMapper.selectByExample(example);\n        Map<String, String> systemConfigs = new HashMap<>();\n        for (LitemallSystem item : systemList) {\n            systemConfigs.put(item.getKeyName(), item.getKeyValue());\n        }\n\n        return systemConfigs;\n    }\n\n    public Map<String, String> listMail() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        example.or().andKeyNameLike(\"litemall_mall_%\").andDeletedEqualTo(false);\n        List<LitemallSystem> systemList = systemMapper.selectByExample(example);\n        Map<String, String> data = new HashMap<>();\n        for(LitemallSystem system : systemList){\n            data.put(system.getKeyName(), system.getKeyValue());\n        }\n        return data;\n    }\n\n    public Map<String, String> listWx() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        example.or().andKeyNameLike(\"litemall_wx_%\").andDeletedEqualTo(false);\n        List<LitemallSystem> systemList = systemMapper.selectByExample(example);\n        Map<String, String> data = new HashMap<>();\n        for(LitemallSystem system : systemList){\n            data.put(system.getKeyName(), system.getKeyValue());\n        }\n        return data;\n    }\n\n    public Map<String, String> listOrder() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        example.or().andKeyNameLike(\"litemall_order_%\").andDeletedEqualTo(false);\n        List<LitemallSystem> systemList = systemMapper.selectByExample(example);\n        Map<String, String> data = new HashMap<>();\n        for(LitemallSystem system : systemList){\n            data.put(system.getKeyName(), system.getKeyValue());\n        }\n        return data;\n    }\n\n    public Map<String, String> listExpress() {\n        LitemallSystemExample example = new LitemallSystemExample();\n        example.or().andKeyNameLike(\"litemall_express_%\").andDeletedEqualTo(false);\n        List<LitemallSystem> systemList = systemMapper.selectByExample(example);\n        Map<String, String> data = new HashMap<>();\n        for(LitemallSystem system : systemList){\n            data.put(system.getKeyName(), system.getKeyValue());\n        }\n        return data;\n    }\n\n    public void updateConfig(Map<String, String> data) {\n        for (Map.Entry<String, String> entry : data.entrySet()) {\n            LitemallSystemExample example = new LitemallSystemExample();\n            example.or().andKeyNameEqualTo(entry.getKey()).andDeletedEqualTo(false);\n\n            LitemallSystem system = new LitemallSystem();\n            system.setKeyName(entry.getKey());\n            system.setKeyValue(entry.getValue());\n            system.setUpdateTime(LocalDateTime.now());\n            systemMapper.updateByExampleSelective(system, example);\n        }\n\n    }\n\n    public void addConfig(String key, String value) {\n        LitemallSystem system = new LitemallSystem();\n        system.setKeyName(key);\n        system.setKeyValue(value);\n        system.setAddTime(LocalDateTime.now());\n        system.setUpdateTime(LocalDateTime.now());\n        systemMapper.insertSelective(system);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallTopicService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallTopicMapper;\nimport org.linlinjava.litemall.db.domain.LitemallGroupon;\nimport org.linlinjava.litemall.db.domain.LitemallTopic;\nimport org.linlinjava.litemall.db.domain.LitemallTopic.Column;\nimport org.linlinjava.litemall.db.domain.LitemallTopicExample;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallTopicService {\n    @Resource\n    private LitemallTopicMapper topicMapper;\n    private Column[] columns = new Column[]{Column.id, Column.title, Column.subtitle, Column.price, Column.picUrl, Column.readCount};\n\n    public List<LitemallTopic> queryList(int offset, int limit) {\n        return queryList(offset, limit, \"add_time\", \"desc\");\n    }\n\n    public List<LitemallTopic> queryList(int offset, int limit, String sort, String order) {\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andDeletedEqualTo(false);\n        example.setOrderByClause(sort + \" \" + order);\n        PageHelper.startPage(offset, limit);\n        return topicMapper.selectByExampleSelective(example, columns);\n    }\n\n    public int queryTotal() {\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andDeletedEqualTo(false);\n        return (int) topicMapper.countByExample(example);\n    }\n\n    public LitemallTopic findById(Integer id) {\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andIdEqualTo(id).andDeletedEqualTo(false);\n        return topicMapper.selectOneByExampleWithBLOBs(example);\n    }\n\n    public List<LitemallTopic> queryRelatedList(Integer id, int offset, int limit) {\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andIdEqualTo(id).andDeletedEqualTo(false);\n        List<LitemallTopic> topics = topicMapper.selectByExample(example);\n        if (topics.size() == 0) {\n            return queryList(offset, limit, \"add_time\", \"desc\");\n        }\n        LitemallTopic topic = topics.get(0);\n\n        example = new LitemallTopicExample();\n        example.or().andIdNotEqualTo(topic.getId()).andDeletedEqualTo(false);\n        PageHelper.startPage(offset, limit);\n        List<LitemallTopic> relateds = topicMapper.selectByExampleWithBLOBs(example);\n        if (relateds.size() != 0) {\n            return relateds;\n        }\n\n        return queryList(offset, limit, \"add_time\", \"desc\");\n    }\n\n    public List<LitemallTopic> querySelective(String title, String subtitle, Integer page, Integer limit, String sort, String order) {\n        LitemallTopicExample example = new LitemallTopicExample();\n        LitemallTopicExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(title)) {\n            criteria.andTitleLike(\"%\" + title + \"%\");\n        }\n        if (!StringUtils.isEmpty(subtitle)) {\n            criteria.andSubtitleLike(\"%\" + subtitle + \"%\");\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, limit);\n        return topicMapper.selectByExampleWithBLOBs(example);\n    }\n\n    public int updateById(LitemallTopic topic) {\n        topic.setUpdateTime(LocalDateTime.now());\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andIdEqualTo(topic.getId());\n        return topicMapper.updateByExampleSelective(topic, example);\n    }\n\n    public void deleteById(Integer id) {\n        topicMapper.logicalDeleteByPrimaryKey(id);\n    }\n\n    public void add(LitemallTopic topic) {\n        topic.setAddTime(LocalDateTime.now());\n        topic.setUpdateTime(LocalDateTime.now());\n        topicMapper.insertSelective(topic);\n    }\n\n\n    public void deleteByIds(List<Integer> ids) {\n        LitemallTopicExample example = new LitemallTopicExample();\n        example.or().andIdIn(ids).andDeletedEqualTo(false);\n        LitemallTopic topic = new LitemallTopic();\n        topic.setUpdateTime(LocalDateTime.now());\n        topic.setDeleted(true);\n        topicMapper.updateByExampleSelective(topic, example);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/LitemallUserService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport com.github.pagehelper.PageHelper;\nimport org.linlinjava.litemall.db.dao.LitemallUserMapper;\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.domain.LitemallUserExample;\nimport org.linlinjava.litemall.db.domain.UserVo;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.StringUtils;\n\nimport javax.annotation.Resource;\nimport java.time.LocalDateTime;\nimport java.util.List;\n\n@Service\npublic class LitemallUserService {\n    @Resource\n    private LitemallUserMapper userMapper;\n\n    public LitemallUser findById(Integer userId) {\n        return userMapper.selectByPrimaryKey(userId);\n    }\n\n    public UserVo findUserVoById(Integer userId) {\n        LitemallUser user = findById(userId);\n        UserVo userVo = new UserVo();\n        userVo.setNickname(user.getNickname());\n        userVo.setAvatar(user.getAvatar());\n        return userVo;\n    }\n\n    public LitemallUser queryByOid(String openId) {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andWeixinOpenidEqualTo(openId).andDeletedEqualTo(false);\n        return userMapper.selectOneByExample(example);\n    }\n\n    public void add(LitemallUser user) {\n        user.setAddTime(LocalDateTime.now());\n        user.setUpdateTime(LocalDateTime.now());\n        userMapper.insertSelective(user);\n    }\n\n    public int updateById(LitemallUser user) {\n        user.setUpdateTime(LocalDateTime.now());\n        return userMapper.updateByPrimaryKeySelective(user);\n    }\n\n    public List<LitemallUser> querySelective(String username, String mobile, Integer page, Integer size, String sort, String order) {\n        LitemallUserExample example = new LitemallUserExample();\n        LitemallUserExample.Criteria criteria = example.createCriteria();\n\n        if (!StringUtils.isEmpty(username)) {\n            criteria.andUsernameLike(\"%\" + username + \"%\");\n        }\n        if (!StringUtils.isEmpty(mobile)) {\n            criteria.andMobileEqualTo(mobile);\n        }\n        criteria.andDeletedEqualTo(false);\n\n        if (!StringUtils.isEmpty(sort) && !StringUtils.isEmpty(order)) {\n            example.setOrderByClause(sort + \" \" + order);\n        }\n\n        PageHelper.startPage(page, size);\n        return userMapper.selectByExample(example);\n    }\n\n    public int count() {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andDeletedEqualTo(false);\n\n        return (int) userMapper.countByExample(example);\n    }\n\n    public List<LitemallUser> queryByUsername(String username) {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andUsernameEqualTo(username).andDeletedEqualTo(false);\n        return userMapper.selectByExample(example);\n    }\n\n    public boolean checkByUsername(String username) {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andUsernameEqualTo(username).andDeletedEqualTo(false);\n        return userMapper.countByExample(example) != 0;\n    }\n\n    public List<LitemallUser> queryByMobile(String mobile) {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andMobileEqualTo(mobile).andDeletedEqualTo(false);\n        return userMapper.selectByExample(example);\n    }\n\n    public List<LitemallUser> queryByOpenid(String openid) {\n        LitemallUserExample example = new LitemallUserExample();\n        example.or().andWeixinOpenidEqualTo(openid).andDeletedEqualTo(false);\n        return userMapper.selectByExample(example);\n    }\n\n    public void deleteById(Integer id) {\n        userMapper.logicalDeleteByPrimaryKey(id);\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/service/StatService.java",
    "content": "package org.linlinjava.litemall.db.service;\n\nimport org.linlinjava.litemall.db.dao.StatMapper;\nimport org.springframework.stereotype.Service;\n\nimport javax.annotation.Resource;\nimport java.util.List;\nimport java.util.Map;\n\n@Service\npublic class StatService {\n    @Resource\n    private StatMapper statMapper;\n\n\n    public List<Map> statUser() {\n        return statMapper.statUser();\n    }\n\n    public List<Map> statOrder() {\n        return statMapper.statOrder();\n    }\n\n    public List<Map> statGoods() {\n        return statMapper.statGoods();\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/AftersaleConstant.java",
    "content": "package org.linlinjava.litemall.db.util;\n\npublic class AftersaleConstant {\n    public static final Short STATUS_INIT = 0;\n    public static final Short STATUS_REQUEST = 1;\n    public static final Short STATUS_RECEPT = 2;\n    public static final Short STATUS_REFUND = 3;\n    public static final Short STATUS_REJECT = 4;\n    public static final Short STATUS_CANCEL = 5;\n\n    public static final Short TYPE_GOODS_MISS = 0;\n    public static final Short TYPE_GOODS_NEEDLESS = 1;\n    public static final Short TYPE_GOODS_REQUIRED = 2;\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/CouponConstant.java",
    "content": "package org.linlinjava.litemall.db.util;\n\npublic class CouponConstant {\n    public static final Short TYPE_COMMON = 0;\n    public static final Short TYPE_REGISTER = 1;\n    public static final Short TYPE_CODE = 2;\n\n    public static final Short GOODS_TYPE_ALL = 0;\n    public static final Short GOODS_TYPE_CATEGORY = 1;\n    public static final Short GOODS_TYPE_ARRAY = 2;\n\n    public static final Short STATUS_NORMAL = 0;\n    public static final Short STATUS_EXPIRED = 1;\n    public static final Short STATUS_OUT = 2;\n\n    public static final Short TIME_TYPE_DAYS = 0;\n    public static final Short TIME_TYPE_TIME = 1;\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/CouponUserConstant.java",
    "content": "package org.linlinjava.litemall.db.util;\n\npublic class CouponUserConstant {\n    public static final Short STATUS_USABLE = 0;\n    public static final Short STATUS_USED = 1;\n    public static final Short STATUS_EXPIRED = 2;\n    public static final Short STATUS_OUT = 3;\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/DbUtil.java",
    "content": "package org.linlinjava.litemall.db.util;\n\nimport java.io.*;\nimport java.nio.charset.StandardCharsets;\nimport java.text.SimpleDateFormat;\nimport java.util.Date;\n\npublic class DbUtil {\n\n    public static void backup(File file, String user, String password, String db) {\n        try {\n            Runtime rt = Runtime.getRuntime();\n            String command = \"mysqldump -u\" + user + \" -p\" + password + \" --set-charset=utf8 \" + db;\n            Process child = rt.exec(command);\n            InputStream inputStream = child.getInputStream();\n            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));\n            OutputStreamWriter outputStreamWriter = new OutputStreamWriter( new FileOutputStream(file), StandardCharsets.UTF_8);\n            String str;\n            while ((str = bufferedReader.readLine()) != null) {\n                outputStreamWriter.write(str + \"\\r\\n\");\n            }\n            outputStreamWriter.flush();\n            inputStream.close();\n            bufferedReader.close();\n            outputStreamWriter.close();\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n\n    public static void load(File file, String user, String password, String db) {\n        try {\n            Runtime rt = Runtime.getRuntime();\n            String command = \"mysql -u\" + user + \" -p\" + password + \" --default-character-set=utf8 \" + db;\n            Process child = rt.exec(command);\n            OutputStream outputStream = child.getOutputStream();\n            BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8));\n            OutputStreamWriter outputStreamWriter = new OutputStreamWriter(outputStream, StandardCharsets.UTF_8);\n            String str;\n            while ((str = bufferedReader.readLine()) != null) {\n                outputStreamWriter.write(str + \"\\r\\n\");\n            }\n            outputStreamWriter.flush();\n            outputStream.close();\n            bufferedReader.close();\n            outputStreamWriter.close();\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n    }\n}"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/GrouponConstant.java",
    "content": "package org.linlinjava.litemall.db.util;\n\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\n\npublic class GrouponConstant {\n    public static final Short RULE_STATUS_ON = 0;\n    public static final Short RULE_STATUS_DOWN_EXPIRE = 1;\n    public static final Short RULE_STATUS_DOWN_ADMIN = 2;\n\n\n    public static final Short STATUS_NONE = 0;\n    public static final Short STATUS_ON = 1;\n    public static final Short STATUS_SUCCEED = 2;\n    public static final Short STATUS_FAIL = 3;\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderHandleOption.java",
    "content": "package org.linlinjava.litemall.db.util;\n\npublic class OrderHandleOption {\n    private boolean cancel = false;      // 取消操作\n    private boolean delete = false;      // 删除操作\n    private boolean pay = false;         // 支付操作\n    private boolean comment = false;    // 评论操作\n    private boolean confirm = false;    // 确认收货操作\n    private boolean refund = false;     // 取消订单并退款操作\n    private boolean rebuy = false;        // 再次购买\n    private boolean aftersale = false;        // 售后操作\n\n    public boolean isCancel() {\n        return cancel;\n    }\n\n    public void setCancel(boolean cancel) {\n        this.cancel = cancel;\n    }\n\n    public boolean isDelete() {\n        return delete;\n    }\n\n    public void setDelete(boolean delete) {\n        this.delete = delete;\n    }\n\n    public boolean isPay() {\n        return pay;\n    }\n\n    public void setPay(boolean pay) {\n        this.pay = pay;\n    }\n\n    public boolean isComment() {\n        return comment;\n    }\n\n    public void setComment(boolean comment) {\n        this.comment = comment;\n    }\n\n    public boolean isConfirm() {\n        return confirm;\n    }\n\n    public void setConfirm(boolean confirm) {\n        this.confirm = confirm;\n    }\n\n    public boolean isRefund() {\n        return refund;\n    }\n\n    public void setRefund(boolean refund) {\n        this.refund = refund;\n    }\n\n    public boolean isRebuy() {\n        return rebuy;\n    }\n\n    public void setRebuy(boolean rebuy) {\n        this.rebuy = rebuy;\n    }\n\n    public boolean isAftersale() {\n        return aftersale;\n    }\n\n    public void setAftersale(boolean aftersale) {\n        this.aftersale = aftersale;\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/java/org/linlinjava/litemall/db/util/OrderUtil.java",
    "content": "package org.linlinjava.litemall.db.util;\n\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\n\nimport java.util.ArrayList;\nimport java.util.List;\n\n/*\n * 订单流程：下单成功－》支付订单－》发货－》收货\n * 订单状态：\n * 101 订单生成，未支付；102，下单未支付用户取消；103，下单未支付超期系统自动取消\n * 201 支付完成，商家未发货；202，订单生产，已付款未发货，用户申请退款；203，管理员执行退款操作，确认退款成功；\n * 301 商家发货，用户未确认；\n * 401 用户确认收货，订单结束； 402 用户没有确认收货，但是快递反馈已收货后，超过一定时间，系统自动确认收货，订单结束。\n *\n * 当101用户未付款时，此时用户可以进行的操作是取消或者付款\n * 当201支付完成而商家未发货时，此时用户可以退款\n * 当301商家已发货时，此时用户可以有确认收货\n * 当401用户确认收货以后，此时用户可以进行的操作是退货、删除、去评价或者再次购买\n * 当402系统自动确认收货以后，此时用户可以删除、去评价、或者再次购买\n */\npublic class OrderUtil {\n\n    public static final Short STATUS_CREATE = 101;\n    public static final Short STATUS_PAY = 201;\n    public static final Short STATUS_SHIP = 301;\n    public static final Short STATUS_CONFIRM = 401;\n    public static final Short STATUS_CANCEL = 102;\n    public static final Short STATUS_AUTO_CANCEL = 103;\n    public static final Short STATUS_ADMIN_CANCEL = 104;\n    public static final Short STATUS_REFUND = 202;\n    public static final Short STATUS_REFUND_CONFIRM = 203;\n    public static final Short STATUS_AUTO_CONFIRM = 402;\n\n    public static String orderStatusText(LitemallOrder order) {\n        int status = order.getOrderStatus().intValue();\n\n        if (status == 101) {\n            return \"未付款\";\n        }\n\n        if (status == 102) {\n            return \"已取消\";\n        }\n\n        if (status == 103) {\n            return \"已取消(系统)\";\n        }\n\n        if (status == 201) {\n            return \"已付款\";\n        }\n\n        if (status == 202) {\n            return \"订单取消，退款中\";\n        }\n\n        if (status == 203) {\n            return \"已退款\";\n        }\n\n        if (status == 204) {\n            return \"已超时团购\";\n        }\n\n        if (status == 301) {\n            return \"已发货\";\n        }\n\n        if (status == 401) {\n            return \"已收货\";\n        }\n\n        if (status == 402) {\n            return \"已收货(系统)\";\n        }\n\n        throw new IllegalStateException(\"orderStatus不支持\");\n    }\n\n\n    public static OrderHandleOption build(LitemallOrder order) {\n        int status = order.getOrderStatus().intValue();\n        OrderHandleOption handleOption = new OrderHandleOption();\n\n        if (status == 101) {\n            // 如果订单没有被取消，且没有支付，则可支付，可取消\n            handleOption.setCancel(true);\n            handleOption.setPay(true);\n        } else if (status == 102 || status == 103) {\n            // 如果订单已经取消或是已完成，则可删除\n            handleOption.setDelete(true);\n        } else if (status == 201) {\n            // 如果订单已付款，没有发货，则可退款\n            handleOption.setRefund(true);\n        } else if (status == 202 || status == 204) {\n            // 如果订单申请退款中，没有相关操作\n        } else if (status == 203) {\n            // 如果订单已经退款，则可删除\n            handleOption.setDelete(true);\n        } else if (status == 301) {\n            // 如果订单已经发货，没有收货，则可收货操作,\n            // 此时不能取消订单\n            handleOption.setConfirm(true);\n        } else if (status == 401 || status == 402) {\n            // 如果订单已经支付，且已经收货，则可删除、去评论、申请售后和再次购买\n            handleOption.setDelete(true);\n            handleOption.setComment(true);\n            handleOption.setRebuy(true);\n            handleOption.setAftersale(true);\n        } else {\n            throw new IllegalStateException(\"status不支持\");\n        }\n\n        return handleOption;\n    }\n\n    public static List<Short> orderStatus(Integer showType) {\n        // 全部订单\n        if (showType == 0) {\n            return null;\n        }\n\n        List<Short> status = new ArrayList<Short>(2);\n\n        if (showType.equals(1)) {\n            // 待付款订单\n            status.add((short) 101);\n        } else if (showType.equals(2)) {\n            // 待发货订单\n            status.add((short) 201);\n        } else if (showType.equals(3)) {\n            // 待收货订单\n            status.add((short) 301);\n        } else if (showType.equals(4)) {\n            // 待评价订单\n            status.add((short) 401);\n//            系统超时自动取消，此时应该不支持评价\n//            status.add((short)402);\n        } else {\n            return null;\n        }\n\n        return status;\n    }\n\n\n    public static boolean isCreateStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_CREATE == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean hasPayed(LitemallOrder order) {\n        return OrderUtil.STATUS_CREATE != order.getOrderStatus().shortValue()\n                && OrderUtil.STATUS_CANCEL != order.getOrderStatus().shortValue()\n                && OrderUtil.STATUS_AUTO_CANCEL != order.getOrderStatus().shortValue();\n    }\n\n    public static boolean isPayStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_PAY == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isShipStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_SHIP == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isConfirmStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_CONFIRM == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isCancelStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_CANCEL == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isAutoCancelStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_AUTO_CANCEL == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isRefundStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_REFUND == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isRefundConfirmStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_REFUND_CONFIRM == litemallOrder.getOrderStatus().shortValue();\n    }\n\n    public static boolean isAutoConfirmStatus(LitemallOrder litemallOrder) {\n        return OrderUtil.STATUS_AUTO_CONFIRM == litemallOrder.getOrderStatus().shortValue();\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/main/resources/application-db.yml",
    "content": "pagehelper:\n  helperDialect:  mysql\n  reasonable: true\n  supportMethodsArguments:  true\n  params: count=countSql\n\nspring:\n  datasource:\n    druid:\n      url:  jdbc:mysql://localhost:3306/litemall?useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true&verifyServerCertificate=false&useSSL=false\n      driver-class-name:  com.mysql.cj.jdbc.Driver\n      username:  litemall\n      password:  litemall123456\n      initial-size:  10\n      max-active:  50\n      min-idle:  10\n      max-wait:  60000\n      pool-prepared-statements:  true\n      max-pool-prepared-statement-per-connection-size:  20\n      validation-query:  SELECT 1 FROM DUAL\n      test-on-borrow:  false\n      test-on-return:  false\n      test-while-idle:  true\n      time-between-eviction-runs-millis:  60000\n      webStatFilter:\n        enabled: true\n      statViewServlet:\n        enabled: false\n      filter:\n        stat:\n          enabled: false\n"
  },
  {
    "path": "litemall-db/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: db\n  messages:\n    encoding: UTF-8\n\nlogging:\n  level:\n    root:  ERROR\n    org.springframework:  ERROR\n    org.mybatis:  ERROR\n    org.linlinjava.litemall.db:  DEBUG"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/GoodsProductMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.GoodsProductMapper\">\n    <update id=\"addStock\" parameterType=\"map\">\n        update litemall_goods_product\n        set number = number + #{num,jdbcType=INTEGER}, update_time = now()\n        where id = #{id,jdbcType=INTEGER}\n    </update>\n    <update id=\"reduceStock\" parameterType=\"map\">\n        update litemall_goods_product\n        set number = number - #{num,jdbcType=INTEGER}, update_time = now()\n        where id = #{id,jdbcType=INTEGER} and number >= #{num,jdbcType=INTEGER}\n    </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallAdMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallAdMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallAd\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"link\" jdbcType=\"VARCHAR\" property=\"link\" />\n    <result column=\"url\" jdbcType=\"VARCHAR\" property=\"url\" />\n    <result column=\"position\" jdbcType=\"TINYINT\" property=\"position\" />\n    <result column=\"content\" jdbcType=\"VARCHAR\" property=\"content\" />\n    <result column=\"start_time\" jdbcType=\"TIMESTAMP\" property=\"startTime\" />\n    <result column=\"end_time\" jdbcType=\"TIMESTAMP\" property=\"endTime\" />\n    <result column=\"enabled\" jdbcType=\"BIT\" property=\"enabled\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, link, url, `position`, content, start_time, end_time, enabled, add_time, \n    update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_ad\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_ad\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_ad\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_ad\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAd\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_ad (`name`, link, url, \n      `position`, content, start_time, \n      end_time, enabled, add_time, \n      update_time, deleted)\n    values (#{name,jdbcType=VARCHAR}, #{link,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, \n      #{position,jdbcType=TINYINT}, #{content,jdbcType=VARCHAR}, #{startTime,jdbcType=TIMESTAMP}, \n      #{endTime,jdbcType=TIMESTAMP}, #{enabled,jdbcType=BIT}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAd\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_ad\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"link != null\">\n        link,\n      </if>\n      <if test=\"url != null\">\n        url,\n      </if>\n      <if test=\"position != null\">\n        `position`,\n      </if>\n      <if test=\"content != null\">\n        content,\n      </if>\n      <if test=\"startTime != null\">\n        start_time,\n      </if>\n      <if test=\"endTime != null\">\n        end_time,\n      </if>\n      <if test=\"enabled != null\">\n        enabled,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"link != null\">\n        #{link,jdbcType=VARCHAR},\n      </if>\n      <if test=\"url != null\">\n        #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"position != null\">\n        #{position,jdbcType=TINYINT},\n      </if>\n      <if test=\"content != null\">\n        #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"startTime != null\">\n        #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"enabled != null\">\n        #{enabled,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.link != null\">\n        link = #{record.link,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.url != null\">\n        url = #{record.url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.position != null\">\n        `position` = #{record.position,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.content != null\">\n        content = #{record.content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.startTime != null\">\n        start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.endTime != null\">\n        end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.enabled != null\">\n        enabled = #{record.enabled,jdbcType=BIT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      link = #{record.link,jdbcType=VARCHAR},\n      url = #{record.url,jdbcType=VARCHAR},\n      `position` = #{record.position,jdbcType=TINYINT},\n      content = #{record.content,jdbcType=VARCHAR},\n      start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      enabled = #{record.enabled,jdbcType=BIT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAd\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"link != null\">\n        link = #{link,jdbcType=VARCHAR},\n      </if>\n      <if test=\"url != null\">\n        url = #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"position != null\">\n        `position` = #{position,jdbcType=TINYINT},\n      </if>\n      <if test=\"content != null\">\n        content = #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"startTime != null\">\n        start_time = #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        end_time = #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"enabled != null\">\n        enabled = #{enabled,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAd\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad\n    set `name` = #{name,jdbcType=VARCHAR},\n      link = #{link,jdbcType=VARCHAR},\n      url = #{url,jdbcType=VARCHAR},\n      `position` = #{position,jdbcType=TINYINT},\n      content = #{content,jdbcType=VARCHAR},\n      start_time = #{startTime,jdbcType=TIMESTAMP},\n      end_time = #{endTime,jdbcType=TIMESTAMP},\n      enabled = #{enabled,jdbcType=BIT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_ad\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_ad set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallAddressMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallAddressMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallAddress\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"province\" jdbcType=\"VARCHAR\" property=\"province\" />\n    <result column=\"city\" jdbcType=\"VARCHAR\" property=\"city\" />\n    <result column=\"county\" jdbcType=\"VARCHAR\" property=\"county\" />\n    <result column=\"address_detail\" jdbcType=\"VARCHAR\" property=\"addressDetail\" />\n    <result column=\"area_code\" jdbcType=\"CHAR\" property=\"areaCode\" />\n    <result column=\"postal_code\" jdbcType=\"CHAR\" property=\"postalCode\" />\n    <result column=\"tel\" jdbcType=\"VARCHAR\" property=\"tel\" />\n    <result column=\"is_default\" jdbcType=\"BIT\" property=\"isDefault\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, user_id, province, city, county, address_detail, area_code, postal_code, \n    tel, is_default, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddressExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_address\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_address\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_address\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_address\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddressExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddress\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_address (`name`, user_id, province, \n      city, county, address_detail, \n      area_code, postal_code, tel, \n      is_default, add_time, update_time, \n      deleted)\n    values (#{name,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}, #{province,jdbcType=VARCHAR}, \n      #{city,jdbcType=VARCHAR}, #{county,jdbcType=VARCHAR}, #{addressDetail,jdbcType=VARCHAR}, \n      #{areaCode,jdbcType=CHAR}, #{postalCode,jdbcType=CHAR}, #{tel,jdbcType=VARCHAR}, \n      #{isDefault,jdbcType=BIT}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddress\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_address\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"province != null\">\n        province,\n      </if>\n      <if test=\"city != null\">\n        city,\n      </if>\n      <if test=\"county != null\">\n        county,\n      </if>\n      <if test=\"addressDetail != null\">\n        address_detail,\n      </if>\n      <if test=\"areaCode != null\">\n        area_code,\n      </if>\n      <if test=\"postalCode != null\">\n        postal_code,\n      </if>\n      <if test=\"tel != null\">\n        tel,\n      </if>\n      <if test=\"isDefault != null\">\n        is_default,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"province != null\">\n        #{province,jdbcType=VARCHAR},\n      </if>\n      <if test=\"city != null\">\n        #{city,jdbcType=VARCHAR},\n      </if>\n      <if test=\"county != null\">\n        #{county,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addressDetail != null\">\n        #{addressDetail,jdbcType=VARCHAR},\n      </if>\n      <if test=\"areaCode != null\">\n        #{areaCode,jdbcType=CHAR},\n      </if>\n      <if test=\"postalCode != null\">\n        #{postalCode,jdbcType=CHAR},\n      </if>\n      <if test=\"tel != null\">\n        #{tel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isDefault != null\">\n        #{isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddressExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.province != null\">\n        province = #{record.province,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.city != null\">\n        city = #{record.city,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.county != null\">\n        county = #{record.county,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addressDetail != null\">\n        address_detail = #{record.addressDetail,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.areaCode != null\">\n        area_code = #{record.areaCode,jdbcType=CHAR},\n      </if>\n      <if test=\"record.postalCode != null\">\n        postal_code = #{record.postalCode,jdbcType=CHAR},\n      </if>\n      <if test=\"record.tel != null\">\n        tel = #{record.tel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.isDefault != null\">\n        is_default = #{record.isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      province = #{record.province,jdbcType=VARCHAR},\n      city = #{record.city,jdbcType=VARCHAR},\n      county = #{record.county,jdbcType=VARCHAR},\n      address_detail = #{record.addressDetail,jdbcType=VARCHAR},\n      area_code = #{record.areaCode,jdbcType=CHAR},\n      postal_code = #{record.postalCode,jdbcType=CHAR},\n      tel = #{record.tel,jdbcType=VARCHAR},\n      is_default = #{record.isDefault,jdbcType=BIT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddress\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"province != null\">\n        province = #{province,jdbcType=VARCHAR},\n      </if>\n      <if test=\"city != null\">\n        city = #{city,jdbcType=VARCHAR},\n      </if>\n      <if test=\"county != null\">\n        county = #{county,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addressDetail != null\">\n        address_detail = #{addressDetail,jdbcType=VARCHAR},\n      </if>\n      <if test=\"areaCode != null\">\n        area_code = #{areaCode,jdbcType=CHAR},\n      </if>\n      <if test=\"postalCode != null\">\n        postal_code = #{postalCode,jdbcType=CHAR},\n      </if>\n      <if test=\"tel != null\">\n        tel = #{tel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isDefault != null\">\n        is_default = #{isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddress\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address\n    set `name` = #{name,jdbcType=VARCHAR},\n      user_id = #{userId,jdbcType=INTEGER},\n      province = #{province,jdbcType=VARCHAR},\n      city = #{city,jdbcType=VARCHAR},\n      county = #{county,jdbcType=VARCHAR},\n      address_detail = #{addressDetail,jdbcType=VARCHAR},\n      area_code = #{areaCode,jdbcType=CHAR},\n      postal_code = #{postalCode,jdbcType=CHAR},\n      tel = #{tel,jdbcType=VARCHAR},\n      is_default = #{isDefault,jdbcType=BIT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAddressExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_address\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_address set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallAdminMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallAdminMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"username\" jdbcType=\"VARCHAR\" property=\"username\" />\n    <result column=\"password\" jdbcType=\"VARCHAR\" property=\"password\" />\n    <result column=\"last_login_ip\" jdbcType=\"VARCHAR\" property=\"lastLoginIp\" />\n    <result column=\"last_login_time\" jdbcType=\"TIMESTAMP\" property=\"lastLoginTime\" />\n    <result column=\"avatar\" jdbcType=\"VARCHAR\" property=\"avatar\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n    <result column=\"role_ids\" jdbcType=\"VARCHAR\" property=\"roleIds\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.roleIdsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.roleIdsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, username, `password`, last_login_ip, last_login_time, avatar, add_time, update_time, \n    deleted, role_ids\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdminExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_admin\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_admin\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_admin\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_admin\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdminExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_admin (username, `password`, last_login_ip, \n      last_login_time, avatar, add_time, \n      update_time, deleted, role_ids\n      )\n    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{lastLoginIp,jdbcType=VARCHAR}, \n      #{lastLoginTime,jdbcType=TIMESTAMP}, #{avatar,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}, #{roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_admin\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"username != null\">\n        username,\n      </if>\n      <if test=\"password != null\">\n        `password`,\n      </if>\n      <if test=\"lastLoginIp != null\">\n        last_login_ip,\n      </if>\n      <if test=\"lastLoginTime != null\">\n        last_login_time,\n      </if>\n      <if test=\"avatar != null\">\n        avatar,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n      <if test=\"roleIds != null\">\n        role_ids,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"username != null\">\n        #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"password != null\">\n        #{password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"lastLoginIp != null\">\n        #{lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"lastLoginTime != null\">\n        #{lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"avatar != null\">\n        #{avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"roleIds != null\">\n        #{roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdminExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.username != null\">\n        username = #{record.username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.password != null\">\n        `password` = #{record.password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.lastLoginIp != null\">\n        last_login_ip = #{record.lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.lastLoginTime != null\">\n        last_login_time = #{record.lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.avatar != null\">\n        avatar = #{record.avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n      <if test=\"record.roleIds != null\">\n        role_ids = #{record.roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin\n    set id = #{record.id,jdbcType=INTEGER},\n      username = #{record.username,jdbcType=VARCHAR},\n      `password` = #{record.password,jdbcType=VARCHAR},\n      last_login_ip = #{record.lastLoginIp,jdbcType=VARCHAR},\n      last_login_time = #{record.lastLoginTime,jdbcType=TIMESTAMP},\n      avatar = #{record.avatar,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT},\n      role_ids = #{record.roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin\n    <set>\n      <if test=\"username != null\">\n        username = #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"password != null\">\n        `password` = #{password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"lastLoginIp != null\">\n        last_login_ip = #{lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"lastLoginTime != null\">\n        last_login_time = #{lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"avatar != null\">\n        avatar = #{avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"roleIds != null\">\n        role_ids = #{roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin\n    set username = #{username,jdbcType=VARCHAR},\n      `password` = #{password,jdbcType=VARCHAR},\n      last_login_ip = #{lastLoginIp,jdbcType=VARCHAR},\n      last_login_time = #{lastLoginTime,jdbcType=TIMESTAMP},\n      avatar = #{avatar,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT},\n      role_ids = #{roleIds,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAdminExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_admin set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallAftersaleMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallAftersaleMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallAftersale\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"aftersale_sn\" jdbcType=\"VARCHAR\" property=\"aftersaleSn\" />\n    <result column=\"order_id\" jdbcType=\"INTEGER\" property=\"orderId\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"type\" jdbcType=\"SMALLINT\" property=\"type\" />\n    <result column=\"reason\" jdbcType=\"VARCHAR\" property=\"reason\" />\n    <result column=\"amount\" jdbcType=\"DECIMAL\" property=\"amount\" />\n    <result column=\"pictures\" jdbcType=\"VARCHAR\" property=\"pictures\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"comment\" jdbcType=\"VARCHAR\" property=\"comment\" />\n    <result column=\"status\" jdbcType=\"SMALLINT\" property=\"status\" />\n    <result column=\"handle_time\" jdbcType=\"TIMESTAMP\" property=\"handleTime\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picturesCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picturesCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, aftersale_sn, order_id, user_id, `type`, reason, amount, pictures, `comment`, \n    `status`, handle_time, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersaleExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_aftersale\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_aftersale\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_aftersale\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_aftersale\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersaleExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersale\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_aftersale (aftersale_sn, order_id, user_id, \n      `type`, reason, amount, \n      pictures, \n      `comment`, `status`, handle_time, \n      add_time, update_time, deleted\n      )\n    values (#{aftersaleSn,jdbcType=VARCHAR}, #{orderId,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER}, \n      #{type,jdbcType=SMALLINT}, #{reason,jdbcType=VARCHAR}, #{amount,jdbcType=DECIMAL}, \n      #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{comment,jdbcType=VARCHAR}, #{status,jdbcType=SMALLINT}, #{handleTime,jdbcType=TIMESTAMP}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersale\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_aftersale\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"aftersaleSn != null\">\n        aftersale_sn,\n      </if>\n      <if test=\"orderId != null\">\n        order_id,\n      </if>\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"reason != null\">\n        reason,\n      </if>\n      <if test=\"amount != null\">\n        amount,\n      </if>\n      <if test=\"pictures != null\">\n        pictures,\n      </if>\n      <if test=\"comment != null\">\n        `comment`,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"handleTime != null\">\n        handle_time,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"aftersaleSn != null\">\n        #{aftersaleSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"orderId != null\">\n        #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"reason != null\">\n        #{reason,jdbcType=VARCHAR},\n      </if>\n      <if test=\"amount != null\">\n        #{amount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"pictures != null\">\n        #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"comment != null\">\n        #{comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"handleTime != null\">\n        #{handleTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersaleExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.aftersaleSn != null\">\n        aftersale_sn = #{record.aftersaleSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.orderId != null\">\n        order_id = #{record.orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.reason != null\">\n        reason = #{record.reason,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.amount != null\">\n        amount = #{record.amount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.pictures != null\">\n        pictures = #{record.pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.comment != null\">\n        `comment` = #{record.comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.handleTime != null\">\n        handle_time = #{record.handleTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale\n    set id = #{record.id,jdbcType=INTEGER},\n      aftersale_sn = #{record.aftersaleSn,jdbcType=VARCHAR},\n      order_id = #{record.orderId,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      `type` = #{record.type,jdbcType=SMALLINT},\n      reason = #{record.reason,jdbcType=VARCHAR},\n      amount = #{record.amount,jdbcType=DECIMAL},\n      pictures = #{record.pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      `comment` = #{record.comment,jdbcType=VARCHAR},\n      `status` = #{record.status,jdbcType=SMALLINT},\n      handle_time = #{record.handleTime,jdbcType=TIMESTAMP},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersale\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale\n    <set>\n      <if test=\"aftersaleSn != null\">\n        aftersale_sn = #{aftersaleSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"orderId != null\">\n        order_id = #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"reason != null\">\n        reason = #{reason,jdbcType=VARCHAR},\n      </if>\n      <if test=\"amount != null\">\n        amount = #{amount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"pictures != null\">\n        pictures = #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"comment != null\">\n        `comment` = #{comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"handleTime != null\">\n        handle_time = #{handleTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersale\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale\n    set aftersale_sn = #{aftersaleSn,jdbcType=VARCHAR},\n      order_id = #{orderId,jdbcType=INTEGER},\n      user_id = #{userId,jdbcType=INTEGER},\n      `type` = #{type,jdbcType=SMALLINT},\n      reason = #{reason,jdbcType=VARCHAR},\n      amount = #{amount,jdbcType=DECIMAL},\n      pictures = #{pictures,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      `comment` = #{comment,jdbcType=VARCHAR},\n      `status` = #{status,jdbcType=SMALLINT},\n      handle_time = #{handleTime,jdbcType=TIMESTAMP},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallAftersaleExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_aftersale\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_aftersale set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallBrandMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallBrandMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallBrand\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"desc\" jdbcType=\"VARCHAR\" property=\"desc\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"sort_order\" jdbcType=\"TINYINT\" property=\"sortOrder\" />\n    <result column=\"floor_price\" jdbcType=\"DECIMAL\" property=\"floorPrice\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, `desc`, pic_url, sort_order, floor_price, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrandExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_brand\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_brand\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_brand\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_brand\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrandExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrand\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_brand (`name`, `desc`, pic_url, \n      sort_order, floor_price, add_time, \n      update_time, deleted)\n    values (#{name,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, \n      #{sortOrder,jdbcType=TINYINT}, #{floorPrice,jdbcType=DECIMAL}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrand\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_brand\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"desc != null\">\n        `desc`,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order,\n      </if>\n      <if test=\"floorPrice != null\">\n        floor_price,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        #{sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"floorPrice != null\">\n        #{floorPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrandExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.desc != null\">\n        `desc` = #{record.desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.sortOrder != null\">\n        sort_order = #{record.sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.floorPrice != null\">\n        floor_price = #{record.floorPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      `desc` = #{record.desc,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      sort_order = #{record.sortOrder,jdbcType=TINYINT},\n      floor_price = #{record.floorPrice,jdbcType=DECIMAL},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrand\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        `desc` = #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order = #{sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"floorPrice != null\">\n        floor_price = #{floorPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrand\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand\n    set `name` = #{name,jdbcType=VARCHAR},\n      `desc` = #{desc,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      sort_order = #{sortOrder,jdbcType=TINYINT},\n      floor_price = #{floorPrice,jdbcType=DECIMAL},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallBrandExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_brand\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_brand set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCartMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCartMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallCart\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"goods_sn\" jdbcType=\"VARCHAR\" property=\"goodsSn\" />\n    <result column=\"goods_name\" jdbcType=\"VARCHAR\" property=\"goodsName\" />\n    <result column=\"product_id\" jdbcType=\"INTEGER\" property=\"productId\" />\n    <result column=\"price\" jdbcType=\"DECIMAL\" property=\"price\" />\n    <result column=\"number\" jdbcType=\"SMALLINT\" property=\"number\" />\n    <result column=\"specifications\" jdbcType=\"VARCHAR\" property=\"specifications\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"checked\" jdbcType=\"BIT\" property=\"checked\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, goods_id, goods_sn, goods_name, product_id, price, `number`, specifications, \n    `checked`, pic_url, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCartExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_cart\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_cart\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_cart\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_cart\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCartExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCart\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_cart (user_id, goods_id, goods_sn, \n      goods_name, product_id, price, \n      `number`, specifications, \n      `checked`, pic_url, add_time, \n      update_time, deleted)\n    values (#{userId,jdbcType=INTEGER}, #{goodsId,jdbcType=INTEGER}, #{goodsSn,jdbcType=VARCHAR}, \n      #{goodsName,jdbcType=VARCHAR}, #{productId,jdbcType=INTEGER}, #{price,jdbcType=DECIMAL}, \n      #{number,jdbcType=SMALLINT}, #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{checked,jdbcType=BIT}, #{picUrl,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCart\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_cart\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"goodsSn != null\">\n        goods_sn,\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name,\n      </if>\n      <if test=\"productId != null\">\n        product_id,\n      </if>\n      <if test=\"price != null\">\n        price,\n      </if>\n      <if test=\"number != null\">\n        `number`,\n      </if>\n      <if test=\"specifications != null\">\n        specifications,\n      </if>\n      <if test=\"checked != null\">\n        `checked`,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsSn != null\">\n        #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsName != null\">\n        #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"productId != null\">\n        #{productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"price != null\">\n        #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"number != null\">\n        #{number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"specifications != null\">\n        #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"checked != null\">\n        #{checked,jdbcType=BIT},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCartExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsSn != null\">\n        goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.goodsName != null\">\n        goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.productId != null\">\n        product_id = #{record.productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.price != null\">\n        price = #{record.price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.number != null\">\n        `number` = #{record.number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.specifications != null\">\n        specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.checked != null\">\n        `checked` = #{record.checked,jdbcType=BIT},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      product_id = #{record.productId,jdbcType=INTEGER},\n      price = #{record.price,jdbcType=DECIMAL},\n      `number` = #{record.number,jdbcType=SMALLINT},\n      specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      `checked` = #{record.checked,jdbcType=BIT},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCart\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsSn != null\">\n        goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name = #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"productId != null\">\n        product_id = #{productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"price != null\">\n        price = #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"number != null\">\n        `number` = #{number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"specifications != null\">\n        specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"checked != null\">\n        `checked` = #{checked,jdbcType=BIT},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCart\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart\n    set user_id = #{userId,jdbcType=INTEGER},\n      goods_id = #{goodsId,jdbcType=INTEGER},\n      goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      goods_name = #{goodsName,jdbcType=VARCHAR},\n      product_id = #{productId,jdbcType=INTEGER},\n      price = #{price,jdbcType=DECIMAL},\n      `number` = #{number,jdbcType=SMALLINT},\n      specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      `checked` = #{checked,jdbcType=BIT},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCartExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_cart\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_cart set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCategoryMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCategoryMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallCategory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"keywords\" jdbcType=\"VARCHAR\" property=\"keywords\" />\n    <result column=\"desc\" jdbcType=\"VARCHAR\" property=\"desc\" />\n    <result column=\"pid\" jdbcType=\"INTEGER\" property=\"pid\" />\n    <result column=\"icon_url\" jdbcType=\"VARCHAR\" property=\"iconUrl\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"level\" jdbcType=\"VARCHAR\" property=\"level\" />\n    <result column=\"sort_order\" jdbcType=\"TINYINT\" property=\"sortOrder\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, keywords, `desc`, pid, icon_url, pic_url, `level`, sort_order, add_time, \n    update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategoryExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_category\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_category\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_category\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_category\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategoryExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_category (`name`, keywords, `desc`, \n      pid, icon_url, pic_url, \n      `level`, sort_order, add_time, \n      update_time, deleted)\n    values (#{name,jdbcType=VARCHAR}, #{keywords,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, \n      #{pid,jdbcType=INTEGER}, #{iconUrl,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, \n      #{level,jdbcType=VARCHAR}, #{sortOrder,jdbcType=TINYINT}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_category\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"keywords != null\">\n        keywords,\n      </if>\n      <if test=\"desc != null\">\n        `desc`,\n      </if>\n      <if test=\"pid != null\">\n        pid,\n      </if>\n      <if test=\"iconUrl != null\">\n        icon_url,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"level != null\">\n        `level`,\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"keywords != null\">\n        #{keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"pid != null\">\n        #{pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"iconUrl != null\">\n        #{iconUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"level != null\">\n        #{level,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        #{sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategoryExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.keywords != null\">\n        keywords = #{record.keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.desc != null\">\n        `desc` = #{record.desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.pid != null\">\n        pid = #{record.pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.iconUrl != null\">\n        icon_url = #{record.iconUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.level != null\">\n        `level` = #{record.level,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.sortOrder != null\">\n        sort_order = #{record.sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      keywords = #{record.keywords,jdbcType=VARCHAR},\n      `desc` = #{record.desc,jdbcType=VARCHAR},\n      pid = #{record.pid,jdbcType=INTEGER},\n      icon_url = #{record.iconUrl,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      `level` = #{record.level,jdbcType=VARCHAR},\n      sort_order = #{record.sortOrder,jdbcType=TINYINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"keywords != null\">\n        keywords = #{keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        `desc` = #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"pid != null\">\n        pid = #{pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"iconUrl != null\">\n        icon_url = #{iconUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"level != null\">\n        `level` = #{level,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order = #{sortOrder,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category\n    set `name` = #{name,jdbcType=VARCHAR},\n      keywords = #{keywords,jdbcType=VARCHAR},\n      `desc` = #{desc,jdbcType=VARCHAR},\n      pid = #{pid,jdbcType=INTEGER},\n      icon_url = #{iconUrl,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      `level` = #{level,jdbcType=VARCHAR},\n      sort_order = #{sortOrder,jdbcType=TINYINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCategoryExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_category\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_category set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCollectMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCollectMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallCollect\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"value_id\" jdbcType=\"INTEGER\" property=\"valueId\" />\n    <result column=\"type\" jdbcType=\"TINYINT\" property=\"type\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, value_id, `type`, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollectExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_collect\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_collect\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_collect\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_collect\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollectExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollect\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_collect (user_id, value_id, `type`, \n      add_time, update_time, deleted\n      )\n    values (#{userId,jdbcType=INTEGER}, #{valueId,jdbcType=INTEGER}, #{type,jdbcType=TINYINT}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollect\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_collect\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"valueId != null\">\n        value_id,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"valueId != null\">\n        #{valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollectExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.valueId != null\">\n        value_id = #{record.valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      value_id = #{record.valueId,jdbcType=INTEGER},\n      `type` = #{record.type,jdbcType=TINYINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollect\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"valueId != null\">\n        value_id = #{valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollect\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect\n    set user_id = #{userId,jdbcType=INTEGER},\n      value_id = #{valueId,jdbcType=INTEGER},\n      `type` = #{type,jdbcType=TINYINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCollectExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_collect\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_collect set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCommentMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCommentMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallComment\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"value_id\" jdbcType=\"INTEGER\" property=\"valueId\" />\n    <result column=\"type\" jdbcType=\"TINYINT\" property=\"type\" />\n    <result column=\"content\" jdbcType=\"VARCHAR\" property=\"content\" />\n    <result column=\"admin_content\" jdbcType=\"VARCHAR\" property=\"adminContent\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"has_picture\" jdbcType=\"BIT\" property=\"hasPicture\" />\n    <result column=\"pic_urls\" jdbcType=\"VARCHAR\" property=\"picUrls\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"star\" jdbcType=\"SMALLINT\" property=\"star\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picUrlsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picUrlsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, value_id, `type`, content, admin_content, user_id, has_picture, pic_urls, star, \n    add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCommentExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_comment\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_comment\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_comment\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_comment\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCommentExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallComment\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_comment (value_id, `type`, content, \n      admin_content, user_id, has_picture, \n      pic_urls, \n      star, add_time, update_time, \n      deleted)\n    values (#{valueId,jdbcType=INTEGER}, #{type,jdbcType=TINYINT}, #{content,jdbcType=VARCHAR}, \n      #{adminContent,jdbcType=VARCHAR}, #{userId,jdbcType=INTEGER}, #{hasPicture,jdbcType=BIT}, \n      #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{star,jdbcType=SMALLINT}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallComment\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_comment\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"valueId != null\">\n        value_id,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"content != null\">\n        content,\n      </if>\n      <if test=\"adminContent != null\">\n        admin_content,\n      </if>\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"hasPicture != null\">\n        has_picture,\n      </if>\n      <if test=\"picUrls != null\">\n        pic_urls,\n      </if>\n      <if test=\"star != null\">\n        star,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"valueId != null\">\n        #{valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"content != null\">\n        #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminContent != null\">\n        #{adminContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"hasPicture != null\">\n        #{hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"picUrls != null\">\n        #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"star != null\">\n        #{star,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCommentExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.valueId != null\">\n        value_id = #{record.valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.content != null\">\n        content = #{record.content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.adminContent != null\">\n        admin_content = #{record.adminContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.hasPicture != null\">\n        has_picture = #{record.hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"record.picUrls != null\">\n        pic_urls = #{record.picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.star != null\">\n        star = #{record.star,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment\n    set id = #{record.id,jdbcType=INTEGER},\n      value_id = #{record.valueId,jdbcType=INTEGER},\n      `type` = #{record.type,jdbcType=TINYINT},\n      content = #{record.content,jdbcType=VARCHAR},\n      admin_content = #{record.adminContent,jdbcType=VARCHAR},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      has_picture = #{record.hasPicture,jdbcType=BIT},\n      pic_urls = #{record.picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      star = #{record.star,jdbcType=SMALLINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallComment\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment\n    <set>\n      <if test=\"valueId != null\">\n        value_id = #{valueId,jdbcType=INTEGER},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"content != null\">\n        content = #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminContent != null\">\n        admin_content = #{adminContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"hasPicture != null\">\n        has_picture = #{hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"picUrls != null\">\n        pic_urls = #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"star != null\">\n        star = #{star,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallComment\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment\n    set value_id = #{valueId,jdbcType=INTEGER},\n      `type` = #{type,jdbcType=TINYINT},\n      content = #{content,jdbcType=VARCHAR},\n      admin_content = #{adminContent,jdbcType=VARCHAR},\n      user_id = #{userId,jdbcType=INTEGER},\n      has_picture = #{hasPicture,jdbcType=BIT},\n      pic_urls = #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      star = #{star,jdbcType=SMALLINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCommentExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_comment\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_comment set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCouponMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCouponMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallCoupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"desc\" jdbcType=\"VARCHAR\" property=\"desc\" />\n    <result column=\"tag\" jdbcType=\"VARCHAR\" property=\"tag\" />\n    <result column=\"total\" jdbcType=\"INTEGER\" property=\"total\" />\n    <result column=\"discount\" jdbcType=\"DECIMAL\" property=\"discount\" />\n    <result column=\"min\" jdbcType=\"DECIMAL\" property=\"min\" />\n    <result column=\"limit\" jdbcType=\"SMALLINT\" property=\"limit\" />\n    <result column=\"type\" jdbcType=\"SMALLINT\" property=\"type\" />\n    <result column=\"status\" jdbcType=\"SMALLINT\" property=\"status\" />\n    <result column=\"goods_type\" jdbcType=\"SMALLINT\" property=\"goodsType\" />\n    <result column=\"goods_value\" jdbcType=\"VARCHAR\" property=\"goodsValue\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\" />\n    <result column=\"code\" jdbcType=\"VARCHAR\" property=\"code\" />\n    <result column=\"time_type\" jdbcType=\"SMALLINT\" property=\"timeType\" />\n    <result column=\"days\" jdbcType=\"SMALLINT\" property=\"days\" />\n    <result column=\"start_time\" jdbcType=\"TIMESTAMP\" property=\"startTime\" />\n    <result column=\"end_time\" jdbcType=\"TIMESTAMP\" property=\"endTime\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.goodsValueCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.goodsValueCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, `desc`, tag, total, discount, `min`, `limit`, `type`, `status`, goods_type, \n    goods_value, code, time_type, `days`, start_time, end_time, add_time, update_time, \n    deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_coupon\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCoupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_coupon (`name`, `desc`, tag, \n      total, discount, `min`, \n      `limit`, `type`, `status`, \n      goods_type, goods_value, \n      code, time_type, `days`, \n      start_time, end_time, add_time, \n      update_time, deleted)\n    values (#{name,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{tag,jdbcType=VARCHAR}, \n      #{total,jdbcType=INTEGER}, #{discount,jdbcType=DECIMAL}, #{min,jdbcType=DECIMAL}, \n      #{limit,jdbcType=SMALLINT}, #{type,jdbcType=SMALLINT}, #{status,jdbcType=SMALLINT}, \n      #{goodsType,jdbcType=SMALLINT}, #{goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}, \n      #{code,jdbcType=VARCHAR}, #{timeType,jdbcType=SMALLINT}, #{days,jdbcType=SMALLINT}, \n      #{startTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCoupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_coupon\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"desc != null\">\n        `desc`,\n      </if>\n      <if test=\"tag != null\">\n        tag,\n      </if>\n      <if test=\"total != null\">\n        total,\n      </if>\n      <if test=\"discount != null\">\n        discount,\n      </if>\n      <if test=\"min != null\">\n        `min`,\n      </if>\n      <if test=\"limit != null\">\n        `limit`,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"goodsType != null\">\n        goods_type,\n      </if>\n      <if test=\"goodsValue != null\">\n        goods_value,\n      </if>\n      <if test=\"code != null\">\n        code,\n      </if>\n      <if test=\"timeType != null\">\n        time_type,\n      </if>\n      <if test=\"days != null\">\n        `days`,\n      </if>\n      <if test=\"startTime != null\">\n        start_time,\n      </if>\n      <if test=\"endTime != null\">\n        end_time,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"tag != null\">\n        #{tag,jdbcType=VARCHAR},\n      </if>\n      <if test=\"total != null\">\n        #{total,jdbcType=INTEGER},\n      </if>\n      <if test=\"discount != null\">\n        #{discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"min != null\">\n        #{min,jdbcType=DECIMAL},\n      </if>\n      <if test=\"limit != null\">\n        #{limit,jdbcType=SMALLINT},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"goodsType != null\">\n        #{goodsType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"goodsValue != null\">\n        #{goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"code != null\">\n        #{code,jdbcType=VARCHAR},\n      </if>\n      <if test=\"timeType != null\">\n        #{timeType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"days != null\">\n        #{days,jdbcType=SMALLINT},\n      </if>\n      <if test=\"startTime != null\">\n        #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.desc != null\">\n        `desc` = #{record.desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.tag != null\">\n        tag = #{record.tag,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.total != null\">\n        total = #{record.total,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.discount != null\">\n        discount = #{record.discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.min != null\">\n        `min` = #{record.min,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.limit != null\">\n        `limit` = #{record.limit,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.goodsType != null\">\n        goods_type = #{record.goodsType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.goodsValue != null\">\n        goods_value = #{record.goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"record.code != null\">\n        code = #{record.code,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.timeType != null\">\n        time_type = #{record.timeType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.days != null\">\n        `days` = #{record.days,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.startTime != null\">\n        start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.endTime != null\">\n        end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      `desc` = #{record.desc,jdbcType=VARCHAR},\n      tag = #{record.tag,jdbcType=VARCHAR},\n      total = #{record.total,jdbcType=INTEGER},\n      discount = #{record.discount,jdbcType=DECIMAL},\n      `min` = #{record.min,jdbcType=DECIMAL},\n      `limit` = #{record.limit,jdbcType=SMALLINT},\n      `type` = #{record.type,jdbcType=SMALLINT},\n      `status` = #{record.status,jdbcType=SMALLINT},\n      goods_type = #{record.goodsType,jdbcType=SMALLINT},\n      goods_value = #{record.goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      code = #{record.code,jdbcType=VARCHAR},\n      time_type = #{record.timeType,jdbcType=SMALLINT},\n      `days` = #{record.days,jdbcType=SMALLINT},\n      start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCoupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        `desc` = #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"tag != null\">\n        tag = #{tag,jdbcType=VARCHAR},\n      </if>\n      <if test=\"total != null\">\n        total = #{total,jdbcType=INTEGER},\n      </if>\n      <if test=\"discount != null\">\n        discount = #{discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"min != null\">\n        `min` = #{min,jdbcType=DECIMAL},\n      </if>\n      <if test=\"limit != null\">\n        `limit` = #{limit,jdbcType=SMALLINT},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=SMALLINT},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"goodsType != null\">\n        goods_type = #{goodsType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"goodsValue != null\">\n        goods_value = #{goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"code != null\">\n        code = #{code,jdbcType=VARCHAR},\n      </if>\n      <if test=\"timeType != null\">\n        time_type = #{timeType,jdbcType=SMALLINT},\n      </if>\n      <if test=\"days != null\">\n        `days` = #{days,jdbcType=SMALLINT},\n      </if>\n      <if test=\"startTime != null\">\n        start_time = #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        end_time = #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCoupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon\n    set `name` = #{name,jdbcType=VARCHAR},\n      `desc` = #{desc,jdbcType=VARCHAR},\n      tag = #{tag,jdbcType=VARCHAR},\n      total = #{total,jdbcType=INTEGER},\n      discount = #{discount,jdbcType=DECIMAL},\n      `min` = #{min,jdbcType=DECIMAL},\n      `limit` = #{limit,jdbcType=SMALLINT},\n      `type` = #{type,jdbcType=SMALLINT},\n      `status` = #{status,jdbcType=SMALLINT},\n      goods_type = #{goodsType,jdbcType=SMALLINT},\n      goods_value = #{goodsValue,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      code = #{code,jdbcType=VARCHAR},\n      time_type = #{timeType,jdbcType=SMALLINT},\n      `days` = #{days,jdbcType=SMALLINT},\n      start_time = #{startTime,jdbcType=TIMESTAMP},\n      end_time = #{endTime,jdbcType=TIMESTAMP},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallCouponUserMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallCouponUserMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallCouponUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"coupon_id\" jdbcType=\"INTEGER\" property=\"couponId\" />\n    <result column=\"status\" jdbcType=\"SMALLINT\" property=\"status\" />\n    <result column=\"used_time\" jdbcType=\"TIMESTAMP\" property=\"usedTime\" />\n    <result column=\"start_time\" jdbcType=\"TIMESTAMP\" property=\"startTime\" />\n    <result column=\"end_time\" jdbcType=\"TIMESTAMP\" property=\"endTime\" />\n    <result column=\"order_id\" jdbcType=\"INTEGER\" property=\"orderId\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, coupon_id, `status`, used_time, start_time, end_time, order_id, add_time, \n    update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUserExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon_user\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon_user\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon_user\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_coupon_user\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUserExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_coupon_user (user_id, coupon_id, `status`, \n      used_time, start_time, end_time, \n      order_id, add_time, update_time, \n      deleted)\n    values (#{userId,jdbcType=INTEGER}, #{couponId,jdbcType=INTEGER}, #{status,jdbcType=SMALLINT}, \n      #{usedTime,jdbcType=TIMESTAMP}, #{startTime,jdbcType=TIMESTAMP}, #{endTime,jdbcType=TIMESTAMP}, \n      #{orderId,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_coupon_user\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"couponId != null\">\n        coupon_id,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"usedTime != null\">\n        used_time,\n      </if>\n      <if test=\"startTime != null\">\n        start_time,\n      </if>\n      <if test=\"endTime != null\">\n        end_time,\n      </if>\n      <if test=\"orderId != null\">\n        order_id,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"couponId != null\">\n        #{couponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"usedTime != null\">\n        #{usedTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"startTime != null\">\n        #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"orderId != null\">\n        #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUserExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.couponId != null\">\n        coupon_id = #{record.couponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.usedTime != null\">\n        used_time = #{record.usedTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.startTime != null\">\n        start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.endTime != null\">\n        end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.orderId != null\">\n        order_id = #{record.orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      coupon_id = #{record.couponId,jdbcType=INTEGER},\n      `status` = #{record.status,jdbcType=SMALLINT},\n      used_time = #{record.usedTime,jdbcType=TIMESTAMP},\n      start_time = #{record.startTime,jdbcType=TIMESTAMP},\n      end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      order_id = #{record.orderId,jdbcType=INTEGER},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"couponId != null\">\n        coupon_id = #{couponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"usedTime != null\">\n        used_time = #{usedTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"startTime != null\">\n        start_time = #{startTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"endTime != null\">\n        end_time = #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"orderId != null\">\n        order_id = #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user\n    set user_id = #{userId,jdbcType=INTEGER},\n      coupon_id = #{couponId,jdbcType=INTEGER},\n      `status` = #{status,jdbcType=SMALLINT},\n      used_time = #{usedTime,jdbcType=TIMESTAMP},\n      start_time = #{startTime,jdbcType=TIMESTAMP},\n      end_time = #{endTime,jdbcType=TIMESTAMP},\n      order_id = #{orderId,jdbcType=INTEGER},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallCouponUserExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_coupon_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_coupon_user set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallFeedbackMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallFeedbackMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallFeedback\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"username\" jdbcType=\"VARCHAR\" property=\"username\" />\n    <result column=\"mobile\" jdbcType=\"VARCHAR\" property=\"mobile\" />\n    <result column=\"feed_type\" jdbcType=\"VARCHAR\" property=\"feedType\" />\n    <result column=\"content\" jdbcType=\"VARCHAR\" property=\"content\" />\n    <result column=\"status\" jdbcType=\"INTEGER\" property=\"status\" />\n    <result column=\"has_picture\" jdbcType=\"BIT\" property=\"hasPicture\" />\n    <result column=\"pic_urls\" jdbcType=\"VARCHAR\" property=\"picUrls\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picUrlsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.picUrlsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, username, mobile, feed_type, content, `status`, has_picture, pic_urls, \n    add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedbackExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_feedback\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_feedback\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_feedback\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_feedback\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedbackExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedback\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_feedback (user_id, username, mobile, \n      feed_type, content, `status`, \n      has_picture, pic_urls, \n      add_time, update_time, deleted\n      )\n    values (#{userId,jdbcType=INTEGER}, #{username,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, \n      #{feedType,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{status,jdbcType=INTEGER}, \n      #{hasPicture,jdbcType=BIT}, #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedback\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_feedback\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"username != null\">\n        username,\n      </if>\n      <if test=\"mobile != null\">\n        mobile,\n      </if>\n      <if test=\"feedType != null\">\n        feed_type,\n      </if>\n      <if test=\"content != null\">\n        content,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"hasPicture != null\">\n        has_picture,\n      </if>\n      <if test=\"picUrls != null\">\n        pic_urls,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"username != null\">\n        #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"feedType != null\">\n        #{feedType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"content != null\">\n        #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=INTEGER},\n      </if>\n      <if test=\"hasPicture != null\">\n        #{hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"picUrls != null\">\n        #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedbackExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.username != null\">\n        username = #{record.username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.mobile != null\">\n        mobile = #{record.mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.feedType != null\">\n        feed_type = #{record.feedType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.content != null\">\n        content = #{record.content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.hasPicture != null\">\n        has_picture = #{record.hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"record.picUrls != null\">\n        pic_urls = #{record.picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      username = #{record.username,jdbcType=VARCHAR},\n      mobile = #{record.mobile,jdbcType=VARCHAR},\n      feed_type = #{record.feedType,jdbcType=VARCHAR},\n      content = #{record.content,jdbcType=VARCHAR},\n      `status` = #{record.status,jdbcType=INTEGER},\n      has_picture = #{record.hasPicture,jdbcType=BIT},\n      pic_urls = #{record.picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedback\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"username != null\">\n        username = #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        mobile = #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"feedType != null\">\n        feed_type = #{feedType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"content != null\">\n        content = #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=INTEGER},\n      </if>\n      <if test=\"hasPicture != null\">\n        has_picture = #{hasPicture,jdbcType=BIT},\n      </if>\n      <if test=\"picUrls != null\">\n        pic_urls = #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedback\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback\n    set user_id = #{userId,jdbcType=INTEGER},\n      username = #{username,jdbcType=VARCHAR},\n      mobile = #{mobile,jdbcType=VARCHAR},\n      feed_type = #{feedType,jdbcType=VARCHAR},\n      content = #{content,jdbcType=VARCHAR},\n      `status` = #{status,jdbcType=INTEGER},\n      has_picture = #{hasPicture,jdbcType=BIT},\n      pic_urls = #{picUrls,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFeedbackExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_feedback\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_feedback set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallFootprintMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallFootprintMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallFootprint\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, goods_id, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprintExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_footprint\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_footprint\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_footprint\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_footprint\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprintExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprint\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_footprint (user_id, goods_id, add_time, \n      update_time, deleted)\n    values (#{userId,jdbcType=INTEGER}, #{goodsId,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprint\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_footprint\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprintExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprint\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprint\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint\n    set user_id = #{userId,jdbcType=INTEGER},\n      goods_id = #{goodsId,jdbcType=INTEGER},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallFootprintExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_footprint\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_footprint set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGoodsAttributeMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGoodsAttributeMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttribute\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"attribute\" jdbcType=\"VARCHAR\" property=\"attribute\" />\n    <result column=\"value\" jdbcType=\"VARCHAR\" property=\"value\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, goods_id, `attribute`, `value`, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_attribute\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_attribute\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_attribute\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_attribute\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttribute\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_attribute (goods_id, `attribute`, `value`, \n      add_time, update_time, deleted\n      )\n    values (#{goodsId,jdbcType=INTEGER}, #{attribute,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttribute\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_attribute\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"attribute != null\">\n        `attribute`,\n      </if>\n      <if test=\"value != null\">\n        `value`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"attribute != null\">\n        #{attribute,jdbcType=VARCHAR},\n      </if>\n      <if test=\"value != null\">\n        #{value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.attribute != null\">\n        `attribute` = #{record.attribute,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.value != null\">\n        `value` = #{record.value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      `attribute` = #{record.attribute,jdbcType=VARCHAR},\n      `value` = #{record.value,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttribute\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute\n    <set>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"attribute != null\">\n        `attribute` = #{attribute,jdbcType=VARCHAR},\n      </if>\n      <if test=\"value != null\">\n        `value` = #{value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttribute\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute\n    set goods_id = #{goodsId,jdbcType=INTEGER},\n      `attribute` = #{attribute,jdbcType=VARCHAR},\n      `value` = #{value,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsAttributeExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_attribute\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_attribute set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGoodsMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGoodsMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"goods_sn\" jdbcType=\"VARCHAR\" property=\"goodsSn\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"category_id\" jdbcType=\"INTEGER\" property=\"categoryId\" />\n    <result column=\"brand_id\" jdbcType=\"INTEGER\" property=\"brandId\" />\n    <result column=\"gallery\" jdbcType=\"VARCHAR\" property=\"gallery\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"keywords\" jdbcType=\"VARCHAR\" property=\"keywords\" />\n    <result column=\"brief\" jdbcType=\"VARCHAR\" property=\"brief\" />\n    <result column=\"is_on_sale\" jdbcType=\"BIT\" property=\"isOnSale\" />\n    <result column=\"sort_order\" jdbcType=\"SMALLINT\" property=\"sortOrder\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"share_url\" jdbcType=\"VARCHAR\" property=\"shareUrl\" />\n    <result column=\"is_new\" jdbcType=\"BIT\" property=\"isNew\" />\n    <result column=\"is_hot\" jdbcType=\"BIT\" property=\"isHot\" />\n    <result column=\"unit\" jdbcType=\"VARCHAR\" property=\"unit\" />\n    <result column=\"counter_price\" jdbcType=\"DECIMAL\" property=\"counterPrice\" />\n    <result column=\"retail_price\" jdbcType=\"DECIMAL\" property=\"retailPrice\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <resultMap extends=\"BaseResultMap\" id=\"ResultMapWithBLOBs\" type=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <result column=\"detail\" jdbcType=\"LONGVARCHAR\" property=\"detail\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.galleryCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.galleryCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, goods_sn, `name`, category_id, brand_id, gallery, keywords, brief, is_on_sale, \n    sort_order, pic_url, share_url, is_new, is_hot, unit, counter_price, retail_price, \n    add_time, update_time, deleted\n  </sql>\n  <sql id=\"Blob_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    detail\n  </sql>\n  <select id=\"selectByExampleWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_goods\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_goods\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods (goods_sn, `name`, category_id, \n      brand_id, gallery, \n      keywords, brief, is_on_sale, \n      sort_order, pic_url, share_url, \n      is_new, is_hot, unit, counter_price, \n      retail_price, add_time, update_time, \n      deleted, detail)\n    values (#{goodsSn,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{categoryId,jdbcType=INTEGER}, \n      #{brandId,jdbcType=INTEGER}, #{gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{keywords,jdbcType=VARCHAR}, #{brief,jdbcType=VARCHAR}, #{isOnSale,jdbcType=BIT}, \n      #{sortOrder,jdbcType=SMALLINT}, #{picUrl,jdbcType=VARCHAR}, #{shareUrl,jdbcType=VARCHAR}, \n      #{isNew,jdbcType=BIT}, #{isHot,jdbcType=BIT}, #{unit,jdbcType=VARCHAR}, #{counterPrice,jdbcType=DECIMAL}, \n      #{retailPrice,jdbcType=DECIMAL}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT}, #{detail,jdbcType=LONGVARCHAR})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsSn != null\">\n        goods_sn,\n      </if>\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"categoryId != null\">\n        category_id,\n      </if>\n      <if test=\"brandId != null\">\n        brand_id,\n      </if>\n      <if test=\"gallery != null\">\n        gallery,\n      </if>\n      <if test=\"keywords != null\">\n        keywords,\n      </if>\n      <if test=\"brief != null\">\n        brief,\n      </if>\n      <if test=\"isOnSale != null\">\n        is_on_sale,\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"shareUrl != null\">\n        share_url,\n      </if>\n      <if test=\"isNew != null\">\n        is_new,\n      </if>\n      <if test=\"isHot != null\">\n        is_hot,\n      </if>\n      <if test=\"unit != null\">\n        unit,\n      </if>\n      <if test=\"counterPrice != null\">\n        counter_price,\n      </if>\n      <if test=\"retailPrice != null\">\n        retail_price,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n      <if test=\"detail != null\">\n        detail,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsSn != null\">\n        #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"categoryId != null\">\n        #{categoryId,jdbcType=INTEGER},\n      </if>\n      <if test=\"brandId != null\">\n        #{brandId,jdbcType=INTEGER},\n      </if>\n      <if test=\"gallery != null\">\n        #{gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"keywords != null\">\n        #{keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"brief != null\">\n        #{brief,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isOnSale != null\">\n        #{isOnSale,jdbcType=BIT},\n      </if>\n      <if test=\"sortOrder != null\">\n        #{sortOrder,jdbcType=SMALLINT},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shareUrl != null\">\n        #{shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isNew != null\">\n        #{isNew,jdbcType=BIT},\n      </if>\n      <if test=\"isHot != null\">\n        #{isHot,jdbcType=BIT},\n      </if>\n      <if test=\"unit != null\">\n        #{unit,jdbcType=VARCHAR},\n      </if>\n      <if test=\"counterPrice != null\">\n        #{counterPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"retailPrice != null\">\n        #{retailPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"detail != null\">\n        #{detail,jdbcType=LONGVARCHAR},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsSn != null\">\n        goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.categoryId != null\">\n        category_id = #{record.categoryId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.brandId != null\">\n        brand_id = #{record.brandId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.gallery != null\">\n        gallery = #{record.gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.keywords != null\">\n        keywords = #{record.keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.brief != null\">\n        brief = #{record.brief,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.isOnSale != null\">\n        is_on_sale = #{record.isOnSale,jdbcType=BIT},\n      </if>\n      <if test=\"record.sortOrder != null\">\n        sort_order = #{record.sortOrder,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.shareUrl != null\">\n        share_url = #{record.shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.isNew != null\">\n        is_new = #{record.isNew,jdbcType=BIT},\n      </if>\n      <if test=\"record.isHot != null\">\n        is_hot = #{record.isHot,jdbcType=BIT},\n      </if>\n      <if test=\"record.unit != null\">\n        unit = #{record.unit,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.counterPrice != null\">\n        counter_price = #{record.counterPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.retailPrice != null\">\n        retail_price = #{record.retailPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n      <if test=\"record.detail != null\">\n        detail = #{record.detail,jdbcType=LONGVARCHAR},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExampleWithBLOBs\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      category_id = #{record.categoryId,jdbcType=INTEGER},\n      brand_id = #{record.brandId,jdbcType=INTEGER},\n      gallery = #{record.gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      keywords = #{record.keywords,jdbcType=VARCHAR},\n      brief = #{record.brief,jdbcType=VARCHAR},\n      is_on_sale = #{record.isOnSale,jdbcType=BIT},\n      sort_order = #{record.sortOrder,jdbcType=SMALLINT},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      share_url = #{record.shareUrl,jdbcType=VARCHAR},\n      is_new = #{record.isNew,jdbcType=BIT},\n      is_hot = #{record.isHot,jdbcType=BIT},\n      unit = #{record.unit,jdbcType=VARCHAR},\n      counter_price = #{record.counterPrice,jdbcType=DECIMAL},\n      retail_price = #{record.retailPrice,jdbcType=DECIMAL},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT},\n      detail = #{record.detail,jdbcType=LONGVARCHAR}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      category_id = #{record.categoryId,jdbcType=INTEGER},\n      brand_id = #{record.brandId,jdbcType=INTEGER},\n      gallery = #{record.gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      keywords = #{record.keywords,jdbcType=VARCHAR},\n      brief = #{record.brief,jdbcType=VARCHAR},\n      is_on_sale = #{record.isOnSale,jdbcType=BIT},\n      sort_order = #{record.sortOrder,jdbcType=SMALLINT},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      share_url = #{record.shareUrl,jdbcType=VARCHAR},\n      is_new = #{record.isNew,jdbcType=BIT},\n      is_hot = #{record.isHot,jdbcType=BIT},\n      unit = #{record.unit,jdbcType=VARCHAR},\n      counter_price = #{record.counterPrice,jdbcType=DECIMAL},\n      retail_price = #{record.retailPrice,jdbcType=DECIMAL},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    <set>\n      <if test=\"goodsSn != null\">\n        goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"categoryId != null\">\n        category_id = #{categoryId,jdbcType=INTEGER},\n      </if>\n      <if test=\"brandId != null\">\n        brand_id = #{brandId,jdbcType=INTEGER},\n      </if>\n      <if test=\"gallery != null\">\n        gallery = #{gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"keywords != null\">\n        keywords = #{keywords,jdbcType=VARCHAR},\n      </if>\n      <if test=\"brief != null\">\n        brief = #{brief,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isOnSale != null\">\n        is_on_sale = #{isOnSale,jdbcType=BIT},\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order = #{sortOrder,jdbcType=SMALLINT},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shareUrl != null\">\n        share_url = #{shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isNew != null\">\n        is_new = #{isNew,jdbcType=BIT},\n      </if>\n      <if test=\"isHot != null\">\n        is_hot = #{isHot,jdbcType=BIT},\n      </if>\n      <if test=\"unit != null\">\n        unit = #{unit,jdbcType=VARCHAR},\n      </if>\n      <if test=\"counterPrice != null\">\n        counter_price = #{counterPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"retailPrice != null\">\n        retail_price = #{retailPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"detail != null\">\n        detail = #{detail,jdbcType=LONGVARCHAR},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKeyWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    set goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      `name` = #{name,jdbcType=VARCHAR},\n      category_id = #{categoryId,jdbcType=INTEGER},\n      brand_id = #{brandId,jdbcType=INTEGER},\n      gallery = #{gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      keywords = #{keywords,jdbcType=VARCHAR},\n      brief = #{brief,jdbcType=VARCHAR},\n      is_on_sale = #{isOnSale,jdbcType=BIT},\n      sort_order = #{sortOrder,jdbcType=SMALLINT},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      share_url = #{shareUrl,jdbcType=VARCHAR},\n      is_new = #{isNew,jdbcType=BIT},\n      is_hot = #{isHot,jdbcType=BIT},\n      unit = #{unit,jdbcType=VARCHAR},\n      counter_price = #{counterPrice,jdbcType=DECIMAL},\n      retail_price = #{retailPrice,jdbcType=DECIMAL},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT},\n      detail = #{detail,jdbcType=LONGVARCHAR}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods\n    set goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      `name` = #{name,jdbcType=VARCHAR},\n      category_id = #{categoryId,jdbcType=INTEGER},\n      brand_id = #{brandId,jdbcType=INTEGER},\n      gallery = #{gallery,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      keywords = #{keywords,jdbcType=VARCHAR},\n      brief = #{brief,jdbcType=VARCHAR},\n      is_on_sale = #{isOnSale,jdbcType=BIT},\n      sort_order = #{sortOrder,jdbcType=SMALLINT},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      share_url = #{shareUrl,jdbcType=VARCHAR},\n      is_new = #{isNew,jdbcType=BIT},\n      is_hot = #{isHot,jdbcType=BIT},\n      unit = #{unit,jdbcType=VARCHAR},\n      counter_price = #{counterPrice,jdbcType=DECIMAL},\n      retail_price = #{retailPrice,jdbcType=DECIMAL},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsExample\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGoodsProductMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGoodsProductMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGoodsProduct\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"specifications\" jdbcType=\"VARCHAR\" property=\"specifications\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"price\" jdbcType=\"DECIMAL\" property=\"price\" />\n    <result column=\"number\" jdbcType=\"INTEGER\" property=\"number\" />\n    <result column=\"url\" jdbcType=\"VARCHAR\" property=\"url\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, goods_id, specifications, price, `number`, url, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProductExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_product\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_product\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_product\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_product\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProductExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProduct\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_product (goods_id, specifications, \n      price, `number`, url, \n      add_time, update_time, deleted\n      )\n    values (#{goodsId,jdbcType=INTEGER}, #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{price,jdbcType=DECIMAL}, #{number,jdbcType=INTEGER}, #{url,jdbcType=VARCHAR}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProduct\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_product\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"specifications != null\">\n        specifications,\n      </if>\n      <if test=\"price != null\">\n        price,\n      </if>\n      <if test=\"number != null\">\n        `number`,\n      </if>\n      <if test=\"url != null\">\n        url,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"specifications != null\">\n        #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"price != null\">\n        #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"number != null\">\n        #{number,jdbcType=INTEGER},\n      </if>\n      <if test=\"url != null\">\n        #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProductExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.specifications != null\">\n        specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.price != null\">\n        price = #{record.price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.number != null\">\n        `number` = #{record.number,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.url != null\">\n        url = #{record.url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      price = #{record.price,jdbcType=DECIMAL},\n      `number` = #{record.number,jdbcType=INTEGER},\n      url = #{record.url,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProduct\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product\n    <set>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"specifications != null\">\n        specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"price != null\">\n        price = #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"number != null\">\n        `number` = #{number,jdbcType=INTEGER},\n      </if>\n      <if test=\"url != null\">\n        url = #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProduct\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product\n    set goods_id = #{goodsId,jdbcType=INTEGER},\n      specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      price = #{price,jdbcType=DECIMAL},\n      `number` = #{number,jdbcType=INTEGER},\n      url = #{url,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsProductExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_product\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_product set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGoodsSpecificationMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGoodsSpecificationMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecification\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"specification\" jdbcType=\"VARCHAR\" property=\"specification\" />\n    <result column=\"value\" jdbcType=\"VARCHAR\" property=\"value\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, goods_id, specification, `value`, pic_url, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_specification\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_specification\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_specification\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_specification\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecification\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_specification (goods_id, specification, `value`, \n      pic_url, add_time, update_time, \n      deleted)\n    values (#{goodsId,jdbcType=INTEGER}, #{specification,jdbcType=VARCHAR}, #{value,jdbcType=VARCHAR}, \n      #{picUrl,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecification\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_goods_specification\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"specification != null\">\n        specification,\n      </if>\n      <if test=\"value != null\">\n        `value`,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"specification != null\">\n        #{specification,jdbcType=VARCHAR},\n      </if>\n      <if test=\"value != null\">\n        #{value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.specification != null\">\n        specification = #{record.specification,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.value != null\">\n        `value` = #{record.value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      specification = #{record.specification,jdbcType=VARCHAR},\n      `value` = #{record.value,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecification\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification\n    <set>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"specification != null\">\n        specification = #{specification,jdbcType=VARCHAR},\n      </if>\n      <if test=\"value != null\">\n        `value` = #{value,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecification\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification\n    set goods_id = #{goodsId,jdbcType=INTEGER},\n      specification = #{specification,jdbcType=VARCHAR},\n      `value` = #{value,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGoodsSpecificationExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_goods_specification\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_goods_specification set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGrouponMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGrouponMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGroupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"order_id\" jdbcType=\"INTEGER\" property=\"orderId\" />\n    <result column=\"groupon_id\" jdbcType=\"INTEGER\" property=\"grouponId\" />\n    <result column=\"rules_id\" jdbcType=\"INTEGER\" property=\"rulesId\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"share_url\" jdbcType=\"VARCHAR\" property=\"shareUrl\" />\n    <result column=\"creator_user_id\" jdbcType=\"INTEGER\" property=\"creatorUserId\" />\n    <result column=\"creator_user_time\" jdbcType=\"TIMESTAMP\" property=\"creatorUserTime\" />\n    <result column=\"status\" jdbcType=\"SMALLINT\" property=\"status\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, order_id, groupon_id, rules_id, user_id, share_url, creator_user_id, creator_user_time, \n    `status`, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_groupon\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGroupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_groupon (order_id, groupon_id, rules_id, \n      user_id, share_url, creator_user_id, \n      creator_user_time, `status`, add_time, \n      update_time, deleted)\n    values (#{orderId,jdbcType=INTEGER}, #{grouponId,jdbcType=INTEGER}, #{rulesId,jdbcType=INTEGER}, \n      #{userId,jdbcType=INTEGER}, #{shareUrl,jdbcType=VARCHAR}, #{creatorUserId,jdbcType=INTEGER}, \n      #{creatorUserTime,jdbcType=TIMESTAMP}, #{status,jdbcType=SMALLINT}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGroupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_groupon\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"orderId != null\">\n        order_id,\n      </if>\n      <if test=\"grouponId != null\">\n        groupon_id,\n      </if>\n      <if test=\"rulesId != null\">\n        rules_id,\n      </if>\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"shareUrl != null\">\n        share_url,\n      </if>\n      <if test=\"creatorUserId != null\">\n        creator_user_id,\n      </if>\n      <if test=\"creatorUserTime != null\">\n        creator_user_time,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"orderId != null\">\n        #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"grouponId != null\">\n        #{grouponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"rulesId != null\">\n        #{rulesId,jdbcType=INTEGER},\n      </if>\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"shareUrl != null\">\n        #{shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"creatorUserId != null\">\n        #{creatorUserId,jdbcType=INTEGER},\n      </if>\n      <if test=\"creatorUserTime != null\">\n        #{creatorUserTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.orderId != null\">\n        order_id = #{record.orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.grouponId != null\">\n        groupon_id = #{record.grouponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.rulesId != null\">\n        rules_id = #{record.rulesId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.shareUrl != null\">\n        share_url = #{record.shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.creatorUserId != null\">\n        creator_user_id = #{record.creatorUserId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.creatorUserTime != null\">\n        creator_user_time = #{record.creatorUserTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon\n    set id = #{record.id,jdbcType=INTEGER},\n      order_id = #{record.orderId,jdbcType=INTEGER},\n      groupon_id = #{record.grouponId,jdbcType=INTEGER},\n      rules_id = #{record.rulesId,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      share_url = #{record.shareUrl,jdbcType=VARCHAR},\n      creator_user_id = #{record.creatorUserId,jdbcType=INTEGER},\n      creator_user_time = #{record.creatorUserTime,jdbcType=TIMESTAMP},\n      `status` = #{record.status,jdbcType=SMALLINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGroupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon\n    <set>\n      <if test=\"orderId != null\">\n        order_id = #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"grouponId != null\">\n        groupon_id = #{grouponId,jdbcType=INTEGER},\n      </if>\n      <if test=\"rulesId != null\">\n        rules_id = #{rulesId,jdbcType=INTEGER},\n      </if>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"shareUrl != null\">\n        share_url = #{shareUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"creatorUserId != null\">\n        creator_user_id = #{creatorUserId,jdbcType=INTEGER},\n      </if>\n      <if test=\"creatorUserTime != null\">\n        creator_user_time = #{creatorUserTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGroupon\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon\n    set order_id = #{orderId,jdbcType=INTEGER},\n      groupon_id = #{grouponId,jdbcType=INTEGER},\n      rules_id = #{rulesId,jdbcType=INTEGER},\n      user_id = #{userId,jdbcType=INTEGER},\n      share_url = #{shareUrl,jdbcType=VARCHAR},\n      creator_user_id = #{creatorUserId,jdbcType=INTEGER},\n      creator_user_time = #{creatorUserTime,jdbcType=TIMESTAMP},\n      `status` = #{status,jdbcType=SMALLINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallGrouponRulesMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallGrouponRulesMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallGrouponRules\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"goods_name\" jdbcType=\"VARCHAR\" property=\"goodsName\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"discount\" jdbcType=\"DECIMAL\" property=\"discount\" />\n    <result column=\"discount_member\" jdbcType=\"INTEGER\" property=\"discountMember\" />\n    <result column=\"expire_time\" jdbcType=\"TIMESTAMP\" property=\"expireTime\" />\n    <result column=\"status\" jdbcType=\"SMALLINT\" property=\"status\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, goods_id, goods_name, pic_url, discount, discount_member, expire_time, `status`, \n    add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon_rules\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon_rules\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon_rules\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_groupon_rules\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRules\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_groupon_rules (goods_id, goods_name, pic_url, \n      discount, discount_member, expire_time, \n      `status`, add_time, update_time, \n      deleted)\n    values (#{goodsId,jdbcType=INTEGER}, #{goodsName,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, \n      #{discount,jdbcType=DECIMAL}, #{discountMember,jdbcType=INTEGER}, #{expireTime,jdbcType=TIMESTAMP}, \n      #{status,jdbcType=SMALLINT}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRules\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_groupon_rules\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"discount != null\">\n        discount,\n      </if>\n      <if test=\"discountMember != null\">\n        discount_member,\n      </if>\n      <if test=\"expireTime != null\">\n        expire_time,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsName != null\">\n        #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"discount != null\">\n        #{discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"discountMember != null\">\n        #{discountMember,jdbcType=INTEGER},\n      </if>\n      <if test=\"expireTime != null\">\n        #{expireTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsName != null\">\n        goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.discount != null\">\n        discount = #{record.discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.discountMember != null\">\n        discount_member = #{record.discountMember,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.expireTime != null\">\n        expire_time = #{record.expireTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules\n    set id = #{record.id,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      discount = #{record.discount,jdbcType=DECIMAL},\n      discount_member = #{record.discountMember,jdbcType=INTEGER},\n      expire_time = #{record.expireTime,jdbcType=TIMESTAMP},\n      `status` = #{record.status,jdbcType=SMALLINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRules\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules\n    <set>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name = #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"discount != null\">\n        discount = #{discount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"discountMember != null\">\n        discount_member = #{discountMember,jdbcType=INTEGER},\n      </if>\n      <if test=\"expireTime != null\">\n        expire_time = #{expireTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=SMALLINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRules\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules\n    set goods_id = #{goodsId,jdbcType=INTEGER},\n      goods_name = #{goodsName,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      discount = #{discount,jdbcType=DECIMAL},\n      discount_member = #{discountMember,jdbcType=INTEGER},\n      expire_time = #{expireTime,jdbcType=TIMESTAMP},\n      `status` = #{status,jdbcType=SMALLINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallGrouponRulesExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_groupon_rules\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_groupon_rules set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallIssueMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallIssueMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallIssue\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"question\" jdbcType=\"VARCHAR\" property=\"question\" />\n    <result column=\"answer\" jdbcType=\"VARCHAR\" property=\"answer\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, question, answer, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssueExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_issue\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_issue\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_issue\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_issue\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssueExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssue\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_issue (question, answer, add_time, \n      update_time, deleted)\n    values (#{question,jdbcType=VARCHAR}, #{answer,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssue\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_issue\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"question != null\">\n        question,\n      </if>\n      <if test=\"answer != null\">\n        answer,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"question != null\">\n        #{question,jdbcType=VARCHAR},\n      </if>\n      <if test=\"answer != null\">\n        #{answer,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssueExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.question != null\">\n        question = #{record.question,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.answer != null\">\n        answer = #{record.answer,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue\n    set id = #{record.id,jdbcType=INTEGER},\n      question = #{record.question,jdbcType=VARCHAR},\n      answer = #{record.answer,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssue\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue\n    <set>\n      <if test=\"question != null\">\n        question = #{question,jdbcType=VARCHAR},\n      </if>\n      <if test=\"answer != null\">\n        answer = #{answer,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssue\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue\n    set question = #{question,jdbcType=VARCHAR},\n      answer = #{answer,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallIssueExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_issue\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_issue set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallKeywordMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallKeywordMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallKeyword\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"keyword\" jdbcType=\"VARCHAR\" property=\"keyword\" />\n    <result column=\"url\" jdbcType=\"VARCHAR\" property=\"url\" />\n    <result column=\"is_hot\" jdbcType=\"BIT\" property=\"isHot\" />\n    <result column=\"is_default\" jdbcType=\"BIT\" property=\"isDefault\" />\n    <result column=\"sort_order\" jdbcType=\"INTEGER\" property=\"sortOrder\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, keyword, url, is_hot, is_default, sort_order, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeywordExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_keyword\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_keyword\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_keyword\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_keyword\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeywordExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeyword\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_keyword (keyword, url, is_hot, \n      is_default, sort_order, add_time, \n      update_time, deleted)\n    values (#{keyword,jdbcType=VARCHAR}, #{url,jdbcType=VARCHAR}, #{isHot,jdbcType=BIT}, \n      #{isDefault,jdbcType=BIT}, #{sortOrder,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeyword\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_keyword\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"keyword != null\">\n        keyword,\n      </if>\n      <if test=\"url != null\">\n        url,\n      </if>\n      <if test=\"isHot != null\">\n        is_hot,\n      </if>\n      <if test=\"isDefault != null\">\n        is_default,\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"keyword != null\">\n        #{keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"url != null\">\n        #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isHot != null\">\n        #{isHot,jdbcType=BIT},\n      </if>\n      <if test=\"isDefault != null\">\n        #{isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"sortOrder != null\">\n        #{sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeywordExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.keyword != null\">\n        keyword = #{record.keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.url != null\">\n        url = #{record.url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.isHot != null\">\n        is_hot = #{record.isHot,jdbcType=BIT},\n      </if>\n      <if test=\"record.isDefault != null\">\n        is_default = #{record.isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"record.sortOrder != null\">\n        sort_order = #{record.sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword\n    set id = #{record.id,jdbcType=INTEGER},\n      keyword = #{record.keyword,jdbcType=VARCHAR},\n      url = #{record.url,jdbcType=VARCHAR},\n      is_hot = #{record.isHot,jdbcType=BIT},\n      is_default = #{record.isDefault,jdbcType=BIT},\n      sort_order = #{record.sortOrder,jdbcType=INTEGER},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeyword\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword\n    <set>\n      <if test=\"keyword != null\">\n        keyword = #{keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"url != null\">\n        url = #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"isHot != null\">\n        is_hot = #{isHot,jdbcType=BIT},\n      </if>\n      <if test=\"isDefault != null\">\n        is_default = #{isDefault,jdbcType=BIT},\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order = #{sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeyword\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword\n    set keyword = #{keyword,jdbcType=VARCHAR},\n      url = #{url,jdbcType=VARCHAR},\n      is_hot = #{isHot,jdbcType=BIT},\n      is_default = #{isDefault,jdbcType=BIT},\n      sort_order = #{sortOrder,jdbcType=INTEGER},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallKeywordExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_keyword\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_keyword set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallLogMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallLogMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallLog\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"admin\" jdbcType=\"VARCHAR\" property=\"admin\" />\n    <result column=\"ip\" jdbcType=\"VARCHAR\" property=\"ip\" />\n    <result column=\"type\" jdbcType=\"INTEGER\" property=\"type\" />\n    <result column=\"action\" jdbcType=\"VARCHAR\" property=\"action\" />\n    <result column=\"status\" jdbcType=\"BIT\" property=\"status\" />\n    <result column=\"result\" jdbcType=\"VARCHAR\" property=\"result\" />\n    <result column=\"comment\" jdbcType=\"VARCHAR\" property=\"comment\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `admin`, ip, `type`, `action`, `status`, `result`, `comment`, add_time, update_time, \n    deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLogExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_log\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_log\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_log\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_log\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLogExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLog\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_log (`admin`, ip, `type`, \n      `action`, `status`, `result`, \n      `comment`, add_time, update_time, \n      deleted)\n    values (#{admin,jdbcType=VARCHAR}, #{ip,jdbcType=VARCHAR}, #{type,jdbcType=INTEGER}, \n      #{action,jdbcType=VARCHAR}, #{status,jdbcType=BIT}, #{result,jdbcType=VARCHAR}, \n      #{comment,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLog\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_log\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"admin != null\">\n        `admin`,\n      </if>\n      <if test=\"ip != null\">\n        ip,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"action != null\">\n        `action`,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"result != null\">\n        `result`,\n      </if>\n      <if test=\"comment != null\">\n        `comment`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"admin != null\">\n        #{admin,jdbcType=VARCHAR},\n      </if>\n      <if test=\"ip != null\">\n        #{ip,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=INTEGER},\n      </if>\n      <if test=\"action != null\">\n        #{action,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=BIT},\n      </if>\n      <if test=\"result != null\">\n        #{result,jdbcType=VARCHAR},\n      </if>\n      <if test=\"comment != null\">\n        #{comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLogExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.admin != null\">\n        `admin` = #{record.admin,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.ip != null\">\n        ip = #{record.ip,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.action != null\">\n        `action` = #{record.action,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=BIT},\n      </if>\n      <if test=\"record.result != null\">\n        `result` = #{record.result,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.comment != null\">\n        `comment` = #{record.comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log\n    set id = #{record.id,jdbcType=INTEGER},\n      `admin` = #{record.admin,jdbcType=VARCHAR},\n      ip = #{record.ip,jdbcType=VARCHAR},\n      `type` = #{record.type,jdbcType=INTEGER},\n      `action` = #{record.action,jdbcType=VARCHAR},\n      `status` = #{record.status,jdbcType=BIT},\n      `result` = #{record.result,jdbcType=VARCHAR},\n      `comment` = #{record.comment,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLog\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log\n    <set>\n      <if test=\"admin != null\">\n        `admin` = #{admin,jdbcType=VARCHAR},\n      </if>\n      <if test=\"ip != null\">\n        ip = #{ip,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=INTEGER},\n      </if>\n      <if test=\"action != null\">\n        `action` = #{action,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=BIT},\n      </if>\n      <if test=\"result != null\">\n        `result` = #{result,jdbcType=VARCHAR},\n      </if>\n      <if test=\"comment != null\">\n        `comment` = #{comment,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLog\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log\n    set `admin` = #{admin,jdbcType=VARCHAR},\n      ip = #{ip,jdbcType=VARCHAR},\n      `type` = #{type,jdbcType=INTEGER},\n      `action` = #{action,jdbcType=VARCHAR},\n      `status` = #{status,jdbcType=BIT},\n      `result` = #{result,jdbcType=VARCHAR},\n      `comment` = #{comment,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallLogExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_log\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_log set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallNoticeAdminMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallNoticeAdminMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"notice_id\" jdbcType=\"INTEGER\" property=\"noticeId\" />\n    <result column=\"notice_title\" jdbcType=\"VARCHAR\" property=\"noticeTitle\" />\n    <result column=\"admin_id\" jdbcType=\"INTEGER\" property=\"adminId\" />\n    <result column=\"read_time\" jdbcType=\"TIMESTAMP\" property=\"readTime\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, notice_id, notice_title, admin_id, read_time, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_notice_admin\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_notice_admin\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice_admin\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_notice_admin\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_notice_admin (notice_id, notice_title, admin_id, \n      read_time, add_time, update_time, \n      deleted)\n    values (#{noticeId,jdbcType=INTEGER}, #{noticeTitle,jdbcType=VARCHAR}, #{adminId,jdbcType=INTEGER}, \n      #{readTime,jdbcType=TIMESTAMP}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_notice_admin\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"noticeId != null\">\n        notice_id,\n      </if>\n      <if test=\"noticeTitle != null\">\n        notice_title,\n      </if>\n      <if test=\"adminId != null\">\n        admin_id,\n      </if>\n      <if test=\"readTime != null\">\n        read_time,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"noticeId != null\">\n        #{noticeId,jdbcType=INTEGER},\n      </if>\n      <if test=\"noticeTitle != null\">\n        #{noticeTitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminId != null\">\n        #{adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"readTime != null\">\n        #{readTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.noticeId != null\">\n        notice_id = #{record.noticeId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.noticeTitle != null\">\n        notice_title = #{record.noticeTitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.adminId != null\">\n        admin_id = #{record.adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.readTime != null\">\n        read_time = #{record.readTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin\n    set id = #{record.id,jdbcType=INTEGER},\n      notice_id = #{record.noticeId,jdbcType=INTEGER},\n      notice_title = #{record.noticeTitle,jdbcType=VARCHAR},\n      admin_id = #{record.adminId,jdbcType=INTEGER},\n      read_time = #{record.readTime,jdbcType=TIMESTAMP},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin\n    <set>\n      <if test=\"noticeId != null\">\n        notice_id = #{noticeId,jdbcType=INTEGER},\n      </if>\n      <if test=\"noticeTitle != null\">\n        notice_title = #{noticeTitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminId != null\">\n        admin_id = #{adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"readTime != null\">\n        read_time = #{readTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdmin\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin\n    set notice_id = #{noticeId,jdbcType=INTEGER},\n      notice_title = #{noticeTitle,jdbcType=VARCHAR},\n      admin_id = #{adminId,jdbcType=INTEGER},\n      read_time = #{readTime,jdbcType=TIMESTAMP},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeAdminExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice_admin\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice_admin set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallNoticeMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallNoticeMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallNotice\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"title\" jdbcType=\"VARCHAR\" property=\"title\" />\n    <result column=\"content\" jdbcType=\"VARCHAR\" property=\"content\" />\n    <result column=\"admin_id\" jdbcType=\"INTEGER\" property=\"adminId\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, title, content, admin_id, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_notice\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_notice\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_notice\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNotice\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_notice (title, content, admin_id, \n      add_time, update_time, deleted\n      )\n    values (#{title,jdbcType=VARCHAR}, #{content,jdbcType=VARCHAR}, #{adminId,jdbcType=INTEGER}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNotice\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_notice\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"title != null\">\n        title,\n      </if>\n      <if test=\"content != null\">\n        content,\n      </if>\n      <if test=\"adminId != null\">\n        admin_id,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"title != null\">\n        #{title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"content != null\">\n        #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminId != null\">\n        #{adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.title != null\">\n        title = #{record.title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.content != null\">\n        content = #{record.content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.adminId != null\">\n        admin_id = #{record.adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice\n    set id = #{record.id,jdbcType=INTEGER},\n      title = #{record.title,jdbcType=VARCHAR},\n      content = #{record.content,jdbcType=VARCHAR},\n      admin_id = #{record.adminId,jdbcType=INTEGER},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNotice\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice\n    <set>\n      <if test=\"title != null\">\n        title = #{title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"content != null\">\n        content = #{content,jdbcType=VARCHAR},\n      </if>\n      <if test=\"adminId != null\">\n        admin_id = #{adminId,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNotice\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice\n    set title = #{title,jdbcType=VARCHAR},\n      content = #{content,jdbcType=VARCHAR},\n      admin_id = #{adminId,jdbcType=INTEGER},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallNoticeExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_notice\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_notice set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallOrderGoodsMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallOrderGoodsMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallOrderGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"order_id\" jdbcType=\"INTEGER\" property=\"orderId\" />\n    <result column=\"goods_id\" jdbcType=\"INTEGER\" property=\"goodsId\" />\n    <result column=\"goods_name\" jdbcType=\"VARCHAR\" property=\"goodsName\" />\n    <result column=\"goods_sn\" jdbcType=\"VARCHAR\" property=\"goodsSn\" />\n    <result column=\"product_id\" jdbcType=\"INTEGER\" property=\"productId\" />\n    <result column=\"number\" jdbcType=\"SMALLINT\" property=\"number\" />\n    <result column=\"price\" jdbcType=\"DECIMAL\" property=\"price\" />\n    <result column=\"specifications\" jdbcType=\"VARCHAR\" property=\"specifications\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"comment\" jdbcType=\"INTEGER\" property=\"comment\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.specificationsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, order_id, goods_id, goods_name, goods_sn, product_id, `number`, price, specifications, \n    pic_url, `comment`, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_order_goods\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_order_goods\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order_goods\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_order_goods\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_order_goods (order_id, goods_id, goods_name, \n      goods_sn, product_id, `number`, \n      price, specifications, \n      pic_url, `comment`, add_time, \n      update_time, deleted)\n    values (#{orderId,jdbcType=INTEGER}, #{goodsId,jdbcType=INTEGER}, #{goodsName,jdbcType=VARCHAR}, \n      #{goodsSn,jdbcType=VARCHAR}, #{productId,jdbcType=INTEGER}, #{number,jdbcType=SMALLINT}, \n      #{price,jdbcType=DECIMAL}, #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler}, \n      #{picUrl,jdbcType=VARCHAR}, #{comment,jdbcType=INTEGER}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_order_goods\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"orderId != null\">\n        order_id,\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id,\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name,\n      </if>\n      <if test=\"goodsSn != null\">\n        goods_sn,\n      </if>\n      <if test=\"productId != null\">\n        product_id,\n      </if>\n      <if test=\"number != null\">\n        `number`,\n      </if>\n      <if test=\"price != null\">\n        price,\n      </if>\n      <if test=\"specifications != null\">\n        specifications,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"comment != null\">\n        `comment`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"orderId != null\">\n        #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsName != null\">\n        #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsSn != null\">\n        #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"productId != null\">\n        #{productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"number != null\">\n        #{number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"price != null\">\n        #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"specifications != null\">\n        #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"comment != null\">\n        #{comment,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.orderId != null\">\n        order_id = #{record.orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsId != null\">\n        goods_id = #{record.goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goodsName != null\">\n        goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.goodsSn != null\">\n        goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.productId != null\">\n        product_id = #{record.productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.number != null\">\n        `number` = #{record.number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.price != null\">\n        price = #{record.price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.specifications != null\">\n        specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.comment != null\">\n        `comment` = #{record.comment,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods\n    set id = #{record.id,jdbcType=INTEGER},\n      order_id = #{record.orderId,jdbcType=INTEGER},\n      goods_id = #{record.goodsId,jdbcType=INTEGER},\n      goods_name = #{record.goodsName,jdbcType=VARCHAR},\n      goods_sn = #{record.goodsSn,jdbcType=VARCHAR},\n      product_id = #{record.productId,jdbcType=INTEGER},\n      `number` = #{record.number,jdbcType=SMALLINT},\n      price = #{record.price,jdbcType=DECIMAL},\n      specifications = #{record.specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      `comment` = #{record.comment,jdbcType=INTEGER},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods\n    <set>\n      <if test=\"orderId != null\">\n        order_id = #{orderId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsId != null\">\n        goods_id = #{goodsId,jdbcType=INTEGER},\n      </if>\n      <if test=\"goodsName != null\">\n        goods_name = #{goodsName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsSn != null\">\n        goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"productId != null\">\n        product_id = #{productId,jdbcType=INTEGER},\n      </if>\n      <if test=\"number != null\">\n        `number` = #{number,jdbcType=SMALLINT},\n      </if>\n      <if test=\"price != null\">\n        price = #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"specifications != null\">\n        specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"comment != null\">\n        `comment` = #{comment,jdbcType=INTEGER},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoods\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods\n    set order_id = #{orderId,jdbcType=INTEGER},\n      goods_id = #{goodsId,jdbcType=INTEGER},\n      goods_name = #{goodsName,jdbcType=VARCHAR},\n      goods_sn = #{goodsSn,jdbcType=VARCHAR},\n      product_id = #{productId,jdbcType=INTEGER},\n      `number` = #{number,jdbcType=SMALLINT},\n      price = #{price,jdbcType=DECIMAL},\n      specifications = #{specifications,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      `comment` = #{comment,jdbcType=INTEGER},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderGoodsExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order_goods\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order_goods set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallOrderMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallOrderMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallOrder\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"order_sn\" jdbcType=\"VARCHAR\" property=\"orderSn\" />\n    <result column=\"order_status\" jdbcType=\"SMALLINT\" property=\"orderStatus\" />\n    <result column=\"aftersale_status\" jdbcType=\"SMALLINT\" property=\"aftersaleStatus\" />\n    <result column=\"consignee\" jdbcType=\"VARCHAR\" property=\"consignee\" />\n    <result column=\"mobile\" jdbcType=\"VARCHAR\" property=\"mobile\" />\n    <result column=\"address\" jdbcType=\"VARCHAR\" property=\"address\" />\n    <result column=\"message\" jdbcType=\"VARCHAR\" property=\"message\" />\n    <result column=\"goods_price\" jdbcType=\"DECIMAL\" property=\"goodsPrice\" />\n    <result column=\"freight_price\" jdbcType=\"DECIMAL\" property=\"freightPrice\" />\n    <result column=\"coupon_price\" jdbcType=\"DECIMAL\" property=\"couponPrice\" />\n    <result column=\"integral_price\" jdbcType=\"DECIMAL\" property=\"integralPrice\" />\n    <result column=\"groupon_price\" jdbcType=\"DECIMAL\" property=\"grouponPrice\" />\n    <result column=\"order_price\" jdbcType=\"DECIMAL\" property=\"orderPrice\" />\n    <result column=\"actual_price\" jdbcType=\"DECIMAL\" property=\"actualPrice\" />\n    <result column=\"pay_id\" jdbcType=\"VARCHAR\" property=\"payId\" />\n    <result column=\"pay_time\" jdbcType=\"TIMESTAMP\" property=\"payTime\" />\n    <result column=\"ship_sn\" jdbcType=\"VARCHAR\" property=\"shipSn\" />\n    <result column=\"ship_channel\" jdbcType=\"VARCHAR\" property=\"shipChannel\" />\n    <result column=\"ship_time\" jdbcType=\"TIMESTAMP\" property=\"shipTime\" />\n    <result column=\"refund_amount\" jdbcType=\"DECIMAL\" property=\"refundAmount\" />\n    <result column=\"refund_type\" jdbcType=\"VARCHAR\" property=\"refundType\" />\n    <result column=\"refund_content\" jdbcType=\"VARCHAR\" property=\"refundContent\" />\n    <result column=\"refund_time\" jdbcType=\"TIMESTAMP\" property=\"refundTime\" />\n    <result column=\"confirm_time\" jdbcType=\"TIMESTAMP\" property=\"confirmTime\" />\n    <result column=\"comments\" jdbcType=\"SMALLINT\" property=\"comments\" />\n    <result column=\"end_time\" jdbcType=\"TIMESTAMP\" property=\"endTime\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, order_sn, order_status, aftersale_status, consignee, mobile, address, \n    message, goods_price, freight_price, coupon_price, integral_price, groupon_price, \n    order_price, actual_price, pay_id, pay_time, ship_sn, ship_channel, ship_time, refund_amount, \n    refund_type, refund_content, refund_time, confirm_time, comments, end_time, add_time, \n    update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_order\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_order\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_order\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrder\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_order (user_id, order_sn, order_status, \n      aftersale_status, consignee, mobile, \n      address, message, goods_price, \n      freight_price, coupon_price, integral_price, \n      groupon_price, order_price, actual_price, \n      pay_id, pay_time, ship_sn, \n      ship_channel, ship_time, refund_amount, \n      refund_type, refund_content, refund_time, \n      confirm_time, comments, end_time, \n      add_time, update_time, deleted\n      )\n    values (#{userId,jdbcType=INTEGER}, #{orderSn,jdbcType=VARCHAR}, #{orderStatus,jdbcType=SMALLINT}, \n      #{aftersaleStatus,jdbcType=SMALLINT}, #{consignee,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, \n      #{address,jdbcType=VARCHAR}, #{message,jdbcType=VARCHAR}, #{goodsPrice,jdbcType=DECIMAL}, \n      #{freightPrice,jdbcType=DECIMAL}, #{couponPrice,jdbcType=DECIMAL}, #{integralPrice,jdbcType=DECIMAL}, \n      #{grouponPrice,jdbcType=DECIMAL}, #{orderPrice,jdbcType=DECIMAL}, #{actualPrice,jdbcType=DECIMAL}, \n      #{payId,jdbcType=VARCHAR}, #{payTime,jdbcType=TIMESTAMP}, #{shipSn,jdbcType=VARCHAR}, \n      #{shipChannel,jdbcType=VARCHAR}, #{shipTime,jdbcType=TIMESTAMP}, #{refundAmount,jdbcType=DECIMAL}, \n      #{refundType,jdbcType=VARCHAR}, #{refundContent,jdbcType=VARCHAR}, #{refundTime,jdbcType=TIMESTAMP}, \n      #{confirmTime,jdbcType=TIMESTAMP}, #{comments,jdbcType=SMALLINT}, #{endTime,jdbcType=TIMESTAMP}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrder\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_order\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"orderSn != null\">\n        order_sn,\n      </if>\n      <if test=\"orderStatus != null\">\n        order_status,\n      </if>\n      <if test=\"aftersaleStatus != null\">\n        aftersale_status,\n      </if>\n      <if test=\"consignee != null\">\n        consignee,\n      </if>\n      <if test=\"mobile != null\">\n        mobile,\n      </if>\n      <if test=\"address != null\">\n        address,\n      </if>\n      <if test=\"message != null\">\n        message,\n      </if>\n      <if test=\"goodsPrice != null\">\n        goods_price,\n      </if>\n      <if test=\"freightPrice != null\">\n        freight_price,\n      </if>\n      <if test=\"couponPrice != null\">\n        coupon_price,\n      </if>\n      <if test=\"integralPrice != null\">\n        integral_price,\n      </if>\n      <if test=\"grouponPrice != null\">\n        groupon_price,\n      </if>\n      <if test=\"orderPrice != null\">\n        order_price,\n      </if>\n      <if test=\"actualPrice != null\">\n        actual_price,\n      </if>\n      <if test=\"payId != null\">\n        pay_id,\n      </if>\n      <if test=\"payTime != null\">\n        pay_time,\n      </if>\n      <if test=\"shipSn != null\">\n        ship_sn,\n      </if>\n      <if test=\"shipChannel != null\">\n        ship_channel,\n      </if>\n      <if test=\"shipTime != null\">\n        ship_time,\n      </if>\n      <if test=\"refundAmount != null\">\n        refund_amount,\n      </if>\n      <if test=\"refundType != null\">\n        refund_type,\n      </if>\n      <if test=\"refundContent != null\">\n        refund_content,\n      </if>\n      <if test=\"refundTime != null\">\n        refund_time,\n      </if>\n      <if test=\"confirmTime != null\">\n        confirm_time,\n      </if>\n      <if test=\"comments != null\">\n        comments,\n      </if>\n      <if test=\"endTime != null\">\n        end_time,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"orderSn != null\">\n        #{orderSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"orderStatus != null\">\n        #{orderStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"aftersaleStatus != null\">\n        #{aftersaleStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"consignee != null\">\n        #{consignee,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"address != null\">\n        #{address,jdbcType=VARCHAR},\n      </if>\n      <if test=\"message != null\">\n        #{message,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsPrice != null\">\n        #{goodsPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"freightPrice != null\">\n        #{freightPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"couponPrice != null\">\n        #{couponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"integralPrice != null\">\n        #{integralPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"grouponPrice != null\">\n        #{grouponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"orderPrice != null\">\n        #{orderPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"actualPrice != null\">\n        #{actualPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"payId != null\">\n        #{payId,jdbcType=VARCHAR},\n      </if>\n      <if test=\"payTime != null\">\n        #{payTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"shipSn != null\">\n        #{shipSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shipChannel != null\">\n        #{shipChannel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shipTime != null\">\n        #{shipTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"refundAmount != null\">\n        #{refundAmount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"refundType != null\">\n        #{refundType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"refundContent != null\">\n        #{refundContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"refundTime != null\">\n        #{refundTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"confirmTime != null\">\n        #{confirmTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"comments != null\">\n        #{comments,jdbcType=SMALLINT},\n      </if>\n      <if test=\"endTime != null\">\n        #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.orderSn != null\">\n        order_sn = #{record.orderSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.orderStatus != null\">\n        order_status = #{record.orderStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.aftersaleStatus != null\">\n        aftersale_status = #{record.aftersaleStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.consignee != null\">\n        consignee = #{record.consignee,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.mobile != null\">\n        mobile = #{record.mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.address != null\">\n        address = #{record.address,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.message != null\">\n        message = #{record.message,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.goodsPrice != null\">\n        goods_price = #{record.goodsPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.freightPrice != null\">\n        freight_price = #{record.freightPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.couponPrice != null\">\n        coupon_price = #{record.couponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.integralPrice != null\">\n        integral_price = #{record.integralPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.grouponPrice != null\">\n        groupon_price = #{record.grouponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.orderPrice != null\">\n        order_price = #{record.orderPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.actualPrice != null\">\n        actual_price = #{record.actualPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.payId != null\">\n        pay_id = #{record.payId,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.payTime != null\">\n        pay_time = #{record.payTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.shipSn != null\">\n        ship_sn = #{record.shipSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.shipChannel != null\">\n        ship_channel = #{record.shipChannel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.shipTime != null\">\n        ship_time = #{record.shipTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.refundAmount != null\">\n        refund_amount = #{record.refundAmount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.refundType != null\">\n        refund_type = #{record.refundType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.refundContent != null\">\n        refund_content = #{record.refundContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.refundTime != null\">\n        refund_time = #{record.refundTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.confirmTime != null\">\n        confirm_time = #{record.confirmTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.comments != null\">\n        comments = #{record.comments,jdbcType=SMALLINT},\n      </if>\n      <if test=\"record.endTime != null\">\n        end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      order_sn = #{record.orderSn,jdbcType=VARCHAR},\n      order_status = #{record.orderStatus,jdbcType=SMALLINT},\n      aftersale_status = #{record.aftersaleStatus,jdbcType=SMALLINT},\n      consignee = #{record.consignee,jdbcType=VARCHAR},\n      mobile = #{record.mobile,jdbcType=VARCHAR},\n      address = #{record.address,jdbcType=VARCHAR},\n      message = #{record.message,jdbcType=VARCHAR},\n      goods_price = #{record.goodsPrice,jdbcType=DECIMAL},\n      freight_price = #{record.freightPrice,jdbcType=DECIMAL},\n      coupon_price = #{record.couponPrice,jdbcType=DECIMAL},\n      integral_price = #{record.integralPrice,jdbcType=DECIMAL},\n      groupon_price = #{record.grouponPrice,jdbcType=DECIMAL},\n      order_price = #{record.orderPrice,jdbcType=DECIMAL},\n      actual_price = #{record.actualPrice,jdbcType=DECIMAL},\n      pay_id = #{record.payId,jdbcType=VARCHAR},\n      pay_time = #{record.payTime,jdbcType=TIMESTAMP},\n      ship_sn = #{record.shipSn,jdbcType=VARCHAR},\n      ship_channel = #{record.shipChannel,jdbcType=VARCHAR},\n      ship_time = #{record.shipTime,jdbcType=TIMESTAMP},\n      refund_amount = #{record.refundAmount,jdbcType=DECIMAL},\n      refund_type = #{record.refundType,jdbcType=VARCHAR},\n      refund_content = #{record.refundContent,jdbcType=VARCHAR},\n      refund_time = #{record.refundTime,jdbcType=TIMESTAMP},\n      confirm_time = #{record.confirmTime,jdbcType=TIMESTAMP},\n      comments = #{record.comments,jdbcType=SMALLINT},\n      end_time = #{record.endTime,jdbcType=TIMESTAMP},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrder\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"orderSn != null\">\n        order_sn = #{orderSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"orderStatus != null\">\n        order_status = #{orderStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"aftersaleStatus != null\">\n        aftersale_status = #{aftersaleStatus,jdbcType=SMALLINT},\n      </if>\n      <if test=\"consignee != null\">\n        consignee = #{consignee,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        mobile = #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"address != null\">\n        address = #{address,jdbcType=VARCHAR},\n      </if>\n      <if test=\"message != null\">\n        message = #{message,jdbcType=VARCHAR},\n      </if>\n      <if test=\"goodsPrice != null\">\n        goods_price = #{goodsPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"freightPrice != null\">\n        freight_price = #{freightPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"couponPrice != null\">\n        coupon_price = #{couponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"integralPrice != null\">\n        integral_price = #{integralPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"grouponPrice != null\">\n        groupon_price = #{grouponPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"orderPrice != null\">\n        order_price = #{orderPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"actualPrice != null\">\n        actual_price = #{actualPrice,jdbcType=DECIMAL},\n      </if>\n      <if test=\"payId != null\">\n        pay_id = #{payId,jdbcType=VARCHAR},\n      </if>\n      <if test=\"payTime != null\">\n        pay_time = #{payTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"shipSn != null\">\n        ship_sn = #{shipSn,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shipChannel != null\">\n        ship_channel = #{shipChannel,jdbcType=VARCHAR},\n      </if>\n      <if test=\"shipTime != null\">\n        ship_time = #{shipTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"refundAmount != null\">\n        refund_amount = #{refundAmount,jdbcType=DECIMAL},\n      </if>\n      <if test=\"refundType != null\">\n        refund_type = #{refundType,jdbcType=VARCHAR},\n      </if>\n      <if test=\"refundContent != null\">\n        refund_content = #{refundContent,jdbcType=VARCHAR},\n      </if>\n      <if test=\"refundTime != null\">\n        refund_time = #{refundTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"confirmTime != null\">\n        confirm_time = #{confirmTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"comments != null\">\n        comments = #{comments,jdbcType=SMALLINT},\n      </if>\n      <if test=\"endTime != null\">\n        end_time = #{endTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrder\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order\n    set user_id = #{userId,jdbcType=INTEGER},\n      order_sn = #{orderSn,jdbcType=VARCHAR},\n      order_status = #{orderStatus,jdbcType=SMALLINT},\n      aftersale_status = #{aftersaleStatus,jdbcType=SMALLINT},\n      consignee = #{consignee,jdbcType=VARCHAR},\n      mobile = #{mobile,jdbcType=VARCHAR},\n      address = #{address,jdbcType=VARCHAR},\n      message = #{message,jdbcType=VARCHAR},\n      goods_price = #{goodsPrice,jdbcType=DECIMAL},\n      freight_price = #{freightPrice,jdbcType=DECIMAL},\n      coupon_price = #{couponPrice,jdbcType=DECIMAL},\n      integral_price = #{integralPrice,jdbcType=DECIMAL},\n      groupon_price = #{grouponPrice,jdbcType=DECIMAL},\n      order_price = #{orderPrice,jdbcType=DECIMAL},\n      actual_price = #{actualPrice,jdbcType=DECIMAL},\n      pay_id = #{payId,jdbcType=VARCHAR},\n      pay_time = #{payTime,jdbcType=TIMESTAMP},\n      ship_sn = #{shipSn,jdbcType=VARCHAR},\n      ship_channel = #{shipChannel,jdbcType=VARCHAR},\n      ship_time = #{shipTime,jdbcType=TIMESTAMP},\n      refund_amount = #{refundAmount,jdbcType=DECIMAL},\n      refund_type = #{refundType,jdbcType=VARCHAR},\n      refund_content = #{refundContent,jdbcType=VARCHAR},\n      refund_time = #{refundTime,jdbcType=TIMESTAMP},\n      confirm_time = #{confirmTime,jdbcType=TIMESTAMP},\n      comments = #{comments,jdbcType=SMALLINT},\n      end_time = #{endTime,jdbcType=TIMESTAMP},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallOrderExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_order\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_order set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallPermissionMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallPermissionMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallPermission\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"role_id\" jdbcType=\"INTEGER\" property=\"roleId\" />\n    <result column=\"permission\" jdbcType=\"VARCHAR\" property=\"permission\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, role_id, permission, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermissionExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_permission\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_permission\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_permission\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_permission\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermissionExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermission\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_permission (role_id, permission, add_time, \n      update_time, deleted)\n    values (#{roleId,jdbcType=INTEGER}, #{permission,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermission\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_permission\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"roleId != null\">\n        role_id,\n      </if>\n      <if test=\"permission != null\">\n        permission,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"roleId != null\">\n        #{roleId,jdbcType=INTEGER},\n      </if>\n      <if test=\"permission != null\">\n        #{permission,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermissionExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.roleId != null\">\n        role_id = #{record.roleId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.permission != null\">\n        permission = #{record.permission,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission\n    set id = #{record.id,jdbcType=INTEGER},\n      role_id = #{record.roleId,jdbcType=INTEGER},\n      permission = #{record.permission,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermission\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission\n    <set>\n      <if test=\"roleId != null\">\n        role_id = #{roleId,jdbcType=INTEGER},\n      </if>\n      <if test=\"permission != null\">\n        permission = #{permission,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermission\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission\n    set role_id = #{roleId,jdbcType=INTEGER},\n      permission = #{permission,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallPermissionExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_permission\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_permission set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallRegionMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallRegionMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallRegion\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"pid\" jdbcType=\"INTEGER\" property=\"pid\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"type\" jdbcType=\"TINYINT\" property=\"type\" />\n    <result column=\"code\" jdbcType=\"INTEGER\" property=\"code\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, pid, `name`, `type`, code\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegionExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_region\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_region\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_region\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegionExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegion\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_region (pid, `name`, `type`, \n      code)\n    values (#{pid,jdbcType=INTEGER}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=TINYINT}, \n      #{code,jdbcType=INTEGER})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegion\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_region\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"pid != null\">\n        pid,\n      </if>\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"code != null\">\n        code,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"pid != null\">\n        #{pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"code != null\">\n        #{code,jdbcType=INTEGER},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegionExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_region\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.pid != null\">\n        pid = #{record.pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.code != null\">\n        code = #{record.code,jdbcType=INTEGER},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_region\n    set id = #{record.id,jdbcType=INTEGER},\n      pid = #{record.pid,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      `type` = #{record.type,jdbcType=TINYINT},\n      code = #{record.code,jdbcType=INTEGER}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegion\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_region\n    <set>\n      <if test=\"pid != null\">\n        pid = #{pid,jdbcType=INTEGER},\n      </if>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=TINYINT},\n      </if>\n      <if test=\"code != null\">\n        code = #{code,jdbcType=INTEGER},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegion\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_region\n    set pid = #{pid,jdbcType=INTEGER},\n      `name` = #{name,jdbcType=VARCHAR},\n      `type` = #{type,jdbcType=TINYINT},\n      code = #{code,jdbcType=INTEGER}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRegionExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_region\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallRoleMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallRoleMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallRole\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"desc\" jdbcType=\"VARCHAR\" property=\"desc\" />\n    <result column=\"enabled\" jdbcType=\"BIT\" property=\"enabled\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `name`, `desc`, enabled, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRoleExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_role\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_role\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_role\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_role\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRoleExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRole\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_role (`name`, `desc`, enabled, \n      add_time, update_time, deleted\n      )\n    values (#{name,jdbcType=VARCHAR}, #{desc,jdbcType=VARCHAR}, #{enabled,jdbcType=BIT}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRole\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_role\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"desc != null\">\n        `desc`,\n      </if>\n      <if test=\"enabled != null\">\n        enabled,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"enabled != null\">\n        #{enabled,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRoleExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.desc != null\">\n        `desc` = #{record.desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.enabled != null\">\n        enabled = #{record.enabled,jdbcType=BIT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role\n    set id = #{record.id,jdbcType=INTEGER},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      `desc` = #{record.desc,jdbcType=VARCHAR},\n      enabled = #{record.enabled,jdbcType=BIT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRole\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role\n    <set>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"desc != null\">\n        `desc` = #{desc,jdbcType=VARCHAR},\n      </if>\n      <if test=\"enabled != null\">\n        enabled = #{enabled,jdbcType=BIT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRole\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role\n    set `name` = #{name,jdbcType=VARCHAR},\n      `desc` = #{desc,jdbcType=VARCHAR},\n      enabled = #{enabled,jdbcType=BIT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallRoleExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_role\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_role set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallSearchHistoryMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallSearchHistoryMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallSearchHistory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"user_id\" jdbcType=\"INTEGER\" property=\"userId\" />\n    <result column=\"keyword\" jdbcType=\"VARCHAR\" property=\"keyword\" />\n    <result column=\"from\" jdbcType=\"VARCHAR\" property=\"from\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, user_id, keyword, `from`, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_search_history\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_search_history\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_search_history\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_search_history\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_search_history (user_id, keyword, `from`, \n      add_time, update_time, deleted\n      )\n    values (#{userId,jdbcType=INTEGER}, #{keyword,jdbcType=VARCHAR}, #{from,jdbcType=VARCHAR}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}\n      )\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_search_history\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        user_id,\n      </if>\n      <if test=\"keyword != null\">\n        keyword,\n      </if>\n      <if test=\"from != null\">\n        `from`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"userId != null\">\n        #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"keyword != null\">\n        #{keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"from != null\">\n        #{from,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.userId != null\">\n        user_id = #{record.userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.keyword != null\">\n        keyword = #{record.keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.from != null\">\n        `from` = #{record.from,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history\n    set id = #{record.id,jdbcType=INTEGER},\n      user_id = #{record.userId,jdbcType=INTEGER},\n      keyword = #{record.keyword,jdbcType=VARCHAR},\n      `from` = #{record.from,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history\n    <set>\n      <if test=\"userId != null\">\n        user_id = #{userId,jdbcType=INTEGER},\n      </if>\n      <if test=\"keyword != null\">\n        keyword = #{keyword,jdbcType=VARCHAR},\n      </if>\n      <if test=\"from != null\">\n        `from` = #{from,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistory\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history\n    set user_id = #{userId,jdbcType=INTEGER},\n      keyword = #{keyword,jdbcType=VARCHAR},\n      `from` = #{from,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSearchHistoryExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_search_history\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_search_history set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallStorageMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallStorageMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallStorage\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"key\" jdbcType=\"VARCHAR\" property=\"key\" />\n    <result column=\"name\" jdbcType=\"VARCHAR\" property=\"name\" />\n    <result column=\"type\" jdbcType=\"VARCHAR\" property=\"type\" />\n    <result column=\"size\" jdbcType=\"INTEGER\" property=\"size\" />\n    <result column=\"url\" jdbcType=\"VARCHAR\" property=\"url\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, `key`, `name`, `type`, `size`, url, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorageExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_storage\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_storage\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_storage\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_storage\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorageExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorage\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_storage (`key`, `name`, `type`, \n      `size`, url, add_time, \n      update_time, deleted)\n    values (#{key,jdbcType=VARCHAR}, #{name,jdbcType=VARCHAR}, #{type,jdbcType=VARCHAR}, \n      #{size,jdbcType=INTEGER}, #{url,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorage\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_storage\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"key != null\">\n        `key`,\n      </if>\n      <if test=\"name != null\">\n        `name`,\n      </if>\n      <if test=\"type != null\">\n        `type`,\n      </if>\n      <if test=\"size != null\">\n        `size`,\n      </if>\n      <if test=\"url != null\">\n        url,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"key != null\">\n        #{key,jdbcType=VARCHAR},\n      </if>\n      <if test=\"name != null\">\n        #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        #{type,jdbcType=VARCHAR},\n      </if>\n      <if test=\"size != null\">\n        #{size,jdbcType=INTEGER},\n      </if>\n      <if test=\"url != null\">\n        #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorageExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.key != null\">\n        `key` = #{record.key,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.name != null\">\n        `name` = #{record.name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.type != null\">\n        `type` = #{record.type,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.size != null\">\n        `size` = #{record.size,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.url != null\">\n        url = #{record.url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage\n    set id = #{record.id,jdbcType=INTEGER},\n      `key` = #{record.key,jdbcType=VARCHAR},\n      `name` = #{record.name,jdbcType=VARCHAR},\n      `type` = #{record.type,jdbcType=VARCHAR},\n      `size` = #{record.size,jdbcType=INTEGER},\n      url = #{record.url,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorage\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage\n    <set>\n      <if test=\"key != null\">\n        `key` = #{key,jdbcType=VARCHAR},\n      </if>\n      <if test=\"name != null\">\n        `name` = #{name,jdbcType=VARCHAR},\n      </if>\n      <if test=\"type != null\">\n        `type` = #{type,jdbcType=VARCHAR},\n      </if>\n      <if test=\"size != null\">\n        `size` = #{size,jdbcType=INTEGER},\n      </if>\n      <if test=\"url != null\">\n        url = #{url,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorage\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage\n    set `key` = #{key,jdbcType=VARCHAR},\n      `name` = #{name,jdbcType=VARCHAR},\n      `type` = #{type,jdbcType=VARCHAR},\n      `size` = #{size,jdbcType=INTEGER},\n      url = #{url,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallStorageExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_storage\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_storage set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallSystemMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallSystemMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallSystem\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"key_name\" jdbcType=\"VARCHAR\" property=\"keyName\" />\n    <result column=\"key_value\" jdbcType=\"VARCHAR\" property=\"keyValue\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, key_name, key_value, add_time, update_time, deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystemExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_system\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_system\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_system\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_system\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystemExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystem\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_system (key_name, key_value, add_time, \n      update_time, deleted)\n    values (#{keyName,jdbcType=VARCHAR}, #{keyValue,jdbcType=VARCHAR}, #{addTime,jdbcType=TIMESTAMP}, \n      #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystem\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_system\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"keyName != null\">\n        key_name,\n      </if>\n      <if test=\"keyValue != null\">\n        key_value,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"keyName != null\">\n        #{keyName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"keyValue != null\">\n        #{keyValue,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystemExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.keyName != null\">\n        key_name = #{record.keyName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.keyValue != null\">\n        key_value = #{record.keyValue,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system\n    set id = #{record.id,jdbcType=INTEGER},\n      key_name = #{record.keyName,jdbcType=VARCHAR},\n      key_value = #{record.keyValue,jdbcType=VARCHAR},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystem\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system\n    <set>\n      <if test=\"keyName != null\">\n        key_name = #{keyName,jdbcType=VARCHAR},\n      </if>\n      <if test=\"keyValue != null\">\n        key_value = #{keyValue,jdbcType=VARCHAR},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystem\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system\n    set key_name = #{keyName,jdbcType=VARCHAR},\n      key_value = #{keyValue,jdbcType=VARCHAR},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallSystemExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_system\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_system set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallTopicMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallTopicMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"title\" jdbcType=\"VARCHAR\" property=\"title\" />\n    <result column=\"subtitle\" jdbcType=\"VARCHAR\" property=\"subtitle\" />\n    <result column=\"price\" jdbcType=\"DECIMAL\" property=\"price\" />\n    <result column=\"read_count\" jdbcType=\"VARCHAR\" property=\"readCount\" />\n    <result column=\"pic_url\" jdbcType=\"VARCHAR\" property=\"picUrl\" />\n    <result column=\"sort_order\" jdbcType=\"INTEGER\" property=\"sortOrder\" />\n    <result column=\"goods\" jdbcType=\"VARCHAR\" property=\"goods\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <resultMap extends=\"BaseResultMap\" id=\"ResultMapWithBLOBs\" type=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <result column=\"content\" jdbcType=\"LONGVARCHAR\" property=\"content\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.goodsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n            <foreach collection=\"criteria.goodsCriteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler} and #{criterion.secondValue,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, title, subtitle, price, read_count, pic_url, sort_order, goods, add_time, update_time, \n    deleted\n  </sql>\n  <sql id=\"Blob_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    content\n  </sql>\n  <select id=\"selectByExampleWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_topic\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_topic\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_topic\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_topic\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_topic (title, subtitle, price, \n      read_count, pic_url, sort_order, \n      goods, \n      add_time, update_time, deleted, \n      content)\n    values (#{title,jdbcType=VARCHAR}, #{subtitle,jdbcType=VARCHAR}, #{price,jdbcType=DECIMAL}, \n      #{readCount,jdbcType=VARCHAR}, #{picUrl,jdbcType=VARCHAR}, #{sortOrder,jdbcType=INTEGER}, \n      #{goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler}, \n      #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, #{deleted,jdbcType=BIT}, \n      #{content,jdbcType=LONGVARCHAR})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_topic\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"title != null\">\n        title,\n      </if>\n      <if test=\"subtitle != null\">\n        subtitle,\n      </if>\n      <if test=\"price != null\">\n        price,\n      </if>\n      <if test=\"readCount != null\">\n        read_count,\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url,\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order,\n      </if>\n      <if test=\"goods != null\">\n        goods,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n      <if test=\"content != null\">\n        content,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"title != null\">\n        #{title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"subtitle != null\">\n        #{subtitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"price != null\">\n        #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"readCount != null\">\n        #{readCount,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        #{sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"goods != null\">\n        #{goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"content != null\">\n        #{content,jdbcType=LONGVARCHAR},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.title != null\">\n        title = #{record.title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.subtitle != null\">\n        subtitle = #{record.subtitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.price != null\">\n        price = #{record.price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"record.readCount != null\">\n        read_count = #{record.readCount,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.picUrl != null\">\n        pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.sortOrder != null\">\n        sort_order = #{record.sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.goods != null\">\n        goods = #{record.goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n      <if test=\"record.content != null\">\n        content = #{record.content,jdbcType=LONGVARCHAR},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExampleWithBLOBs\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    set id = #{record.id,jdbcType=INTEGER},\n      title = #{record.title,jdbcType=VARCHAR},\n      subtitle = #{record.subtitle,jdbcType=VARCHAR},\n      price = #{record.price,jdbcType=DECIMAL},\n      read_count = #{record.readCount,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      sort_order = #{record.sortOrder,jdbcType=INTEGER},\n      goods = #{record.goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT},\n      content = #{record.content,jdbcType=LONGVARCHAR}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    set id = #{record.id,jdbcType=INTEGER},\n      title = #{record.title,jdbcType=VARCHAR},\n      subtitle = #{record.subtitle,jdbcType=VARCHAR},\n      price = #{record.price,jdbcType=DECIMAL},\n      read_count = #{record.readCount,jdbcType=VARCHAR},\n      pic_url = #{record.picUrl,jdbcType=VARCHAR},\n      sort_order = #{record.sortOrder,jdbcType=INTEGER},\n      goods = #{record.goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    <set>\n      <if test=\"title != null\">\n        title = #{title,jdbcType=VARCHAR},\n      </if>\n      <if test=\"subtitle != null\">\n        subtitle = #{subtitle,jdbcType=VARCHAR},\n      </if>\n      <if test=\"price != null\">\n        price = #{price,jdbcType=DECIMAL},\n      </if>\n      <if test=\"readCount != null\">\n        read_count = #{readCount,jdbcType=VARCHAR},\n      </if>\n      <if test=\"picUrl != null\">\n        pic_url = #{picUrl,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sortOrder != null\">\n        sort_order = #{sortOrder,jdbcType=INTEGER},\n      </if>\n      <if test=\"goods != null\">\n        goods = #{goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n      <if test=\"content != null\">\n        content = #{content,jdbcType=LONGVARCHAR},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKeyWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    set title = #{title,jdbcType=VARCHAR},\n      subtitle = #{subtitle,jdbcType=VARCHAR},\n      price = #{price,jdbcType=DECIMAL},\n      read_count = #{readCount,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      sort_order = #{sortOrder,jdbcType=INTEGER},\n      goods = #{goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT},\n      content = #{content,jdbcType=LONGVARCHAR}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopic\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic\n    set title = #{title,jdbcType=VARCHAR},\n      subtitle = #{subtitle,jdbcType=VARCHAR},\n      price = #{price,jdbcType=DECIMAL},\n      read_count = #{readCount,jdbcType=VARCHAR},\n      pic_url = #{picUrl,jdbcType=VARCHAR},\n      sort_order = #{sortOrder,jdbcType=INTEGER},\n      goods = #{goods,jdbcType=VARCHAR,typeHandler=org.linlinjava.litemall.db.mybatis.JsonIntegerArrayTypeHandler},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleWithBLOBs\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallTopicExample\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    ,\n    <include refid=\"Blob_Column_List\" />\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"ResultMapWithBLOBs\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n        ,\n        <include refid=\"Blob_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_topic\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_topic set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/LitemallUserMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.LitemallUserMapper\">\n  <resultMap id=\"BaseResultMap\" type=\"org.linlinjava.litemall.db.domain.LitemallUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <id column=\"id\" jdbcType=\"INTEGER\" property=\"id\" />\n    <result column=\"username\" jdbcType=\"VARCHAR\" property=\"username\" />\n    <result column=\"password\" jdbcType=\"VARCHAR\" property=\"password\" />\n    <result column=\"gender\" jdbcType=\"TINYINT\" property=\"gender\" />\n    <result column=\"birthday\" jdbcType=\"DATE\" property=\"birthday\" />\n    <result column=\"last_login_time\" jdbcType=\"TIMESTAMP\" property=\"lastLoginTime\" />\n    <result column=\"last_login_ip\" jdbcType=\"VARCHAR\" property=\"lastLoginIp\" />\n    <result column=\"user_level\" jdbcType=\"TINYINT\" property=\"userLevel\" />\n    <result column=\"nickname\" jdbcType=\"VARCHAR\" property=\"nickname\" />\n    <result column=\"mobile\" jdbcType=\"VARCHAR\" property=\"mobile\" />\n    <result column=\"avatar\" jdbcType=\"VARCHAR\" property=\"avatar\" />\n    <result column=\"weixin_openid\" jdbcType=\"VARCHAR\" property=\"weixinOpenid\" />\n    <result column=\"session_key\" jdbcType=\"VARCHAR\" property=\"sessionKey\" />\n    <result column=\"status\" jdbcType=\"TINYINT\" property=\"status\" />\n    <result column=\"add_time\" jdbcType=\"TIMESTAMP\" property=\"addTime\" />\n    <result column=\"update_time\" jdbcType=\"TIMESTAMP\" property=\"updateTime\" />\n    <result column=\"deleted\" jdbcType=\"BIT\" property=\"deleted\" />\n  </resultMap>\n  <sql id=\"Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Update_By_Example_Where_Clause\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <where>\n      <foreach collection=\"example.oredCriteria\" item=\"criteria\" separator=\"or\">\n        <if test=\"criteria.valid\">\n          <trim prefix=\"(\" prefixOverrides=\"and\" suffix=\")\">\n            <foreach collection=\"criteria.criteria\" item=\"criterion\">\n              <choose>\n                <when test=\"criterion.noValue\">\n                  and ${criterion.condition}\n                </when>\n                <when test=\"criterion.singleValue\">\n                  and ${criterion.condition} #{criterion.value}\n                </when>\n                <when test=\"criterion.betweenValue\">\n                  and ${criterion.condition} #{criterion.value} and #{criterion.secondValue}\n                </when>\n                <when test=\"criterion.listValue\">\n                  and ${criterion.condition}\n                  <foreach close=\")\" collection=\"criterion.value\" item=\"listItem\" open=\"(\" separator=\",\">\n                    #{listItem}\n                  </foreach>\n                </when>\n              </choose>\n            </foreach>\n          </trim>\n        </if>\n      </foreach>\n    </where>\n  </sql>\n  <sql id=\"Base_Column_List\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    id, username, `password`, gender, birthday, last_login_time, last_login_ip, user_level, \n    nickname, mobile, avatar, weixin_openid, session_key, `status`, add_time, update_time, \n    deleted\n  </sql>\n  <select id=\"selectByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUserExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"distinct\">\n      distinct\n    </if>\n    <include refid=\"Base_Column_List\" />\n    from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <if test=\"example.distinct\">\n      distinct\n    </if>\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n  </select>\n  <select id=\"selectByPrimaryKey\" parameterType=\"java.lang.Integer\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_user\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <select id=\"selectByPrimaryKeyWithLogicalDelete\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select \n    <include refid=\"Base_Column_List\" />\n    from litemall_user\n    where id = #{id,jdbcType=INTEGER}\n      and deleted = \n    <choose>\n      <when test=\"andLogicalDeleted\">\n        1\n      </when>\n      <otherwise>\n        0\n      </otherwise>\n    </choose>\n  </select>\n  <select id=\"selectByPrimaryKeySelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_user\n    where id = #{id,jdbcType=INTEGER}\n  </select>\n  <delete id=\"deleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_user\n    where id = #{id,jdbcType=INTEGER}\n  </delete>\n  <delete id=\"deleteByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUserExample\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    delete from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </delete>\n  <insert id=\"insert\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_user (username, `password`, gender, \n      birthday, last_login_time, last_login_ip, \n      user_level, nickname, mobile, \n      avatar, weixin_openid, session_key, \n      `status`, add_time, update_time, \n      deleted)\n    values (#{username,jdbcType=VARCHAR}, #{password,jdbcType=VARCHAR}, #{gender,jdbcType=TINYINT}, \n      #{birthday,jdbcType=DATE}, #{lastLoginTime,jdbcType=TIMESTAMP}, #{lastLoginIp,jdbcType=VARCHAR}, \n      #{userLevel,jdbcType=TINYINT}, #{nickname,jdbcType=VARCHAR}, #{mobile,jdbcType=VARCHAR}, \n      #{avatar,jdbcType=VARCHAR}, #{weixinOpenid,jdbcType=VARCHAR}, #{sessionKey,jdbcType=VARCHAR}, \n      #{status,jdbcType=TINYINT}, #{addTime,jdbcType=TIMESTAMP}, #{updateTime,jdbcType=TIMESTAMP}, \n      #{deleted,jdbcType=BIT})\n  </insert>\n  <insert id=\"insertSelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    <selectKey keyProperty=\"id\" order=\"AFTER\" resultType=\"java.lang.Integer\">\n      SELECT LAST_INSERT_ID()\n    </selectKey>\n    insert into litemall_user\n    <trim prefix=\"(\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"username != null\">\n        username,\n      </if>\n      <if test=\"password != null\">\n        `password`,\n      </if>\n      <if test=\"gender != null\">\n        gender,\n      </if>\n      <if test=\"birthday != null\">\n        birthday,\n      </if>\n      <if test=\"lastLoginTime != null\">\n        last_login_time,\n      </if>\n      <if test=\"lastLoginIp != null\">\n        last_login_ip,\n      </if>\n      <if test=\"userLevel != null\">\n        user_level,\n      </if>\n      <if test=\"nickname != null\">\n        nickname,\n      </if>\n      <if test=\"mobile != null\">\n        mobile,\n      </if>\n      <if test=\"avatar != null\">\n        avatar,\n      </if>\n      <if test=\"weixinOpenid != null\">\n        weixin_openid,\n      </if>\n      <if test=\"sessionKey != null\">\n        session_key,\n      </if>\n      <if test=\"status != null\">\n        `status`,\n      </if>\n      <if test=\"addTime != null\">\n        add_time,\n      </if>\n      <if test=\"updateTime != null\">\n        update_time,\n      </if>\n      <if test=\"deleted != null\">\n        deleted,\n      </if>\n    </trim>\n    <trim prefix=\"values (\" suffix=\")\" suffixOverrides=\",\">\n      <if test=\"username != null\">\n        #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"password != null\">\n        #{password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"gender != null\">\n        #{gender,jdbcType=TINYINT},\n      </if>\n      <if test=\"birthday != null\">\n        #{birthday,jdbcType=DATE},\n      </if>\n      <if test=\"lastLoginTime != null\">\n        #{lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"lastLoginIp != null\">\n        #{lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userLevel != null\">\n        #{userLevel,jdbcType=TINYINT},\n      </if>\n      <if test=\"nickname != null\">\n        #{nickname,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"avatar != null\">\n        #{avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"weixinOpenid != null\">\n        #{weixinOpenid,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sessionKey != null\">\n        #{sessionKey,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        #{status,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        #{deleted,jdbcType=BIT},\n      </if>\n    </trim>\n  </insert>\n  <select id=\"countByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUserExample\" resultType=\"java.lang.Long\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select count(*) from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n  </select>\n  <update id=\"updateByExampleSelective\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user\n    <set>\n      <if test=\"record.id != null\">\n        id = #{record.id,jdbcType=INTEGER},\n      </if>\n      <if test=\"record.username != null\">\n        username = #{record.username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.password != null\">\n        `password` = #{record.password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.gender != null\">\n        gender = #{record.gender,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.birthday != null\">\n        birthday = #{record.birthday,jdbcType=DATE},\n      </if>\n      <if test=\"record.lastLoginTime != null\">\n        last_login_time = #{record.lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.lastLoginIp != null\">\n        last_login_ip = #{record.lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.userLevel != null\">\n        user_level = #{record.userLevel,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.nickname != null\">\n        nickname = #{record.nickname,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.mobile != null\">\n        mobile = #{record.mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.avatar != null\">\n        avatar = #{record.avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.weixinOpenid != null\">\n        weixin_openid = #{record.weixinOpenid,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.sessionKey != null\">\n        session_key = #{record.sessionKey,jdbcType=VARCHAR},\n      </if>\n      <if test=\"record.status != null\">\n        `status` = #{record.status,jdbcType=TINYINT},\n      </if>\n      <if test=\"record.addTime != null\">\n        add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.updateTime != null\">\n        update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"record.deleted != null\">\n        deleted = #{record.deleted,jdbcType=BIT},\n      </if>\n    </set>\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user\n    set id = #{record.id,jdbcType=INTEGER},\n      username = #{record.username,jdbcType=VARCHAR},\n      `password` = #{record.password,jdbcType=VARCHAR},\n      gender = #{record.gender,jdbcType=TINYINT},\n      birthday = #{record.birthday,jdbcType=DATE},\n      last_login_time = #{record.lastLoginTime,jdbcType=TIMESTAMP},\n      last_login_ip = #{record.lastLoginIp,jdbcType=VARCHAR},\n      user_level = #{record.userLevel,jdbcType=TINYINT},\n      nickname = #{record.nickname,jdbcType=VARCHAR},\n      mobile = #{record.mobile,jdbcType=VARCHAR},\n      avatar = #{record.avatar,jdbcType=VARCHAR},\n      weixin_openid = #{record.weixinOpenid,jdbcType=VARCHAR},\n      session_key = #{record.sessionKey,jdbcType=VARCHAR},\n      `status` = #{record.status,jdbcType=TINYINT},\n      add_time = #{record.addTime,jdbcType=TIMESTAMP},\n      update_time = #{record.updateTime,jdbcType=TIMESTAMP},\n      deleted = #{record.deleted,jdbcType=BIT}\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"updateByPrimaryKeySelective\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user\n    <set>\n      <if test=\"username != null\">\n        username = #{username,jdbcType=VARCHAR},\n      </if>\n      <if test=\"password != null\">\n        `password` = #{password,jdbcType=VARCHAR},\n      </if>\n      <if test=\"gender != null\">\n        gender = #{gender,jdbcType=TINYINT},\n      </if>\n      <if test=\"birthday != null\">\n        birthday = #{birthday,jdbcType=DATE},\n      </if>\n      <if test=\"lastLoginTime != null\">\n        last_login_time = #{lastLoginTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"lastLoginIp != null\">\n        last_login_ip = #{lastLoginIp,jdbcType=VARCHAR},\n      </if>\n      <if test=\"userLevel != null\">\n        user_level = #{userLevel,jdbcType=TINYINT},\n      </if>\n      <if test=\"nickname != null\">\n        nickname = #{nickname,jdbcType=VARCHAR},\n      </if>\n      <if test=\"mobile != null\">\n        mobile = #{mobile,jdbcType=VARCHAR},\n      </if>\n      <if test=\"avatar != null\">\n        avatar = #{avatar,jdbcType=VARCHAR},\n      </if>\n      <if test=\"weixinOpenid != null\">\n        weixin_openid = #{weixinOpenid,jdbcType=VARCHAR},\n      </if>\n      <if test=\"sessionKey != null\">\n        session_key = #{sessionKey,jdbcType=VARCHAR},\n      </if>\n      <if test=\"status != null\">\n        `status` = #{status,jdbcType=TINYINT},\n      </if>\n      <if test=\"addTime != null\">\n        add_time = #{addTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"updateTime != null\">\n        update_time = #{updateTime,jdbcType=TIMESTAMP},\n      </if>\n      <if test=\"deleted != null\">\n        deleted = #{deleted,jdbcType=BIT},\n      </if>\n    </set>\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <update id=\"updateByPrimaryKey\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUser\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user\n    set username = #{username,jdbcType=VARCHAR},\n      `password` = #{password,jdbcType=VARCHAR},\n      gender = #{gender,jdbcType=TINYINT},\n      birthday = #{birthday,jdbcType=DATE},\n      last_login_time = #{lastLoginTime,jdbcType=TIMESTAMP},\n      last_login_ip = #{lastLoginIp,jdbcType=VARCHAR},\n      user_level = #{userLevel,jdbcType=TINYINT},\n      nickname = #{nickname,jdbcType=VARCHAR},\n      mobile = #{mobile,jdbcType=VARCHAR},\n      avatar = #{avatar,jdbcType=VARCHAR},\n      weixin_openid = #{weixinOpenid,jdbcType=VARCHAR},\n      session_key = #{sessionKey,jdbcType=VARCHAR},\n      `status` = #{status,jdbcType=TINYINT},\n      add_time = #{addTime,jdbcType=TIMESTAMP},\n      update_time = #{updateTime,jdbcType=TIMESTAMP},\n      deleted = #{deleted,jdbcType=BIT}\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n  <select id=\"selectOneByExample\" parameterType=\"org.linlinjava.litemall.db.domain.LitemallUserExample\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <include refid=\"Base_Column_List\" />\n    from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Example_Where_Clause\" />\n    </if>\n    <if test=\"orderByClause != null\">\n      order by ${orderByClause}\n    </if>\n    limit 1\n  </select>\n  <select id=\"selectOneByExampleSelective\" parameterType=\"map\" resultMap=\"BaseResultMap\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    select\n    <choose>\n      <when test=\"selective != null and selective.length &gt; 0\">\n        <foreach collection=\"selective\" item=\"column\" separator=\",\">\n          ${column.aliasedEscapedColumnName}\n        </foreach>\n      </when>\n      <otherwise>\n        <include refid=\"Base_Column_List\" />\n      </otherwise>\n    </choose>\n    from litemall_user\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n    <if test=\"example.orderByClause != null\">\n      order by ${example.orderByClause}\n    </if>\n    limit 1\n  </select>\n  <update id=\"logicalDeleteByExample\" parameterType=\"map\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user set deleted = 1\n    <if test=\"_parameter != null\">\n      <include refid=\"Update_By_Example_Where_Clause\" />\n    </if>\n  </update>\n  <update id=\"logicalDeleteByPrimaryKey\" parameterType=\"java.lang.Integer\">\n    <!--\n      WARNING - @mbg.generated\n      This element is automatically generated by MyBatis Generator, do not modify.\n    -->\n    update litemall_user set deleted = 1\n    where id = #{id,jdbcType=INTEGER}\n  </update>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/OrderMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.OrderMapper\">\n    <update id=\"updateWithOptimisticLocker\" parameterType=\"map\">\n        update litemall_order\n        <set>\n            <if test=\"order.id != null\">\n                id = #{order.id,jdbcType=INTEGER},\n            </if>\n            <if test=\"order.userId != null\">\n                user_id = #{order.userId,jdbcType=INTEGER},\n            </if>\n            <if test=\"order.orderSn != null\">\n                order_sn = #{order.orderSn,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.orderStatus != null\">\n                order_status = #{order.orderStatus,jdbcType=SMALLINT},\n            </if>\n            <if test=\"order.aftersaleStatus != null\">\n                aftersale_status = #{order.aftersaleStatus,jdbcType=SMALLINT},\n            </if>\n            <if test=\"order.consignee != null\">\n                consignee = #{order.consignee,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.mobile != null\">\n                mobile = #{order.mobile,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.address != null\">\n                address = #{order.address,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.message != null\">\n                message = #{order.message,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.goodsPrice != null\">\n                goods_price = #{order.goodsPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.freightPrice != null\">\n                freight_price = #{order.freightPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.couponPrice != null\">\n                coupon_price = #{order.couponPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.integralPrice != null\">\n                integral_price = #{order.integralPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.grouponPrice != null\">\n                groupon_price = #{order.grouponPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.orderPrice != null\">\n                order_price = #{order.orderPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.actualPrice != null\">\n                actual_price = #{order.actualPrice,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.payId != null\">\n                pay_id = #{order.payId,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.payTime != null\">\n                pay_time = #{order.payTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.shipSn != null\">\n                ship_sn = #{order.shipSn,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.shipChannel != null\">\n                ship_channel = #{order.shipChannel,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.shipTime != null\">\n                ship_time = #{order.shipTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.refundAmount != null\">\n                refund_amount = #{order.refundAmount,jdbcType=DECIMAL},\n            </if>\n            <if test=\"order.refundType != null\">\n                refund_type = #{order.refundType,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.refundContent != null\">\n                refund_content = #{order.refundContent,jdbcType=VARCHAR},\n            </if>\n            <if test=\"order.refundTime != null\">\n                refund_time = #{order.refundTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.confirmTime != null\">\n                confirm_time = #{order.confirmTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.comments != null\">\n                comments = #{order.comments,jdbcType=SMALLINT},\n            </if>\n            <if test=\"order.endTime != null\">\n                end_time = #{order.endTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.addTime != null\">\n                add_time = #{order.addTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.updateTime != null\">\n                update_time = #{order.updateTime,jdbcType=TIMESTAMP},\n            </if>\n            <if test=\"order.deleted != null\">\n                deleted = #{order.deleted,jdbcType=BIT},\n            </if>\n        </set>\n        where id = #{order.id,jdbcType=INTEGER} and update_time = #{lastUpdateTime,jdbcType=INTEGER}\n    </update>\n\n    <select id=\"getOrderIds\" resultType=\"hashmap\">\n        select o.id, o.add_time\n        from litemall_order o\n        left join litemall_user u\n        on o.user_id = u.id\n        left join litemall_order_goods og\n        on o.id = og.order_id\n        <where>\n            <if test=\"query != null\">\n                ${query}\n            </if>\n        </where>\n        group by o.id\n        <if test=\"orderByClause != null\">\n            order by ${orderByClause}\n        </if>\n    </select>\n    <resultMap type=\"org.linlinjava.litemall.db.domain.OrderVo\" id=\"orderList\">\n        <id column=\"id\" property=\"id\"/>\n        <result column=\"order_sn\" property=\"orderSn\"/>\n        <result column=\"order_status\" property=\"orderStatus\"/>\n        <result column=\"actual_price\" property=\"actualPrice\"/>\n        <result column=\"freight_price\" property=\"freightPrice\"/>\n        <result column=\"integral_price\" property=\"integralPrice\"/>\n        <result column=\"order_price\" property=\"orderPrice\"/>\n        <result column=\"pay_time\" property=\"payTime\"/>\n        <result column=\"add_time\" property=\"addTime\"/>\n        <result column=\"ship_channel\" property=\"shipChannel\"/>\n        <result column=\"ship_sn\" property=\"shipSn\"/>\n        <result column=\"consignee\" property=\"consignee\"/>\n        <result column=\"address\" property=\"address\"/>\n        <result column=\"mobile\" property=\"mobile\"/>\n        <result column=\"message\" property=\"message\"/>\n        <result column=\"user_id\" property=\"userId\"/>\n        <result column=\"user_name\" property=\"userName\"/>\n        <result column=\"user_avatar\" property=\"userAvatar\"/>\n\n        <collection property=\"goodsVoList\" ofType=\"org.linlinjava.litemall.db.domain.OrderGoodsVo\">\n            <id column=\"ogid\" property=\"id\"/>\n            <result column=\"goods_id\" property=\"goodsId\"/>\n            <result column=\"product_id\" property=\"productId\"/>\n            <result column=\"goods_name\" property=\"goodsName\"/>\n            <result column=\"goods_picture\" property=\"picUrl\"/>\n            <result column=\"goods_specifications\" property=\"specifications\" typeHandler=\"org.linlinjava.litemall.db.mybatis.JsonStringArrayTypeHandler\"/>\n            <result column=\"goods_number\" property=\"number\"/>\n            <result column=\"goods_price\" property=\"price\"/>\n        </collection>\n    </resultMap>\n    <select id=\"getOrderList\" resultMap=\"orderList\">\n        select o.id, o.order_sn, o.order_status, o.actual_price, o.freight_price, o.add_time, o.message,\n        o.consignee, o.address, o.mobile, o.pay_time, o.order_price, o.ship_channel, o.ship_sn,\n        u.id user_id, u.nickname user_name, u.avatar user_avatar, o.integral_price,\n        og.id ogid, og.goods_id, og.product_id, og.goods_name, og.pic_url goods_picture,\n        og.specifications goods_specifications, og.number goods_number, og.price goods_price\n        from litemall_order o\n        left join litemall_user u\n        on o.user_id = u.id\n        left join litemall_order_goods og\n        on o.id = og.order_id\n        left join litemall_goods g\n        on og.goods_id = g.id\n        <where>\n            <if test=\"query != null\">\n                ${query}\n            </if>\n        </where>\n        <if test=\"orderByClause != null\">\n            order by ${orderByClause}\n        </if>\n    </select>\n</mapper>"
  },
  {
    "path": "litemall-db/src/main/resources/org/linlinjava/litemall/db/dao/StatMapper.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<!DOCTYPE mapper PUBLIC \"-//mybatis.org//DTD Mapper 3.0//EN\" \"http://mybatis.org/dtd/mybatis-3-mapper.dtd\">\n<mapper namespace=\"org.linlinjava.litemall.db.dao.StatMapper\">\n    <select id=\"statUser\" resultType=\"map\">\n        select\n        substr(add_time,1,10) as day,\n        count(distinct id) as users\n        from litemall_user\n        group by substr(add_time,1,10)\n    </select>\n    <select id=\"statOrder\" resultType=\"map\">\n        select\n        substr(add_time,1,10) as day,\n        count(id) as orders,\n        count(distinct user_id) as customers,\n        sum(actual_price) as amount,\n        round(sum(actual_price)/count(distinct user_id),2) as pcr\n        from litemall_order\n        where order_status in(401,402)\n        group by substr(add_time,1,10)\n    </select>\n    <select id=\"statGoods\" resultType=\"map\">\n        select\n        substr(add_time,1, 10) as day,\n        count(distinct order_id) as orders,\n        sum(number) as products,\n        sum(number*price) as amount\n        from litemall_order_goods\n        group by substr(add_time,1, 10)\n    </select>\n</mapper>\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/Application.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall.db\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\npublic class Application {\n\n    public static void main(String[] args) {\n        SpringApplication.run(Application.class, args);\n    }\n\n}"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/DbConfigTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class DbConfigTest {\n    @Autowired\n    Environment environment;\n\n    @Test\n    public void test() {\n        System.out.println(environment.getProperty(\"spring.datasource.druid.url\"));\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/DbTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class DbTest {\n    @Test\n    public void test() {\n    }\n\n}\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/DbUtilTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Test;\nimport org.linlinjava.litemall.db.util.DbUtil;\n\nimport java.io.File;\n\npublic class DbUtilTest {\n    @Test\n    public void testBackup() {\n        File file = new File(\"test.sql\");\n        DbUtil.backup(file, \"litemall\", \"litemall123456\", \"litemall\");\n    }\n\n//    这个测试用例会重置litemall数据库，所以比较危险，请开发者注意\n//    @Test\n    public void testLoad() {\n        File file = new File(\"test.sql\");\n        DbUtil.load(file, \"litemall\", \"litemall123456\", \"litemall\");\n    }\n}\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/MapperReturnTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Assert;\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.db.dao.LitemallSystemMapper;\nimport org.linlinjava.litemall.db.domain.LitemallSystem;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class MapperReturnTest {\n\n    @Autowired\n    private LitemallSystemMapper systemMapper;\n\n    @Test\n    public void test() {\n        LitemallSystem system = new LitemallSystem();\n        system.setKeyName(\"test-system-key\");\n        system.setKeyValue(\"test-system-value\");\n        int updates = systemMapper.insertSelective(system);\n        Assert.assertEquals(updates, 1);\n\n        updates = systemMapper.deleteByPrimaryKey(system.getId());\n        Assert.assertEquals(updates, 1);\n\n        updates = systemMapper.updateByPrimaryKey(system);\n        Assert.assertEquals(updates, 0);\n    }\n\n}\n\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/StatMapperTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.db.dao.StatMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\nimport java.util.List;\nimport java.util.Map;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class StatMapperTest {\n\n    @Autowired\n    private StatMapper statMapper;\n\n    @Test\n    public void testUser() {\n        List<Map> result = statMapper.statUser();\n        for (Map m : result) {\n            m.forEach((k, v) -> System.out.println(\"key:value = \" + k + \":\" + v));\n        }\n    }\n\n    @Test\n    public void testOrder() {\n        List<Map> result = statMapper.statOrder();\n        for (Map m : result) {\n            m.forEach((k, v) -> System.out.println(\"key:value = \" + k + \":\" + v));\n        }\n    }\n\n    @Test\n    public void testGoods() {\n        List<Map> result = statMapper.statGoods();\n        for (Map m : result) {\n            m.forEach((k, v) -> System.out.println(\"key:value = \" + k + \":\" + v));\n        }\n    }\n\n}\n"
  },
  {
    "path": "litemall-db/src/test/java/org/linlinjava/litemall/db/StockTest.java",
    "content": "package org.linlinjava.litemall.db;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.linlinjava.litemall.db.dao.GoodsProductMapper;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.junit4.SpringRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringRunner.class)\n@SpringBootTest\npublic class StockTest {\n    @Autowired\n    private GoodsProductMapper goodsProductMapper;\n\n    @Test\n    public void testReduceStock() {\n        Integer id = 1;\n        Short num = 10;\n        goodsProductMapper.reduceStock(id, num);\n    }\n\n    @Test\n    public void testAddStock() {\n        Integer id = 1;\n        Short num = 10;\n        goodsProductMapper.addStock(id, num);\n    }\n}\n"
  },
  {
    "path": "litemall-vue/.eslintrc.js",
    "content": "module.exports = {\n  root: true,\n  env: {\n    node: true,\n    es6: true\n  },\n  // extends: ['plugin:vue/essential', '@vue/prettier'],\n  // rules: {\n  //   camelcase: 'off',\n  //   quotes: ['error', 'single'],\n  //   indent: ['error', 2, { SwitchCase: 1 }],\n  //   'no-console': process.env.NODE_ENV === 'production' ? 'error' : 'off',\n  //   'no-debugger': process.env.NODE_ENV === 'production' ? 'error' : 'off'\n  // },\n  parserOptions: {\n    parser: 'babel-eslint',\n    ecmaVersion:\"latest\",//最新版，或者你需要的 ECMAScript 版本\n    sourceType:\"module\" // 允许使用 import/export 语句\n  }\n};\n"
  },
  {
    "path": "litemall-vue/.gitignore",
    "content": ".DS_Store\nnode_modules\n/dist\n/package-lock.json\n\n# local env files\n.env.local\n.env.*.local\n\n# Log files\nnpm-debug.log*\nyarn-debug.log*\nyarn-error.log*\n\n# Editor directories and files\n.idea\n.vscode\n*.suo\n*.ntvs*\n*.njsproj\n*.sln\n*.sw*\n"
  },
  {
    "path": "litemall-vue/.postcssrc.js",
    "content": "module.exports = {\n  plugins: {\n    autoprefixer: {}\n  }\n};\n"
  },
  {
    "path": "litemall-vue/.prettierrc.js",
    "content": "module.exports = {\n  tabWidth: 2,\n  singleQuote: true\n};\n"
  },
  {
    "path": "litemall-vue/babel.config.js",
    "content": "module.exports = {\n  presets: ['@vue/app'],\n  plugins: [\n    'lodash',\n    [\n      'import',\n      {\n        libraryName: 'vant',\n        libraryDirectory: 'es',\n        style: true\n      },\n      'vant'\n    ]\n  ]\n};\n"
  },
  {
    "path": "litemall-vue/package.json",
    "content": "{\n  \"name\": \"litemall-vue\",\n  \"version\": \"0.1.0\",\n  \"description\": \"litemall-vue basing on vant--mobile-mall 0.1.0\",\n  \"author\": \"litemall <linlinjava@163.com>\",\n  \"license\": \"MIT\",\n  \"private\": true,\n  \"scripts\": {\n    \"dev\": \"vue-cli-service serve\",\n    \"serve\": \"vue-cli-service serve\",\n    \"build\": \"vue-cli-service build  --mode production\",\n    \"build:dep\": \"vue-cli-service build --mode deployment\",\n    \"build:prod\": \"vue-cli-service build --mode production\",\n    \"lint\": \"vue-cli-service lint\"\n  },\n  \"dependencies\": {\n    \"@chenfengyuan/vue-countdown\": \"^1.1.2\",\n    \"axios\": \">=0.21.1\",\n    \"dayjs\": \"^1.7.7\",\n    \"js-cookie\": \"2.2.0\",\n    \"lodash\": \"^4.17.21\",\n    \"vant\": \"^2.0.6\",\n    \"vue\": \"^2.5.17\",\n    \"vue-router\": \"^3.0.1\",\n    \"vuelidate\": \"^0.7.4\",\n    \"vuex\": \"^3.4.0\"\n  },\n  \"devDependencies\": {\n    \"@vue/cli-plugin-babel\": \"^3.0.5\",\n    \"@vue/cli-plugin-eslint\": \"^3.0.5\",\n    \"@vue/cli-service\": \"^3.0.5\",\n    \"@vue/eslint-config-prettier\": \"^3.0.5\",\n    \"babel-plugin-import\": \"^1.9.1\",\n    \"babel-plugin-lodash\": \"^3.3.4\",\n    \"sass\": \"^1.26.2\",\n    \"sass-loader\": \"^7.1.0\",\n    \"vue-template-compiler\": \"^2.5.17\"\n  },\n  \"browserslist\": [\n    \"> 1%\",\n    \"last 2 versions\",\n    \"not ie <= 8\"\n  ]\n}\n"
  },
  {
    "path": "litemall-vue/public/index.html",
    "content": "<!DOCTYPE html>\n<html lang=\"en\">\n\n<head>\n  <meta charset=\"utf-8\">\n  <meta http-equiv=\"X-UA-Compatible\" content=\"IE=edge\">\n  <meta content=\"black\" name=\"apple-mobile-web-app-status-bar-style\">\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0\">\n  <link rel=\"icon\" href=\"./favicon.ico\" type=\"image/x-icon\" />\n  <title>litemall-vue</title>\n</head>\n\n<body>\n  <noscript>\n    <strong>Please enable it to continue.</strong>\n  </noscript>\n  <div id=\"app\">\n    <div class=\"lds-ball\">\n      <div></div>\n    </div>\n  </div>\n  <!-- built files will be auto injected -->\n</body>\n\n</html>"
  },
  {
    "path": "litemall-vue/src/App.vue",
    "content": "<template>\n<div id=\"app\">\n  <v-header></v-header>\n  <keep-alive>\n    <router-view class=\"view-router\"  v-if=\"$route.meta.keepAlive\"></router-view>\n  </keep-alive>\n  <router-view class=\"view-router\" v-if=\"!$route.meta.keepAlive\"></router-view>\n  <router-view name=\"tabbar\"></router-view>\n</div>\n</template>\n<script>\nimport header from \"@/components/Header\";\n\nexport default {\n  components:{\n    'v-header': header\n  }\n}\n</script>\n<style lang=\"scss\" src=\"./assets/scss/global.scss\" />\n"
  },
  {
    "path": "litemall-vue/src/api/api.js",
    "content": "import request from '@/utils/request'\n\nconst IndexUrl= '/home/index'; //首页数据接口\nexport function getHome() {\n  return request({\n    url: IndexUrl,\n    method: 'get'\n  })\n}\n\nconst CatalogList='/catalog/index'; //分类目录全部分类数据接口\nexport function catalogList() {\n  return request({\n    url: CatalogList,\n    method: 'get'\n  })\n}\n\nconst CatalogCurrent='/catalog/current'; //分类目录当前分类数据接口\nexport function catalogCurrent(query) {\n  return request({\n    url: CatalogCurrent,\n    method: 'get',\n    params: query\n  })\n}\n\nconst AuthLoginByWeixin='/auth/login_by_weixin'; //微信登录\n\n\nconst AuthLoginByAccount='/auth/login'; //账号登录\nexport function authLoginByAccount(data) {\n  return request({\n    url: AuthLoginByAccount,\n    method: 'post',\n    data\n  })\n}\nconst AuthLogout='/auth/logout'; //账号登出\nexport function authLogout() {\n  return request({\n    url: AuthLogout,\n    method: 'post'\n  })\n}\nconst AuthInfo='/auth/info'; //用户信息\nexport function authInfo() {\n  return request({\n    url: AuthInfo,\n    method: 'get'\n  })\n}\nconst AuthProfile='/auth/profile'; //账号修改\nexport function authProfile(data) {\n  return request({\n    url: AuthProfile,\n    method: 'post',\n    data\n  })\n}\nconst AuthRegister='/auth/register'; //账号注册\nexport function authRegister(data) {\n  return request({\n    url: AuthRegister,\n    method: 'post',\n    data\n  });\n}\nconst AuthReset='/auth/reset'; //账号密码重置\nexport function authReset(data) {\n  return request({\n    url: AuthReset,\n    method: 'post',\n    data\n  })\n}\nconst AuthRegisterCaptcha='/auth/regCaptcha'; //注册验证码\nexport function authRegisterCaptcha(data) {\n  return request({\n    url: AuthRegisterCaptcha,\n    method: 'post',\n    data\n  })\n}\nconst AuthCaptcha='/auth/captcha'; //验证码\nexport function authCaptcha(data) {\n  return request({\n    url: AuthCaptcha,\n    method: 'post',\n    data\n  })\n}\n\nconst GoodsCount='/goods/count'; //统计商品总数\nexport function goodsCount() {\n  return request({\n    url: GoodsCount,\n    method: 'get'\n  })\n}\nexport const GoodsList='/goods/list'; //获得商品列表\nexport function goodsList(query) {\n  return request({\n    url: GoodsList,\n    method: 'get',\n    params: query\n  })\n}\nconst GoodsCategory='/goods/category'; //获得分类数据\nexport function goodsCategory(query) {\n  return request({\n    url: GoodsCategory,\n    method: 'get',\n    params: query\n  })\n}\nconst GoodsDetail='/goods/detail'; //获得商品的详情\nexport function goodsDetail(query) {\n  return request({\n    url: GoodsDetail,\n    method: 'get',\n    params: query\n  })\n}\nconst GoodsRelated='/goods/related'; //商品详情页的关联商品（大家都在看）\n\nconst BrandList='/brand/list'; //品牌列表\nexport function brandList(query) {\n  return request({\n    url: BrandList,\n    method: 'get',\n    params: query\n  })\n}\nconst BrandDetail='/brand/detail'; //品牌详情\nexport function brandDetail(query) {\n  return request({\n    url: BrandDetail,\n    method: 'get',\n    params: query\n  })\n}\n\nconst CartList='/cart/index'; //获取购物车的数据\nexport function cartList(query) {\n  return request({\n    url: CartList,\n    method: 'get',\n    params: query\n  })\n}\nconst CartAdd='/cart/add'; // 添加商品到购物车\nexport function cartAdd(data) {\n  return request({\n    url: CartAdd,\n    method: 'post',\n    data\n  })\n}\nconst CartFastAdd='/cart/fastadd'; // 立即购买商品\nexport function cartFastAdd(data) {\n  return request({\n    url: CartFastAdd,\n    method: 'post',\n    data\n  })\n}\nconst CartUpdate='/cart/update'; // 更新购物车的商品\nexport function cartUpdate(data) {\n  return request({\n    url: CartUpdate,\n    method: 'post',\n    data\n  })\n}\nconst CartDelete='/cart/delete'; // 删除购物车的商品\nexport function cartDelete(data) {\n  return request({\n    url: CartDelete,\n    method: 'post',\n    data\n  })\n}\nconst CartChecked='/cart/checked'; // 选择或取消选择商品\nexport function cartChecked(data) {\n  return request({\n    url: CartChecked,\n    method: 'post',\n    data\n  })\n}\nconst CartGoodsCount='/cart/goodscount'; // 获取购物车商品件数\nexport function cartGoodsCount() {\n  return request({\n    url: CartGoodsCount,\n    method: 'get'\n  })\n}\nconst CartCheckout='/cart/checkout'; // 下单前信息确认\nexport function cartCheckout(query) {\n  return request({\n    url: CartCheckout,\n    method: 'get',\n    params: query\n  })\n}\n\nconst CollectList='/collect/list'; //收藏列表\nexport function collectList(query) {\n  return request({\n    url: CollectList,\n    method: 'get',\n    params: query\n  })\n}\nconst CollectAddOrDelete='/collect/addordelete'; //添加或取消收藏\nexport function collectAddOrDelete(data) {\n  return request({\n    url: CollectAddOrDelete,\n    method: 'post',\n    data\n  })\n}\nconst CommentList='/comment/list'; //评论列表\nconst CommentCount='/comment/count'; //评论总数\nconst CommentPost='/comment/post'; //发表评论\n\nconst TopicList='/topic/list'; //专题列表\nexport function topicList(query) {\n  return request({\n    url: TopicList,\n    method: 'get',\n    params: query\n  })\n}\nconst TopicDetail='/topic/detail'; //专题详情\nexport function topicDetail(query) {\n  return request({\n    url: TopicDetail,\n    method: 'get',\n    params: query\n  })\n}\nconst TopicRelated='/topic/related'; //相关专题\nexport function topicRelated(query) {\n  return request({\n    url: TopicRelated,\n    method: 'get',\n    params: query\n  })\n}\n\nconst SearchIndex='/search/index'; //搜索关键字\nconst SearchResult='/search/result'; //搜索结果\nconst SearchHelper='/search/helper'; //搜索帮助\nconst SearchClearHistory='/search/clearhistory'; //搜索历史清楚\n\nconst AddressList='/address/list'; //收货地址列表\nexport function addressList(query) {\n  return request({\n    url: AddressList,\n    method: 'get',\n    params: query\n  })\n}\n\nconst AddressDetail='/address/detail'; //收货地址详情\nexport function addressDetail(query) {\n  return request({\n    url: AddressDetail,\n    method: 'get',\n    params: query\n  })\n}\nconst AddressSave='/address/save'; //保存收货地址\nexport function addressSave(data) {\n  return request({\n    url: AddressSave,\n    method: 'post',\n    data\n  })\n}\nconst AddressDelete='/address/delete'; //保存收货地址\nexport function addressDelete(data) {\n  return request({\n    url: AddressDelete,\n    method: 'post',\n    data\n  })\n}\n\nconst ExpressQuery='/express/query'; //物流查询\n\nconst OrderSubmit='/order/submit'; // 提交订单\nexport function orderSubmit(data) {\n  return request({\n    url: OrderSubmit,\n    method: 'post',\n    data\n  })\n}\nconst OrderPrepay='/order/prepay'; // 订单的预支付会话\nexport function orderPrepay(data) {\n  return request({\n    url: OrderPrepay,\n    method: 'post',\n    data\n  })\n}\nconst OrderH5pay = '/order/h5pay'; // h5支付\nexport function orderH5pay(data) {\n  return request({\n    url: OrderH5pay,\n    method: 'post',\n    data\n  });\n}\nexport const OrderList='/order/list'; //订单列表\nexport function orderList(query) {\n  return request({\n    url: OrderList,\n    method: 'get',\n    params: query\n  })\n}\nconst OrderDetail='/order/detail'; //订单详情\nexport function orderDetail(query) {\n  return request({\n    url: OrderDetail,\n    method: 'get',\n    params: query\n  })\n}\nconst OrderCancel='/order/cancel'; //取消订单\nexport function orderCancel(data) {\n  return request({\n    url: OrderCancel,\n    method: 'post',\n    data\n  })\n}\nconst OrderRefund='/order/refund'; //退款取消订单\nexport function orderRefund(data) {\n  return request({\n    url: OrderRefund,\n    method: 'post',\n    data\n  })\n}\nconst OrderDelete='/order/delete'; //删除订单\nexport function orderDelete(data) {\n  return request({\n    url: OrderDelete,\n    method: 'post',\n    data\n  })\n}\nconst OrderConfirm='/order/confirm'; //确认收货\nexport function orderConfirm(data) {\n  return request({\n    url: OrderConfirm,\n    method: 'post',\n    data\n  })\n}\nconst OrderGoods='/order/goods'; // 代评价商品信息\nconst OrderComment='/order/comment'; // 评价订单商品信息\n\nconst FeedbackAdd='/feedback/submit'; //添加反馈\nexport function feedbackAdd(data) {\n  return request({\n    url: FeedbackAdd,\n    method: 'post',\n    data\n  })\n}\n\nconst FootprintList='/footprint/list'; //足迹列表\nconst FootprintDelete='/footprint/delete'; //删除足迹\n\nconst GrouponList='/groupon/list'; //团购列表\nexport function grouponList(query) {\n  return request({\n    url: GrouponList,\n    method: 'get',\n    params: query\n  })\n}\nconst GroupOn='/groupon/query'; //团购API-查询\nconst GroupOnMy='/groupon/my'; //团购API-我的团购\nconst GroupOnDetail='/groupon/detail'; //团购API-详情\nconst GroupOnJoin='/groupon/join'; //团购API-详情\n\nconst CouponList='/coupon/list'; //优惠券列表\nexport function couponList(query) {\n  return request({\n    url: CouponList,\n    method: 'get',\n    params: query\n  })\n}\nexport const CouponMyList='/coupon/mylist'; //我的优惠券列表\nexport function couponMyList(query) {\n  return request({\n    url: CouponMyList,\n    method: 'get',\n    params: query\n  })\n}\nconst CouponSelectList='/coupon/selectlist'; //当前订单可用优惠券列表\nexport function couponSelectList(query) {\n  return request({\n    url: CouponSelectList,\n    method: 'get',\n    params: query\n  })\n}\nconst CouponReceive='/coupon/receive'; //优惠券领取\nexport function couponReceive(data) {\n  return request({\n    url: CouponReceive,\n    method: 'post',\n    data\n  })\n}\nconst CouponExchange='/coupon/exchange'; //优惠券兑换\n\nconst StorageUpload='/storage/upload'; //图片上传,\n\nconst UserIndex='/user/index'; //个人页面用户相关信息\nexport function userIndex() {\n  return request({\n    url: UserIndex,\n    method: 'get'\n  })\n}\nconst IssueList='/issue/list'; //帮助信息\nexport function issueList() {\n  return request({\n    url: IssueList,\n    method: 'get'\n  })\n}\n\nexport function getList(api, query) {\n  return request({\n    url: api,\n    method: 'get',\n    params: query\n  })\n}\n\nexport const REFUND_LIST = '';\n"
  },
  {
    "path": "litemall-vue/src/assets/scss/_mixin.scss",
    "content": "@import \"./mixin/one-border\";"
  },
  {
    "path": "litemall-vue/src/assets/scss/_vant-theme.scss",
    "content": "//loading\r\n.van-loading--gradient-circle, .van-loading--spinner{\r\n\tmargin: 0 auto;\r\n}\r\n//tabber\r\ndiv.van-tabbar-item--active {\r\n\tcolor: $red;\r\n}\r\n\r\n.van-tabbar-item__icon .van-icon{\r\n\tfont-size: 18px;\r\n}\r\n\r\n//按钮组\r\na.van-goods-action__mini-btn i {\r\n\tfont-size: 22px;\r\n}\r\n\r\n.van-goods-action .van-button--bottom-action {\r\n\tfont-size: $font-size-normal;\r\n}\r\n\r\n.van-button--bottom-action.van-button--primary {\r\n\tbackground-color: $red;\r\n}\r\n\r\n.van-button--danger {\r\n\tbackground-color: $red;\r\n}\r\n\r\n.van-address-edit__buttons .van-button--primary{\r\n\tbackground-color: $red;\r\n\tborder-color: $red;\r\n}\r\n\r\n// 多选\r\n.van-checkbox__control:checked + i.van-icon-success {\r\n\tbackground-color: $red;\r\n\tborder-color: $red;\r\n}\r\n\r\n//单选\r\n.van-radio i.van-icon-checked {\r\n\tcolor: $red;\r\n}\r\n\r\n.payment .van-cell-group .van-radio__input{\r\n\tposition: absolute;\r\n\tright: 10px;\r\n\ttop: 50%;\r\n\ttransform: translate3d(0, -50%, 0);\r\n}\r\n.van-radio .van-radio__input{\r\n\theight: 16px;\r\n}\r\n.van-radio i.van-icon{\r\n\tfont-size: 16px;\r\n}\r\nspan.van-radio__input, span.van-radio__label{\r\n\tvertical-align: unset;\r\n\tline-height: 16px;\r\n}\r\n.van-cell-group .van-radio__label{\r\n\tmargin-left: 0;\r\n}\r\n\r\n//弹窗\r\n.van-dialog__confirm,\r\n.van-dialog__confirm:active {\r\n\tcolor: $red;\r\n}\r\n\r\n//商品卡片\r\n.van-card__footer {\r\n\twidth: 100%;\r\n\tpadding-left: 130px;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\ndiv.van-card {\r\n\tfont-size: $font-size-normal;\r\n\tbackground-color: #fff;\r\n}\r\n\r\ndiv.van-card__footer {\r\n\tfont-size: 12px;\t\r\n\tcolor: $font-color-gray;\r\n}\r\n\r\n//cell\r\n.van-cell__title{\r\n\tvertical-align: middle;\r\n}\r\n\r\n//商品详情\r\n.item_detail .van-picker__cancel {\r\n\tcolor: #000;\r\n}\r\n\r\n.item_detail .van-picker__confirm {\r\n\tcolor: $red;\r\n}\r\n\r\n//购物车\r\n.tab-cart > .card-goods .van-checkbox {\r\n\tpadding-left: 10px;\r\n\tbox-sizing: border-box;\r\n}\r\n\r\n.tab-cart > .card-goods .van-card {\r\n\tflex: 1;\r\n}\r\n.tab-cart .van-card:not(:first-child){\r\n\tmargin-top: 0;\r\n\tpadding-top: 10px;\r\n\tpadding-bottom: 10px;\r\n}\r\n\r\n//设置昵称\r\n.set_nickname .van-field__control{\r\n\ttext-align: right\r\n}\r\n\r\n//商品列表\r\n.item_list .van-tab--disabled{\r\n\tcolor: #000;\r\n}\r\n"
  },
  {
    "path": "litemall-vue/src/assets/scss/_var.scss",
    "content": "$red: #db3d3c;\r\n$gray-deep: #999;\r\n$gray: #bfbfbf;\r\n$gray-shallow: #e5e5e5;\r\n$gray-shallow-more: #f2f2f2;\r\n\r\n$icon-bg: #f9f3e8;\r\n\r\n//字体变量\r\n$font-color-gray: $gray-deep;\r\n$font-size-small: 12px;\r\n$font-size-normal: 14px;\r\n$font-size-big: 16px;\r\n\r\n$border-color: $gray-shallow;\r\n$bg-color: $gray-shallow-more;"
  },
  {
    "path": "litemall-vue/src/assets/scss/common.scss",
    "content": ".red{\r\n\tcolor: $red;\r\n}\r\n\r\n.text-desc{\r\n\tfont-size:$font-size-small;\r\n\tcolor: $font-color-gray;\r\n}\r\n\r\n.float-r {\r\n\tfloat: right;\r\n}\r\n\r\n.float-l {\r\n\tfloat: left;\r\n}\r\n\r\n.clearfix {\r\n  &:before,\r\n  &:after {\r\n    content: \" \"; // 1\r\n    display: table; // 2\r\n  }\r\n  &:after {\r\n    clear: both;\r\n  }\r\n}\r\n\r\n.one_border {\r\n\t@include one-border;\r\n}\r\n\r\n.one_border:last-child::after {\r\n\tborder-bottom-width: 0px;\r\n}\r\n\r\n.van-hairline--top-bottom::after {\r\n  border-width: 1px 0;\r\n  border-top-width: 0px;\r\n  border-right-width: 0px;\r\n  border-bottom-width: 0px;\r\n  border-left-width: 0px;\r\n}\r\n\r\n.text-center{\r\n\ttext-align: center;\r\n}\r\n\r\n.over-hide {\r\n  overflow: hidden !important;\r\n}\r\n\r\n.no-pad-bottom {\r\n  padding-bottom: 0 !important;\r\n}\r\n\r\n.height-fix42 {\r\n  padding-bottom: 42px;\r\n}"
  },
  {
    "path": "litemall-vue/src/assets/scss/global.scss",
    "content": "@import \"./var\";\n@import \"mixin\";\n\n@import \"./common\";\n@import \"./vant-theme\";\n\n* {\n\tbox-sizing: border-box;\n}\n\na {\n\tcolor: #000\n}\n\ninput:-webkit-autofill {\n\t-webkit-box-shadow: 0 0 0 1000px white inset;\n}\n\nhtml {\n\t-webkit-overflow-scrolling: touch;\n}\n\nbody {\n\toverflow-x: hidden;\n\tmax-width: 700px;\n\tmargin: 0 auto;\n\tfont-size: 14px;\n}\n\n.view-router {\n\tbackground-color: $bg-color;\n\theight: 100vh;\n\toverflow-y: auto;\n\tpadding-bottom: 50px;\n\tbox-sizing: border-box;\n}\n\n.full-page {\n\theight: 100vh;\n}\n\n.scroll-wrap {\n\toverflow-y: scroll;\n}"
  },
  {
    "path": "litemall-vue/src/assets/scss/iconfont/iconfont.css",
    "content": "@font-face {\n\tfont-family: \"iconfont\";\n\tsrc: url('./iconfont.ttf') format('truetype');\n}\n\n@font-face {\n\tfont-family: \"vanIcon\";\n\tsrc: url('https://img.yzcdn.cn/vant/vant-icon-66a14a.ttf') format('truetype');\n}\n\n.van-icon {\n\tposition: relative;\n\tfont-family: \"iconfont\", \"vanIcon\" !important;\n\tfont-size: 14px;\n\tfont-style: normal;\n\t-webkit-font-smoothing: antialiased;\n\t-moz-osx-font-smoothing: grayscale;\n}\n\ni.van-icon-huida:before {\n\tcontent: \"\\e678\";\n}\n\ni.van-icon-wen:before {\n\tcontent: \"\\e715\";\n}\n\ni.van-icon-wuliu:before {\n\tcontent: \"\\e640\";\n}\n\ni.van-icon-hint:before {\n\tcontent: \"\\e62a\";\n}\n\ni.van-icon-add:before {\n\tcontent: \"\\e64f\";\n}\n\ni.van-icon-miaosha:before {\n\tcontent: \"\\e68f\";\n}\n\ni.van-icon-lock:before {\n\tcontent: \"\\e60c\";\n}\n\ni.van-icon-wode:before {\n\tcontent: \"\\e604\";\n}\n\ni.van-icon-checked:before {\n\tcontent: \"\\e607\";\n}\n\ni.van-icon-check:before {\n\tcontent: \"\\e628\";\n}\n\ni.van-icon-leimu:before {\n\tcontent: \"\\e703\";\n}\n\ni.van-icon-camera_full:before {\n\tcontent: \"\\e618\";\n}\n\ni.van-icon-cart-full:before {\n\tcontent: \"\\e73c\";\n}\n\ni.van-icon-cart:before {\n\tcontent: \"\\e73d\";\n}\n\ni.van-icon-miaosha-copy:before {\n\tcontent: \"\\e601\";\n}\n\ni.van-icon-id-card:before {\n\tcontent: \"\\e61e\";\n}\n\ni.van-icon-compass-full:before {\n\tcontent: \"\\e7ac\";\n}\n\ni.van-icon-fail:before {\n\tcontent: \"\\e609\";\n}\n\ni.van-icon-success:before {\n\tcontent: \"\\e626\";\n}\n\ni.van-icon-wangwang-full:before {\n\tcontent: \"\\e605\";\n}\n\ni.van-icon-daifahuo:before {\n\tcontent: \"\\e642\";\n}\n\ni.van-icon-arrowupcircle:before {\n\tcontent: \"\\e6cf\";\n}\n\ni.van-icon-class-full:before {\n\tcontent: \"\\e7f8\";\n}\n\ni.van-icon-fenxiang:before {\n\tcontent: \"\\e610\";\n}\n\ni.van-icon-gold-bean:before {\n\tcontent: \"\\e629\";\n}\n\ni.van-icon-coupon-due:before {\n\tcontent: \"\\e6dd\";\n}\n\ni.van-icon-coupon-used:before {\n\tcontent: \"\\e6df\";\n}\n\ni.van-icon-team:before {\n\tcontent: \"\\e65d\";\n}\n\ni.van-icon-dingwei:before {\n\tcontent: \"\\e622\";\n}\n\ni.van-icon-editor:before {\n\tcontent: \"\\e685\";\n}\n\ni.van-icon-coupon:before {\n\tcontent: \"\\e60e\";\n}\n\ni.van-icon-arrow-down:before {\n\tcontent: \"\\e61b\";\n}\n\ni.van-icon-clear:before {\n\tcontent: \"\\e61f\";\n}\n\ni.van-icon-laba:before {\n\tcontent: \"\\e73b\";\n}\n\ni.van-icon-kefu:before {\n\tcontent: \"\\e616\";\n}\n\ni.van-icon-tubiao215:before {\n\tcontent: \"\\e619\";\n}\n\ni.van-icon-jijiangkaishi:before {\n\tcontent: \"\\e681\";\n}\n\ni.van-icon-arrow:before {\n\tcontent: \"\\e66e\";\n}\n\ni.van-icon-mobile:before {\n\tcontent: \"\\e72c\";\n}\n\ni.van-icon-username:before {\n\tcontent: \"\\e84d\";\n}\n\ni.van-icon-icon104:before {\n\tcontent: \"\\e665\";\n}\n\ni.van-icon-list:before {\n\tcontent: \"\\e68e\";\n}\n\ni.van-icon-set:before {\n\tcontent: \"\\e690\";\n}\n\ni.van-icon-good:before {\n\tcontent: \"\\e699\";\n}\n\ni.van-icon-search:before {\n\tcontent: \"\\e6a4\";\n}\n\ni.van-icon-compass:before {\n\tcontent: \"\\e6a6\";\n}\n\ni.van-icon-success-radius:before {\n\tcontent: \"\\e6b4\";\n}\n\ni.van-icon-browse:before {\n\tcontent: \"\\e6c0\";\n}\n\ni.van-icon-phone:before {\n\tcontent: \"\\e6c2\";\n}\n\ni.van-icon-naozhong:before {\n\tcontent: \"\\e661\";\n}\n\ni.van-icon-shiliangzhinengduixiang42:before {\n\tcontent: \"\\e675\";\n}\n\ni.van-icon-dengdai:before {\n\tcontent: \"\\e60b\";\n}\n\ni.van-icon-cancel:before {\n\tcontent: \"\\e61c\";\n}\n\ni.van-icon-shouhouguanli:before {\n\tcontent: \"\\e608\";\n}\n\ni.van-icon-invitation:before {\n\tcontent: \"\\e932\";\n}\n\ni.van-icon-arrow-left:before {\n\tcontent: \"\\e625\";\n}\n\ni.van-icon-clear-full:before {\n\tcontent: \"\\e658\";\n}\n\ni.van-icon-wode1:before {\n\tcontent: \"\\e602\";\n}\n\ni.van-icon-baoguo-shixin:before {\n\tcontent: \"\\e8fb\";\n}\n\ni.van-icon-lajitong:before {\n\tcontent: \"\\e62f\";\n}\n\ni.van-icon-daifukuan:before {\n\tcontent: \"\\e60a\";\n}\n\ni.van-icon-eye-close:before {\n\tcontent: \"\\e60d\";\n}\n\ni.van-icon-eye-open:before {\n\tcontent: \"\\e623\";\n}\n\ni.van-icon-baoguo-kongxin:before {\n\tcontent: \"\\e61a\";\n}\n\ni.van-icon-dingwei1:before {\n\tcontent: \"\\e7db\";\n}\n\ni.van-icon-n4:before {\n\tcontent: \"\\e79a\";\n}\n\ni.van-icon-jiaoyiwancheng:before {\n\tcontent: \"\\e686\";\n}\n\ni.van-icon-jiaoyiguanbi:before {\n\tcontent: \"\\e687\";\n}\n\ni.van-icon-qianshoutixing:before {\n\tcontent: \"\\e679\";\n}\n\ni.van-icon-chulizhong:before {\n\tcontent: \"\\e68b\";\n}\n\ni.van-icon-tuandui1:before {\n\tcontent: \"\\e63d\";\n}\n\ni.van-icon-icon:before {\n\tcontent: \"\\e603\";\n}\n\ni.van-icon-wangwang:before {\n\tcontent: \"\\e933\";\n}\n\ni.van-icon-shoucang:before {\n\tcontent: \"\\e620\";\n}\n\ni.van-icon-shoucang-full:before {\n\tcontent: \"\\e61d\";\n}\n"
  },
  {
    "path": "litemall-vue/src/assets/scss/mixin/_one-border.scss",
    "content": "@mixin one-border($direction: bottom){\r\n\tposition: relative;\r\n\r\n\t&::after {\r\n\t\tcontent: \"\";\r\n\t\tposition: absolute;\r\n\t\ttop: 0;\r\n\t\tleft: 0;\r\n\t\twidth: 200%;\r\n\t\theight: 200%;\r\n\t\ttransform: scale(.5);\r\n\t\ttransform-origin: 0 0;\r\n\t\tpointer-events: none;\r\n\t\tbox-sizing: border-box;\r\n\t\tborder-#{$direction}: 1px solid $border-color;\r\n\t}\r\n}"
  },
  {
    "path": "litemall-vue/src/components/Header/index.vue",
    "content": "<template>\n<div>\n    <van-nav-bar :title=\"title\" left-text=\"返回\" left-arrow @click-left=\"goBack\" v-show=\"showHeader\"/>   \n</div>\n     \n</template>\n<script>\nimport { NavBar } from 'vant';\nimport { mapState } from 'vuex';\n\nexport default {\n    name:\"v-header\",\n    data(){\n        return {\n            title:\"\",\n        };\n    },\n    computed: {\n        showHeader:function(){\n            let header=this.$store.getters.showHeader;\n            this.title=this.$store.getters.titleHeader;\n            return header\n        }\n    },\n    methods: {\n        goBack() {\n            this.$router.back(-1);\n        }\n   },\n   components: {\n    [NavBar.name]:NavBar,\n  }\n}\n</script>\n"
  },
  {
    "path": "litemall-vue/src/components/Tabbar/index.vue",
    "content": "<template>\n\t<van-tabbar v-model=\"active\" style=\"z-index: 1999\">\n\t\t<van-tabbar-item\n\t\t\tv-for=\"(tab, index) in tabbar\"\n\t\t\t:icon=\"tab.icon\"\n\t\t\t:to=\"tab.path\"\n\t\t\t:dot=\"tab.dot\"\n\t\t\t:info=\"tab.info\"\n\t\t\t:key=\"index\">\n\t\t\t{{tab.name}}\n\t\t</van-tabbar-item>\n\t</van-tabbar>\n</template>\n\n\n<script>\nimport { Tabbar, TabbarItem } from 'vant';\n\nexport default {\n  data() {\n    return {\n      active: 0,\n      tabbar: [\n        {\n          name: '精选',\n          path: '/',\n          pathName: 'home',\n          icon: 'compass-full',\n          dot: false,\n          info: ''\n        },\n        {\n          name: '分类',\n          path: '/items',\n          pathName: 'class',\n          icon: 'class-full',\n          dot: false,\n          info: ''\n        },\n        {\n          name: '购物车',\n          path: '/order',\n          pathName: 'cart',\n          icon: 'cart-full',\n          dot: false,\n          info: ''\n        },\n        {\n          name: '我的',\n          path: '/user',\n          pathName: 'user',\n          icon: 'wode',\n          dot: false,\n          info: ''\n        }\n      ]\n    };\n  },\n\n  watch: {\n    $route: 'changeActive'\n  },\n\n  created() {\n    const toName = this.$route.name;\n    this.setActive(toName);\n  },\n\n  methods: {\n    changeActive({ name }) {\n      this.setActive(name);\n    },\n    setActive(name) {\n      this.tabbar.forEach((tab, i) => {\n        if (tab.pathName == name) {\n          this.active = i;\n          return false;\n        }\n      });\n    }\n  },\n\n  components: {\n    [Tabbar.name]: Tabbar,\n    [TabbarItem.name]: TabbarItem\n  }\n};\n</script>\n"
  },
  {
    "path": "litemall-vue/src/components/field/index.vue",
    "content": "<template>\n\t<div class=\"md_field\" :class=\"{md_field_hasIcon: !!icon, md_field_isError: isError}\">\n\t\t<van-icon v-if=\"icon\" :name=\"icon\" class=\"md_feld_icon\"/>\n\t\t<div class=\"md_field_control\">\n\t\t\t<input\n\t\t\t\t:type=\"type\"\n\t\t\t\tv-on=\"listeners\"\n\t\t\t\tv-bind=\"$attrs\"\n\t\t\t\t:value=\"value\">\n\t\t</div>\n\t\t<div>\n\t\t\t<slot name=\"rightIcon\">\n\t\t\t\t<van-icon :name=\"rightIcon\" @click=\"rightClick\" v-show=\"value\" />\n\t\t\t</slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n  name: 'md-field',\n\n  props: {\n    value: {},\n    type: {\n      type: String,\n      default: 'text'\n    },\n    rightIcon: String,\n    icon: String,\n    isError: Boolean\n  },\n  computed: {\n    listeners() {\n      return {\n        ...this.$listeners,\n        input: this.onInput\n      };\n    }\n  },\n\n  methods: {\n    onInput(event) {\n      this.$emit('input', event.target.value);\n    },\n    rightClick(event) {\n      this.$emit('right-click', event);\n    }\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.md_field {\n  position: relative;\n  border: 1px solid $border-color;\n  border-radius: 5px;\n  padding-top: 10px;\n  padding-bottom: 10px;\n  padding-left: 10px;\n  display: table;\n  width: 100%;\n  box-sizing: border-box;\n  background-color: #fff;\n  > div {\n    display: table-cell;\n  }\n  > .md_field_control {\n    padding-right: 10px;\n    box-sizing: border-box;\n    input {\n      border: 0;\n      line-height: 14px;\n      font-size: 14px;\n      width: 100%;\n    }\n  }\n\n  .md_feld_icon {\n    position: absolute;\n    top: 50%;\n    left: 10px;\n    transform: translate(0, -50%);\n  }\n}\n\n.md_field_hasIcon {\n  padding-left: 40px;\n}\n\n.md_field_isError {\n  color: $red;\n  background-color: #fcf5f5;\n  border: 1px solid $red;\n  input {\n    color: $red;\n    background-color: #fcf5f5;\n  }\n  input:-webkit-autofill {\n    -webkit-box-shadow: 0 0 0 1000px #fcf5f5 inset !important;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/components/field-group/index.vue",
    "content": "<template>\n\t<div class=\"field_group\">\n\t\t<slot></slot>\n\t</div>\n</template>\n\n\n<script>\nexport default {\n  name: 'md-field-group'\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.field_group {\n  padding-left: 15px;\n  padding-right: 15px;\n\n  > div {\n    margin-bottom: 15px;\n    &:last-child {\n      margin-bottom: 0;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/components/is-empty/index.vue",
    "content": "<template>\n\t<div class=\"is_empty\">\n\t\t<div>\n\t\t\t<img src=\"../../assets/images/is_empty.png\" alt=\"无商品\" width=\"20%\">\n\t\t</div>\n\t\t<div>\n\t\t\t<slot></slot>\n\t\t</div>\n\t</div>\n</template>\n\n<script>\nexport default {\n  name: 'is-empty'\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.is_empty {\n  text-align: center;\n  color: $font-color-gray;\n  padding-top: 100px;\n  > div {\n    margin-bottom: 20px;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/filter/index.js",
    "content": "import dayjs from 'dayjs';\nimport { isNumber } from 'lodash';\nexport const dateFormat = (value, format = 'YYYY-MM-DD') =>\n  value ? dayjs(value * 1000).format(format) : '';\n\nexport const yuan = value =>\n  isNumber(value) ? `¥${(value / 100).toFixed(2)}` : value;\n\nexport default {\n  install(Vue) {\n    Vue.filter('yuan', yuan);\n    Vue.filter('dateFormat', dateFormat);\n  }\n};\n"
  },
  {
    "path": "litemall-vue/src/main.js",
    "content": "import Vue from 'vue';\nimport App from './App.vue';\nimport router from './router';\nimport 'vant/lib/icon/local.css';\nimport '@/assets/scss/global.scss';\nimport '@/assets/scss/iconfont/iconfont.css';\n\nimport VueCountdown from '@chenfengyuan/vue-countdown';\nimport store from './store'\n\n\nimport filters from '@/filter';\n\nVue.component(VueCountdown.name, VueCountdown);\nVue.use(filters);\n\n\nimport { Lazyload, Icon, Cell, CellGroup, loading, Button, Toast } from 'vant';\nVue.use(Icon);\nVue.use(Cell);\nVue.use(CellGroup);\nVue.use(loading);\nVue.use(Button);\nVue.use(Toast);\nVue.use(Lazyload, {\n  preLoad: 1.3,\n  error: require('@/assets/images/goods_default.png'),\n  loading: require('@/assets/images/goods_default.png'),\n  attempt: 1,\n  listenEvents: ['scroll'],\n  lazyComponent: true\n});\n\n\nVue.config.productionTip = false;\n\nnew Vue({\n  router,\n  store,\n  render: h => h(App)\n}).$mount('#app');\n"
  },
  {
    "path": "litemall-vue/src/mixin/scroll-fixed.js",
    "content": "// 滚动条记录， 适用于 keep-alive 组件\nimport { debounce } from 'lodash';\nexport default {\n  data() {\n    return {\n      scrollTop: 0\n    };\n  },\n\n  mounted() {\n    const vm = this;\n\n    vm.$el.addEventListener(\n      'scroll',\n      debounce(() => {\n        vm.scrollTop = vm.$el.scrollTop;\n      }, 50)\n    );\n  },\n\n  activated() {\n    this.$el.scrollTop = this.scrollTop;\n  }\n};\n"
  },
  {
    "path": "litemall-vue/src/router/home.js",
    "content": "const Tabbar = () => import('@/components/Tabbar/');\n\nexport default [\n  {\n    path: '/',\n    name: 'home',\n    components: {\n      default: () => import('@/views/home/tabbar-home'),\n      tabbar: Tabbar\n    },\n    meta: {\n      keepAlive: true,\n      showHeader:false\n    },\n  },\n  {\n    path: '*',\n    redirect: {\n      name: 'home'\n    }\n  }\n];\n"
  },
  {
    "path": "litemall-vue/src/router/index.js",
    "content": "import Vue from 'vue';\nimport Router from 'vue-router';\nimport { getLocalStorage } from '@/utils/local-storage';\n\nimport home from './home';\nimport items from './items';\nimport user from './user';\nimport order from './order';\nimport login from './login';\nimport store from '../store/index';\n\nVue.use(Router);\n\nconst RouterModel = new Router({\n  routes: [...home, ...items, ...user, ...order, ...login]\n});\n\nRouterModel.beforeEach((to, from, next) => {\n  const { Authorization } = getLocalStorage(\n    'Authorization'\n  );\n  if (!Authorization) {\n    if (to.meta.login) {\n      console.log(\"login\");\n      next({ name: 'login', query: { redirect: to.name } });\n      return;\n    }\n  }\n  console.log(to.meta,\"meta\");\n  //页面顶部菜单拦截\n  let emptyObj=JSON.stringify(to.meta) == \"{}\";\n  let undefinedObj=typeof(to.meta.showHeader)==\"undefined\";\n  if(!emptyObj&&!undefinedObj){\n    store.commit(\"CHANGE_HEADER\",to.meta);\n  }else{\n    store.commit(\"CHANGE_HEADER\",{showHeader:true,title:\"\"});\n  }\n  next();\n});\n\nexport default RouterModel;\n"
  },
  {
    "path": "litemall-vue/src/router/items.js",
    "content": "const Tabbar = () => import('@/components/Tabbar/');\n\nexport default [\n  {\n    path: '/items',\n    name: 'class',\n    meta: {\n      keepAlive: true,\n      showHeader:false\n    },\n    components: {\n      default:  () => import('@/views/items/tabbar-catalog'),\n      tabbar: Tabbar\n    }\n  },\n  {\n    path: '/items/search',\n    name: 'search',\n    meta: {\n      keepAlive: true,\n      title:\"搜索\",\n      showHeader:false\n    },\n    component: () => import('@/views/items/search')\n  },\n  {\n    path: '/items/detail/:itemId',\n    name: 'detail',\n    props: true,\n    component: () => import('@/views/items/detail')\n  },\n  {\n    path: '/items/category',\n    name: 'category',\n    component: () => import('@/views/items/category'),\n    props: route => route.query\n  },\n  {\n    path: '/items/hot',\n    name: 'hot',\n    component: () => import('@/views/items/hot'),\n    props: route => route.query\n  },\n  {\n    path: '/items/new',\n    name: 'new',\n    component: () => import('@/views/items/new'),\n    props: route => route.query\n  },\n  {\n    path: '/items/groupon',\n    name: 'groupon',\n    component: () => import('@/views/items/groupon'),\n    props: route => route.query\n  },\n  {\n    path: '/items/brand/:brandId',\n    name: 'brand',\n    props: true,\n    component: () => import('@/views/items/brand')\n  },\n  {\n    path: '/items/brand-list',\n    name: 'brandList',\n    component: () => import('@/views/items/brand-list'),\n    props: route => route.query\n  },\n  {\n    path: '/items/topic/:topicId',\n    name: 'topic',\n    props: true,\n    component: () => import('@/views/items/topic')\n  },\n  {\n    path: '/items/topic-list',\n    name: 'topicList',\n    component: () => import('@/views/items/topic-list'),\n    props: route => route.query\n  }\n];\n"
  },
  {
    "path": "litemall-vue/src/router/login.js",
    "content": "export default [\n  {\n    path: '/login',\n    name: 'login',\n    meta: {\n      showHeader:false,\n      title:\"登录\"\n    },\n    component: () => import('@/views/login/login')\n  },\n  {\n    path: '/login/registerGetCode',\n    name: 'registerGetCode',\n    component: () => import('@/views/login/register-getCode')\n  },\n  {\n    path: '/login/registerSubmit/:phone',\n    name: 'registerSubmit',\n    props: true,\n    component: () => import('@/views/login/register-submit')\n  },\n  {\n    path: '/login/registerStatus/:status',\n    name: 'registerStatus',\n    props: true,\n    component: () => import('@/views/login/register-status')\n  },\n  {\n    path: '/login/forget',\n    name: 'forget',\n    component: () => import('@/views/login/forget')\n  },\n  {\n    path: '/login/forget/reset',\n    name: 'forgetReset',\n    component: () => import('@/views/login/forget-reset')\n  },\n  {\n    path: '/login/forget/reset/:status',\n    name: 'forgetStatus',\n    props: true,\n    component: () => import('@/views/login/forget-status')\n  }\n];\n"
  },
  {
    "path": "litemall-vue/src/router/order.js",
    "content": "const Tabbar = () => import('@/components/Tabbar/');\n\nexport default [\n  {\n    path: '/order',\n    name: 'cart',\n    meta: {\n      login: true,\n      showHeader:false,\n      title:\"购物车\"\n    },\n    components: { \n      default: () => import('@/views/order/tabbar-cart'), \n      tabbar: Tabbar \n    }\n  },\n  {\n    path: '/order/checkout',\n    name: 'orderCheckout',\n    component: () => import('@/views/order/checkout')\n  },\n  {\n    path: '/order/order-detail',\n    name: 'orderDetail',\n    component: () => import('@/views/order/order-detail')\n  },\n  {\n    path: '/order/payment',\n    name: 'payment',\n    component: () => import('@/views/order/payment')\n  },\n  {\n    path: '/order/payment/:status',\n    name: 'paymentStatus',\n    component: () => import('@/views/order/payment-status'),\n    props: true\n  }\n];\n"
  },
  {
    "path": "litemall-vue/src/router/user.js",
    "content": "const tab_user = () => import('@/views/user/tabbar-user');\nconst UserCollect = () => import('@/views/user/module-collect');\nconst UserAddress = () => import('@/views/user/module-address');\nconst UserAddressEdit = () => import('@/views/user/module-address-edit');\nconst UserServer = () => import('@/views/user/module-server');\nconst UserHelp = () => import('@/views/user/module-help');\nconst UserFeedback = () => import('@/views/user/module-feedback');\n\nconst UserInformation = () => import('@/views/user/user-information-set');\nconst UserInfo_SetMobile = () => import('@/views/user/user-information-set/set-mobile');\nconst UserInfo_SetNickname = () => import('@/views/user/user-information-set/set-nickname');\nconst UserInfo_SetPassword = () => import('@/views/user/user-information-set/set-password');\n\nconst UserOrderList = () => import('@/views/user/order-list');\nconst UserCouponList = () => import('@/views/user/coupon-list');\nconst UserRefundList = () => import('@/views/user/refund-list');\n\nconst Tabbar = () => import('@/components/Tabbar/');\n\nexport default [\n  {\n    path: '/user',\n    name: 'user',\n    meta: {\n      keepAlive: true,\n      login: true,\n      showHeader:false,\n      title:\"购物车\"\n    },\n    components: { default: tab_user, tabbar: Tabbar }\n  },\n  {\n    path: '/user/collect',\n    name: 'collect',\n    meta: {\n      login: true\n    },\n    component: UserCollect\n  },\n  {\n    path: '/user/address',\n    name: 'address',\n    meta: {\n      login: true\n    },\n    component: UserAddress\n  },\n  {\n    path: '/user/address/edit',\n    name: 'address-edit',\n    props: true,\n    meta: {\n      login: true\n    },\n    component: UserAddressEdit\n  },\n  {\n    path: '/user/server',\n    name: 'user-server',\n    component: UserServer\n  },\n  {\n    path: '/user/help',\n    name: 'user-help',\n    component: UserHelp\n  },\n  {\n    path: '/user/feedback',\n    name: 'user-feedback',\n    component: UserFeedback\n  },  \n  {\n    path: '/user/information',\n    name: 'user-information',\n    meta: {\n      login: true\n    },\n    component: UserInformation\n  },\n  {\n    path: '/user/information/setMobile',\n    name: 'user-info-setMobile',\n    component: UserInfo_SetMobile\n  },\n  {\n    path: '/user/information/setNickname',\n    name: 'user-info-setNickname',\n    component: UserInfo_SetNickname\n  },\n  {\n    path: '/user/information/setPassword',\n    name: 'user-info-setPassword',\n    component: UserInfo_SetPassword\n  },\n  {\n    path: '/user/order/list/:active',\n    name: 'user-order-list',\n    props: true,\n    component: UserOrderList\n  },\n  {\n    path: '/user/coupon/list/:active',\n    name: 'user-coupon-list',\n    props: true,\n    component: UserCouponList\n  },\n  {\n    path: '/user/refund/list',\n    name: 'user-refund-list',\n    component: UserRefundList\n  }\n];\n"
  },
  {
    "path": "litemall-vue/src/store/getters.js",
    "content": "export const showHeader = state => state.showHeader\n\nexport const titleHeader = state => state.title"
  },
  {
    "path": "litemall-vue/src/store/index.js",
    "content": "import Vue from 'vue'\nimport Vuex from 'vuex'\nimport * as getters from './getters'\nimport mutations from './mutations'\n\nVue.use(Vuex)\n\nconst state = {\n  showHeader:true,\n  title:'' \n}\n\nexport default new Vuex.Store({\n  strict: process.env.NODE_ENV !== 'production',\n  state,\n  getters,\n  mutations\n})\n"
  },
  {
    "path": "litemall-vue/src/store/mutation-types.js",
    "content": "export const CHANGE_HEADER= 'CHANGE_HEADER'\n"
  },
  {
    "path": "litemall-vue/src/store/mutations.js",
    "content": "import * as types from './mutation-types'\n\nexport default {\n  [types.CHANGE_HEADER] (state,payload) {\n    state.showHeader=payload.showHeader;\n    state.title=payload.title;\n  }\n}"
  },
  {
    "path": "litemall-vue/src/utils/auth.js",
    "content": "import Cookies from 'js-cookie'\n\nconst TokenKey = 'X-Litemall-Admin-Token'\n\nexport function getToken() {\n  return Cookies.get(TokenKey)\n}\n\nexport function setToken(token) {\n  return Cookies.set(TokenKey, token)\n}\n\nexport function removeToken() {\n  return Cookies.remove(TokenKey)\n}\n"
  },
  {
    "path": "litemall-vue/src/utils/local-storage.js",
    "content": "export const getLocalStorage = (...args) => {\n  const storage = {};\n  args.forEach(arg => {\n    storage[arg] = window.localStorage.getItem(arg) || null;\n  });\n  return storage;\n};\n\nexport const setLocalStorage = data => {\n  Object.keys(data).forEach(prop => {\n    const el = data[prop];\n    window.localStorage.setItem(prop, el);\n  });\n};\n\nexport const removeLocalStorage = (...args) => {\n  args.forEach(arg => {\n    window.localStorage.removeItem(arg);\n  });\n};\n"
  },
  {
    "path": "litemall-vue/src/utils/location-param.js",
    "content": "export default name => {\n  const reg = new RegExp(`(^|&)${name}=([^&]*)(&|$)`);\n  const r = window.location.search.substr(1).match(reg);\n  if (r != null) return decodeURIComponent(r[2]);\n  return '';\n};\n"
  },
  {
    "path": "litemall-vue/src/utils/request.js",
    "content": "import axios from 'axios'\nimport { Dialog, Toast } from 'vant';\n\n// create an axios instance\nconst service = axios.create({\n  baseURL: process.env.VUE_APP_BASE_API, // api 的 base_url\n  timeout: 5000 // request timeout\n})\n\n// request interceptor\nservice.interceptors.request.use(\n    config => {\n    if (!config.headers['X-Litemall-Token']) {\n      config.headers['X-Litemall-Token'] = `${window.localStorage.getItem(\n        'Authorization'\n      ) || ''}`;\n    }\n    return config;\n  },\n  err => Promise.reject(err)\n)\n\n// response interceptor\nservice.interceptors.response.use(\n  response => {\n    const res = response.data\n\n    if (res.errno === 501) {\n        Toast.fail('请登录');\n        setTimeout(() => {\n          window.location = '#/login/'\n        }, 1500)\n      return Promise.reject('error')\n    } else if (res.errno === 502) {\n        Toast.fail('网站内部错误，请联系网站维护人员')\n      return Promise.reject('error')\n    } if (res.errno === 401) {\n      Toast.fail('参数不对');\n      return Promise.reject('error')\n    } if (res.errno === 402) {\n      Toast.fail('参数值不对');\n      return Promise.reject('error')\n    } else if (res.errno !== 0) {\n      // 非5xx的错误属于业务错误，留给具体页面处理\n      return Promise.reject(response)\n    } else {\n      return response\n    }\n  }, error => {\n    console.log('err' + error)// for debug\n    Dialog.alert({\n        title: '警告',\n        message: '登录连接超时'\n      });\n    return Promise.reject(error)\n  })\n\nexport default service\n"
  },
  {
    "path": "litemall-vue/src/utils/scroll.js",
    "content": "export default {\n  isAttached(element) {\n    let currentNode = element.parentNode;\n    while (currentNode) {\n      if (currentNode.tagName === 'HTML') {\n        return true;\n      }\n      if (currentNode.nodeType === 11) {\n        return false;\n      }\n      currentNode = currentNode.parentNode;\n    }\n    return false;\n  },\n\n  getScrollLeft(element) {\n    return 'scrollLeft' in element ? element.scrollLeft : element.pageXOffset;\n  },\n\n  getVisibleHeight(element) {\n    return element === window\n      ? element.innerHeight\n      : element.getBoundingClientRect().height;\n  },\n\n  getVisibleWidth(element) {\n    return element === window\n      ? element.innerWidth\n      : element.getBoundingClientRect().width;\n  }\n};\n"
  },
  {
    "path": "litemall-vue/src/utils/validate.js",
    "content": "export const idCard = /^[1-9]{1}[0-9]{14}$|^[1-9]{1}[0-9]{16}([0-9]|[xX])$/;\n\nexport const mobileReg = /^1[0-9]{10}$/;\n\nexport const address = val => {\n  const value = val.trim();\n  return value.length >= 5 && value.length <= 100;\n};\n\nexport const userName = /^[a-zA-Z0-9_\\u4e00-\\u9fa5]{3,20}$/;\n\nexport const emailReg = /^(\\w)+(\\.\\w+)*@(\\w)+((\\.\\w+)+)$/;\n"
  },
  {
    "path": "litemall-vue/src/views/home/tabbar-home.vue",
    "content": "<template>\n  <div class=\"tab_home\">\n    <div class=\"tal_class_searchBox\">\n      <van-search placeholder=\"点击前往搜索\"\n                  @click=\"$router.push({ name: 'search' })\" />\n      <div class=\"tal_class_searchMask\"></div>\n    </div>\n    <van-swipe :autoplay=\"3000\"\n               indicator-color=\"white\">\n      <van-swipe-item v-for=\"(banner, index) in shopInfos.banner\"\n                      :key=\"index\">\n        <img :src=\"banner.url\"\n             style=\"height:230px\">\n      </van-swipe-item>\n    </van-swipe>\n\n    <div class=\"goods-channel\">\n      <div class=\"item\"\n           @click=\"changeTabbar(channel)\"\n           v-for=\"(channel, index) in shopInfos.channel\"\n           :key=\"index\">\n        <img :src=\"channel.iconUrl\"\n             background-size=\"cover\" />\n        <span>{{channel.name}}</span>\n      </div>\n    </div>\n\n    <van-panel title=\"优惠券\"\n               style=\" padding-bottom: 10px;\">\n      <div class=\"van-coupon-item\"\n           v-for=\"(coupon,index) in shopInfos.couponList\"\n           :key=\"index\"\n           @click=\"getCoupon(coupon.id)\">\n        <div class=\"van-coupon-item__content\">\n          <div class=\"van-coupon-item__head\">\n            <h2>\n              <span>¥</span>\n              {{coupon.discount}} 元\n            </h2>\n            <p>{{coupon.desc }} - {{coupon.tag}}</p>\n          </div>\n          <div class=\"van-coupon-item__body\">\n            <h2>{{coupon.name}}</h2>\n            <p>有效期：{{coupon.days}} 天</p>\n\n          </div>\n        </div>\n\n      </div>\n    </van-panel>\n\n    <van-panel>\n      <van-card :thumb-link=\"goDetail(grouponGood.id)\"\n                v-for=\"(grouponGood ,index) in shopInfos.grouponList\"\n                :key=\"index\"\n                :title=\"grouponGood.name\"\n                :desc=\"grouponGood.brief\"\n                :origin-price=\"grouponGood.retailPrice\"\n                :price=\"grouponGood.grouponPrice +'.00'\"\n                :thumb=\"grouponGood.picUrl\"\n                @native-click=\"goDetail(grouponGood.id)\">\n        <div slot=\"tags\"\n             class=\"card__tags\">\n          <van-tag plain\n                   type=\"primary\">\n            {{grouponGood.grouponMember}}人成团\n          </van-tag>\n          <van-tag plain\n                   type=\"danger\">\n            {{grouponGood.grouponDiscount}}元再减\n          </van-tag>\n        </div>\n      </van-card>\n      <div slot='header'>\n        <van-cell-group>\n          <van-cell title=\"团购专区\"\n                    isLink>\n            <router-link to=\"/items/groupon\"\n                         class=\"text-desc\">更多团购商品</router-link>\n          </van-cell>\n        </van-cell-group>\n      </div>\n    </van-panel>\n\n    <van-panel>\n      <van-grid clickable\n                :column-num=\"2\">\n        <van-grid-item v-for=\"(brand ,index) in shopInfos.brandList\"\n                       :key=\"index\"\n                       :text=\"brand.name\"\n                       :url=\"goBrand(brand.id)\">\n          <img :src=\"brand.picUrl\"\n               style=\"width: 80%;\" />\n          <div style=\"font-size:16px;\"> {{ brand.name }}</div>\n        </van-grid-item>\n      </van-grid>\n      <div slot='header'>\n        <van-cell-group>\n          <van-cell title=\"品牌商直供\"\n                    isLink>\n            <router-link to=\"/items/brand-list\"\n                         class=\"text-desc\">更多品牌商</router-link>\n          </van-cell>\n        </van-cell-group>\n      </div>\n    </van-panel>\n\n    <van-panel>\n      <van-row gutter>\n        <van-col span=\"12\"\n                 v-for=\"(newGood ,index) in shopInfos.newGoodsList\"\n                 :key=\"index\">\n          <router-link :to=\"{ path: `/items/detail/${newGood.id}`}\">\n            <img :src=\"newGood.picUrl\"\n                 style=\"width:180px;height:180px;\">\n          </router-link>\n          <span style=\"padding-left: 20px;position: relative;bottom: 10px; color: rgb(123, 116, 116);white-space: nowrap;\">{{newGood.name}}</span>\n          <span style=\"padding-left: 80px;position: relative;bottom: 10px; color:#ab956d\">￥ {{newGood.retailPrice}}</span>\n        </van-col>\n      </van-row>\n      <div slot='header'>\n        <van-cell-group>\n          <van-cell title=\"新品首发\"\n                    isLink>\n            <router-link to=\"/items/new\"\n                         class=\"text-desc\">更多新品首发</router-link>\n          </van-cell>\n        </van-cell-group>\n      </div>\n    </van-panel>\n\n    <van-panel>\n      <van-card :thumb-link=\"goDetail(groupGood.id)\"\n                v-for=\"(groupGood ,index) in shopInfos.hotGoodsList\"\n                :key=\"index\"\n                :title=\"groupGood.name\"\n                :desc=\"groupGood.brief\"\n                :origin-price=\"groupGood.counterPrice\"\n                :price=\"groupGood.retailPrice +'.00'\"\n                :thumb=\"groupGood.picUrl\"\n                @native-click=\"goDetail(groupGood.id)\">\n        <!-- <div slot=\"footer\">添加日期 {{item.addTime}}</div> -->\n      </van-card>\n      <div slot='header'>\n        <van-cell-group>\n          <van-cell title=\"人气推荐\"\n                    isLink>\n            <router-link to=\"/items/hot\"\n                         class=\"text-desc\">更多人气推荐</router-link>\n          </van-cell>\n        </van-cell-group>\n      </div>\n    </van-panel>\n\n<van-panel>\n      <van-grid clickable\n                :column-num=\"2\">\n        <van-grid-item v-for=\"(topic ,index) in shopInfos.topicList\"\n                       :key=\"index\"\n                       :url=\"goTopic(topic.id)\">\n          <img :src=\"topic.picUrl\"\n               style=\"width: 90%; max-height: 150px;\" />\n          <div style=\"font-size:14px;color:#ab956d;\"> {{ topic.title }}</div>\n          <div style=\"font-size:10px;color:#ab956d;\"> {{ topic.subtitle }}</div>\n        </van-grid-item>\n      </van-grid>\n      <div slot='header'>\n        <van-cell-group>\n          <van-cell title=\"专题精选\"\n                    isLink>\n            <router-link to=\"/items/topic-list\"\n                         class=\"text-desc\">更多专题精选</router-link>\n          </van-cell>\n        </van-cell-group>\n      </div>\n    </van-panel>\n\n  </div>\n</template>\n\n<script>\nimport { getHome, goodsCategory, couponReceive } from '@/api/api';\nimport scrollFixed from '@/mixin/scroll-fixed';\nimport _ from 'lodash';\n\nimport {\n  List,\n  Swipe,\n  SwipeItem,\n  Tabbar,\n  TabbarItem,\n  Search,\n  Panel,\n  CouponCell,\n  CouponList,\n  Toast,\n  Card,\n  Grid,\n  GridItem,\n  Row,\n  Col,\n  Tag\n} from 'vant';\n\nexport default {\n  mixins: [scrollFixed],\n\n  data() {\n    return {\n      shopInfos: [],\n      isLoading: false\n    };\n  },\n\n  created() {\n    this.initViews();\n  },\n\n  methods: {\n    goDetail(id) {\n      return `#/items/detail/${id}`;\n    },\n    goBrand(id) {\n      return `#/items/brand/${id}`;\n    },\n    goTopic(id) {\n      return `#/items/topic/${id}`;\n    },    \n    getCoupon(id) {\n      couponReceive({ couponId: id }).then(res => {\n        Toast.success('领取成功');\n      });\n    },\n    changeTabbar(o) {\n      goodsCategory({ id: o.id }).then(res => {\n        let categoryId = res.data.data.currentCategory.id;\n        this.$router.replace({\n          name: 'category',\n          query: { itemClass: categoryId }\n        });\n      });\n    },\n    initViews() {\n      getHome().then(res => {\n        this.shopInfos = res.data.data;\n      });\n    }\n  },\n\n  components: {\n    [Row.name]: Row,\n    [Col.name]: Col,\n    [Card.name]: Card,\n    [Toast.name]: Toast,\n    [CouponCell.name]: CouponCell,\n    [CouponList.name]: CouponList,\n    [Search.name]: Search,\n    [Panel.name]: Panel,\n    [List.name]: List,\n    [Swipe.name]: Swipe,\n    [SwipeItem.name]: SwipeItem,\n    [Tabbar.name]: Tabbar,\n    [TabbarItem.name]: TabbarItem,\n    [Tag.name]: Tag,\n    [Grid.name]: Grid,\n    [GridItem.name]: GridItem\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.interval_bot {\n  margin-bottom: 10px;\n}\n.van-panel {\n  margin-top: 20px;\n}\n.goods-channel {\n  background: #fff;\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  padding-bottom: 0px;\n  padding-top: 10px;\n}\n\n.goods-channel .item {\n  width: 50px;\n  height: 50px;\n  margin-left: 10px;\n}\n\n.goods-channel img {\n  display: block;\n  width: 20px;\n  height: 20px;\n  margin: 0 auto;\n}\n\n.goods-channel span {\n  display: block;\n  font-size: 14px;\n  text-align: center;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: #333;\n}\n.van-coupon-cell--selected {\n  color: #323233;\n}\n.van-coupon-list {\n  height: 100%;\n  position: relative;\n  background-color: #f8f8f8;\n}\n.van-coupon-list__field {\n  padding: 7px 15px;\n}\n.van-coupon-list__exchange {\n  height: 32px;\n  line-height: 30px;\n}\n.van-coupon-list__list {\n  overflow-y: auto;\n  padding: 15px 0;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  -webkit-overflow-scrolling: touch;\n}\n.van-coupon-list__close {\n  left: 0;\n  bottom: 0;\n  position: absolute;\n  font-weight: 500;\n}\n.van-coupon-list__empty {\n  padding-top: 100px;\n  text-align: center;\n}\n.van-coupon-list__empty p {\n  color: #969799;\n  margin: 15px 0;\n  font-size: 14px;\n  line-height: 20px;\n}\n.van-coupon-list__empty img {\n  width: 80px;\n  height: 84px;\n}\n.van-coupon-item {\n  overflow: hidden;\n  border-radius: 4px;\n  margin: 0 15px 15px;\n  background-color: #fff;\n  -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n}\n.van-coupon-item:active {\n  background-color: #e8e8e8;\n}\n.van-coupon-item__content {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 100px;\n  padding: 24px 0 0 15px;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  border: 1px solid red;\n}\n.van-coupon-item h2,\n.van-coupon-item p {\n  margin: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.van-coupon-item h2 {\n  height: 34px;\n  font-weight: 500;\n  line-height: 34px;\n}\n.van-coupon-item p {\n  font-size: 12px;\n  line-height: 16px;\n  color: #969799;\n}\n.van-coupon-item__head {\n  min-width: 90px;\n}\n.van-coupon-item__head h2 {\n  color: #f44;\n  font-size: 24px;\n}\n.van-coupon-item__head h2 span {\n  font-size: 50%;\n}\n.van-coupon-item__body {\n  -webkit-box-flex: 1;\n  -ms-flex: 1;\n  flex: 1;\n  position: relative;\n  border-radius: 0 4px 4px 0;\n}\n.van-coupon-item__body h2 {\n  font-size: 16px;\n}\n.van-coupon-item__corner {\n  top: 16px;\n  right: 15px;\n  position: absolute;\n}\n.van-coupon-item__corner .van-icon {\n  border-color: #f44;\n  background-color: #f44;\n}\n.van-coupon-item__reason {\n  padding: 7px 15px;\n  border-top: 1px dashed #ebedf0;\n  background-color: #fafafa;\n}\n.van-coupon-item--disabled:active {\n  background-color: #fff;\n}\n.van-coupon-item--disabled .van-coupon-item__content {\n  height: 90px;\n}\n.van-coupon-item--disabled h2,\n.van-coupon-item--disabled p,\n.van-coupon-item--disabled span {\n  color: #969799;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/brand/index.vue",
    "content": "<template>\n  <div class=\"goods_brand\">\n    <div class=\"brand-info\">\n      <div class=\"name\">\n        <img class=\"img\"\n             :src=\"brand.picUrl\"\n             background-size=\"cover\" />\n        <div class=\"info-box\">\n          <div class=\"txt\">{{brand.name}}</div>\n          <div class=\"line\"></div>\n        </div>\n      </div>\n      <div class=\"desc\">\n        {{brand.desc}}\n      </div>\n    </div>\n\n    <van-row gutter>\n      <van-col span=\"12\"\n               v-for=\"(goods ,index) in brandGoods\"\n               :key=\"index\">\n        <router-link :to=\"{ path: `/items/detail/${goods.id}`}\">\n          <img :src=\"goods.picUrl\"\n               style=\"width:150px;height:150px;\">\n        </router-link>\n        <div style=\"margin-left: 20px; rgb(123, 116, 116);\">{{goods.name}}</div>\n        <div style=\"margin-left: 20px; color:#ab956d\">￥ {{goods.retailPrice}}</div>\n      </van-col>\n    </van-row>\n\n  </div>\n</template>\n\n<script>\nimport { brandDetail, goodsList } from '@/api/api';\nimport { Card, Row, Col } from 'vant';\n\nexport default {\n  props: {\n    brandId: [String, Number]\n  },\n  data() {\n    return {\n      brand: {},\n      brandGoods: []\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      brandDetail({\n        id: this.brandId\n      }).then(res => {\n        this.brand = res.data.data;\n      });\n\n      goodsList({\n        brandId: this.brandId\n      }).then(res => {\n        this.brandGoods = res.data.data.list;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [Card.name]: Card,\n    [Row.name]: Row,\n    [Col.name]: Col\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_brand {\n  .brand-info {\n    .name {\n      width: 100%;\n      height: 180px;\n      position: relative;\n\n      .img {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n      }\n\n      .info-box {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n        text-align: center;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        display: block;\n\n        .txt {\n          display: block;\n          margin-top: 60px;\n          height: 35px;\n          font-size: 35px;\n          color: #fff;\n        }\n\n        .line {\n          margin: 0 auto;\n          margin-top: 16px;\n          display: block;\n          height: 2px;\n          width: 145px;\n          background: #fff;\n        }\n      }\n    }\n    .desc {\n      background: #fff;\n      width: 100%;\n      height: auto;\n      overflow: hidden;\n      padding: 25px 20px;\n      font-size: 20px;\n      color: #666;\n      line-height: 20px;\n      text-align: center;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/brand-list/index.vue",
    "content": "<template>\n  <div class=\"goods_brand_list\">\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getBrandList\">\n      <div class=\"brand-info\"\n           v-for=\"(brand, index) in list\"\n           :key=\"index\"\n           @click=\"itemClick(brand.id)\">\n        <div class=\"name\">\n          <img class=\"img\"\n               :src=\"brand.picUrl\"\n               background-size=\"cover\" />\n          <div class=\"info-box\">\n            <div class=\"txt\">{{brand.name}}</div>\n            <div class=\"line\"></div>\n            <div class=\"price\">{{brand.floorPrice}}元起</div>\n          </div>\n        </div>\n        <div class=\"desc\">\n          {{brand.desc}}\n        </div>\n      </div>\n    </van-list>\n\n  </div>\n</template>\n\n<script>\nimport { brandList } from '@/api/api';\nimport { List } from 'vant';\n\nexport default {\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getBrandList();\n    },\n    getBrandList() {\n      this.page++;\n      brandList({\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/brand/${id}`);\n    }\n  },\n\n  components: {\n    [List.name]: List\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_brand_list {\n  .brand-info {\n    .name {\n      width: 100%;\n      height: 180px;\n      position: relative;\n\n      .img {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n      }\n\n      .info-box {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n        text-align: center;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        display: block;\n\n        .txt {\n          margin-top: 60px;\n          height: 25px;\n          font-size: 25px;\n          color: #fff;\n        }\n\n        .line {\n          margin: 0 auto;\n          margin-top: 16px;\n          display: block;\n          height: 2px;\n          width: 300px;\n          background: #fff;\n        }\n        .price{\n          height: 25px;\n          font-size: 25px;\n          color: #fff;\n        }\n      }\n    }\n    .desc {\n      background: #fff;\n      width: 100%;\n      height: auto;\n      overflow: hidden;\n      padding: 25px 20px;\n      font-size: 20px;\n      color: #666;\n      line-height: 20px;\n      text-align: center;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/category/index.vue",
    "content": "<template>\n  <div class=\"item_list\">\n    <van-tabs v-model=\"navActive\"\n              @click=\"handleTabClick\">\n      <van-tab v-for=\"(nav, index) in navList\"\n               :title=\"nav.name\"\n               :key=\"index\">\n        <van-list v-model=\"loading\"\n                  :finished=\"finished\"\n                  :immediate-check=\"false\"\n                  finished-text=\"没有更多了\"\n                  @load=\"getGoodsList\">\n          <div class=\"h\">\n            <div class=\"name\">{{currentCategory.name}}</div>\n            <div class=\"desc\">{{currentCategory.desc}}</div>\n          </div>\n          <van-card v-for=\"(item, i) in goodsList\"\n                    :key=\"i\"\n                    :desc=\"item.brief\"\n                    :title=\"item.name\"\n                    :thumb=\"item.picUrl\"\n                    :price=\"item.retailPrice\"\n                    :origin-price=\"item.counterPrice\"\n                    @click=\"itemClick(item.id)\" />\n        </van-list>\n\n      </van-tab>\n    </van-tabs>\n  </div>\n</template>\n\n<script>\nimport { goodsCategory, goodsList } from '@/api/api';\nimport { Card, List, Tab, Tabs } from 'vant';\n\nexport default {\n  name: 'Item-list',\n  props: {\n    itemClass: {\n      type: [String, Number],\n      default: ''\n    }\n  },\n\n  data() {\n    return {\n      categoryId: this.itemClass,\n      goodsList: [],\n      page: 0,\n      limit: 10,\n      currentCategory: {},\n      navList: [],\n      navActive: 0,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    handleTabClick(index) {\n      this.categoryId = this.navList[index].id;\n      this.$router.replace({\n        name: 'category',\n        query: { itemClass: this.categoryId }\n      });\n      this.init();\n    },\n    init() {\n      goodsCategory({ id: this.categoryId }).then(res => {\n        this.navList = res.data.data.brotherCategory;\n        this.currentCategory = res.data.data.currentCategory;\n\n        // 当id是L1分类id时，这里需要重新设置成L1分类的一个子分类的id\n        if (res.data.data.parentCategory.id == this.categoryId) {\n          this.categoryId = res.data.data.currentCategory.id;\n        }\n\n        for (let i = 0; i < this.navList.length; i++) {\n          if (this.navList[i].id == this.categoryId) {\n            this.navActive = i;\n            break;\n          }\n        }\n        this.page = 0;\n        this.goodsList = [];\n        this.getGoodsList();\n      });\n    },\n    getGoodsList() {\n      this.page++;\n      goodsList({\n        categoryId: this.categoryId,\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.goodsList.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [List.name]: List,\n    [Card.name]: Card,\n    [Tab.name]: Tab,\n    [Tabs.name]: Tabs\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.item_list {\n  background-color: #fff;\n}\n\n.h {\n  height: 100px;\n  width: 100%;\n  margin-top: 10px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n\n.h .name {\n  display: block;\n  height: 30px;\n  margin-bottom: 10px;\n  font-size: 20px;\n  color: #333;\n}\n\n.h .desc {\n  display: block;\n  height: 24px;\n  font-size: 16px;\n  color: #999;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/detail/index.vue",
    "content": "<template>\n  <div class=\"item_detail\">\n    <van-swipe :autoplay=\"3000\">\n      <van-swipe-item v-for=\"(image, index) in goods.info.gallery\" :key=\"index\">\n        <img v-lazy=\"image\" width=\"100%\">\n      </van-swipe-item>\n    </van-swipe>\n    <van-cell-group class=\"item_cell_group\" v-if=\"goods\">\n      <van-cell class=\"item_info\">\n        <div>\n          <span class=\"item_price\">{{ goods.info.retailPrice*100 | yuan }}</span>\n          <span class=\"item_market_price\">{{goods.info.counterPrice*100 | yuan}}</span>\n        </div>\n        <div class=\"item-title\">\n          {{ goods.info.name }}\n        </div>\n        <div class=\"item_intro\">{{goods.info.brief}}</div>\n      </van-cell>\n    </van-cell-group>\n\n  <div class=\"item_cell_group\">\n    <van-cell-group>\n      <van-cell\n        title=\"规格\"\n        isLink\n        value=\"请选择\"\n        @click.native=\"skuClick\"\n      />\n      <van-cell title=\"属性\" isLink @click.native=\"propsPopup = true\"/>\n      <van-cell title=\"运费\" value=\"满88免邮费\"/>\n    </van-cell-group>\n    <van-sku\n      v-model=\"showSku\"\n      :sku=\"sku\"\n      :hide-stock=\"true\"\n      :goods=\"skuGoods\"\n      :goodsId=\"goods.info.id\"\n      @buy-clicked=\"buyGoods\"\n      @add-cart=\"addCart\"\n    />\n    <van-popup v-model=\"propsPopup\" position=\"bottom\">\n      <popup-props :propsStr=\"props_str\"></popup-props>\n    </van-popup>\n  </div>\n\n    <div class=\"item_desc\">\n      <div class=\"item_desc_title\">商品详情</div>\n      <div class=\"item_desc_wrap\" v-if=\"goods.info.detail\" v-html=\"goods.info.detail\"></div>\n      <div class=\"item_desc_wrap\" v-else style=\"text-align: center;\">\n        <p>无详情</p>\n      </div>\n    </div>\n\n    <van-goods-action>\n      <van-goods-action-icon @click=\"toCart\" icon=\"cart-o\" :info=\"(cartInfo > 0) ? cartInfo : ''\"/>\n      <van-goods-action-icon @click=\"addCollect\" icon=\"star-o\" :style=\"(goods.userHasCollect !== 0) ? 'color: #f7b444;':''\"/>\n      <van-goods-action-button type=\"warning\" @click=\"skuClick\" text=\"加入购物车\"/>\n      <van-goods-action-button type=\"danger\" @click=\"skuClick\" text=\"立即购买\"/>\n    </van-goods-action>\n\n  </div>\n</template>\n\n<script>\n\nimport { goodsDetail, cartGoodsCount, collectAddOrDelete, cartAdd, cartFastAdd } from '@/api/api';\n\nimport { Sku, Swipe, SwipeItem, GoodsAction, GoodsActionButton, GoodsActionIcon, Popup } from 'vant';\nimport { setLocalStorage } from '@/utils/local-storage';\nimport popupProps from './popup-props';\nimport _ from 'lodash';\n\nexport default {\n  props: {\n    itemId: [String, Number]\n  },\n\n  data() {\n    const isLogin = !!localStorage.getItem('Authorization');\n\n    return {\n      isLogin,\n      goods: {\n        userHasCollect: 0,\n        info: {\n          gallery: []\n        }\n      },\n      sku: {\n        tree: [],\n        list: [],\n        price: '1.00' // 默认价格（单位元）\n      },\n      skuGoods: {\n        // 商品标题\n        title: '',\n        // 默认商品 sku 缩略图\n        picture: ''\n      },\n      cartInfo: 0,\n      selectSku: {\n        selectedNum: 1,\n        selectedSkuComb: {\n          sku_str: 'aa'\n        }\n      },\n      propsPopup: false,\n      showSku: false\n    };\n  },\n\n  computed: {\n    props_str() {\n      let props_arr = [];\n      _.each(this.goods.attribute, json => {\n        props_arr.push([json['attribute'], json['value']]);\n      });\n      return props_arr || [];\n    }\n  },\n\n  created() {\n    this.initData();\n  },\n\n  methods: {\n    skuClick() {\n      this.showSku = true;\n    },\n    initData() {\n      goodsDetail({ id: this.itemId }).then(res => {\n        this.goods = res.data.data;\n        this.skuAdapter();\n      });\n\n      cartGoodsCount().then(res => {\n        this.cartInfo = res.data.data;\n      });\n    },\n    toCart() {\n      this.$router.push({\n        name: 'cart'\n      });\n    },\n    addCollect() {\n      collectAddOrDelete({ valueId: this.itemId, type: 0 }).then(res => {\n        if (this.goods.userHasCollect === 1) {\n          this.goods.userHasCollect = 0;\n        } else {\n          this.goods.userHasCollect = 1;\n          this.$toast({\n            message: '收藏成功',\n            duration: 1500\n          });\n        }\n      });\n    },\n    getProductId(s1, s2) {\n      var productId;\n      var s1_name;\n      var s2_name;\n      _.each(this.goods.specificationList, specification => {\n        _.each(specification.valueList, specValue => {\n          if (specValue.id === s1) {\n            s1_name = specValue.value;\n          } else if (specValue.id === s2) {\n            s2_name = specValue.value;\n          }\n        });\n      });\n\n      _.each(this.goods.productList, v => {\n        let result = _.without(v.specifications, s1_name, s2_name);\n        if (result.length === 0) {\n          productId = v.id;\n        }\n      });\n      return productId;\n    },\n    getProductIdByOne(s1) {\n      var productId;\n      var s1_name;\n      _.each(this.goods.specificationList, specification => {\n        _.each(specification.valueList, specValue => {\n          if (specValue.id === s1) {\n            s1_name = specValue.value;\n            return;\n          }\n        });\n      });\n\n      _.each(this.goods.productList, v => {\n        let result = _.without(v.specifications, s1_name);\n        if (result.length === 0) {\n          productId = v.id;\n        }\n      });\n      return productId;\n    },\n    addCart(data) {\n      let that = this;\n      let params = {\n        goodsId: data.goodsId,\n        number: data.selectedNum,\n        productId: 0\n      };\n      if (_.has(data.selectedSkuComb, 's3')) {\n        this.$toast({\n          message: '目前仅支持两规格',\n          duration: 1500\n        });\n        return;\n      } else if (_.has(data.selectedSkuComb, 's2')) {\n        params.productId = this.getProductId(\n          data.selectedSkuComb.s1,\n          data.selectedSkuComb.s2\n        );\n      } else {\n        params.productId = this.getProductIdByOne(data.selectedSkuComb.s1);\n      }\n      cartAdd(params).then(() => {\n        this.cartInfo = this.cartInfo + data.selectedNum;\n        this.$toast({\n          message: '已添加至购物车',\n          duration: 1500\n        });\n        that.showSku = false;\n      });\n    },\n    buyGoods(data) {\n      let that = this;\n      let params = {\n        goodsId: data.goodsId,\n        number: data.selectedNum,\n        productId: 0\n      };\n      if (_.has(data.selectedSkuComb, 's3')) {\n        this.$toast({\n          message: '目前仅支持两规格',\n          duration: 1500\n        });\n        return;\n      } else if (_.has(data.selectedSkuComb, 's2')) {\n        params.productId = this.getProductId(\n          data.selectedSkuComb.s1,\n          data.selectedSkuComb.s2\n        );\n      } else {\n        params.productId = this.getProductIdByOne(data.selectedSkuComb.s1);\n      }\n      cartFastAdd(params).then(res => {\n        let cartId = res.data.data;\n        setLocalStorage({ CartId: cartId });\n        that.showSku = false;\n        this.$router.push('/order/checkout');\n      });\n    },\n    skuAdapter() {\n      const tree = this.setSkuTree();\n      const list = this.setSkuList();\n      const skuInfo = {\n        price: parseInt(this.goods.info.retailPrice), // 未选择规格时的价格\n        stock_num: 0, // TODO 总库存\n        collection_id: '', // 无规格商品skuId取collection_id，否则取所选sku组合对应的id\n        none_sku: false, // 是否无规格商品\n        hide_stock: true\n      };\n      this.sku = {\n        tree,\n        list,\n        ...skuInfo\n      };\n      this.skuGoods = {\n        title: this.goods.info.name,\n        picture: this.goods.info.picUrl\n      };\n    },\n    setSkuList() {\n      var sku_list = [];\n      _.each(this.goods.productList, v => {\n        var sku_list_obj = {};\n        _.each(v.specifications, (specificationName, index) => {\n          sku_list_obj['s' + (~~index + 1)] = this.findSpecValueIdByName(\n            specificationName\n          );\n        });\n\n        sku_list_obj.price = v.price * 100;\n        sku_list_obj.stock_num = v.number;\n        sku_list.push(sku_list_obj);\n      });\n\n      return sku_list;\n    },\n    findSpecValueIdByName(name) {\n      let id = 0;\n      _.each(this.goods.specificationList, specification => {\n        _.each(specification.valueList, specValue => {\n          if (specValue.value === name) {\n            id = specValue.id;\n            return;\n          }\n        });\n        if (id !== 0) {\n          return;\n        }\n      });\n      return id;\n    },\n    setSkuTree() {\n      let that = this;\n      let specifications = [];\n      _.each(this.goods.specificationList, (v, k) => {\n        let values = [];\n        _.each(v.valueList, vv => {\n          vv.name = vv.value;\n          values.push({\n            id: vv.id,\n            name: vv.value,\n            imUrl: vv.picUrl\n          });\n        });\n\n        specifications.push({\n          k: v.name,\n          v: values,\n          k_s: 's' + (~~k + 1)\n        });\n      });\n\n      return specifications;\n    }\n  },\n\n  components: {\n    [Popup.name]: Popup,\n    [Swipe.name]: Swipe,\n    [SwipeItem.name]: SwipeItem,\n    [Sku.name]: Sku,\n    [GoodsAction.name]: GoodsAction,\n    [GoodsActionButton.name]: GoodsActionButton,\n    [GoodsActionIcon.name]: GoodsActionIcon,\n    [popupProps.name]: popupProps\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.item_detail {\n  img {\n    max-width: 100%;\n  }\n}\n\n.item_cell_group {\n  margin-bottom: 15px;\n}\n\n.item_price {\n  font-size: 20px;\n  color: $red;\n  margin-right: 10px;\n}\n\n.item_market_price {\n  color: $font-color-gray;\n  text-decoration: line-through;\n  font-size: $font-size-small;\n}\n\n.item-title {\n  line-height: 1.4;\n}\n\n.item_dispatch {\n  font-size: $font-size-small;\n  color: $font-color-gray;\n}\n\n.item_intro {\n  line-height: 18px;\n  margin: 5px 0;\n  font-size: $font-size-small;\n  color: $font-color-gray;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  display: -webkit-box;\n  -webkit-box-orient: vertical;\n  -webkit-line-clamp: 3;\n}\n\n.item_desc {\n  background-color: #fff;\n  ::v-deep p {\n    padding: 0 10px;\n    margin-block-start: 0 !important;\n    margin-block-end: 0 !important;\n  }\n  ::v-deep img {\n    max-width: 100%;\n    display: block;\n  }\n}\n\n.item_desc_title {\n  @include one-border;\n  padding: 10px 0;\n  text-align: center;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/detail/popup-props.vue",
    "content": "<template>\n  <div class=\"popup_wrap\">\n    <van-icon name=\"clear\" class=\"cancel_popup\" @click.native=\"$parent.value = false\"></van-icon>\n    <div class=\"popup_header\">商品属性</div>\n    <div class=\"popup_content\">\n      <van-cell-group>\n        <van-cell v-for=\"(str, i) in propsStr\" :key=\"i\">\n          <van-row>\n            <van-col span=\"8\">{{str[0]}}</van-col>\n            <van-col span=\"16\">{{str[1]}}</van-col>\n          </van-row>\n        </van-cell>\n      </van-cell-group>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { Row, Col } from 'vant';\n\nexport default {\n  name: 'popup-props',\n\n  props: {\n    propsStr: {\n      type: Array,\n      default: () => []\n    }\n  },\n\n  components: {\n    [Col.name]: Col,\n    [Row.name]: Row\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.popup_wrap {\n  position: relative;\n  padding-bottom: 30px;\n  box-sizing: border-box;\n  .popup_header {\n    padding: 15px 0 30px 0;\n    text-align: center;\n  }\n\n  .popup_content {\n    min-height: 150px;\n    max-height: 400px;\n    box-sizing: border-box;\n    overflow-x: hidden;\n    overflow-y: scroll;\n    padding: 0 10px;\n    line-height: 30px;\n    &::-webkit-scrollbar {\n      background-color: #fff;\n      width: 5px;\n    }\n    &::-webkit-scrollbar-thumb {\n      border-radius: 3px;\n      background-color: #bebebe;\n    }\n    ol {\n      padding-left: 15px;\n      list-style: decimal;\n    }\n  }\n\n  .cancel_popup {\n    position: absolute;\n    right: 15px;\n    top: 15px;\n    z-index: 9;\n    font-size: 18px;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/groupon/index.vue",
    "content": "<template>\n  <div class=\"goods_groupon\">\n    <div class=\"banner\">\n      <div class=\"title\">团购列表</div>\n    </div>\n\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getGrouponList\">\n      <van-card v-for=\"(item, i) in list\"\n                :key=\"i\"\n                :desc=\"item.brief\"\n                :title=\"item.name\"\n                :thumb=\"item.picUrl\"\n                :price=\"item.retailPrice\"\n                :origin-price=\"item.counterPrice\"\n                @click=\"itemClick(item.id)\">\n        <div slot=\"tags\">\n          <van-tag plain\n                   type=\"primary\">\n            {{item.grouponMember}}人成团\n          </van-tag>\n          <van-tag plain\n                   type=\"danger\"\n                   style=\"margin-left:5px;\">\n            {{item.grouponDiscount}}元再减\n          </van-tag>\n        </div>\n      </van-card>\n    </van-list>\n\n  </div>\n</template>\n\n<script>\nimport { grouponList } from '@/api/api';\nimport { Card, Tag, List } from 'vant';\nimport scrollFixed from '@/mixin/scroll-fixed';\n\nexport default {\n  mixins: [scrollFixed],\n\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getGrouponList();\n    },\n    getGrouponList() {\n      this.page++;\n      grouponList({\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [List.name]: List,\n    [Tag.name]: Tag,\n    [Card.name]: Card\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_groupon {\n  padding: 20px;\n  .banner {\n    height: 250px;\n    background-image: url('http://yanxuan.nosdn.127.net/8976116db321744084774643a933c5ce.png');\n    background-size: cover;\n    margin-bottom: 20px;\n    .title {\n      text-align: center;\n      line-height: 200px;\n      color: #ffffff;\n      font-size: 40px;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/hot/index.vue",
    "content": "<template>\n  <div class=\"goods_hot\">\n    <div class=\"banner\">\n      <div class=\"title\">大家都在买</div>\n    </div>\n\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getHotList\">\n      <van-card v-for=\"(item, i) in list\"\n                :key=\"i\"\n                :desc=\"item.brief\"\n                :title=\"item.name\"\n                :thumb=\"item.picUrl\"\n                :price=\"item.retailPrice\"\n                :origin-price=\"item.counterPrice\"\n                @click=\"itemClick(item.id)\">\n      </van-card>\n    </van-list>\n\n  </div>\n</template>\n\n<script>\nimport { goodsList } from '@/api/api';\nimport { Card, List } from 'vant';\nimport scrollFixed from '@/mixin/scroll-fixed';\n\nexport default {\n  mixins: [scrollFixed],\n\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getHotList();\n    },\n    getHotList() {\n      this.page++;\n      goodsList({\n        isHot: true,\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [List.name]: List,\n    [Card.name]: Card\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_hot {\n  padding: 20px;\n  .banner {\n    height: 250px;\n    background-image: url('http://yanxuan.nosdn.127.net/8976116db321744084774643a933c5ce.png');\n    background-size: cover;\n    margin-bottom: 20px;\n    .title {\n      text-align: center;\n      line-height: 200px;\n      color: #ffffff;\n      font-size: 40px;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/new/index.vue",
    "content": "<template>\n  <div class=\"goods_new\">\n    <div class=\"banner\">\n      <div class=\"title\">新品首发</div>\n    </div>\n\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getNewtList\">\n      <van-card v-for=\"(item, i) in list\"\n                :key=\"i\"\n                :desc=\"item.brief\"\n                :title=\"item.name\"\n                :thumb=\"item.picUrl\"\n                :price=\"item.retailPrice\"\n                :origin-price=\"item.counterPrice\"\n                @click=\"itemClick(item.id)\">\n      </van-card>\n    </van-list>\n\n  </div>\n</template>\n\n<script>\nimport { goodsList } from '@/api/api';\nimport { Card, List } from 'vant';\nimport scrollFixed from '@/mixin/scroll-fixed';\n\nexport default {\n  mixins: [scrollFixed],\n\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getNewtList();\n    },\n    getNewtList() {\n      this.page++;\n      goodsList({\n        isNew: true,\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n\n    [List.name]: List,\n    [Card.name]: Card\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_new {\n  padding: 20px;\n  .banner {\n    height: 250px;\n    background-image: url('http://yanxuan.nosdn.127.net/8976116db321744084774643a933c5ce.png');\n    background-size: cover;\n    margin-bottom: 20px;\n    .title {\n      text-align: center;\n      line-height: 200px;\n      color: #ffffff;\n      font-size: 40px;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/search/index.vue",
    "content": "<template>\n  <div class=\"item_search\">\n    <form action=\"/search\"\n          @submit=\"disabledSubmit\">\n      <van-search placeholder=\"请输入商品名称\"\n                  v-model=\"keyword\"\n                  @search=\"enterSearch\"\n                  autofocus />\n    </form>\n    <div class=\"item_search_content\">\n      <div class=\"item_search_text clearfix\">\n        <div class=\"float-l\">历史搜索</div>\n        <div class=\"float-r\"\n             @click=\"clearHistory\">\n          <van-icon name=\"lajitong\"\n                    style=\"font-size: 12px;margin-right: 3px\" />\n          清空历史记录\n        </div>\n      </div>\n      <div class=\"item_search_history\">\n        <van-tag plain\n                 v-for=\"(his, i) in wordHistory\"\n                 :key=\"i\"\n                 @click=\"clickSearch(his)\">{{his}}</van-tag>\n      </div>\n    </div>\n\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              @load=\"loadMore\">\n      <van-card v-for=\"(item, i) in list\"\n                :key=\"i\"\n                :desc=\"item.brief\"\n                :title=\"item.name\"\n                :thumb=\"item.picUrl\"\n                :price=\"item.retailPrice\"\n                :origin-price=\"item.counterPrice\"\n                @click=\"itemClick(item.id)\" />\n    </van-list>\n\n    <is-empty v-if=\"isEmpty\">抱歉,没有找到符合条件商品</is-empty>\n  </div>\n</template>\n\n<script>\nimport { Card, Search, Tag, List } from 'vant';\nimport { goodsList } from '@/api/api';\nimport IsEmpty from '@/components/is-empty/';\n\nexport default {\n  data() {\n    return {\n      keyword: '',\n      focusStatus: true,\n      wordHistory: [],\n      list: [],\n      page: 1,\n      limit: 10,\n      pages: 0,\n      loading: false,\n      finished: false,\n      isEmpty: false\n    };\n  },\n  methods: {\n    enterSearch() {\n      this.reset();\n      this.searchGoods();\n    },\n    clickSearch(word) {\n      this.keyword = word.trim();\n      this.reset();\n      this.searchGoods();\n    },\n    reset() {\n      this.list = [];\n      this.page = 1;\n      this.limit = 10;\n      this.total = 0;\n      this.loading = false;\n      this.finished = false;\n      this.isEmpty = false;\n    },\n    pushHistoryTolocal(keyword) {\n      const wordHistory = this.wordHistory;\n      const historyKeyWord = this.getKeyWordHistory();\n      if (!!keyword.trim() && historyKeyWord.indexOf(keyword) < 0) {\n        wordHistory.push(keyword);\n        window.localStorage.setItem('keyword', wordHistory.join('|'));\n      }\n    },\n    getKeyWordHistory() {\n      const listWord = window.localStorage.getItem('keyword');\n      return listWord ? listWord.split('|') : [];\n    },\n    clearHistory() {\n      this.$dialog\n        .confirm({\n          message: '是否清空历史记录'\n        })\n        .then(() => {\n          window.localStorage.setItem('keyword', '');\n          this.wordHistory = [];\n        });\n    },\n    disabledSubmit() {\n      return false;\n    },\n    searchGoods() {\n      goodsList({\n        keyword: this.keyword,\n        page: this.page,\n        limit: this.limit,\n        categoryId: 0\n      }).then(res => {\n        var data = res.data.data;\n        this.list.push(...data.list);\n        this.page = data.page;\n        this.limit = data.limit;\n        this.pages = data.pages;\n      });\n    },\n    async loadMore() {\n      this.loading = false;\n      this.page += 1;\n      await this.searchGoods();\n      this.loading = false;\n      if (this.pages <= this.page) {\n        this.finished = true;\n      }\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n  activated() {\n    this.wordHistory = this.getKeyWordHistory();\n  },\n  components: {\n    [Search.name]: Search,\n    [Card.name]: Card,\n    [Tag.name]: Tag,\n    [List.name]: List,\n    [IsEmpty.name]: IsEmpty\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.item_search {\n  background-color: #fff;\n}\n.item_search_content {\n  padding: 15px 10px 0;\n}\n.item_search_text {\n  font-size: $font-size-normal;\n  color: $font-color-gray;\n  margin-bottom: 20px;\n}\n\n.item_search_history > span {\n  margin-right: 10px;\n  margin-bottom: 10px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/tabbar-catalog.vue",
    "content": "<template>\n  <div class=\"tab_class\">\n    <div class=\"tal_class_searchBox\">\n      <van-search placeholder=\"点击前往搜索\"/>\n      <div class=\"tal_class_searchMask\" @click=\"$router.push({ name: 'search' })\"></div>\n    </div>\n\n    <div class=\"class_tree clearfix\">\n    <ul class=\"class_tree_nav\">\n      <li\n        v-for=\"(item, index) in categoryList\"\n        :key=\"index\"\n        :class=\"{active_nav: currentCategory.id == item.id}\"\n        @click=\"changeCatalog(item.id)\"\n      >{{item.name}}</li>\n    </ul>\n    <div class=\"class_tree_content\">\n      <div class=\"class_tree_all\">\n        <img style=\"width:250px\" v-lazy=\"currentCategory.picUrl\">\n      </div>\n      <div class=\"box\">\n        <span>{{currentCategory.desc}}</span>\n      </div>\n      <div class=\"class_tree_items_wrap clearfix\">\n        <div @click=\"toItemList(item.id)\" :key=\"i\" v-for=\"(item, i) in currentSubCategoryList\">\n          <div class=\"class_tree_item_img\">\n            <img :src=\"item.picUrl\" :alt=\"item.name\">\n          </div>\n          <div class=\"class_tree_item_name\">{{item.name}}</div>\n        </div>\n      </div>\n    </div>\n  </div>\n\n  </div>\n</template>\n\n<script>\nimport { catalogList, catalogCurrent } from '@/api/api';\n\nimport { Search } from 'vant';\n\nexport default {\n  data() {\n    return {\n      categoryList: [],\n      currentCategory: {},\n      currentSubCategoryList: []\n    };\n  },\n\n  created() {\n    this.initData();\n  },\n\n  methods: {\n    initData() {\n      catalogList().then(res => {\n        let data = res.data.data;\n        this.categoryList = data.categoryList;\n        this.currentCategory = res.data.data.currentCategory;\n        this.currentSubCategoryList = data.currentSubCategory;\n      });\n    },\n    changeCatalog(id) {\n      catalogCurrent({ id: id}).then(res => {\n        let data = res.data.data;\n        this.currentCategory = data.currentCategory;        \n        this.currentSubCategoryList = data.currentSubCategory;\n      });\n    },\n    toItemList(id) {\n      this.$router.push({\n        name: 'category',\n        query: { keyword: '', itemClass: id }\n      });\n    }\n  },\n  components: {\n    [Search.name]: Search\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n@import '../../assets/scss/mixin';\n\n.tab_class {\n  overflow: hidden;\n  background-color: #fff;\n}\n\n.height-fix {\n  padding-bottom: 42px;\n}\n\n.tal_class_searchBox {\n  position: relative;\n}\n\n.tal_class_searchMask {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  z-index: 9;\n}\n\n\n.box {\n  width: 250px;\n  height: 20px;\n  text-align: center;\n  font-family: PingFangSC-Light, helvetica, 'Heiti SC';\n  font-size: 13px;\n  position: absolute;\n  top: 95px;\n}\n.box span {\n  line-height: 20px;\n}\n.class_tree {\n  position: relative;\n  background-color: #fff;\n  overflow-x: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  overflow: hidden;\n  height: 100%;\n  box-sizing: border-box;\n}\n.class_tree_nav {\n  float: left;\n  width: 100px;\n  height: 100%;\n  background-color: #fff;\n  overflow: scroll;\n  > li {\n    @include one-border;\n    height: 40px;\n    line-height: 40px;\n    text-align: center;\n    border-left: 2px solid $bg-color;\n  }\n  > li.active_nav {\n    background-color: #fff;\n    border-left: 2px solid $red;\n    color: $red;\n  }  \n}\n.class_tree_content {\n  margin-left: 100px;\n  height: 100%;\n  overflow-x: hidden;\n  overflow-y: scroll;\n  .class_tree_all {\n    text-align: right;\n    padding-right: 10px;\n    height: 40px;\n    line-height: 40px;\n    color: $font-color-gray;\n    font-size: $font-size-small;\n  }\n  .van-icon-arrow {\n    font-size: $font-size-small;\n  }\n  .class_tree_items_wrap {\n    padding: 10px 20px;\n    margin-right: -3%;\n    margin-top: 70px;\n    text-align: center;\n    > div {\n      float: left;\n      padding-right: 3%;\n      box-sizing: border-box;\n      width: 33.333%;\n      margin-bottom: 20px;\n    }\n    img {\n      max-width: 100%;\n    }\n\n    .class_tree_item_img {\n      display: inline-block;\n      max-width: 100%;\n      width: 70px;\n      height: 70px;\n    }\n    .class_tree_item_name {\n      overflow: hidden;\n      text-overflow: ellipsis;\n      white-space: nowrap;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/items/topic/index.vue",
    "content": "<template>\n  <div class=\"goods_topic\">\n    <div class=\"topic-detail\"\n         v-html=\"topic.content\">\n    </div>\n\n    <van-row gutter>\n      <van-col span=\"12\"\n               v-for=\"(goods ,index) in topicGoods\"\n               :key=\"index\">\n        <router-link :to=\"{ path: `/items/detail/${goods.id}`}\">\n          <img :src=\"goods.picUrl\"\n               style=\"width:150px;height:150px;\">\n        </router-link>\n        <div style=\"margin-left: 20px; rgb(123, 116, 116);\">{{goods.name}}</div>\n        <div style=\"margin-left: 20px; color:#ab956d\">￥ {{goods.retailPrice}}</div>\n      </van-col>\n    </van-row>\n\n  </div>\n</template>\n\n<script>\nimport { topicDetail, topicRelated } from '@/api/api';\nimport { Card, Row, Col } from 'vant';\n\nexport default {\n  props: {\n    topicId: [String, Number]\n  },\n  data() {\n    return {\n      topic: {},\n      topicGoods: [],\n      topicRelated: []\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      topicDetail({\n        id: this.topicId\n      }).then(res => {\n        this.topic = res.data.data.topic;\n        this.topicGoods = res.data.data.goods;\n      });\n\n      topicRelated({\n        id: this.topicId\n      }).then(res => {\n        this.topicRelated = res.data.data;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [Card.name]: Card,\n    [Row.name]: Row,\n    [Col.name]: Col\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_topic {\n  .topic-detail {\n    ::v-deep p {\n      padding: 0 10px;\n      margin-block-start: 0 !important;\n      margin-block-end: 0 !important;\n    }\n    ::v-deep img {\n      max-width: 100%;\n      width: 100% !important;\n      height: 100% !important;\n      display: block;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/items/topic-list/index.vue",
    "content": "<template>\n  <div class=\"goods_topic_list\">\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getTopicList\">\n      <div class=\"topic-info\"\n           v-for=\"(topic, index) in list\"\n           :key=\"index\"\n           @click=\"itemClick(topic.id)\">\n        <div class=\"name\">\n          <img class=\"img\"\n               :src=\"topic.picUrl\"\n               background-size=\"cover\" />\n          <div class=\"info-box\">\n            <div class=\"txt\">{{topic.title}}</div>\n            <div class=\"line\"></div>\n            <div class=\"price\">阅读次数：{{topic.readCount}}</div>\n          </div>\n        </div>\n        <div class=\"desc\">\n          {{topic.subtitle}}\n        </div>\n      </div>\n    </van-list>\n\n  </div>\n</template>\n\n<script>\nimport { topicList } from '@/api/api';\nimport { List } from 'vant';\n\nexport default {\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getTopicList();\n    },\n    getTopicList() {\n      this.page++;\n      topicList({\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/topic/${id}`);\n    }\n  },\n\n  components: {\n    [List.name]: List\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.goods_topic_list {\n  .topic-info {\n    .name {\n      width: 100%;\n      height: 180px;\n      position: relative;\n\n      .img {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n      }\n\n      .info-box {\n        position: absolute;\n        top: 0;\n        left: 0;\n        width: 100%;\n        height: 180px;\n        text-align: center;\n        display: flex;\n        justify-content: center;\n        align-items: center;\n        display: block;\n\n        .txt {\n          margin-top: 60px;\n          height: 25px;\n          font-size: 25px;\n          color: #fff;\n        }\n\n        .line {\n          margin: 0 auto;\n          margin-top: 16px;\n          display: block;\n          height: 2px;\n          width: 300px;\n          background: #fff;\n        }\n        .price{\n          height: 25px;\n          font-size: 25px;\n          color: #fff;\n        }\n      }\n    }\n    .desc {\n      background: #fff;\n      width: 100%;\n      height: auto;\n      overflow: hidden;\n      padding: 25px 20px;\n      font-size: 20px;\n      color: #666;\n      line-height: 20px;\n      text-align: center;\n    }\n  }\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/login/forget/index.vue",
    "content": "<template>\n\t<md-field-group class=\"foget_view\">\n\t\t<md-field\n\t\t\tv-model=\"mobile\"\n\t\t\ticon=\"mobile\"\n\t\t\tplaceholder=\"请输入手机号\"/>\n\n\t\t<md-field\n\t\t\tv-model=\"code\"\n\t\t\ticon=\"lock\"\n\t\t\tplaceholder=\"请输入短信验证码\"\n\t\t>\n\t\t\t<div slot=\"rightIcon\" @click=\"getCode\" class=\"getCode red\">\n\t\t\t\t<countdown v-if=\"counting\" :time=\"60000\" @end=\"countdownend\">\n\t\t\t\t  <template slot-scope=\"props\">{{ +props.seconds || 60 }}秒后获取</template>\n\t\t\t\t</countdown>\n\t\t\t\t<span v-else>获取验证码</span>\n\t\t\t</div>\n\t\t</md-field >\n\n\t\t<div class=\"foget_submit\">\n\t\t\t<van-button size=\"large\" type=\"danger\" @click=\"submitCode\">下一步</van-button>\n\t\t</div>\n\t</md-field-group>\n</template>\n\n<script>\nimport field from '@/components/field/';\nimport fieldGroup from '@/components/field-group/';\n\nexport default {\n  data() {\n    return {\n      counting: false,\n      mobile: '',\n      code: ''\n    };\n  },\n\n  methods: {\n    submitCode() {\n      this.$router.push({ name: 'forgetReset' });\n    },\n    getCode() {\n      this.counting = true;\n    },\n    countdownend() {\n      this.counting = false;\n    }\n  },\n\n  components: {\n    [field.name]: field,\n    [fieldGroup.name]: fieldGroup\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../../assets/scss/mixin';\n\ndiv.foget_view {\n  background-color: #fff;\n  padding-top: 30px;\n}\n\ndiv.foget_submit {\n  padding-top: 30px;\n  padding-bottom: 20px;\n}\n\n.getCode {\n  @include one-border(left);\n  text-align: center;\n}\n\n.time_down {\n  color: $red;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/login/forget-reset/index.vue",
    "content": "<template>\n\t<md-field-group class=\"foget_view\">\n\t\t<md-field\n\t\t\tv-model=\"password\"\n\t\t\ticon=\"lock\"\n\t\t\t:is-error=\"isErrow\"\n\t\t\tplaceholder=\"请输入新密码\"/>\n\n\t\t<md-field\n\t\t\tv-model=\"passwordRepeat\"\n\t\t\ttype=\"password\"\n\t\t\ticon=\"lock\"\n\t\t\t:is-error=\"isErrow\"\n\t\t\tplaceholder=\"请再次输入密码\" />\n\t\t<div class=\"red\" v-show=\"isErrow\">两次密码输入不一致</div>\n\n\t\t<div class=\"foget_submit\">\n\t\t\t<van-button size=\"large\" type=\"danger\" @click=\"submitCode\">重置</van-button>\n\t\t</div>\n\t</md-field-group>\n</template>\n\n<script>\nimport field from '@/components/field/';\nimport fieldGroup from '@/components/field-group/';\n\nexport default {\n  data() {\n    return {\n      isErrow: true,\n      password: '',\n      passwordRepeat: ''\n    };\n  },\n\n  methods: {\n    submitCode() {}\n  },\n\n  components: {\n    [field.name]: field,\n    [fieldGroup.name]: fieldGroup\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\ndiv.foget_view {\n  background-color: #fff;\n  padding-top: 30px;\n}\n\ndiv.foget_submit {\n  padding-top: 30px;\n  padding-bottom: 20px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/login/forget-status/index.vue",
    "content": "<template>\r\n\t<div class=\"payment_status\">\r\n\t\t<div class=\"status_top\">\r\n\t\t\t<van-icon :name=\"statusIcon\" :class=\"statusClass\" />\r\n\t\t\t<div>{{statusText}}</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"status_text\"><span class=\"red\">3秒</span>后返回到登录页, 您也可以<router-link to=\"/login\" class=\"red\">点此登录</router-link></div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nexport default {\r\n  name: 'payment-status',\r\n\r\n  props: {\r\n    status: String\r\n  },\r\n\r\n  data() {\r\n    return {\r\n      isSuccess: true\r\n    };\r\n  },\r\n\r\n  computed: {\r\n    statusText() {\r\n      return this.isSuccess ? '修改成功' : '修改失败';\r\n    },\r\n    statusIcon() {\r\n      return this.isSuccess ? 'checked' : 'fail';\r\n    },\r\n    statusClass() {\r\n      return this.isSuccess ? 'success_icon' : 'fail_icon';\r\n    }\r\n  },\r\n\r\n  activated() {\r\n    this.isSuccess = this.status === 'success';\r\n  }\r\n};\r\n</script>\r\n\r\n\r\n<style lang=\"scss\" scopd>\r\n.payment_status {\r\n  padding-top: 30px;\r\n  box-sizing: border-box;\r\n  background-color: #fff;\r\n  text-align: center;\r\n}\r\n\r\n.status_top {\r\n  margin-bottom: 15px;\r\n  i {\r\n    margin-bottom: 5px;\r\n  }\r\n  > div {\r\n    font-size: 18px;\r\n  }\r\n}\r\n\r\n.status_text {\r\n  color: $font-color-gray;\r\n  margin-bottom: 50px;\r\n}\r\n\r\n.status_icon {\r\n  font-size: 80px;\r\n}\r\n\r\ni.success_icon {\r\n  @extend .status_icon;\r\n  color: #06bf04;\r\n}\r\n\r\ni.fail_icon {\r\n  @extend .status_icon;\r\n  color: #f44;\r\n}\r\n</style>\r\n"
  },
  {
    "path": "litemall-vue/src/views/login/login.vue",
    "content": "<template>\n\t<div class=\"login\">\n    \t<div class=\"store_header\">\n\t\t<div class=\"store_avatar\">\n\t\t\t<img src=\"../../assets/images/avatar_default.png\" alt=\"头像\" width=\"55\" height=\"55\">\n\t\t</div>\n\t\t<div class=\"store_name\">litemall-vue</div>\n\t</div>\n\n    <md-field-group>\n      <md-field\n        v-model=\"account\"\n        icon=\"username\"\n        placeholder=\"请输入测试账号 user123\"\n        right-icon=\"clear-full\"\n        name=\"user\"\n        data-vv-as=\"帐号\"\n        @right-click=\"clearText\"\n      />\n\n      <md-field\n        v-model=\"password\"\n        icon=\"lock\"\n        placeholder=\"请输入测试密码 user123\"\n        :type=\"visiblePass ? 'text' : 'password'\"\n        :right-icon=\"visiblePass ? 'eye-open' : 'eye-close'\"\n        data-vv-as=\"密码\"\n        name=\"password\"\n        @right-click=\"visiblePass = !visiblePass\"\n      />\n\n      <div class=\"clearfix\">\n        <div class=\"float-l\">\n          <router-link to=\"/login/registerGetCode\">免费注册</router-link>\n        </div>\n        <div class=\"float-r\">\n          <router-link to=\"/login/forget\">忘记密码</router-link>\n        </div>\n      </div>\n\n      <van-button size=\"large\" type=\"danger\" :loading=\"isLogining\" @click=\"loginSubmit\">登录</van-button>\n    </md-field-group>\n\n\n      <div class=\"text-desc text-center bottom_positon\">技术支持: litemall</div>\n\n\t</div>\n</template>\n\n<script>\nimport field from '@/components/field/';\nimport fieldGroup from '@/components/field-group/';\n\nimport { authLoginByAccount } from '@/api/api';\nimport { setLocalStorage } from '@/utils/local-storage';\nimport { emailReg, mobileReg } from '@/utils/validate';\n\nimport { Toast } from 'vant';\n\n\nexport default {\n  name: 'login-request',\n  components: {\n    [field.name]: field,\n    [fieldGroup.name]: fieldGroup,\n    Toast\n  },\n  data() {\n    return {\n      account: '',\n      password: '',\n      visiblePass: false,\n      isLogining: false,\n      userInfo: {}\n    };\n  },\n\n  methods: {\n    clearText() {\n      this.account = '';\n    },\n\n    validate() {\n\n    },\n\n    login() {\n      let loginData = this.getLoginData();\n      authLoginByAccount(loginData).then(res => {\n        this.userInfo = res.data.data.userInfo;\n        setLocalStorage({\n          Authorization: res.data.data.token,\n          avatar: this.userInfo.avatarUrl,\n          nickName: this.userInfo.nickName\n        });\n\n        this.routerRedirect();\n      }).catch(error => {\n        Toast.fail(error.data.errmsg);\n      });\n    },\n\n    loginSubmit() {\n      this.isLogining = true;\n      try {\n        this.validate();\n        this.login();\n        this.isLogining = false;\n      } catch (err) {\n        console.log(err.message);\n        this.isLogining = false;\n      }\n    },\n\n    routerRedirect() {\n      // const { query } = this.$route;\n      // this.$router.replace({\n      //   name: query.redirect || 'home',\n      //   query: query\n      // });\n      window.location = '#/user/';\n    },\n\n    getLoginData() {\n      const password = this.password;\n      const account = this.getUserType(this.account);\n      return {\n        [account]: this.account,\n        password: password\n      };\n    },\n\n    getUserType(account) {\n      const accountType = mobileReg.test(account)\n        ? 'mobile'\n        : emailReg.test(account)\n        ? 'email'\n        : 'username';\n      return accountType;\n    }\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n@import '../../assets/scss/mixin';\n.login {\n  position: relative;\n  background-color: #fff;\n}\n.store_header {\n  text-align: center;\n  padding: 30px 0;\n  .store_avatar img {\n    border-radius: 50%;\n  }\n  .store_name {\n    padding-top: 5px;\n    font-size: 16px;\n  }\n}\n.register {\n  padding-top: 40px;\n  color: $font-color-gray;\n  a {\n    color: $font-color-gray;\n  }\n  > div {\n    width: 50%;\n    box-sizing: border-box;\n    padding: 0 20px;\n  }\n  .connect {\n    @include one-border(right);\n    text-align: right;\n  }\n}\n.bottom_positon {\n  position: absolute;\n  bottom: 30px;\n  width: 100%;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/login/register-getCode/index.vue",
    "content": "<template>\n\t<md-field-group class=\"register_view\">\n\t\t<div>我们将发送验证码到您的手机</div>\n\t\t<md-field\n\t\t\tv-model=\"mobile\"\n\t\t\ticon=\"mobile\"\n\t\t\tplaceholder=\"请输入手机号\"/>\n\n\t\t<div class=\"register_submit\">\n\t\t\t<van-button size=\"large\" type=\"danger\" @click=\"submitCode\">下一步</van-button>\n\t\t</div>\n\n\t\t<div class=\"register_footer\">\n\t\t\t已有账号?\n\t\t\t<router-link to=\"/login\" class=\"red\">登录</router-link>\n\t\t</div>\n\t</md-field-group>\n</template>\n\n<script>\nimport field from '@/components/field/';\nimport fieldGroup from '@/components/field-group/';\nimport { mobileReg } from '@/utils/validate';\n\nexport default {\n  data() {\n    return {\n      mobile: ''\n    };\n  },\n\n  methods: {\n    submitCode() {\n      if(this.mobile === ''){\n        return\n      }\n      if(!mobileReg.test(this.mobile)){\n        this.mobile = ''\n        return\n      }\n    \ttry {\n        this.$router.push({\n          name: 'registerSubmit',\n          params: { phone: this.mobile}\n        });\n      } catch (error) {\n        console.log(error.message);\n      }\n    }\n  },\n\n  components: {\n    [field.name]: field,\n    [fieldGroup.name]: fieldGroup\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\ndiv.register_view {\n  background-color: #fff;\n  padding-top: 30px;\n}\n\ndiv.register_submit {\n  padding-top: 30px;\n  padding-bottom: 20px;\n}\n\n.register_footer {\n  text-align: right;\n  color: $font-color-gray;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/login/register-status/index.vue",
    "content": "<template>\r\n\t<div class=\"payment_status\">\r\n\t\t<div class=\"status_top\">\r\n\t\t\t<van-icon :name=\"statusIcon\" :class=\"statusClass\" />\r\n\t\t\t<div>{{statusText}}</div>\r\n\t\t</div>\r\n\r\n\t\t<div class=\"status_text\">\r\n\t\t\t<span class=\"red\">\r\n\t\t\t\t<countdown v-if=\"counting\" :time=\"3000\" @end=\"countDownEnd\">\r\n\t\t\t\t\t<template slot-scope=\"props\">{{ +props.seconds || 3 }}</template>秒\r\n\t\t\t\t</countdown>\r\n\t\t\t</span>\r\n\t\t\t后返回到登录页, 您也可以\r\n\t\t\t<router-link to=\"/login\" class=\"red\">点此登录</router-link>\r\n\t\t</div>\r\n\t</div>\r\n</template>\r\n\r\n<script>\r\nimport field from '@/components/field/';\r\nimport fieldGroup from '@/components/field-group/';\r\n\r\nexport default {\r\n\tname: 'payment-status',\r\n\r\n\tprops: {\r\n\t\tstatus: String\r\n\t},\r\n\r\n\tdata() {\r\n\t\treturn {\r\n\t\t\tcounting: true,\r\n\t\t\tisSuccess: true\r\n\t\t};\r\n\t},\r\n\r\n\tmethods:{\r\n\t\tcountDownEnd() {\r\n\t\t\tthis.counting = false;\r\n\t\t\twindow.location = '#/login/';\r\n\t\t}\r\n\t},\r\n\r\n\tcomputed: {\r\n\t\tstatusText() {\r\n\t\t\treturn this.isSuccess ? '注册成功' : '注册失败';\r\n\t\t},\r\n\t\tstatusIcon() {\r\n\t\t\treturn this.isSuccess ? 'checked' : 'fail';\r\n\t\t},\r\n\t\tstatusClass() {\r\n\t\t\treturn this.isSuccess ? 'success_icon' : 'fail_icon';\r\n\t\t}\r\n\t},\r\n\r\n\tactivated() {\r\n\t\tthis.isSuccess = this.status === 'success';\r\n\t},\r\n\r\n\tcomponents: {\r\n\t\t[field.name]: field,\r\n\t\t[fieldGroup.name]: fieldGroup\r\n\t}\r\n};\r\n</script>\r\n\r\n\r\n<style lang=\"scss\" scopd>\r\n.payment_status {\r\n  padding-top: 30px;\r\n  box-sizing: border-box;\r\n  background-color: #fff;\r\n  text-align: center;\r\n}\r\n\r\n.status_top {\r\n  margin-bottom: 15px;\r\n  i {\r\n    margin-bottom: 5px;\r\n  }\r\n  > div {\r\n    font-size: 18px;\r\n  }\r\n}\r\n\r\n.status_text {\r\n  color: $font-color-gray;\r\n  margin-bottom: 50px;\r\n}\r\n\r\n.status_icon {\r\n  font-size: 80px;\r\n}\r\n\r\ni.success_icon {\r\n  @extend .status_icon;\r\n  color: #06bf04;\r\n}\r\n\r\ni.fail_icon {\r\n  @extend .status_icon;\r\n  color: #f44;\r\n}\r\n</style>\r\n"
  },
  {
    "path": "litemall-vue/src/views/login/register-submit/index.vue",
    "content": "<template>\n\t<md-field-group class=\"register_submit\">\n\t\t<md-field v-model=\"code\" icon=\"mobile\" placeholder=\"请输入验证码\">\n\t\t\t<div slot=\"rightIcon\" @click=\"getCode\" class=\"getCode red\">\n\t\t\t\t<countdown v-if=\"counting\" :time=\"60000\" @end=\"countDownEnd\">\n\t\t\t\t  <template slot-scope=\"props\">{{ +props.seconds || 60 }}秒后获取</template>\n\t\t\t\t</countdown>\n\t\t\t\t<span v-else>获取验证码</span>\n\t\t\t</div>\n\t\t</md-field>\n\t\t<md-field v-model=\"username\" icon=\"username\" placeholder=\"请输入用户名\"/>\n\t\t<md-field v-model=\"password\" icon=\"lock\" placeholder=\"请输入密码\"/>\n\t\t<md-field v-model=\"repeatPassword\" icon=\"lock\" placeholder=\"请再次确认密码\"/>\n\n\t\t<div class=\"register_submit_btn\">\n\t\t\t<van-button type=\"danger\" size=\"large\" @click=\"registerSubmit\">确定</van-button>\n\t\t</div>\n\t</md-field-group>\n</template>\n\n<script>\nimport field from '@/components/field/';\nimport fieldGroup from '@/components/field-group/';\nimport { authRegisterCaptcha } from '@/api/api';\nimport { authRegister } from '@/api/api';\nimport {Toast} from \"vant\";\n\nexport default {\n\tprops: {\n\t\tphone: String\n\t},\n\tdata() {\n\t\treturn {\n\t\t  counting: true,\n\t\t  code: '',\n\t\t  username: '',\n\t\t  password: '',\n\t\t  repeatPassword: ''\n\t\t};\n\t},\n\tmounted:function(){\n\t\tthis.getCode();\n\t},\n\n  methods: {\n    registerSubmit() {\n      if(this.username === '' || this.code === ''){\n        return\n      }\n      if(this.password === '' || this.repeatPassword === ''){\n        return\n      }\n      if(this.password !== this.repeatPassword){\n        this.password = ''\n        this.repeatPassword = ''\n        return\n      }\n      let data = this.getRegisterData();\n      authRegister(data).then(res => {\n        this.$router.push({\n          name: 'registerStatus',\n          params: { status: 'success' }\n        });\n      }).catch (error => {\n        Toast.fail(error.data.errmsg);\n        if (error.data.errno == 705) {\n          window.location = '#/login/';\n        }\n      });\n    },\n\n    getCode() {\n      this.counting = true;\n      let data = {\n        mobile: this.phone\n      };\n      authRegisterCaptcha(data).then(res => {\n        this.counting = true;\n      }).catch(error => {\n        alert(error.data.errmsg);\n        this.counting = true;\n      });\n    },\n\n    getRegisterData() {\n      const password = this.password;\n      const code = this.code;\n      const repeatPassword = this.repeatPassword;\n      const mobile = this.phone;\n      const username = this.username;\n      return {\n        code: code,\n        username: username,\n        password: password,\n        repeatPassword: repeatPassword,\n        mobile: mobile\n      };\n    },\n\n    countDownEnd() {\n      this.counting = false;\n    }\n  },\n\n  components: {\n    [field.name]: field,\n    [fieldGroup.name]: fieldGroup\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n@import '../../../assets/scss/mixin';\n\n.register_submit {\n  padding-top: 40px;\n  background-color: #fff;\n}\n\n.register_submit_btn {\n  padding-top: 30px;\n}\n\n.getCode {\n  @include one-border(left);\n  text-align: center;\n}\n\n.time_down {\n  color: $red;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/order/checkout.vue",
    "content": "<template>\n<div class=\"order\">\n  <van-cell-group>\n      <van-cell v-if=\"checkedAddress\" isLink @click=\"goAddressList()\" title=\"收货地址\">\n      <div slot=\"label\">\n        <div>\n         <span>{{ checkedAddress.name }} </span>\n         <span>{{ checkedAddress.tel }} </span>\n      </div>\n      <div>\n        {{ checkedAddress.addressDetail }}\n      </div>\n      </div>\n    </van-cell>\n  </van-cell-group>\n\n  <van-cell-group>\n    <van-cell class=\"order-coupon\" title=\"优惠券\" is-link :value=\"getCouponValue()\" @click=\"getCoupons\" />\n  </van-cell-group>\n\n<!-- 优惠券列表 -->\n<van-popup v-model=\"showList\" position=\"bottom\">\n  <van-coupon-list\n    :coupons=\"coupons\"\n    :chosen-coupon=\"chosenCoupon\"\n    :disabled-coupons=\"disabledCoupons\"\n    @change=\"onChange\"\n    @exchange=\"onExchange\"\n  />\n</van-popup>\n\n    <van-card\n      v-for=\"item in checkedGoodsList\"\n      :key=\"item.id\"\n      :title=\"item.goodsName\"\n      :num=\"item.number\"\n      :price=\"item.price +'.00'\"\n      :thumb=\"item.picUrl\"\n    >\n      <div slot=\"desc\">\n        <div class=\"van-card__desc\">\n          <van-tag plain style=\"margin-right:6px;\" v-for=\"(spec, index) in item.specifications\" :key=\"index\">\n            {{spec}}\n          </van-tag>\n        </div>\n      </div>\n    </van-card>\n\n    <van-cell-group>\n      <van-cell title=\"商品金额\">\n        <span class=\"red\">{{goodsTotalPrice * 100 | yuan}}</span>\n      </van-cell>\n      <van-cell title=\"邮费\">\n        <span class=\"red\">{{ freightPrice * 100| yuan}}</span>\n      </van-cell>\n      <van-cell title=\"优惠券\">\n        <span class=\"red\">-{{ couponPrice * 100| yuan}}</span>\n      </van-cell>\n      <van-field v-model=\"message\" placeholder=\"请输入备注\" label=\"订单备注\">\n      <template slot=\"icon\">{{message.length}}/50</template>\n      </van-field>      \n    </van-cell-group>\n\n    <van-submit-bar\n      :price=\"actualPrice*100\"\n      label=\"总计：\"\n      buttonText=\"提交订单\"\n      :disabled=\"isDisabled\"\n      @submit=\"onSubmit\"\n    />\n</div>\n</template>\n\n<script>\nimport { Card, Tag, ard, Field, SubmitBar, Toast  } from 'vant';\nimport { CouponCell, CouponList, Popup } from 'vant';\nimport { cartCheckout, orderSubmit, couponSelectList} from '@/api/api';\nimport { getLocalStorage, setLocalStorage } from '@/utils/local-storage';\nimport dayjs from 'dayjs';\n\nexport default {\n  data() {\n    return {\n      checkedGoodsList: [],\n      checkedAddress: {},\n      availableCouponLength: 0, // 可用的优惠券数量\n      goodsTotalPrice: 0, //商品总价\n      freightPrice: 0, //快递费\n      couponPrice: 0, //优惠券的价格\n      grouponPrice: 0, //团购优惠价格\n      orderTotalPrice: 0, //订单总价\n      actualPrice: 0, //实际需要支付的总价\n      message: '',\n\n      isDisabled: false,\n      showList: false,\n      chosenCoupon: -1,\n      coupons: [],\n      disabledCoupons: [] \n    };\n  },\n  created() {\n    this.init();\n  },\n\n  methods: {\n    onSubmit() {     \n      const {AddressId, CartId, CouponId, UserCouponId} = getLocalStorage('AddressId', 'CartId', 'CouponId', 'UserCouponId');\n\n      if (AddressId === null || AddressId === \"0\") {\n        Toast.fail('请设置收货地址');\n        return;\n      }\n\n\n      this.isDisabled = true;\n\n      orderSubmit({\n        addressId: AddressId,\n        cartId: CartId,\n        couponId: CouponId,\n        userCouponId: UserCouponId,\n        grouponLinkId: 0,\n        grouponRulesId: 0,\n        message: this.message\n      }).then(res => {\n        \n        // 下单成功，重置下单参数。\n        setLocalStorage({AddressId: 0, CartId: 0, CouponId: 0});\n\n        let orderId = res.data.data.orderId;\n        this.$router.push({\n          name: 'payment',\n          params: { orderId: orderId }\n        });\n      }).catch(error => {\n        this.isDisabled = false;\n        this.$toast(\"下单失败\");\n      })\n\n    },\n    goAddressList() {\n      this.$router.push({\n        path: '/user/address'\n      });\n    },\n    getCouponValue() {\n      if(this.couponPrice !== 0 ){\n        return \"-¥\" + this.couponPrice + \".00元\"\n      }\n      if(this.availableCouponLength !== 0){\n        return this.availableCouponLength + \"张可用\"\n      }\n      return '没有可用优惠券'\n    },\n    getCoupons() {\n      const {AddressId, CartId, CouponId} = getLocalStorage('AddressId', 'CartId', 'CouponId');\n      couponSelectList({cartId: CartId, grouponRulesId: 0}).then(res => {\n        var cList = res.data.data.list;\n        this.coupons = []\n        this.disabledCoupons = [];\n        for(var i = 0; i < cList.length; i++){\n          var c = cList[i]\n\n          var coupon = {\n            id: c.id,\n            cid: c.cid,\n            name: c.name,\n            condition: '满' + c.min + '元可用',\n            value: c.discount * 100,\n            description: c.desc,\n            startAt: new Date(c.startTime).getTime()/1000,\n            endAt: new Date(c.endTime).getTime()/1000,\n            valueDesc: c.discount,\n            unitDesc: '元'            \n          }\n          if (c.available) {\n            this.coupons.push(coupon);\n          } else {\n            this.disabledCoupons.push(coupon);\n          }\n        }\n        \n        this.showList = true\n      })\n    },\n    init() {\n      const {AddressId, CartId, CouponId, UserCouponId} = getLocalStorage('AddressId', 'CartId', 'CouponId', 'UserCouponId');\n\n      cartCheckout({cartId: CartId, addressId: AddressId, couponId: CouponId, userCouponId: UserCouponId, grouponRulesId: 0}).then(res => {\n          var data = res.data.data\n\n          this.checkedGoodsList = data.checkedGoodsList;\n          this.checkedAddress= data.checkedAddress;\n          this.availableCouponLength= data.availableCouponLength;\n          this.actualPrice= data.actualPrice;\n          this.couponPrice= data.couponPrice;\n          this.grouponPrice= data.grouponPrice;\n          this.freightPrice= data.freightPrice;\n          this.goodsTotalPrice= data.goodsTotalPrice;\n          this.orderTotalPrice= data.orderTotalPrice;\n\n          setLocalStorage({AddressId: data.addressId, CartId: data.cartId, CouponId: data.couponId, UserCouponId: data.userCouponId});\n      });\n\n    },\n    onChange(index) {\n      this.showList = false;\n      this.chosenCoupon = index;\n      \n      if(index === -1 ){\n        setLocalStorage({CouponId: -1, UserCouponId: -1});\n      }\n      else{\n        const couponId = this.coupons[index].cid;\n        const userCouponId = this.coupons[index].id;\n        setLocalStorage({CouponId: couponId, UserCouponId: userCouponId});\n      }\n\n      this.init()\n    },\n    onExchange() {\n      this.$toast(\"兑换暂不支持\");\n    }    \n  },\n\n  components: {\n    [Toast.name]: Toast ,\n    [SubmitBar.name]: SubmitBar,\n    [Card.name]: Card,\n    [Field.name]: Field,\n    [Tag.name]: Tag,\n    [CouponCell.name]: CouponCell,\n    [CouponList.name]: CouponList,\n    [Popup.name]: Popup\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.order-coupon {\n  margin-top: 10px;\n}\n</style>"
  },
  {
    "path": "litemall-vue/src/views/order/order-detail/index.vue",
    "content": "<template>\n  <div class=\"order_detail\">\n    <div class=\"order-goods\">\n      <van-card v-for=\"item in orderGoods\"\n                :key=\"item.id\"\n                :title=\"item.goodsName\"\n                desc=\"暂无描述\"\n                :num=\"item.number\"\n                :price=\"item.price +'.00'\"\n                :thumb=\"item.picUrl\"></van-card>\n\n      <van-cell-group>\n        <van-cell title=\"商品金额\">\n          <span class=\"red\">{{orderInfo.goodsPrice * 100 | yuan}}</span>\n        </van-cell>\n        <van-cell title=\"快递费用\">\n          <span class=\"red\">{{orderInfo.freightPrice * 100 | yuan}}</span>\n        </van-cell>\n      </van-cell-group>\n    </div>\n\n    <van-cell-group style=\"margin-top: 20px;\">\n      <van-cell icon=\"dingwei\"\n                :title=\"`${orderInfo.consignee}  ${orderInfo.mobile}`\"\n                :label=\"orderInfo.address\" />\n    </van-cell-group>\n\n    <van-cell-group style=\"margin-top: 20px;\">\n      <van-cell title=\"下单时间\">\n        <span>{{orderInfo.addTime }}</span>\n      </van-cell>\n      <van-cell title=\"订单编号\">\n        <span>{{orderInfo.orderSn }}</span>\n      </van-cell>\n      <van-cell title=\"订单备注\">\n        <span>{{orderInfo.remark }}</span>\n      </van-cell>\n\n      <van-cell title=\"实付款：\">\n        <span class=\"red\">{{orderInfo.actualPrice * 100 | yuan}}</span>\n      </van-cell>\n      <!-- 订单动作 -->\n      <van-cell>\n        <van-button size=\"small\"\n                    v-if=\"handleOption.cancel\"\n                    @click=\"cancelOrder(orderInfo.id)\"\n                    style=\" float:right\"\n                    round\n                    type=\"danger\">取消订单</van-button>\n        <van-button size=\"small\"\n                    v-if=\"handleOption.pay\"\n                    @click=\"payOrder(orderInfo.id)\"\n                    style=\" float:right\"\n                    round\n                    type=\"danger\">去支付</van-button>\n        <van-button size=\"small\"\n                    v-if=\"handleOption.delete\"\n                    @click=\"deleteOrder(orderInfo.id)\"\n                    style=\" float:right\"\n                    type=\"danger\">删除订单</van-button>\n        <van-button size=\"small\"\n                    v-if=\"handleOption.confirm\"\n                    @click=\"confirmOrder(orderInfo.id)\"\n                    style=\" float:right\"\n                    type=\"danger\">确认收货</van-button>\n        <van-button size=\"small\"\n                    v-if=\"handleOption.refund\"\n                    @click=\"refundOrder(orderInfo.id)\"\n                    style=\" float:right\"\n                    type=\"danger\">退款</van-button>\n      </van-cell>\n    </van-cell-group>\n\n    <van-cell-group v-if=\"showExp()\"\n                    style=\"margin-top: 20px;\">\n      <van-cell title=\"快递公司\">\n        <span>{{orderInfo.expCode }}</span>\n      </van-cell>\n      <van-cell title=\"快递编号\">\n        <span>{{orderInfo.expNo }}</span>\n      </van-cell>\n    </van-cell-group>\n  </div>\n</template>\n\n<script>\nimport { Card, Field, SubmitBar, Button, Cell, CellGroup, Dialog } from 'vant';\nimport _ from 'lodash';\nimport {\n  orderDetail,\n  orderDelete,\n  orderConfirm,\n  orderCancel,\n  orderRefund\n} from '@/api/api';\n\nexport default {\n  data() {\n    return {\n      isSubmit: false,\n      isDisabled: false,\n      orderInfo: {},\n      orderGoods: [],\n      handleOption: {},\n      expressInfo: {}\n    };\n  },\n  created() {\n    this.init();\n  },\n\n  methods: {\n    showExp() {\n      return _.has(this.orderInfo, 'expNo');\n    },\n    deleteOrder(id) {\n      let that = this;\n      this.$dialog\n        .confirm({ message: '确定要删除该订单吗?' })\n        .then(() => {\n          orderDelete({ orderId: id }).then(() => {\n            this.$toast('已删除订单');\n            this.$router.go(-1);\n          });\n        })\n        .catch(() => {});\n    },\n    cancelOrder(id) {\n      this.$dialog\n        .confirm({ message: '确定要取消该订单吗?' })\n        .then(() => {\n          orderDelete({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已取消该订单');\n          });\n        })\n        .catch(() => {});\n    },\n    confirmOrder(id) {\n      this.$dialog\n        .confirm({\n          message: '请确认收到货物, 确认收货后无法撤销!'\n        })\n        .then(() => {\n          orderConfirm({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已确认收货');\n          });\n        })\n        .catch(() => {});\n    },\n    refundOrder(id) {\n      this.$dialog\n        .confirm({ message: '确定要申请退款吗?' })\n        .then(() => {\n          orderRefund({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已申请订单退款');\n          });\n        })\n        .catch(() => {});\n    },\n    commentOrder(id) {},\n    toPay(id) {\n      this.$router.push({ name: 'payment', params: { orderId: id } });\n    },\n    init() {\n      let orderId = this.$route.query.orderId;\n      orderDetail({ orderId: orderId }).then(res => {\n        var data = res.data.data;\n        this.orderInfo = data.orderInfo;\n        this.orderGoods = data.orderGoods;\n        this.handleOption = data.orderInfo.handleOption;\n        this.expressInfo = data.expressInfo;\n      });\n    }\n  },\n\n  components: {\n    [Dialog.name]: Dialog,\n    [CellGroup.name]: CellGroup,\n    [Cell.name]: Cell,\n    [Button.name]: Button,\n    [SubmitBar.name]: SubmitBar,\n    [Card.name]: Card,\n    [Field.name]: Field\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.order_detail {\n  padding-bottom: 70px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/order/payment/index.vue",
    "content": "<template>\n  <div class=\"payment\">\n    <div class=\"time_down payment_group\">\n      请在\n      <span class=\"red\">半小时内</span>\n      完成付款，否则系统自动取消订单\n    </div>\n\n    <van-cell-group class=\"payment_group\">\n      <van-cell title=\"订单编号\" :value=\"order.orderInfo.orderSn\"/>\n      <van-cell title=\"实付金额\">\n        <span class=\"red\">{{order.orderInfo.actualPrice *100 | yuan}}</span>\n      </van-cell>\n    </van-cell-group>\n\n    <div class=\"pay_way_group\">\n      <div class=\"pay_way_title\">选择支付方式</div>\n      <van-radio-group v-model=\"payWay\">\n        <van-cell-group>\n          <van-cell>\n            <template slot=\"title\">\n              <img src=\"../../../assets/images/ali_pay.png\" alt=\"支付宝\" width=\"82\" height=\"29\">\n            </template>\n            <van-radio name=\"ali\"/>\n          </van-cell>\n          <van-cell>\n            <template slot=\"title\">\n              <img src=\"../../../assets/images/wx_pay.png\" alt=\"微信支付\" width=\"113\" height=\"23\">\n            </template>            \n            <van-radio name=\"wx\"/>\n          </van-cell>\n        </van-cell-group>\n      </van-radio-group>\n    </div>\n\n    <van-button class=\"pay_submit\" @click=\"pay\" type=\"primary\" bottomAction>去支付</van-button>\n  </div>\n</template>\n\n<script>\nimport { Radio, RadioGroup, Dialog } from 'vant';\nimport { orderDetail, orderPrepay, orderH5pay } from '@/api/api';\nimport _ from 'lodash';\nimport { getLocalStorage, setLocalStorage } from '@/utils/local-storage';\n\nexport default {\n  name: 'payment',\n\n  data() {\n    return {\n      payWay: 'wx',\n      order: {\n        orderInfo: {},\n        orderGoods: []\n      },\n      orderId: 0\n    };\n  },\n  created() {\n    if (_.has(this.$route.params, 'orderId')) {\n      this.orderId = this.$route.params.orderId;\n      this.getOrder(this.orderId);\n    }\n  },\n  methods: {\n    getOrder(orderId) {\n      orderDetail({orderId: orderId}).then(res => {\n        this.order = res.data.data;\n      });\n    },\n    pay() {\n      \n      Dialog.alert({\n        message: '你选择了' + (this.payWay === 'wx' ? '微信支付' : '支付宝支付')\n      }).then(() => {\n        if (this.payWay === 'wx') {\n          let ua = navigator.userAgent.toLowerCase();\n          let isWeixin = ua.indexOf('micromessenger') != -1;\n          if (isWeixin) {\n            orderPrepay({ orderId: this.orderId })\n              .then(res => {\n                let data = res.data.data;\n                let prepay_data = JSON.stringify({\n                  appId: data.appId,\n                  timeStamp: data.timeStamp,\n                  nonceStr: data.nonceStr,\n                  package: data.packageValue,\n                  signType: 'MD5',\n                  paySign: data.paySign\n                });\n                setLocalStorage({ prepay_data: prepay_data });\n\n                if (typeof WeixinJSBridge == 'undefined') {\n                  if (document.addEventListener) {\n                    document.addEventListener(\n                      'WeixinJSBridgeReady',\n                      this.onBridgeReady,\n                      false\n                    );\n                  } else if (document.attachEvent) {\n                    document.attachEvent(\n                      'WeixinJSBridgeReady',\n                      this.onBridgeReady\n                    );\n                    document.attachEvent(\n                      'onWeixinJSBridgeReady',\n                      this.onBridgeReady\n                    );\n                  }\n                } else {\n                  this.onBridgeReady();\n                }\n              })\n              .catch(err => {\n                Dialog.alert({ message: err.data.errmsg });\n                that.$router.replace({\n                  name: 'paymentStatus',\n                  params: {\n                    status: 'failed'\n                  }\n                });\n              });\n          } else {\n            orderH5pay({ orderId: this.orderId })\n              .then(res => {\n                let data = res.data.data;\n                window.location.replace(\n                  data.mwebUrl +\n                  '&redirect_url=' +\n                  encodeURIComponent(\n                    window.location.origin +\n                    '/#/?orderId=' +\n                    this.orderId +\n                    '&tip=yes'\n                  )\n                );\n              })\n              .catch(err => {\n                Dialog.alert({ message: err.data.errmsg });\n              });\n          }\n        } else {\n          //todo : alipay\n        }\n      });\n    },\n    onBridgeReady() {\n      let that = this;\n      let data = getLocalStorage('prepay_data');\n      // eslint-disable-next-line no-undef\n      WeixinJSBridge.invoke(\n        'getBrandWCPayRequest',\n        JSON.parse(data.prepay_data),\n        function(res) {\n          if (res.err_msg == 'get_brand_wcpay_request:ok') {\n            that.$router.replace({\n              name: 'paymentStatus',\n              params: {\n                status: 'success'\n              }\n            });\n          } else if (res.err_msg == 'get_brand_wcpay_request:cancel') {\n            that.$router.replace({\n              name: 'paymentStatus',\n              params: {\n                status: 'cancel'\n              }\n            });\n          } else {\n            that.$router.replace({\n              name: 'paymentStatus',\n              params: {\n                status: 'failed'\n              }\n            });\n          }\n        }\n      );\n    }\n  },\n\n  components: {\n    [Radio.name]: Radio,\n    [RadioGroup.name]: RadioGroup,\n    [Dialog.name]: Dialog\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.payment_group {\n  margin-bottom: 10px;\n}\n\n.time_down {\n  background-color: #fffeec;\n  padding: 10px 15px;\n}\n\n.pay_submit {\n  position: fixed;\n  bottom: 0;\n  width: 100%;\n}\n\n.pay_way_group img {\n  vertical-align: middle;\n}\n\n.pay_way_title {\n  padding: 15px;\n  background-color: #fff;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/order/payment-status/index.vue",
    "content": "<template>\n  <div class=\"payment_status\">\n    <div class=\"status_top\">\n      <van-icon :name=\"statusIcon\" :class=\"statusClass\"/>\n      <div>{{statusText}}</div>\n    </div>\n\n    <div class=\"status_text\" v-if=\"isSuccess\">\n      <span class=\"red\">3秒</span>跳转订单\n    </div>\n    <div class=\"status_text\" v-else>系统繁忙, 支付遇到问题, 请您稍后再试!</div>\n\n    <div class=\"status_goLink\">\n      <router-link class=\"red\" :to=\"{name: 'user'}\">查看订单\n        <van-icon name=\"arrow\"/>\n      </router-link>\n    </div>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'payment-status',\n\n  props: {\n    status: String\n  },\n  created() {\n    setTimeout(() => {\n      this.$router.push({ path: '/user/order/list/0' });\n    }, 3000);\n  },\n  data() {\n    return {\n      isSuccess: true\n    };\n  },\n\n  computed: {\n    statusText() {\n      return this.isSuccess ? '支付成功' : '支付失败';\n    },\n    statusIcon() {\n      return this.isSuccess ? 'checked' : 'fail';\n    },\n    statusClass() {\n      return this.isSuccess ? 'success_icon' : 'fail_icon';\n    }\n  },\n\n  activated() {\n    this.isSuccess = this.status === 'success';\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scopd>\n.payment_status {\n  padding-top: 30px;\n  box-sizing: border-box;\n  background-color: #fff;\n  text-align: center;\n}\n\n.status_top {\n  margin-bottom: 15px;\n  i {\n    margin-bottom: 5px;\n  }\n  > div {\n    font-size: 18px;\n  }\n}\n\n.status_text {\n  color: $font-color-gray;\n  margin-bottom: 50px;\n}\n\n.status_icon {\n  font-size: 80px;\n}\n\ni.success_icon {\n  @extend .status_icon;\n  color: #06bf04;\n}\n\ni.fail_icon {\n  @extend .status_icon;\n  color: #f44;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/order/tabbar-cart.vue",
    "content": "<template>\n  <div class=\"tab-cart\">\n    <div class=\"editor_head\" v-show=\"goods.length\">\n      <van-icon :name=\"isEditor ? 'success' : 'editor'\"/>\n      <span @click=\"isEditor = !isEditor\">{{isEditor ? '完成' : '编辑'}}</span>\n    </div>\n    <van-checkbox-group @change=\"toggle\" class=\"card-goods\" v-model=\"checkedGoods\">\n      <div v-for=\"(item, i) in goods\" :key=\"i\" class=\"card-goods__item\">\n        <van-checkbox :key=\"item.id\" :name=\"item.id\" v-model=\"item.checked\"></van-checkbox>\n\n        <van-card :title=\"item.goodsName\" :price=\"item.price\" :num=\"item.number\" :thumb=\"item.picUrl\">\n          <div slot=\"desc\">\n            <div class=\"van-card__desc\">\n              <van-tag plain style=\"margin-right:6px;\" v-for=\"(spec, index) in item.specifications\" :key=\"index\">\n                {{spec}}\n              </van-tag>\n            </div>\n          </div>\n          <div slot=\"footer\" v-if=\"isEditor\">\n            <van-stepper v-model=\"item.number\" @change=\"stepperEvent(item,arguments)\" disableInput/>\n          </div>\n          <div slot=\"footer\" v-else>添加日期 {{item.addTime}}</div>\n        </van-card>\n\n        <div class=\"cart_delete\" v-if=\"isEditor\" @click=\"deleteCart(i)\">删除</div>\n      </div>\n    </van-checkbox-group>\n\n    <is-empty v-if=\"!goods.length\">您的购物车空空如也~</is-empty>\n\n    <van-submit-bar\n      style=\"bottom: 50px\"\n      :price=\"totalPrice\"\n      :disabled=\"!checkedGoods.length\"\n      :buttonText=\"submitBarText\"\n      :loading=\"isSubmit\"\n      label=\"总计\"\n      @submit=\"cartSubmit\"\n    >\n      <van-checkbox v-model=\"checkedAll\" @click=\"setCheckAll\" style=\"padding: 0 10px;\">全选</van-checkbox>\n    </van-submit-bar>\n  </div>\n</template>\n\n<script>\nimport { Checkbox, CheckboxGroup, Card, SubmitBar, Stepper, Tag } from 'vant';\nimport { cartList, cartUpdate, cartChecked, cartDelete} from '@/api/api';\nimport { setLocalStorage } from '@/utils/local-storage';\n\nimport isEmpty from '@/components/is-empty/';\nimport _ from 'lodash';\n\nexport default {\n  data() {\n    return {\n      isEditor: false,\n      checkedAll: false,\n      isSubmit: false,\n      checkedGoods: [],\n      allGoods: [],\n      goods: []\n    };\n  },\n  created() {\n    this.init();\n  },\n  computed: {\n    submitBarText() {\n      return this.isEditor ? '删除' : '结算';\n    },\n    totalPrice() {\n      return this.goods.reduce(\n        (total, item) =>\n          total +\n          (this.checkedGoods.indexOf(item.id) !== -1\n            ? item.price * item.number * 100\n            : 0),\n        0\n      );\n    }\n  },\n\n  methods: {\n    stepperEvent(item, arg) {\n      let number = arg[0];\n      cartUpdate({\n        number: number,\n        goodsId: item.goodsId,\n        id: item.id,\n        productId: item.productId\n      });\n    },\n    init() {\n      cartList().then(res => {\n        this.goods = res.data.data.cartList;\n        this.allGoods = this.getAllList();\n        this.checkedGoods = this.getCheckedList(this.goods);\n      });\n    },\n    getAllList() {\n      let result = [];\n      _.each(this.goods, v => {\n        result.push(v.id);\n      });\n      return result;\n    },\n    getCheckedList(goods) {\n      let result = [];\n      _.each(goods, v => {\n        if (v.checked) {\n          result.push(v.id);\n        }\n      });\n      return result;\n    },\n    cartSubmit(data) {\n      let productIds = [];\n      let checkedGoods = this.checkedGoods;\n      _.each(checkedGoods, id => {\n        productIds.push(\n          _.find(this.goods, vv => {\n            return id === vv.id;\n          }).productId\n        );\n      });\n      if (this.isEditor) {\n        this.$dialog\n          .confirm({\n            message: '确定删除所选商品吗?',\n            cancelButtonText: '再想想'\n          })\n          .then(() => {\n            this.deleteNext(productIds);\n          });\n      } else {\n        this.isSubmit = true;\n        setLocalStorage({AddressId: 0, CartId: 0, CouponId: 0});\n        this.$router.push('/order/checkout');\n      }\n    },\n    setCheckAll(val) {\n      if (this.checkedGoods.length === this.allGoods.length) {\n        this.checkedGoods = [];\n      } else {\n        this.checkedGoods = this.allGoods;\n      }\n    },\n    deleteCart(o) {\n      let productId = this.goods[o].productId;\n      this.$dialog\n        .confirm({ message: '确定删除所选商品吗', cancelButtonText: '再想想' })\n        .then(() => {\n          this.$nextTick(() => {\n            this.deleteNext(productId);\n          });\n        });\n    },\n    toggle(index) {\n      let addProductIds = [];\n      _.each(index, v => {\n        let productId = _.find(this.goods, result => {\n          return result.id === v;\n        }).productId;\n        addProductIds.push(productId);\n      });\n\n      let delProductIds = [];\n      _.each(_.difference(this.allGoods, index), v => {\n        let productId = _.find(this.goods, result => {\n          return result.id === v;\n        }).productId;\n        delProductIds.push(productId);\n      });\n      if (delProductIds.length > 0) {\n        cartChecked({productIds: delProductIds, isChecked: 0});\n      }\n      if (addProductIds.length > 0) {\n        cartChecked({productIds: addProductIds, isChecked: 1});\n      }\n\n      if(index.length === this.allGoods.length){\n        this.checkedAll = true\n      }\n      else{\n        this.checkedAll = false\n      }\n    },\n    deleteNext(o) {\n      let productIds = [];\n      if (o instanceof Array) {\n        productIds = o;\n      } else {\n        productIds.push(o);\n      }\n\n      cartDelete({productIds: productIds}).then(res => {\n        this.goods = res.data.data.cartList;\n        this.allGoods = this.getAllList();\n        this.checkedGoods = this.getCheckedList(this.goods);\n      });\n    }\n  },\n\n  components: {\n    [Card.name]: Card,\n    [Tag.name]: Tag,\n    [Stepper.name]: Stepper,\n    [isEmpty.name]: isEmpty,\n    [Checkbox.name]: Checkbox,\n    [SubmitBar.name]: SubmitBar,\n    [CheckboxGroup.name]: CheckboxGroup\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n@import '../../assets/scss/mixin';\n\n.tab-cart {\n  padding-bottom: 50px;\n  box-sizing: border-box;\n}\n\n.editor_head {\n  @include one-border;\n  text-align: right;\n  padding: 10px;\n  font-size: $font-size-normal;\n  background-color: #fff;\n}\n\n.card-goods {\n  background-color: $bg-color;\n  .card-goods__item {\n    display: flex;\n    align-items: center;\n    margin-bottom: 10px;\n    background-color: #fff;\n  }\n  .cart_delete {\n    line-height: 100px;\n    padding: 0 10px;\n    color: #fff;\n    background-color: $red;\n  }\n  .card-goods__footer {\n    font-size: $font-size-normal;\n    color: $font-color-gray;\n  }\n}\n\n.clear_invalid {\n  width: 120px;\n  color: $font-color-gray;\n  border: 1px solid $font-color-gray;\n  margin: 0 auto;\n  text-align: center;\n  padding: 5px 3px;\n  margin-top: 20px;\n  border-radius: 3px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/coupon-list/index.vue",
    "content": "<template>\n  <div class=\"coupon_list\">\n    <van-tabs v-model=\"activeIndex\"\n              type=\"card\"\n              sticky\n              @click=\"handleTabClick\">\n      <van-tab v-for=\"(tabTitle, tabIndex) in tabTitles\"\n               :title=\"tabTitle\"\n               :key=\"tabIndex\">\n        <van-list v-model=\"loading\"\n                  :finished=\"finished\"\n                  :immediate-check=\"false\"\n                  finished-text=\"没有更多了\"\n                  @load=\"getCouponList\">\n          <van-panel style=\" padding-bottom: 10px;\">\n            <div class=\"van-coupon-item\"\n                 v-for=\"(coupon,index) in couponList\"\n                 :key=\"index\">\n              <div class=\"van-coupon-item__content\">\n                <div class=\"van-coupon-item__head\">\n                  <h2>\n                    <span>¥</span>\n                    {{coupon.discount}} 元\n                  </h2>\n                  <p>{{coupon.desc }} - {{coupon.tag}}</p>\n                </div>\n                <div class=\"van-coupon-item__body\">\n                  <h2>{{coupon.name}}</h2>\n                  <p>有效期: 至 {{coupon.endTime}}</p>\n\n                </div>\n              </div>\n\n            </div>\n          </van-panel>\n        </van-list>\n      </van-tab>\n    </van-tabs>\n  </div>\n</template>\n\n<script>\nimport { couponMyList } from '@/api/api';\n\nimport { Tab, Tabs, Panel, Card, List, CouponCell, CouponList } from 'vant';\nimport _ from 'lodash';\n\nexport default {\n  name: 'coupon-list',\n\n  props: {\n    active: {\n      type: [String, Number],\n      default: 0\n    }\n  },\n  created() {\n    this.init();\n  },\n  data() {\n    return {\n      activeIndex: Number(this.active),\n      tabTitles: ['未使用', '已使用', '已过期'],\n      couponList: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.couponList = [];\n      this.getCouponList();\n    },\n    getCouponList() {\n      this.page++;\n\n      couponMyList({\n        status: this.activeIndex,\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.couponList.push(...res.data.data.list);\n\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    handleTabClick() {\n      this.page = 0;\n      this.couponList = [];\n      this.getCouponList();\n    }\n  },\n  components: {\n    [Tab.name]: Tab,\n    [Tabs.name]: Tabs,\n    [Panel.name]: Panel,\n    [Card.name]: Card,\n    [List.name]: List,\n    CouponCell,\n    CouponList\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n\n.van-coupon-item {\n  overflow: hidden;\n  border-radius: 4px;\n  margin: 0 15px 15px;\n  background-color: #fff;\n  -webkit-box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n  box-shadow: 0 0 4px rgba(0, 0, 0, 0.1);\n}\n.van-coupon-item:active {\n  background-color: #e8e8e8;\n}\n.van-coupon-item__content {\n  display: -webkit-box;\n  display: -ms-flexbox;\n  display: flex;\n  height: 100px;\n  padding: 24px 0 0 15px;\n  -webkit-box-sizing: border-box;\n  box-sizing: border-box;\n  border: 1px solid red;\n}\n.van-coupon-item h2,\n.van-coupon-item p {\n  margin: 0;\n  overflow: hidden;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n}\n.van-coupon-item h2 {\n  height: 34px;\n  font-weight: 500;\n  line-height: 34px;\n}\n.van-coupon-item p {\n  font-size: 12px;\n  line-height: 16px;\n  color: #969799;\n}\n.van-coupon-item__head {\n  min-width: 90px;\n}\n.van-coupon-item__head h2 {\n  color: #f44;\n  font-size: 24px;\n}\n.van-coupon-item__head h2 span {\n  font-size: 50%;\n}\n.van-coupon-item__body {\n  -webkit-box-flex: 1;\n  -ms-flex: 1;\n  flex: 1;\n  position: relative;\n  border-radius: 0 4px 4px 0;\n  margin-left: 20px;\n}\n.van-coupon-item__body h2 {\n  font-size: 16px;\n}\n.van-coupon-item__corner {\n  top: 16px;\n  right: 15px;\n  position: absolute;\n}\n.van-coupon-item__corner .van-icon {\n  border-color: #f44;\n  background-color: #f44;\n}\n.van-coupon-item__reason {\n  padding: 7px 15px;\n  border-top: 1px dashed #ebedf0;\n  background-color: #fafafa;\n}\n.van-coupon-item--disabled:active {\n  background-color: #fff;\n}\n.van-coupon-item--disabled .van-coupon-item__content {\n  height: 90px;\n}\n.van-coupon-item--disabled h2,\n.van-coupon-item--disabled p,\n.van-coupon-item--disabled span {\n  color: #969799;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-address/index.vue",
    "content": "<template>\n  <div>\n    <van-address-list v-model=\"chosenAddressId\" :list=\"addressList\" @add=\"onAdd\" @edit=\"onEdit\" @select=\"onSelect\"/>\n  </div>\n</template>\n\n<script>\nimport { addressList, addressDetail, addressSave, addressDelete } from '@/api/api';\nimport { AddressList, NavBar } from 'vant';\nimport { setLocalStorage } from '@/utils/local-storage';\n\nexport default {\n  data() {\n    return {\n      chosenAddressId: -1,\n      addressList: []\n    };\n  },\n\n  created() {\n    this.loadAddress();\n  },\n  methods: {\n    onAdd() {\n      this.$router.push({ name: 'address-edit', query: { addressId: -1 } });\n    },\n    onEdit(item, index) {\n      this.$router.push({ name: 'address-edit', query: { addressId: item.id } });\n    },\n    onSelect(item, index) {\n      setLocalStorage({ AddressId: item.id });\n      this.$router.go(-1);\n    },         \n    goback() {\n      this.$router.go(-1);\n    },\n    loadAddress() {\n      addressList().then(res => {\n        var list = res.data.data.list;\n        for(var i = 0; i < list.length; i++ ){\n          var item = list[i]\n          this.addressList.push({\n            id: item.id,\n            name: item.name,\n            tel: item.tel,\n            address: item.province + item.city + item.county + \" \" + item.addressDetail\n          })\n        }\n      })\n    }\n  },\n\n  components: {\n    [NavBar.name]: NavBar,\n    [AddressList.name]: AddressList \n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.addressGroup {\n  margin-bottom: 10px;\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n\n.bottom_btn {\n  position: fixed;\n  bottom: 0;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-address-edit/area.json",
    "content": "{\n  \"province_list\": {\n    \"110000\": \"北京市\",\n    \"120000\": \"天津市\",\n    \"130000\": \"河北省\",\n    \"140000\": \"山西省\",\n    \"150000\": \"内蒙古自治区\",\n    \"210000\": \"辽宁省\",\n    \"220000\": \"吉林省\",\n    \"230000\": \"黑龙江省\",\n    \"310000\": \"上海市\",\n    \"320000\": \"江苏省\",\n    \"330000\": \"浙江省\",\n    \"340000\": \"安徽省\",\n    \"350000\": \"福建省\",\n    \"360000\": \"江西省\",\n    \"370000\": \"山东省\",\n    \"410000\": \"河南省\",\n    \"420000\": \"湖北省\",\n    \"430000\": \"湖南省\",\n    \"440000\": \"广东省\",\n    \"450000\": \"广西壮族自治区\",\n    \"460000\": \"海南省\",\n    \"500000\": \"重庆市\",\n    \"510000\": \"四川省\",\n    \"520000\": \"贵州省\",\n    \"530000\": \"云南省\",\n    \"540000\": \"西藏自治区\",\n    \"610000\": \"陕西省\",\n    \"620000\": \"甘肃省\",\n    \"630000\": \"青海省\",\n    \"640000\": \"宁夏回族自治区\",\n    \"650000\": \"新疆维吾尔自治区\"\n  },\n  \"city_list\": {\n    \"110100\": \"市辖区\",\n    \"120100\": \"市辖区\",\n    \"130100\": \"石家庄市\",\n    \"130200\": \"唐山市\",\n    \"130300\": \"秦皇岛市\",\n    \"130400\": \"邯郸市\",\n    \"130500\": \"邢台市\",\n    \"130600\": \"保定市\",\n    \"130700\": \"张家口市\",\n    \"130800\": \"承德市\",\n    \"130900\": \"沧州市\",\n    \"131000\": \"廊坊市\",\n    \"131100\": \"衡水市\",\n    \"139000\": \"省直辖县级行政区划\",\n    \"140100\": \"太原市\",\n    \"140200\": \"大同市\",\n    \"140300\": \"阳泉市\",\n    \"140400\": \"长治市\",\n    \"140500\": \"晋城市\",\n    \"140600\": \"朔州市\",\n    \"140700\": \"晋中市\",\n    \"140800\": \"运城市\",\n    \"140900\": \"忻州市\",\n    \"141000\": \"临汾市\",\n    \"141100\": \"吕梁市\",\n    \"150100\": \"呼和浩特市\",\n    \"150200\": \"包头市\",\n    \"150300\": \"乌海市\",\n    \"150400\": \"赤峰市\",\n    \"150500\": \"通辽市\",\n    \"150600\": \"鄂尔多斯市\",\n    \"150700\": \"呼伦贝尔市\",\n    \"150800\": \"巴彦淖尔市\",\n    \"150900\": \"乌兰察布市\",\n    \"152200\": \"兴安盟\",\n    \"152500\": \"锡林郭勒盟\",\n    \"152900\": \"阿拉善盟\",\n    \"210100\": \"沈阳市\",\n    \"210200\": \"大连市\",\n    \"210300\": \"鞍山市\",\n    \"210400\": \"抚顺市\",\n    \"210500\": \"本溪市\",\n    \"210600\": \"丹东市\",\n    \"210700\": \"锦州市\",\n    \"210800\": \"营口市\",\n    \"210900\": \"阜新市\",\n    \"211000\": \"辽阳市\",\n    \"211100\": \"盘锦市\",\n    \"211200\": \"铁岭市\",\n    \"211300\": \"朝阳市\",\n    \"211400\": \"葫芦岛市\",\n    \"220100\": \"长春市\",\n    \"220200\": \"吉林市\",\n    \"220300\": \"四平市\",\n    \"220400\": \"辽源市\",\n    \"220500\": \"通化市\",\n    \"220600\": \"白山市\",\n    \"220700\": \"松原市\",\n    \"220800\": \"白城市\",\n    \"222400\": \"延边朝鲜族自治州\",\n    \"230100\": \"哈尔滨市\",\n    \"230200\": \"齐齐哈尔市\",\n    \"230300\": \"鸡西市\",\n    \"230400\": \"鹤岗市\",\n    \"230500\": \"双鸭山市\",\n    \"230600\": \"大庆市\",\n    \"230700\": \"伊春市\",\n    \"230800\": \"佳木斯市\",\n    \"230900\": \"七台河市\",\n    \"231000\": \"牡丹江市\",\n    \"231100\": \"黑河市\",\n    \"231200\": \"绥化市\",\n    \"232700\": \"大兴安岭地区\",\n    \"310100\": \"市辖区\",\n    \"320100\": \"南京市\",\n    \"320200\": \"无锡市\",\n    \"320300\": \"徐州市\",\n    \"320400\": \"常州市\",\n    \"320500\": \"苏州市\",\n    \"320600\": \"南通市\",\n    \"320700\": \"连云港市\",\n    \"320800\": \"淮安市\",\n    \"320900\": \"盐城市\",\n    \"321000\": \"扬州市\",\n    \"321100\": \"镇江市\",\n    \"321200\": \"泰州市\",\n    \"321300\": \"宿迁市\",\n    \"330100\": \"杭州市\",\n    \"330200\": \"宁波市\",\n    \"330300\": \"温州市\",\n    \"330400\": \"嘉兴市\",\n    \"330500\": \"湖州市\",\n    \"330600\": \"绍兴市\",\n    \"330700\": \"金华市\",\n    \"330800\": \"衢州市\",\n    \"330900\": \"舟山市\",\n    \"331000\": \"台州市\",\n    \"331100\": \"丽水市\",\n    \"340100\": \"合肥市\",\n    \"340200\": \"芜湖市\",\n    \"340300\": \"蚌埠市\",\n    \"340400\": \"淮南市\",\n    \"340500\": \"马鞍山市\",\n    \"340600\": \"淮北市\",\n    \"340700\": \"铜陵市\",\n    \"340800\": \"安庆市\",\n    \"341000\": \"黄山市\",\n    \"341100\": \"滁州市\",\n    \"341200\": \"阜阳市\",\n    \"341300\": \"宿州市\",\n    \"341500\": \"六安市\",\n    \"341600\": \"亳州市\",\n    \"341700\": \"池州市\",\n    \"341800\": \"宣城市\",\n    \"350100\": \"福州市\",\n    \"350200\": \"厦门市\",\n    \"350300\": \"莆田市\",\n    \"350400\": \"三明市\",\n    \"350500\": \"泉州市\",\n    \"350600\": \"漳州市\",\n    \"350700\": \"南平市\",\n    \"350800\": \"龙岩市\",\n    \"350900\": \"宁德市\",\n    \"360100\": \"南昌市\",\n    \"360200\": \"景德镇市\",\n    \"360300\": \"萍乡市\",\n    \"360400\": \"九江市\",\n    \"360500\": \"新余市\",\n    \"360600\": \"鹰潭市\",\n    \"360700\": \"赣州市\",\n    \"360800\": \"吉安市\",\n    \"360900\": \"宜春市\",\n    \"361000\": \"抚州市\",\n    \"361100\": \"上饶市\",\n    \"370100\": \"济南市\",\n    \"370200\": \"青岛市\",\n    \"370300\": \"淄博市\",\n    \"370400\": \"枣庄市\",\n    \"370500\": \"东营市\",\n    \"370600\": \"烟台市\",\n    \"370700\": \"潍坊市\",\n    \"370800\": \"济宁市\",\n    \"370900\": \"泰安市\",\n    \"371000\": \"威海市\",\n    \"371100\": \"日照市\",\n    \"371200\": \"莱芜市\",\n    \"371300\": \"临沂市\",\n    \"371400\": \"德州市\",\n    \"371500\": \"聊城市\",\n    \"371600\": \"滨州市\",\n    \"371700\": \"菏泽市\",\n    \"410100\": \"郑州市\",\n    \"410200\": \"开封市\",\n    \"410300\": \"洛阳市\",\n    \"410400\": \"平顶山市\",\n    \"410500\": \"安阳市\",\n    \"410600\": \"鹤壁市\",\n    \"410700\": \"新乡市\",\n    \"410800\": \"焦作市\",\n    \"410900\": \"濮阳市\",\n    \"411000\": \"许昌市\",\n    \"411100\": \"漯河市\",\n    \"411200\": \"三门峡市\",\n    \"411300\": \"南阳市\",\n    \"411400\": \"商丘市\",\n    \"411500\": \"信阳市\",\n    \"411600\": \"周口市\",\n    \"411700\": \"驻马店市\",\n    \"419000\": \"省直辖县级行政区划\",\n    \"420100\": \"武汉市\",\n    \"420200\": \"黄石市\",\n    \"420300\": \"十堰市\",\n    \"420500\": \"宜昌市\",\n    \"420600\": \"襄阳市\",\n    \"420700\": \"鄂州市\",\n    \"420800\": \"荆门市\",\n    \"420900\": \"孝感市\",\n    \"421000\": \"荆州市\",\n    \"421100\": \"黄冈市\",\n    \"421200\": \"咸宁市\",\n    \"421300\": \"随州市\",\n    \"422800\": \"恩施土家族苗族自治州\",\n    \"429000\": \"省直辖县级行政区划\",\n    \"430100\": \"长沙市\",\n    \"430200\": \"株洲市\",\n    \"430300\": \"湘潭市\",\n    \"430400\": \"衡阳市\",\n    \"430500\": \"邵阳市\",\n    \"430600\": \"岳阳市\",\n    \"430700\": \"常德市\",\n    \"430800\": \"张家界市\",\n    \"430900\": \"益阳市\",\n    \"431000\": \"郴州市\",\n    \"431100\": \"永州市\",\n    \"431200\": \"怀化市\",\n    \"431300\": \"娄底市\",\n    \"433100\": \"湘西土家族苗族自治州\",\n    \"440100\": \"广州市\",\n    \"440200\": \"韶关市\",\n    \"440300\": \"深圳市\",\n    \"440400\": \"珠海市\",\n    \"440500\": \"汕头市\",\n    \"440600\": \"佛山市\",\n    \"440700\": \"江门市\",\n    \"440800\": \"湛江市\",\n    \"440900\": \"茂名市\",\n    \"441200\": \"肇庆市\",\n    \"441300\": \"惠州市\",\n    \"441400\": \"梅州市\",\n    \"441500\": \"汕尾市\",\n    \"441600\": \"河源市\",\n    \"441700\": \"阳江市\",\n    \"441800\": \"清远市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445100\": \"潮州市\",\n    \"445200\": \"揭阳市\",\n    \"445300\": \"云浮市\",\n    \"450100\": \"南宁市\",\n    \"450200\": \"柳州市\",\n    \"450300\": \"桂林市\",\n    \"450400\": \"梧州市\",\n    \"450500\": \"北海市\",\n    \"450600\": \"防城港市\",\n    \"450700\": \"钦州市\",\n    \"450800\": \"贵港市\",\n    \"450900\": \"玉林市\",\n    \"451000\": \"百色市\",\n    \"451100\": \"贺州市\",\n    \"451200\": \"河池市\",\n    \"451300\": \"来宾市\",\n    \"451400\": \"崇左市\",\n    \"460100\": \"海口市\",\n    \"460200\": \"三亚市\",\n    \"460300\": \"三沙市\",\n    \"460400\": \"儋州市\",\n    \"469000\": \"省直辖县级行政区划\",\n    \"500100\": \"市辖区\",\n    \"500200\": \"县\",\n    \"510100\": \"成都市\",\n    \"510300\": \"自贡市\",\n    \"510400\": \"攀枝花市\",\n    \"510500\": \"泸州市\",\n    \"510600\": \"德阳市\",\n    \"510700\": \"绵阳市\",\n    \"510800\": \"广元市\",\n    \"510900\": \"遂宁市\",\n    \"511000\": \"内江市\",\n    \"511100\": \"乐山市\",\n    \"511300\": \"南充市\",\n    \"511400\": \"眉山市\",\n    \"511500\": \"宜宾市\",\n    \"511600\": \"广安市\",\n    \"511700\": \"达州市\",\n    \"511800\": \"雅安市\",\n    \"511900\": \"巴中市\",\n    \"512000\": \"资阳市\",\n    \"513200\": \"阿坝藏族羌族自治州\",\n    \"513300\": \"甘孜藏族自治州\",\n    \"513400\": \"凉山彝族自治州\",\n    \"520100\": \"贵阳市\",\n    \"520200\": \"六盘水市\",\n    \"520300\": \"遵义市\",\n    \"520400\": \"安顺市\",\n    \"520500\": \"毕节市\",\n    \"520600\": \"铜仁市\",\n    \"522300\": \"黔西南布依族苗族自治州\",\n    \"522600\": \"黔东南苗族侗族自治州\",\n    \"522700\": \"黔南布依族苗族自治州\",\n    \"530100\": \"昆明市\",\n    \"530300\": \"曲靖市\",\n    \"530400\": \"玉溪市\",\n    \"530500\": \"保山市\",\n    \"530600\": \"昭通市\",\n    \"530700\": \"丽江市\",\n    \"530800\": \"普洱市\",\n    \"530900\": \"临沧市\",\n    \"532300\": \"楚雄彝族自治州\",\n    \"532500\": \"红河哈尼族彝族自治州\",\n    \"532600\": \"文山壮族苗族自治州\",\n    \"532800\": \"西双版纳傣族自治州\",\n    \"532900\": \"大理白族自治州\",\n    \"533100\": \"德宏傣族景颇族自治州\",\n    \"533300\": \"怒江傈僳族自治州\",\n    \"533400\": \"迪庆藏族自治州\",\n    \"540100\": \"拉萨市\",\n    \"540200\": \"日喀则市\",\n    \"540300\": \"昌都市\",\n    \"540400\": \"林芝市\",\n    \"540500\": \"山南市\",\n    \"542400\": \"那曲地区\",\n    \"542500\": \"阿里地区\",\n    \"610100\": \"西安市\",\n    \"610200\": \"铜川市\",\n    \"610300\": \"宝鸡市\",\n    \"610400\": \"咸阳市\",\n    \"610500\": \"渭南市\",\n    \"610600\": \"延安市\",\n    \"610700\": \"汉中市\",\n    \"610800\": \"榆林市\",\n    \"610900\": \"安康市\",\n    \"611000\": \"商洛市\",\n    \"620100\": \"兰州市\",\n    \"620200\": \"嘉峪关市\",\n    \"620300\": \"金昌市\",\n    \"620400\": \"白银市\",\n    \"620500\": \"天水市\",\n    \"620600\": \"武威市\",\n    \"620700\": \"张掖市\",\n    \"620800\": \"平凉市\",\n    \"620900\": \"酒泉市\",\n    \"621000\": \"庆阳市\",\n    \"621100\": \"定西市\",\n    \"621200\": \"陇南市\",\n    \"622900\": \"临夏回族自治州\",\n    \"623000\": \"甘南藏族自治州\",\n    \"630100\": \"西宁市\",\n    \"630200\": \"海东市\",\n    \"632200\": \"海北藏族自治州\",\n    \"632300\": \"黄南藏族自治州\",\n    \"632500\": \"海南藏族自治州\",\n    \"632600\": \"果洛藏族自治州\",\n    \"632700\": \"玉树藏族自治州\",\n    \"632800\": \"海西蒙古族藏族自治州\",\n    \"640100\": \"银川市\",\n    \"640200\": \"石嘴山市\",\n    \"640300\": \"吴忠市\",\n    \"640400\": \"固原市\",\n    \"640500\": \"中卫市\",\n    \"650100\": \"乌鲁木齐市\",\n    \"650200\": \"克拉玛依市\",\n    \"650400\": \"吐鲁番市\",\n    \"650500\": \"哈密市\",\n    \"652300\": \"昌吉回族自治州\",\n    \"652700\": \"博尔塔拉蒙古自治州\",\n    \"652800\": \"巴音郭楞蒙古自治州\",\n    \"652900\": \"阿克苏地区\",\n    \"653000\": \"克孜勒苏柯尔克孜自治州\",\n    \"653100\": \"喀什地区\",\n    \"653200\": \"和田地区\",\n    \"654000\": \"伊犁哈萨克自治州\",\n    \"654200\": \"塔城地区\",\n    \"654300\": \"阿勒泰地区\",\n    \"659000\": \"自治区直辖县级行政区划\"\n  },\n  \"county_list\": {\n    \"110101\": \"东城区\",\n    \"110102\": \"西城区\",\n    \"110105\": \"朝阳区\",\n    \"110106\": \"丰台区\",\n    \"110107\": \"石景山区\",\n    \"110108\": \"海淀区\",\n    \"110109\": \"门头沟区\",\n    \"110111\": \"房山区\",\n    \"110112\": \"通州区\",\n    \"110113\": \"顺义区\",\n    \"110114\": \"昌平区\",\n    \"110115\": \"大兴区\",\n    \"110116\": \"怀柔区\",\n    \"110117\": \"平谷区\",\n    \"110118\": \"密云区\",\n    \"110119\": \"延庆区\",\n    \"120101\": \"和平区\",\n    \"120102\": \"河东区\",\n    \"120103\": \"河西区\",\n    \"120104\": \"南开区\",\n    \"120105\": \"河北区\",\n    \"120106\": \"红桥区\",\n    \"120110\": \"东丽区\",\n    \"120111\": \"西青区\",\n    \"120112\": \"津南区\",\n    \"120113\": \"北辰区\",\n    \"120114\": \"武清区\",\n    \"120115\": \"宝坻区\",\n    \"120116\": \"滨海新区\",\n    \"120117\": \"宁河区\",\n    \"120118\": \"静海区\",\n    \"120119\": \"蓟州区\",\n    \"130102\": \"长安区\",\n    \"130104\": \"桥西区\",\n    \"130105\": \"新华区\",\n    \"130107\": \"井陉矿区\",\n    \"130108\": \"裕华区\",\n    \"130109\": \"藁城区\",\n    \"130110\": \"鹿泉区\",\n    \"130111\": \"栾城区\",\n    \"130121\": \"井陉县\",\n    \"130123\": \"正定县\",\n    \"130125\": \"行唐县\",\n    \"130126\": \"灵寿县\",\n    \"130127\": \"高邑县\",\n    \"130128\": \"深泽县\",\n    \"130129\": \"赞皇县\",\n    \"130130\": \"无极县\",\n    \"130131\": \"平山县\",\n    \"130132\": \"元氏县\",\n    \"130133\": \"赵县\",\n    \"130183\": \"晋州市\",\n    \"130184\": \"新乐市\",\n    \"130202\": \"路南区\",\n    \"130203\": \"路北区\",\n    \"130204\": \"古冶区\",\n    \"130205\": \"开平区\",\n    \"130207\": \"丰南区\",\n    \"130208\": \"丰润区\",\n    \"130209\": \"曹妃甸区\",\n    \"130223\": \"滦县\",\n    \"130224\": \"滦南县\",\n    \"130225\": \"乐亭县\",\n    \"130227\": \"迁西县\",\n    \"130229\": \"玉田县\",\n    \"130281\": \"遵化市\",\n    \"130283\": \"迁安市\",\n    \"130302\": \"海港区\",\n    \"130303\": \"山海关区\",\n    \"130304\": \"北戴河区\",\n    \"130306\": \"抚宁区\",\n    \"130321\": \"青龙满族自治县\",\n    \"130322\": \"昌黎县\",\n    \"130324\": \"卢龙县\",\n    \"130402\": \"邯山区\",\n    \"130403\": \"丛台区\",\n    \"130404\": \"复兴区\",\n    \"130406\": \"峰峰矿区\",\n    \"130421\": \"邯郸县\",\n    \"130423\": \"临漳县\",\n    \"130424\": \"成安县\",\n    \"130425\": \"大名县\",\n    \"130426\": \"涉县\",\n    \"130427\": \"磁县\",\n    \"130428\": \"肥乡县\",\n    \"130429\": \"永年县\",\n    \"130430\": \"邱县\",\n    \"130431\": \"鸡泽县\",\n    \"130432\": \"广平县\",\n    \"130433\": \"馆陶县\",\n    \"130434\": \"魏县\",\n    \"130435\": \"曲周县\",\n    \"130481\": \"武安市\",\n    \"130502\": \"桥东区\",\n    \"130503\": \"桥西区\",\n    \"130521\": \"邢台县\",\n    \"130522\": \"临城县\",\n    \"130523\": \"内丘县\",\n    \"130524\": \"柏乡县\",\n    \"130525\": \"隆尧县\",\n    \"130526\": \"任县\",\n    \"130527\": \"南和县\",\n    \"130528\": \"宁晋县\",\n    \"130529\": \"巨鹿县\",\n    \"130530\": \"新河县\",\n    \"130531\": \"广宗县\",\n    \"130532\": \"平乡县\",\n    \"130533\": \"威县\",\n    \"130534\": \"清河县\",\n    \"130535\": \"临西县\",\n    \"130581\": \"南宫市\",\n    \"130582\": \"沙河市\",\n    \"130602\": \"竞秀区\",\n    \"130606\": \"莲池区\",\n    \"130607\": \"满城区\",\n    \"130608\": \"清苑区\",\n    \"130609\": \"徐水区\",\n    \"130623\": \"涞水县\",\n    \"130624\": \"阜平县\",\n    \"130626\": \"定兴县\",\n    \"130627\": \"唐县\",\n    \"130628\": \"高阳县\",\n    \"130629\": \"容城县\",\n    \"130630\": \"涞源县\",\n    \"130631\": \"望都县\",\n    \"130632\": \"安新县\",\n    \"130633\": \"易县\",\n    \"130634\": \"曲阳县\",\n    \"130635\": \"蠡县\",\n    \"130636\": \"顺平县\",\n    \"130637\": \"博野县\",\n    \"130638\": \"雄县\",\n    \"130681\": \"涿州市\",\n    \"130683\": \"安国市\",\n    \"130684\": \"高碑店市\",\n    \"130702\": \"桥东区\",\n    \"130703\": \"桥西区\",\n    \"130705\": \"宣化区\",\n    \"130706\": \"下花园区\",\n    \"130708\": \"万全区\",\n    \"130709\": \"崇礼区\",\n    \"130722\": \"张北县\",\n    \"130723\": \"康保县\",\n    \"130724\": \"沽源县\",\n    \"130725\": \"尚义县\",\n    \"130726\": \"蔚县\",\n    \"130727\": \"阳原县\",\n    \"130728\": \"怀安县\",\n    \"130730\": \"怀来县\",\n    \"130731\": \"涿鹿县\",\n    \"130732\": \"赤城县\",\n    \"130802\": \"双桥区\",\n    \"130803\": \"双滦区\",\n    \"130804\": \"鹰手营子矿区\",\n    \"130821\": \"承德县\",\n    \"130822\": \"兴隆县\",\n    \"130823\": \"平泉县\",\n    \"130824\": \"滦平县\",\n    \"130825\": \"隆化县\",\n    \"130826\": \"丰宁满族自治县\",\n    \"130827\": \"宽城满族自治县\",\n    \"130828\": \"围场满族蒙古族自治县\",\n    \"130902\": \"新华区\",\n    \"130903\": \"运河区\",\n    \"130921\": \"沧县\",\n    \"130922\": \"青县\",\n    \"130923\": \"东光县\",\n    \"130924\": \"海兴县\",\n    \"130925\": \"盐山县\",\n    \"130926\": \"肃宁县\",\n    \"130927\": \"南皮县\",\n    \"130928\": \"吴桥县\",\n    \"130929\": \"献县\",\n    \"130930\": \"孟村回族自治县\",\n    \"130981\": \"泊头市\",\n    \"130982\": \"任丘市\",\n    \"130983\": \"黄骅市\",\n    \"130984\": \"河间市\",\n    \"131002\": \"安次区\",\n    \"131003\": \"广阳区\",\n    \"131022\": \"固安县\",\n    \"131023\": \"永清县\",\n    \"131024\": \"香河县\",\n    \"131025\": \"大城县\",\n    \"131026\": \"文安县\",\n    \"131028\": \"大厂回族自治县\",\n    \"131081\": \"霸州市\",\n    \"131082\": \"三河市\",\n    \"131102\": \"桃城区\",\n    \"131103\": \"冀州区\",\n    \"131121\": \"枣强县\",\n    \"131122\": \"武邑县\",\n    \"131123\": \"武强县\",\n    \"131124\": \"饶阳县\",\n    \"131125\": \"安平县\",\n    \"131126\": \"故城县\",\n    \"131127\": \"景县\",\n    \"131128\": \"阜城县\",\n    \"131182\": \"深州市\",\n    \"139001\": \"定州市\",\n    \"139002\": \"辛集市\",\n    \"140105\": \"小店区\",\n    \"140106\": \"迎泽区\",\n    \"140107\": \"杏花岭区\",\n    \"140108\": \"尖草坪区\",\n    \"140109\": \"万柏林区\",\n    \"140110\": \"晋源区\",\n    \"140121\": \"清徐县\",\n    \"140122\": \"阳曲县\",\n    \"140123\": \"娄烦县\",\n    \"140181\": \"古交市\",\n    \"140202\": \"城区\",\n    \"140203\": \"矿区\",\n    \"140211\": \"南郊区\",\n    \"140212\": \"新荣区\",\n    \"140221\": \"阳高县\",\n    \"140222\": \"天镇县\",\n    \"140223\": \"广灵县\",\n    \"140224\": \"灵丘县\",\n    \"140225\": \"浑源县\",\n    \"140226\": \"左云县\",\n    \"140227\": \"大同县\",\n    \"140302\": \"城区\",\n    \"140303\": \"矿区\",\n    \"140311\": \"郊区\",\n    \"140321\": \"平定县\",\n    \"140322\": \"盂县\",\n    \"140402\": \"城区\",\n    \"140411\": \"郊区\",\n    \"140421\": \"长治县\",\n    \"140423\": \"襄垣县\",\n    \"140424\": \"屯留县\",\n    \"140425\": \"平顺县\",\n    \"140426\": \"黎城县\",\n    \"140427\": \"壶关县\",\n    \"140428\": \"长子县\",\n    \"140429\": \"武乡县\",\n    \"140430\": \"沁县\",\n    \"140431\": \"沁源县\",\n    \"140481\": \"潞城市\",\n    \"140502\": \"城区\",\n    \"140521\": \"沁水县\",\n    \"140522\": \"阳城县\",\n    \"140524\": \"陵川县\",\n    \"140525\": \"泽州县\",\n    \"140581\": \"高平市\",\n    \"140602\": \"朔城区\",\n    \"140603\": \"平鲁区\",\n    \"140621\": \"山阴县\",\n    \"140622\": \"应县\",\n    \"140623\": \"右玉县\",\n    \"140624\": \"怀仁县\",\n    \"140702\": \"榆次区\",\n    \"140721\": \"榆社县\",\n    \"140722\": \"左权县\",\n    \"140723\": \"和顺县\",\n    \"140724\": \"昔阳县\",\n    \"140725\": \"寿阳县\",\n    \"140726\": \"太谷县\",\n    \"140727\": \"祁县\",\n    \"140728\": \"平遥县\",\n    \"140729\": \"灵石县\",\n    \"140781\": \"介休市\",\n    \"140802\": \"盐湖区\",\n    \"140821\": \"临猗县\",\n    \"140822\": \"万荣县\",\n    \"140823\": \"闻喜县\",\n    \"140824\": \"稷山县\",\n    \"140825\": \"新绛县\",\n    \"140826\": \"绛县\",\n    \"140827\": \"垣曲县\",\n    \"140828\": \"夏县\",\n    \"140829\": \"平陆县\",\n    \"140830\": \"芮城县\",\n    \"140881\": \"永济市\",\n    \"140882\": \"河津市\",\n    \"140902\": \"忻府区\",\n    \"140921\": \"定襄县\",\n    \"140922\": \"五台县\",\n    \"140923\": \"代县\",\n    \"140924\": \"繁峙县\",\n    \"140925\": \"宁武县\",\n    \"140926\": \"静乐县\",\n    \"140927\": \"神池县\",\n    \"140928\": \"五寨县\",\n    \"140929\": \"岢岚县\",\n    \"140930\": \"河曲县\",\n    \"140931\": \"保德县\",\n    \"140932\": \"偏关县\",\n    \"140981\": \"原平市\",\n    \"141002\": \"尧都区\",\n    \"141021\": \"曲沃县\",\n    \"141022\": \"翼城县\",\n    \"141023\": \"襄汾县\",\n    \"141024\": \"洪洞县\",\n    \"141025\": \"古县\",\n    \"141026\": \"安泽县\",\n    \"141027\": \"浮山县\",\n    \"141028\": \"吉县\",\n    \"141029\": \"乡宁县\",\n    \"141030\": \"大宁县\",\n    \"141031\": \"隰县\",\n    \"141032\": \"永和县\",\n    \"141033\": \"蒲县\",\n    \"141034\": \"汾西县\",\n    \"141081\": \"侯马市\",\n    \"141082\": \"霍州市\",\n    \"141102\": \"离石区\",\n    \"141121\": \"文水县\",\n    \"141122\": \"交城县\",\n    \"141123\": \"兴县\",\n    \"141124\": \"临县\",\n    \"141125\": \"柳林县\",\n    \"141126\": \"石楼县\",\n    \"141127\": \"岚县\",\n    \"141128\": \"方山县\",\n    \"141129\": \"中阳县\",\n    \"141130\": \"交口县\",\n    \"141181\": \"孝义市\",\n    \"141182\": \"汾阳市\",\n    \"150102\": \"新城区\",\n    \"150103\": \"回民区\",\n    \"150104\": \"玉泉区\",\n    \"150105\": \"赛罕区\",\n    \"150121\": \"土默特左旗\",\n    \"150122\": \"托克托县\",\n    \"150123\": \"和林格尔县\",\n    \"150124\": \"清水河县\",\n    \"150125\": \"武川县\",\n    \"150202\": \"东河区\",\n    \"150203\": \"昆都仑区\",\n    \"150204\": \"青山区\",\n    \"150205\": \"石拐区\",\n    \"150206\": \"白云鄂博矿区\",\n    \"150207\": \"九原区\",\n    \"150221\": \"土默特右旗\",\n    \"150222\": \"固阳县\",\n    \"150223\": \"达尔罕茂明安联合旗\",\n    \"150302\": \"海勃湾区\",\n    \"150303\": \"海南区\",\n    \"150304\": \"乌达区\",\n    \"150402\": \"红山区\",\n    \"150403\": \"元宝山区\",\n    \"150404\": \"松山区\",\n    \"150421\": \"阿鲁科尔沁旗\",\n    \"150422\": \"巴林左旗\",\n    \"150423\": \"巴林右旗\",\n    \"150424\": \"林西县\",\n    \"150425\": \"克什克腾旗\",\n    \"150426\": \"翁牛特旗\",\n    \"150428\": \"喀喇沁旗\",\n    \"150429\": \"宁城县\",\n    \"150430\": \"敖汉旗\",\n    \"150502\": \"科尔沁区\",\n    \"150521\": \"科尔沁左翼中旗\",\n    \"150522\": \"科尔沁左翼后旗\",\n    \"150523\": \"开鲁县\",\n    \"150524\": \"库伦旗\",\n    \"150525\": \"奈曼旗\",\n    \"150526\": \"扎鲁特旗\",\n    \"150581\": \"霍林郭勒市\",\n    \"150602\": \"东胜区\",\n    \"150603\": \"康巴什区\",\n    \"150621\": \"达拉特旗\",\n    \"150622\": \"准格尔旗\",\n    \"150623\": \"鄂托克前旗\",\n    \"150624\": \"鄂托克旗\",\n    \"150625\": \"杭锦旗\",\n    \"150626\": \"乌审旗\",\n    \"150627\": \"伊金霍洛旗\",\n    \"150702\": \"海拉尔区\",\n    \"150703\": \"扎赉诺尔区\",\n    \"150721\": \"阿荣旗\",\n    \"150722\": \"莫力达瓦达斡尔族自治旗\",\n    \"150723\": \"鄂伦春自治旗\",\n    \"150724\": \"鄂温克族自治旗\",\n    \"150725\": \"陈巴尔虎旗\",\n    \"150726\": \"新巴尔虎左旗\",\n    \"150727\": \"新巴尔虎右旗\",\n    \"150781\": \"满洲里市\",\n    \"150782\": \"牙克石市\",\n    \"150783\": \"扎兰屯市\",\n    \"150784\": \"额尔古纳市\",\n    \"150785\": \"根河市\",\n    \"150802\": \"临河区\",\n    \"150821\": \"五原县\",\n    \"150822\": \"磴口县\",\n    \"150823\": \"乌拉特前旗\",\n    \"150824\": \"乌拉特中旗\",\n    \"150825\": \"乌拉特后旗\",\n    \"150826\": \"杭锦后旗\",\n    \"150902\": \"集宁区\",\n    \"150921\": \"卓资县\",\n    \"150922\": \"化德县\",\n    \"150923\": \"商都县\",\n    \"150924\": \"兴和县\",\n    \"150925\": \"凉城县\",\n    \"150926\": \"察哈尔右翼前旗\",\n    \"150927\": \"察哈尔右翼中旗\",\n    \"150928\": \"察哈尔右翼后旗\",\n    \"150929\": \"四子王旗\",\n    \"150981\": \"丰镇市\",\n    \"152201\": \"乌兰浩特市\",\n    \"152202\": \"阿尔山市\",\n    \"152221\": \"科尔沁右翼前旗\",\n    \"152222\": \"科尔沁右翼中旗\",\n    \"152223\": \"扎赉特旗\",\n    \"152224\": \"突泉县\",\n    \"152501\": \"二连浩特市\",\n    \"152502\": \"锡林浩特市\",\n    \"152522\": \"阿巴嘎旗\",\n    \"152523\": \"苏尼特左旗\",\n    \"152524\": \"苏尼特右旗\",\n    \"152525\": \"东乌珠穆沁旗\",\n    \"152526\": \"西乌珠穆沁旗\",\n    \"152527\": \"太仆寺旗\",\n    \"152528\": \"镶黄旗\",\n    \"152529\": \"正镶白旗\",\n    \"152530\": \"正蓝旗\",\n    \"152531\": \"多伦县\",\n    \"152921\": \"阿拉善左旗\",\n    \"152922\": \"阿拉善右旗\",\n    \"152923\": \"额济纳旗\",\n    \"210102\": \"和平区\",\n    \"210103\": \"沈河区\",\n    \"210104\": \"大东区\",\n    \"210105\": \"皇姑区\",\n    \"210106\": \"铁西区\",\n    \"210111\": \"苏家屯区\",\n    \"210112\": \"浑南区\",\n    \"210113\": \"沈北新区\",\n    \"210114\": \"于洪区\",\n    \"210115\": \"辽中区\",\n    \"210123\": \"康平县\",\n    \"210124\": \"法库县\",\n    \"210181\": \"新民市\",\n    \"210202\": \"中山区\",\n    \"210203\": \"西岗区\",\n    \"210204\": \"沙河口区\",\n    \"210211\": \"甘井子区\",\n    \"210212\": \"旅顺口区\",\n    \"210213\": \"金州区\",\n    \"210214\": \"普兰店区\",\n    \"210224\": \"长海县\",\n    \"210281\": \"瓦房店市\",\n    \"210283\": \"庄河市\",\n    \"210302\": \"铁东区\",\n    \"210303\": \"铁西区\",\n    \"210304\": \"立山区\",\n    \"210311\": \"千山区\",\n    \"210321\": \"台安县\",\n    \"210323\": \"岫岩满族自治县\",\n    \"210381\": \"海城市\",\n    \"210402\": \"新抚区\",\n    \"210403\": \"东洲区\",\n    \"210404\": \"望花区\",\n    \"210411\": \"顺城区\",\n    \"210421\": \"抚顺县\",\n    \"210422\": \"新宾满族自治县\",\n    \"210423\": \"清原满族自治县\",\n    \"210502\": \"平山区\",\n    \"210503\": \"溪湖区\",\n    \"210504\": \"明山区\",\n    \"210505\": \"南芬区\",\n    \"210521\": \"本溪满族自治县\",\n    \"210522\": \"桓仁满族自治县\",\n    \"210602\": \"元宝区\",\n    \"210603\": \"振兴区\",\n    \"210604\": \"振安区\",\n    \"210624\": \"宽甸满族自治县\",\n    \"210681\": \"东港市\",\n    \"210682\": \"凤城市\",\n    \"210702\": \"古塔区\",\n    \"210703\": \"凌河区\",\n    \"210711\": \"太和区\",\n    \"210726\": \"黑山县\",\n    \"210727\": \"义县\",\n    \"210781\": \"凌海市\",\n    \"210782\": \"北镇市\",\n    \"210802\": \"站前区\",\n    \"210803\": \"西市区\",\n    \"210804\": \"鲅鱼圈区\",\n    \"210811\": \"老边区\",\n    \"210881\": \"盖州市\",\n    \"210882\": \"大石桥市\",\n    \"210902\": \"海州区\",\n    \"210903\": \"新邱区\",\n    \"210904\": \"太平区\",\n    \"210905\": \"清河门区\",\n    \"210911\": \"细河区\",\n    \"210921\": \"阜新蒙古族自治县\",\n    \"210922\": \"彰武县\",\n    \"211002\": \"白塔区\",\n    \"211003\": \"文圣区\",\n    \"211004\": \"宏伟区\",\n    \"211005\": \"弓长岭区\",\n    \"211011\": \"太子河区\",\n    \"211021\": \"辽阳县\",\n    \"211081\": \"灯塔市\",\n    \"211102\": \"双台子区\",\n    \"211103\": \"兴隆台区\",\n    \"211104\": \"大洼区\",\n    \"211122\": \"盘山县\",\n    \"211202\": \"银州区\",\n    \"211204\": \"清河区\",\n    \"211221\": \"铁岭县\",\n    \"211223\": \"西丰县\",\n    \"211224\": \"昌图县\",\n    \"211281\": \"调兵山市\",\n    \"211282\": \"开原市\",\n    \"211302\": \"双塔区\",\n    \"211303\": \"龙城区\",\n    \"211321\": \"朝阳县\",\n    \"211322\": \"建平县\",\n    \"211324\": \"喀喇沁左翼蒙古族自治县\",\n    \"211381\": \"北票市\",\n    \"211382\": \"凌源市\",\n    \"211402\": \"连山区\",\n    \"211403\": \"龙港区\",\n    \"211404\": \"南票区\",\n    \"211421\": \"绥中县\",\n    \"211422\": \"建昌县\",\n    \"211481\": \"兴城市\",\n    \"220102\": \"南关区\",\n    \"220103\": \"宽城区\",\n    \"220104\": \"朝阳区\",\n    \"220105\": \"二道区\",\n    \"220106\": \"绿园区\",\n    \"220112\": \"双阳区\",\n    \"220113\": \"九台区\",\n    \"220122\": \"农安县\",\n    \"220182\": \"榆树市\",\n    \"220183\": \"德惠市\",\n    \"220202\": \"昌邑区\",\n    \"220203\": \"龙潭区\",\n    \"220204\": \"船营区\",\n    \"220211\": \"丰满区\",\n    \"220221\": \"永吉县\",\n    \"220281\": \"蛟河市\",\n    \"220282\": \"桦甸市\",\n    \"220283\": \"舒兰市\",\n    \"220284\": \"磐石市\",\n    \"220302\": \"铁西区\",\n    \"220303\": \"铁东区\",\n    \"220322\": \"梨树县\",\n    \"220323\": \"伊通满族自治县\",\n    \"220381\": \"公主岭市\",\n    \"220382\": \"双辽市\",\n    \"220402\": \"龙山区\",\n    \"220403\": \"西安区\",\n    \"220421\": \"东丰县\",\n    \"220422\": \"东辽县\",\n    \"220502\": \"东昌区\",\n    \"220503\": \"二道江区\",\n    \"220521\": \"通化县\",\n    \"220523\": \"辉南县\",\n    \"220524\": \"柳河县\",\n    \"220581\": \"梅河口市\",\n    \"220582\": \"集安市\",\n    \"220602\": \"浑江区\",\n    \"220605\": \"江源区\",\n    \"220621\": \"抚松县\",\n    \"220622\": \"靖宇县\",\n    \"220623\": \"长白朝鲜族自治县\",\n    \"220681\": \"临江市\",\n    \"220702\": \"宁江区\",\n    \"220721\": \"前郭尔罗斯蒙古族自治县\",\n    \"220722\": \"长岭县\",\n    \"220723\": \"乾安县\",\n    \"220781\": \"扶余市\",\n    \"220802\": \"洮北区\",\n    \"220821\": \"镇赉县\",\n    \"220822\": \"通榆县\",\n    \"220881\": \"洮南市\",\n    \"220882\": \"大安市\",\n    \"222401\": \"延吉市\",\n    \"222402\": \"图们市\",\n    \"222403\": \"敦化市\",\n    \"222404\": \"珲春市\",\n    \"222405\": \"龙井市\",\n    \"222406\": \"和龙市\",\n    \"222424\": \"汪清县\",\n    \"222426\": \"安图县\",\n    \"230102\": \"道里区\",\n    \"230103\": \"南岗区\",\n    \"230104\": \"道外区\",\n    \"230108\": \"平房区\",\n    \"230109\": \"松北区\",\n    \"230110\": \"香坊区\",\n    \"230111\": \"呼兰区\",\n    \"230112\": \"阿城区\",\n    \"230113\": \"双城区\",\n    \"230123\": \"依兰县\",\n    \"230124\": \"方正县\",\n    \"230125\": \"宾县\",\n    \"230126\": \"巴彦县\",\n    \"230127\": \"木兰县\",\n    \"230128\": \"通河县\",\n    \"230129\": \"延寿县\",\n    \"230183\": \"尚志市\",\n    \"230184\": \"五常市\",\n    \"230202\": \"龙沙区\",\n    \"230203\": \"建华区\",\n    \"230204\": \"铁锋区\",\n    \"230205\": \"昂昂溪区\",\n    \"230206\": \"富拉尔基区\",\n    \"230207\": \"碾子山区\",\n    \"230208\": \"梅里斯达斡尔族区\",\n    \"230221\": \"龙江县\",\n    \"230223\": \"依安县\",\n    \"230224\": \"泰来县\",\n    \"230225\": \"甘南县\",\n    \"230227\": \"富裕县\",\n    \"230229\": \"克山县\",\n    \"230230\": \"克东县\",\n    \"230231\": \"拜泉县\",\n    \"230281\": \"讷河市\",\n    \"230302\": \"鸡冠区\",\n    \"230303\": \"恒山区\",\n    \"230304\": \"滴道区\",\n    \"230305\": \"梨树区\",\n    \"230306\": \"城子河区\",\n    \"230307\": \"麻山区\",\n    \"230321\": \"鸡东县\",\n    \"230381\": \"虎林市\",\n    \"230382\": \"密山市\",\n    \"230402\": \"向阳区\",\n    \"230403\": \"工农区\",\n    \"230404\": \"南山区\",\n    \"230405\": \"兴安区\",\n    \"230406\": \"东山区\",\n    \"230407\": \"兴山区\",\n    \"230421\": \"萝北县\",\n    \"230422\": \"绥滨县\",\n    \"230502\": \"尖山区\",\n    \"230503\": \"岭东区\",\n    \"230505\": \"四方台区\",\n    \"230506\": \"宝山区\",\n    \"230521\": \"集贤县\",\n    \"230522\": \"友谊县\",\n    \"230523\": \"宝清县\",\n    \"230524\": \"饶河县\",\n    \"230602\": \"萨尔图区\",\n    \"230603\": \"龙凤区\",\n    \"230604\": \"让胡路区\",\n    \"230605\": \"红岗区\",\n    \"230606\": \"大同区\",\n    \"230621\": \"肇州县\",\n    \"230622\": \"肇源县\",\n    \"230623\": \"林甸县\",\n    \"230624\": \"杜尔伯特蒙古族自治县\",\n    \"230702\": \"伊春区\",\n    \"230703\": \"南岔区\",\n    \"230704\": \"友好区\",\n    \"230705\": \"西林区\",\n    \"230706\": \"翠峦区\",\n    \"230707\": \"新青区\",\n    \"230708\": \"美溪区\",\n    \"230709\": \"金山屯区\",\n    \"230710\": \"五营区\",\n    \"230711\": \"乌马河区\",\n    \"230712\": \"汤旺河区\",\n    \"230713\": \"带岭区\",\n    \"230714\": \"乌伊岭区\",\n    \"230715\": \"红星区\",\n    \"230716\": \"上甘岭区\",\n    \"230722\": \"嘉荫县\",\n    \"230781\": \"铁力市\",\n    \"230803\": \"向阳区\",\n    \"230804\": \"前进区\",\n    \"230805\": \"东风区\",\n    \"230811\": \"郊区\",\n    \"230822\": \"桦南县\",\n    \"230826\": \"桦川县\",\n    \"230828\": \"汤原县\",\n    \"230881\": \"同江市\",\n    \"230882\": \"富锦市\",\n    \"230883\": \"抚远市\",\n    \"230902\": \"新兴区\",\n    \"230903\": \"桃山区\",\n    \"230904\": \"茄子河区\",\n    \"230921\": \"勃利县\",\n    \"231002\": \"东安区\",\n    \"231003\": \"阳明区\",\n    \"231004\": \"爱民区\",\n    \"231005\": \"西安区\",\n    \"231025\": \"林口县\",\n    \"231081\": \"绥芬河市\",\n    \"231083\": \"海林市\",\n    \"231084\": \"宁安市\",\n    \"231085\": \"穆棱市\",\n    \"231086\": \"东宁市\",\n    \"231102\": \"爱辉区\",\n    \"231121\": \"嫩江县\",\n    \"231123\": \"逊克县\",\n    \"231124\": \"孙吴县\",\n    \"231181\": \"北安市\",\n    \"231182\": \"五大连池市\",\n    \"231202\": \"北林区\",\n    \"231221\": \"望奎县\",\n    \"231222\": \"兰西县\",\n    \"231223\": \"青冈县\",\n    \"231224\": \"庆安县\",\n    \"231225\": \"明水县\",\n    \"231226\": \"绥棱县\",\n    \"231281\": \"安达市\",\n    \"231282\": \"肇东市\",\n    \"231283\": \"海伦市\",\n    \"232721\": \"呼玛县\",\n    \"232722\": \"塔河县\",\n    \"232723\": \"漠河县\",\n    \"310101\": \"黄浦区\",\n    \"310104\": \"徐汇区\",\n    \"310105\": \"长宁区\",\n    \"310106\": \"静安区\",\n    \"310107\": \"普陀区\",\n    \"310109\": \"虹口区\",\n    \"310110\": \"杨浦区\",\n    \"310112\": \"闵行区\",\n    \"310113\": \"宝山区\",\n    \"310114\": \"嘉定区\",\n    \"310115\": \"浦东新区\",\n    \"310116\": \"金山区\",\n    \"310117\": \"松江区\",\n    \"310118\": \"青浦区\",\n    \"310120\": \"奉贤区\",\n    \"310151\": \"崇明区\",\n    \"320102\": \"玄武区\",\n    \"320104\": \"秦淮区\",\n    \"320105\": \"建邺区\",\n    \"320106\": \"鼓楼区\",\n    \"320111\": \"浦口区\",\n    \"320113\": \"栖霞区\",\n    \"320114\": \"雨花台区\",\n    \"320115\": \"江宁区\",\n    \"320116\": \"六合区\",\n    \"320117\": \"溧水区\",\n    \"320118\": \"高淳区\",\n    \"320205\": \"锡山区\",\n    \"320206\": \"惠山区\",\n    \"320211\": \"滨湖区\",\n    \"320213\": \"梁溪区\",\n    \"320214\": \"新吴区\",\n    \"320281\": \"江阴市\",\n    \"320282\": \"宜兴市\",\n    \"320302\": \"鼓楼区\",\n    \"320303\": \"云龙区\",\n    \"320305\": \"贾汪区\",\n    \"320311\": \"泉山区\",\n    \"320312\": \"铜山区\",\n    \"320321\": \"丰县\",\n    \"320322\": \"沛县\",\n    \"320324\": \"睢宁县\",\n    \"320381\": \"新沂市\",\n    \"320382\": \"邳州市\",\n    \"320402\": \"天宁区\",\n    \"320404\": \"钟楼区\",\n    \"320411\": \"新北区\",\n    \"320412\": \"武进区\",\n    \"320413\": \"金坛区\",\n    \"320481\": \"溧阳市\",\n    \"320505\": \"虎丘区\",\n    \"320506\": \"吴中区\",\n    \"320507\": \"相城区\",\n    \"320508\": \"姑苏区\",\n    \"320509\": \"吴江区\",\n    \"320581\": \"常熟市\",\n    \"320582\": \"张家港市\",\n    \"320583\": \"昆山市\",\n    \"320585\": \"太仓市\",\n    \"320602\": \"崇川区\",\n    \"320611\": \"港闸区\",\n    \"320612\": \"通州区\",\n    \"320621\": \"海安县\",\n    \"320623\": \"如东县\",\n    \"320681\": \"启东市\",\n    \"320682\": \"如皋市\",\n    \"320684\": \"海门市\",\n    \"320703\": \"连云区\",\n    \"320706\": \"海州区\",\n    \"320707\": \"赣榆区\",\n    \"320722\": \"东海县\",\n    \"320723\": \"灌云县\",\n    \"320724\": \"灌南县\",\n    \"320803\": \"淮安区\",\n    \"320804\": \"淮阴区\",\n    \"320812\": \"清江浦区\",\n    \"320813\": \"洪泽区\",\n    \"320826\": \"涟水县\",\n    \"320830\": \"盱眙县\",\n    \"320831\": \"金湖县\",\n    \"320902\": \"亭湖区\",\n    \"320903\": \"盐都区\",\n    \"320904\": \"大丰区\",\n    \"320921\": \"响水县\",\n    \"320922\": \"滨海县\",\n    \"320923\": \"阜宁县\",\n    \"320924\": \"射阳县\",\n    \"320925\": \"建湖县\",\n    \"320981\": \"东台市\",\n    \"321002\": \"广陵区\",\n    \"321003\": \"邗江区\",\n    \"321012\": \"江都区\",\n    \"321023\": \"宝应县\",\n    \"321081\": \"仪征市\",\n    \"321084\": \"高邮市\",\n    \"321102\": \"京口区\",\n    \"321111\": \"润州区\",\n    \"321112\": \"丹徒区\",\n    \"321181\": \"丹阳市\",\n    \"321182\": \"扬中市\",\n    \"321183\": \"句容市\",\n    \"321202\": \"海陵区\",\n    \"321203\": \"高港区\",\n    \"321204\": \"姜堰区\",\n    \"321281\": \"兴化市\",\n    \"321282\": \"靖江市\",\n    \"321283\": \"泰兴市\",\n    \"321302\": \"宿城区\",\n    \"321311\": \"宿豫区\",\n    \"321322\": \"沭阳县\",\n    \"321323\": \"泗阳县\",\n    \"321324\": \"泗洪县\",\n    \"330102\": \"上城区\",\n    \"330103\": \"下城区\",\n    \"330104\": \"江干区\",\n    \"330105\": \"拱墅区\",\n    \"330106\": \"西湖区\",\n    \"330108\": \"滨江区\",\n    \"330109\": \"萧山区\",\n    \"330110\": \"余杭区\",\n    \"330111\": \"富阳区\",\n    \"330122\": \"桐庐县\",\n    \"330127\": \"淳安县\",\n    \"330182\": \"建德市\",\n    \"330185\": \"临安市\",\n    \"330203\": \"海曙区\",\n    \"330204\": \"江东区\",\n    \"330205\": \"江北区\",\n    \"330206\": \"北仑区\",\n    \"330211\": \"镇海区\",\n    \"330212\": \"鄞州区\",\n    \"330225\": \"象山县\",\n    \"330226\": \"宁海县\",\n    \"330281\": \"余姚市\",\n    \"330282\": \"慈溪市\",\n    \"330283\": \"奉化市\",\n    \"330302\": \"鹿城区\",\n    \"330303\": \"龙湾区\",\n    \"330304\": \"瓯海区\",\n    \"330305\": \"洞头区\",\n    \"330324\": \"永嘉县\",\n    \"330326\": \"平阳县\",\n    \"330327\": \"苍南县\",\n    \"330328\": \"文成县\",\n    \"330329\": \"泰顺县\",\n    \"330381\": \"瑞安市\",\n    \"330382\": \"乐清市\",\n    \"330402\": \"南湖区\",\n    \"330411\": \"秀洲区\",\n    \"330421\": \"嘉善县\",\n    \"330424\": \"海盐县\",\n    \"330481\": \"海宁市\",\n    \"330482\": \"平湖市\",\n    \"330483\": \"桐乡市\",\n    \"330502\": \"吴兴区\",\n    \"330503\": \"南浔区\",\n    \"330521\": \"德清县\",\n    \"330522\": \"长兴县\",\n    \"330523\": \"安吉县\",\n    \"330602\": \"越城区\",\n    \"330603\": \"柯桥区\",\n    \"330604\": \"上虞区\",\n    \"330624\": \"新昌县\",\n    \"330681\": \"诸暨市\",\n    \"330683\": \"嵊州市\",\n    \"330702\": \"婺城区\",\n    \"330703\": \"金东区\",\n    \"330723\": \"武义县\",\n    \"330726\": \"浦江县\",\n    \"330727\": \"磐安县\",\n    \"330781\": \"兰溪市\",\n    \"330782\": \"义乌市\",\n    \"330783\": \"东阳市\",\n    \"330784\": \"永康市\",\n    \"330802\": \"柯城区\",\n    \"330803\": \"衢江区\",\n    \"330822\": \"常山县\",\n    \"330824\": \"开化县\",\n    \"330825\": \"龙游县\",\n    \"330881\": \"江山市\",\n    \"330902\": \"定海区\",\n    \"330903\": \"普陀区\",\n    \"330921\": \"岱山县\",\n    \"330922\": \"嵊泗县\",\n    \"331002\": \"椒江区\",\n    \"331003\": \"黄岩区\",\n    \"331004\": \"路桥区\",\n    \"331021\": \"玉环县\",\n    \"331022\": \"三门县\",\n    \"331023\": \"天台县\",\n    \"331024\": \"仙居县\",\n    \"331081\": \"温岭市\",\n    \"331082\": \"临海市\",\n    \"331102\": \"莲都区\",\n    \"331121\": \"青田县\",\n    \"331122\": \"缙云县\",\n    \"331123\": \"遂昌县\",\n    \"331124\": \"松阳县\",\n    \"331125\": \"云和县\",\n    \"331126\": \"庆元县\",\n    \"331127\": \"景宁畲族自治县\",\n    \"331181\": \"龙泉市\",\n    \"340102\": \"瑶海区\",\n    \"340103\": \"庐阳区\",\n    \"340104\": \"蜀山区\",\n    \"340111\": \"包河区\",\n    \"340121\": \"长丰县\",\n    \"340122\": \"肥东县\",\n    \"340123\": \"肥西县\",\n    \"340124\": \"庐江县\",\n    \"340181\": \"巢湖市\",\n    \"340202\": \"镜湖区\",\n    \"340203\": \"弋江区\",\n    \"340207\": \"鸠江区\",\n    \"340208\": \"三山区\",\n    \"340221\": \"芜湖县\",\n    \"340222\": \"繁昌县\",\n    \"340223\": \"南陵县\",\n    \"340225\": \"无为县\",\n    \"340302\": \"龙子湖区\",\n    \"340303\": \"蚌山区\",\n    \"340304\": \"禹会区\",\n    \"340311\": \"淮上区\",\n    \"340321\": \"怀远县\",\n    \"340322\": \"五河县\",\n    \"340323\": \"固镇县\",\n    \"340402\": \"大通区\",\n    \"340403\": \"田家庵区\",\n    \"340404\": \"谢家集区\",\n    \"340405\": \"八公山区\",\n    \"340406\": \"潘集区\",\n    \"340421\": \"凤台县\",\n    \"340422\": \"寿县\",\n    \"340503\": \"花山区\",\n    \"340504\": \"雨山区\",\n    \"340506\": \"博望区\",\n    \"340521\": \"当涂县\",\n    \"340522\": \"含山县\",\n    \"340523\": \"和县\",\n    \"340602\": \"杜集区\",\n    \"340603\": \"相山区\",\n    \"340604\": \"烈山区\",\n    \"340621\": \"濉溪县\",\n    \"340705\": \"铜官区\",\n    \"340706\": \"义安区\",\n    \"340711\": \"郊区\",\n    \"340722\": \"枞阳县\",\n    \"340802\": \"迎江区\",\n    \"340803\": \"大观区\",\n    \"340811\": \"宜秀区\",\n    \"340822\": \"怀宁县\",\n    \"340824\": \"潜山县\",\n    \"340825\": \"太湖县\",\n    \"340826\": \"宿松县\",\n    \"340827\": \"望江县\",\n    \"340828\": \"岳西县\",\n    \"340881\": \"桐城市\",\n    \"341002\": \"屯溪区\",\n    \"341003\": \"黄山区\",\n    \"341004\": \"徽州区\",\n    \"341021\": \"歙县\",\n    \"341022\": \"休宁县\",\n    \"341023\": \"黟县\",\n    \"341024\": \"祁门县\",\n    \"341102\": \"琅琊区\",\n    \"341103\": \"南谯区\",\n    \"341122\": \"来安县\",\n    \"341124\": \"全椒县\",\n    \"341125\": \"定远县\",\n    \"341126\": \"凤阳县\",\n    \"341181\": \"天长市\",\n    \"341182\": \"明光市\",\n    \"341202\": \"颍州区\",\n    \"341203\": \"颍东区\",\n    \"341204\": \"颍泉区\",\n    \"341221\": \"临泉县\",\n    \"341222\": \"太和县\",\n    \"341225\": \"阜南县\",\n    \"341226\": \"颍上县\",\n    \"341282\": \"界首市\",\n    \"341302\": \"埇桥区\",\n    \"341321\": \"砀山县\",\n    \"341322\": \"萧县\",\n    \"341323\": \"灵璧县\",\n    \"341324\": \"泗县\",\n    \"341502\": \"金安区\",\n    \"341503\": \"裕安区\",\n    \"341504\": \"叶集区\",\n    \"341522\": \"霍邱县\",\n    \"341523\": \"舒城县\",\n    \"341524\": \"金寨县\",\n    \"341525\": \"霍山县\",\n    \"341602\": \"谯城区\",\n    \"341621\": \"涡阳县\",\n    \"341622\": \"蒙城县\",\n    \"341623\": \"利辛县\",\n    \"341702\": \"贵池区\",\n    \"341721\": \"东至县\",\n    \"341722\": \"石台县\",\n    \"341723\": \"青阳县\",\n    \"341802\": \"宣州区\",\n    \"341821\": \"郎溪县\",\n    \"341822\": \"广德县\",\n    \"341823\": \"泾县\",\n    \"341824\": \"绩溪县\",\n    \"341825\": \"旌德县\",\n    \"341881\": \"宁国市\",\n    \"350102\": \"鼓楼区\",\n    \"350103\": \"台江区\",\n    \"350104\": \"仓山区\",\n    \"350105\": \"马尾区\",\n    \"350111\": \"晋安区\",\n    \"350121\": \"闽侯县\",\n    \"350122\": \"连江县\",\n    \"350123\": \"罗源县\",\n    \"350124\": \"闽清县\",\n    \"350125\": \"永泰县\",\n    \"350128\": \"平潭县\",\n    \"350181\": \"福清市\",\n    \"350182\": \"长乐市\",\n    \"350203\": \"思明区\",\n    \"350205\": \"海沧区\",\n    \"350206\": \"湖里区\",\n    \"350211\": \"集美区\",\n    \"350212\": \"同安区\",\n    \"350213\": \"翔安区\",\n    \"350302\": \"城厢区\",\n    \"350303\": \"涵江区\",\n    \"350304\": \"荔城区\",\n    \"350305\": \"秀屿区\",\n    \"350322\": \"仙游县\",\n    \"350402\": \"梅列区\",\n    \"350403\": \"三元区\",\n    \"350421\": \"明溪县\",\n    \"350423\": \"清流县\",\n    \"350424\": \"宁化县\",\n    \"350425\": \"大田县\",\n    \"350426\": \"尤溪县\",\n    \"350427\": \"沙县\",\n    \"350428\": \"将乐县\",\n    \"350429\": \"泰宁县\",\n    \"350430\": \"建宁县\",\n    \"350481\": \"永安市\",\n    \"350502\": \"鲤城区\",\n    \"350503\": \"丰泽区\",\n    \"350504\": \"洛江区\",\n    \"350505\": \"泉港区\",\n    \"350521\": \"惠安县\",\n    \"350524\": \"安溪县\",\n    \"350525\": \"永春县\",\n    \"350526\": \"德化县\",\n    \"350527\": \"金门县\",\n    \"350581\": \"石狮市\",\n    \"350582\": \"晋江市\",\n    \"350583\": \"南安市\",\n    \"350602\": \"芗城区\",\n    \"350603\": \"龙文区\",\n    \"350622\": \"云霄县\",\n    \"350623\": \"漳浦县\",\n    \"350624\": \"诏安县\",\n    \"350625\": \"长泰县\",\n    \"350626\": \"东山县\",\n    \"350627\": \"南靖县\",\n    \"350628\": \"平和县\",\n    \"350629\": \"华安县\",\n    \"350681\": \"龙海市\",\n    \"350702\": \"延平区\",\n    \"350703\": \"建阳区\",\n    \"350721\": \"顺昌县\",\n    \"350722\": \"浦城县\",\n    \"350723\": \"光泽县\",\n    \"350724\": \"松溪县\",\n    \"350725\": \"政和县\",\n    \"350781\": \"邵武市\",\n    \"350782\": \"武夷山市\",\n    \"350783\": \"建瓯市\",\n    \"350802\": \"新罗区\",\n    \"350803\": \"永定区\",\n    \"350821\": \"长汀县\",\n    \"350823\": \"上杭县\",\n    \"350824\": \"武平县\",\n    \"350825\": \"连城县\",\n    \"350881\": \"漳平市\",\n    \"350902\": \"蕉城区\",\n    \"350921\": \"霞浦县\",\n    \"350922\": \"古田县\",\n    \"350923\": \"屏南县\",\n    \"350924\": \"寿宁县\",\n    \"350925\": \"周宁县\",\n    \"350926\": \"柘荣县\",\n    \"350981\": \"福安市\",\n    \"350982\": \"福鼎市\",\n    \"360102\": \"东湖区\",\n    \"360103\": \"西湖区\",\n    \"360104\": \"青云谱区\",\n    \"360105\": \"湾里区\",\n    \"360111\": \"青山湖区\",\n    \"360112\": \"新建区\",\n    \"360121\": \"南昌县\",\n    \"360123\": \"安义县\",\n    \"360124\": \"进贤县\",\n    \"360202\": \"昌江区\",\n    \"360203\": \"珠山区\",\n    \"360222\": \"浮梁县\",\n    \"360281\": \"乐平市\",\n    \"360302\": \"安源区\",\n    \"360313\": \"湘东区\",\n    \"360321\": \"莲花县\",\n    \"360322\": \"上栗县\",\n    \"360323\": \"芦溪县\",\n    \"360402\": \"濂溪区\",\n    \"360403\": \"浔阳区\",\n    \"360421\": \"九江县\",\n    \"360423\": \"武宁县\",\n    \"360424\": \"修水县\",\n    \"360425\": \"永修县\",\n    \"360426\": \"德安县\",\n    \"360428\": \"都昌县\",\n    \"360429\": \"湖口县\",\n    \"360430\": \"彭泽县\",\n    \"360481\": \"瑞昌市\",\n    \"360482\": \"共青城市\",\n    \"360483\": \"庐山市\",\n    \"360502\": \"渝水区\",\n    \"360521\": \"分宜县\",\n    \"360602\": \"月湖区\",\n    \"360622\": \"余江县\",\n    \"360681\": \"贵溪市\",\n    \"360702\": \"章贡区\",\n    \"360703\": \"南康区\",\n    \"360721\": \"赣县\",\n    \"360722\": \"信丰县\",\n    \"360723\": \"大余县\",\n    \"360724\": \"上犹县\",\n    \"360725\": \"崇义县\",\n    \"360726\": \"安远县\",\n    \"360727\": \"龙南县\",\n    \"360728\": \"定南县\",\n    \"360729\": \"全南县\",\n    \"360730\": \"宁都县\",\n    \"360731\": \"于都县\",\n    \"360732\": \"兴国县\",\n    \"360733\": \"会昌县\",\n    \"360734\": \"寻乌县\",\n    \"360735\": \"石城县\",\n    \"360781\": \"瑞金市\",\n    \"360802\": \"吉州区\",\n    \"360803\": \"青原区\",\n    \"360821\": \"吉安县\",\n    \"360822\": \"吉水县\",\n    \"360823\": \"峡江县\",\n    \"360824\": \"新干县\",\n    \"360825\": \"永丰县\",\n    \"360826\": \"泰和县\",\n    \"360827\": \"遂川县\",\n    \"360828\": \"万安县\",\n    \"360829\": \"安福县\",\n    \"360830\": \"永新县\",\n    \"360881\": \"井冈山市\",\n    \"360902\": \"袁州区\",\n    \"360921\": \"奉新县\",\n    \"360922\": \"万载县\",\n    \"360923\": \"上高县\",\n    \"360924\": \"宜丰县\",\n    \"360925\": \"靖安县\",\n    \"360926\": \"铜鼓县\",\n    \"360981\": \"丰城市\",\n    \"360982\": \"樟树市\",\n    \"360983\": \"高安市\",\n    \"361002\": \"临川区\",\n    \"361021\": \"南城县\",\n    \"361022\": \"黎川县\",\n    \"361023\": \"南丰县\",\n    \"361024\": \"崇仁县\",\n    \"361025\": \"乐安县\",\n    \"361026\": \"宜黄县\",\n    \"361027\": \"金溪县\",\n    \"361028\": \"资溪县\",\n    \"361029\": \"东乡县\",\n    \"361030\": \"广昌县\",\n    \"361102\": \"信州区\",\n    \"361103\": \"广丰区\",\n    \"361121\": \"上饶县\",\n    \"361123\": \"玉山县\",\n    \"361124\": \"铅山县\",\n    \"361125\": \"横峰县\",\n    \"361126\": \"弋阳县\",\n    \"361127\": \"余干县\",\n    \"361128\": \"鄱阳县\",\n    \"361129\": \"万年县\",\n    \"361130\": \"婺源县\",\n    \"361181\": \"德兴市\",\n    \"370102\": \"历下区\",\n    \"370103\": \"市中区\",\n    \"370104\": \"槐荫区\",\n    \"370105\": \"天桥区\",\n    \"370112\": \"历城区\",\n    \"370113\": \"长清区\",\n    \"370124\": \"平阴县\",\n    \"370125\": \"济阳县\",\n    \"370126\": \"商河县\",\n    \"370181\": \"章丘市\",\n    \"370202\": \"市南区\",\n    \"370203\": \"市北区\",\n    \"370211\": \"黄岛区\",\n    \"370212\": \"崂山区\",\n    \"370213\": \"李沧区\",\n    \"370214\": \"城阳区\",\n    \"370281\": \"胶州市\",\n    \"370282\": \"即墨市\",\n    \"370283\": \"平度市\",\n    \"370285\": \"莱西市\",\n    \"370302\": \"淄川区\",\n    \"370303\": \"张店区\",\n    \"370304\": \"博山区\",\n    \"370305\": \"临淄区\",\n    \"370306\": \"周村区\",\n    \"370321\": \"桓台县\",\n    \"370322\": \"高青县\",\n    \"370323\": \"沂源县\",\n    \"370402\": \"市中区\",\n    \"370403\": \"薛城区\",\n    \"370404\": \"峄城区\",\n    \"370405\": \"台儿庄区\",\n    \"370406\": \"山亭区\",\n    \"370481\": \"滕州市\",\n    \"370502\": \"东营区\",\n    \"370503\": \"河口区\",\n    \"370505\": \"垦利区\",\n    \"370522\": \"利津县\",\n    \"370523\": \"广饶县\",\n    \"370602\": \"芝罘区\",\n    \"370611\": \"福山区\",\n    \"370612\": \"牟平区\",\n    \"370613\": \"莱山区\",\n    \"370634\": \"长岛县\",\n    \"370681\": \"龙口市\",\n    \"370682\": \"莱阳市\",\n    \"370683\": \"莱州市\",\n    \"370684\": \"蓬莱市\",\n    \"370685\": \"招远市\",\n    \"370686\": \"栖霞市\",\n    \"370687\": \"海阳市\",\n    \"370702\": \"潍城区\",\n    \"370703\": \"寒亭区\",\n    \"370704\": \"坊子区\",\n    \"370705\": \"奎文区\",\n    \"370724\": \"临朐县\",\n    \"370725\": \"昌乐县\",\n    \"370781\": \"青州市\",\n    \"370782\": \"诸城市\",\n    \"370783\": \"寿光市\",\n    \"370784\": \"安丘市\",\n    \"370785\": \"高密市\",\n    \"370786\": \"昌邑市\",\n    \"370811\": \"任城区\",\n    \"370812\": \"兖州区\",\n    \"370826\": \"微山县\",\n    \"370827\": \"鱼台县\",\n    \"370828\": \"金乡县\",\n    \"370829\": \"嘉祥县\",\n    \"370830\": \"汶上县\",\n    \"370831\": \"泗水县\",\n    \"370832\": \"梁山县\",\n    \"370881\": \"曲阜市\",\n    \"370883\": \"邹城市\",\n    \"370902\": \"泰山区\",\n    \"370911\": \"岱岳区\",\n    \"370921\": \"宁阳县\",\n    \"370923\": \"东平县\",\n    \"370982\": \"新泰市\",\n    \"370983\": \"肥城市\",\n    \"371002\": \"环翠区\",\n    \"371003\": \"文登区\",\n    \"371082\": \"荣成市\",\n    \"371083\": \"乳山市\",\n    \"371102\": \"东港区\",\n    \"371103\": \"岚山区\",\n    \"371121\": \"五莲县\",\n    \"371122\": \"莒县\",\n    \"371202\": \"莱城区\",\n    \"371203\": \"钢城区\",\n    \"371302\": \"兰山区\",\n    \"371311\": \"罗庄区\",\n    \"371312\": \"河东区\",\n    \"371321\": \"沂南县\",\n    \"371322\": \"郯城县\",\n    \"371323\": \"沂水县\",\n    \"371324\": \"兰陵县\",\n    \"371325\": \"费县\",\n    \"371326\": \"平邑县\",\n    \"371327\": \"莒南县\",\n    \"371328\": \"蒙阴县\",\n    \"371329\": \"临沭县\",\n    \"371402\": \"德城区\",\n    \"371403\": \"陵城区\",\n    \"371422\": \"宁津县\",\n    \"371423\": \"庆云县\",\n    \"371424\": \"临邑县\",\n    \"371425\": \"齐河县\",\n    \"371426\": \"平原县\",\n    \"371427\": \"夏津县\",\n    \"371428\": \"武城县\",\n    \"371481\": \"乐陵市\",\n    \"371482\": \"禹城市\",\n    \"371502\": \"东昌府区\",\n    \"371521\": \"阳谷县\",\n    \"371522\": \"莘县\",\n    \"371523\": \"茌平县\",\n    \"371524\": \"东阿县\",\n    \"371525\": \"冠县\",\n    \"371526\": \"高唐县\",\n    \"371581\": \"临清市\",\n    \"371602\": \"滨城区\",\n    \"371603\": \"沾化区\",\n    \"371621\": \"惠民县\",\n    \"371622\": \"阳信县\",\n    \"371623\": \"无棣县\",\n    \"371625\": \"博兴县\",\n    \"371626\": \"邹平县\",\n    \"371702\": \"牡丹区\",\n    \"371703\": \"定陶区\",\n    \"371721\": \"曹县\",\n    \"371722\": \"单县\",\n    \"371723\": \"成武县\",\n    \"371724\": \"巨野县\",\n    \"371725\": \"郓城县\",\n    \"371726\": \"鄄城县\",\n    \"371728\": \"东明县\",\n    \"410102\": \"中原区\",\n    \"410103\": \"二七区\",\n    \"410104\": \"管城回族区\",\n    \"410105\": \"金水区\",\n    \"410106\": \"上街区\",\n    \"410108\": \"惠济区\",\n    \"410122\": \"中牟县\",\n    \"410181\": \"巩义市\",\n    \"410182\": \"荥阳市\",\n    \"410183\": \"新密市\",\n    \"410184\": \"新郑市\",\n    \"410185\": \"登封市\",\n    \"410202\": \"龙亭区\",\n    \"410203\": \"顺河回族区\",\n    \"410204\": \"鼓楼区\",\n    \"410205\": \"禹王台区\",\n    \"410211\": \"金明区\",\n    \"410212\": \"祥符区\",\n    \"410221\": \"杞县\",\n    \"410222\": \"通许县\",\n    \"410223\": \"尉氏县\",\n    \"410225\": \"兰考县\",\n    \"410302\": \"老城区\",\n    \"410303\": \"西工区\",\n    \"410304\": \"瀍河回族区\",\n    \"410305\": \"涧西区\",\n    \"410306\": \"吉利区\",\n    \"410311\": \"洛龙区\",\n    \"410322\": \"孟津县\",\n    \"410323\": \"新安县\",\n    \"410324\": \"栾川县\",\n    \"410325\": \"嵩县\",\n    \"410326\": \"汝阳县\",\n    \"410327\": \"宜阳县\",\n    \"410328\": \"洛宁县\",\n    \"410329\": \"伊川县\",\n    \"410381\": \"偃师市\",\n    \"410402\": \"新华区\",\n    \"410403\": \"卫东区\",\n    \"410404\": \"石龙区\",\n    \"410411\": \"湛河区\",\n    \"410421\": \"宝丰县\",\n    \"410422\": \"叶县\",\n    \"410423\": \"鲁山县\",\n    \"410425\": \"郏县\",\n    \"410481\": \"舞钢市\",\n    \"410482\": \"汝州市\",\n    \"410502\": \"文峰区\",\n    \"410503\": \"北关区\",\n    \"410505\": \"殷都区\",\n    \"410506\": \"龙安区\",\n    \"410522\": \"安阳县\",\n    \"410523\": \"汤阴县\",\n    \"410526\": \"滑县\",\n    \"410527\": \"内黄县\",\n    \"410581\": \"林州市\",\n    \"410602\": \"鹤山区\",\n    \"410603\": \"山城区\",\n    \"410611\": \"淇滨区\",\n    \"410621\": \"浚县\",\n    \"410622\": \"淇县\",\n    \"410702\": \"红旗区\",\n    \"410703\": \"卫滨区\",\n    \"410704\": \"凤泉区\",\n    \"410711\": \"牧野区\",\n    \"410721\": \"新乡县\",\n    \"410724\": \"获嘉县\",\n    \"410725\": \"原阳县\",\n    \"410726\": \"延津县\",\n    \"410727\": \"封丘县\",\n    \"410728\": \"长垣县\",\n    \"410781\": \"卫辉市\",\n    \"410782\": \"辉县市\",\n    \"410802\": \"解放区\",\n    \"410803\": \"中站区\",\n    \"410804\": \"马村区\",\n    \"410811\": \"山阳区\",\n    \"410821\": \"修武县\",\n    \"410822\": \"博爱县\",\n    \"410823\": \"武陟县\",\n    \"410825\": \"温县\",\n    \"410882\": \"沁阳市\",\n    \"410883\": \"孟州市\",\n    \"410902\": \"华龙区\",\n    \"410922\": \"清丰县\",\n    \"410923\": \"南乐县\",\n    \"410926\": \"范县\",\n    \"410927\": \"台前县\",\n    \"410928\": \"濮阳县\",\n    \"411002\": \"魏都区\",\n    \"411023\": \"许昌县\",\n    \"411024\": \"鄢陵县\",\n    \"411025\": \"襄城县\",\n    \"411081\": \"禹州市\",\n    \"411082\": \"长葛市\",\n    \"411102\": \"源汇区\",\n    \"411103\": \"郾城区\",\n    \"411104\": \"召陵区\",\n    \"411121\": \"舞阳县\",\n    \"411122\": \"临颍县\",\n    \"411202\": \"湖滨区\",\n    \"411203\": \"陕州区\",\n    \"411221\": \"渑池县\",\n    \"411224\": \"卢氏县\",\n    \"411281\": \"义马市\",\n    \"411282\": \"灵宝市\",\n    \"411302\": \"宛城区\",\n    \"411303\": \"卧龙区\",\n    \"411321\": \"南召县\",\n    \"411322\": \"方城县\",\n    \"411323\": \"西峡县\",\n    \"411324\": \"镇平县\",\n    \"411325\": \"内乡县\",\n    \"411326\": \"淅川县\",\n    \"411327\": \"社旗县\",\n    \"411328\": \"唐河县\",\n    \"411329\": \"新野县\",\n    \"411330\": \"桐柏县\",\n    \"411381\": \"邓州市\",\n    \"411402\": \"梁园区\",\n    \"411403\": \"睢阳区\",\n    \"411421\": \"民权县\",\n    \"411422\": \"睢县\",\n    \"411423\": \"宁陵县\",\n    \"411424\": \"柘城县\",\n    \"411425\": \"虞城县\",\n    \"411426\": \"夏邑县\",\n    \"411481\": \"永城市\",\n    \"411502\": \"浉河区\",\n    \"411503\": \"平桥区\",\n    \"411521\": \"罗山县\",\n    \"411522\": \"光山县\",\n    \"411523\": \"新县\",\n    \"411524\": \"商城县\",\n    \"411525\": \"固始县\",\n    \"411526\": \"潢川县\",\n    \"411527\": \"淮滨县\",\n    \"411528\": \"息县\",\n    \"411602\": \"川汇区\",\n    \"411621\": \"扶沟县\",\n    \"411622\": \"西华县\",\n    \"411623\": \"商水县\",\n    \"411624\": \"沈丘县\",\n    \"411625\": \"郸城县\",\n    \"411626\": \"淮阳县\",\n    \"411627\": \"太康县\",\n    \"411628\": \"鹿邑县\",\n    \"411681\": \"项城市\",\n    \"411702\": \"驿城区\",\n    \"411721\": \"西平县\",\n    \"411722\": \"上蔡县\",\n    \"411723\": \"平舆县\",\n    \"411724\": \"正阳县\",\n    \"411725\": \"确山县\",\n    \"411726\": \"泌阳县\",\n    \"411727\": \"汝南县\",\n    \"411728\": \"遂平县\",\n    \"411729\": \"新蔡县\",\n    \"419001\": \"济源市\",\n    \"420102\": \"江岸区\",\n    \"420103\": \"江汉区\",\n    \"420104\": \"硚口区\",\n    \"420105\": \"汉阳区\",\n    \"420106\": \"武昌区\",\n    \"420107\": \"青山区\",\n    \"420111\": \"洪山区\",\n    \"420112\": \"东西湖区\",\n    \"420113\": \"汉南区\",\n    \"420114\": \"蔡甸区\",\n    \"420115\": \"江夏区\",\n    \"420116\": \"黄陂区\",\n    \"420117\": \"新洲区\",\n    \"420202\": \"黄石港区\",\n    \"420203\": \"西塞山区\",\n    \"420204\": \"下陆区\",\n    \"420205\": \"铁山区\",\n    \"420222\": \"阳新县\",\n    \"420281\": \"大冶市\",\n    \"420302\": \"茅箭区\",\n    \"420303\": \"张湾区\",\n    \"420304\": \"郧阳区\",\n    \"420322\": \"郧西县\",\n    \"420323\": \"竹山县\",\n    \"420324\": \"竹溪县\",\n    \"420325\": \"房县\",\n    \"420381\": \"丹江口市\",\n    \"420502\": \"西陵区\",\n    \"420503\": \"伍家岗区\",\n    \"420504\": \"点军区\",\n    \"420505\": \"猇亭区\",\n    \"420506\": \"夷陵区\",\n    \"420525\": \"远安县\",\n    \"420526\": \"兴山县\",\n    \"420527\": \"秭归县\",\n    \"420528\": \"长阳土家族自治县\",\n    \"420529\": \"五峰土家族自治县\",\n    \"420581\": \"宜都市\",\n    \"420582\": \"当阳市\",\n    \"420583\": \"枝江市\",\n    \"420602\": \"襄城区\",\n    \"420606\": \"樊城区\",\n    \"420607\": \"襄州区\",\n    \"420624\": \"南漳县\",\n    \"420625\": \"谷城县\",\n    \"420626\": \"保康县\",\n    \"420682\": \"老河口市\",\n    \"420683\": \"枣阳市\",\n    \"420684\": \"宜城市\",\n    \"420702\": \"梁子湖区\",\n    \"420703\": \"华容区\",\n    \"420704\": \"鄂城区\",\n    \"420802\": \"东宝区\",\n    \"420804\": \"掇刀区\",\n    \"420821\": \"京山县\",\n    \"420822\": \"沙洋县\",\n    \"420881\": \"钟祥市\",\n    \"420902\": \"孝南区\",\n    \"420921\": \"孝昌县\",\n    \"420922\": \"大悟县\",\n    \"420923\": \"云梦县\",\n    \"420981\": \"应城市\",\n    \"420982\": \"安陆市\",\n    \"420984\": \"汉川市\",\n    \"421002\": \"沙市区\",\n    \"421003\": \"荆州区\",\n    \"421022\": \"公安县\",\n    \"421023\": \"监利县\",\n    \"421024\": \"江陵县\",\n    \"421081\": \"石首市\",\n    \"421083\": \"洪湖市\",\n    \"421087\": \"松滋市\",\n    \"421102\": \"黄州区\",\n    \"421121\": \"团风县\",\n    \"421122\": \"红安县\",\n    \"421123\": \"罗田县\",\n    \"421124\": \"英山县\",\n    \"421125\": \"浠水县\",\n    \"421126\": \"蕲春县\",\n    \"421127\": \"黄梅县\",\n    \"421181\": \"麻城市\",\n    \"421182\": \"武穴市\",\n    \"421202\": \"咸安区\",\n    \"421221\": \"嘉鱼县\",\n    \"421222\": \"通城县\",\n    \"421223\": \"崇阳县\",\n    \"421224\": \"通山县\",\n    \"421281\": \"赤壁市\",\n    \"421303\": \"曾都区\",\n    \"421321\": \"随县\",\n    \"421381\": \"广水市\",\n    \"422801\": \"恩施市\",\n    \"422802\": \"利川市\",\n    \"422822\": \"建始县\",\n    \"422823\": \"巴东县\",\n    \"422825\": \"宣恩县\",\n    \"422826\": \"咸丰县\",\n    \"422827\": \"来凤县\",\n    \"422828\": \"鹤峰县\",\n    \"429004\": \"仙桃市\",\n    \"429005\": \"潜江市\",\n    \"429006\": \"天门市\",\n    \"429021\": \"神农架林区\",\n    \"430102\": \"芙蓉区\",\n    \"430103\": \"天心区\",\n    \"430104\": \"岳麓区\",\n    \"430105\": \"开福区\",\n    \"430111\": \"雨花区\",\n    \"430112\": \"望城区\",\n    \"430121\": \"长沙县\",\n    \"430124\": \"宁乡县\",\n    \"430181\": \"浏阳市\",\n    \"430202\": \"荷塘区\",\n    \"430203\": \"芦淞区\",\n    \"430204\": \"石峰区\",\n    \"430211\": \"天元区\",\n    \"430221\": \"株洲县\",\n    \"430223\": \"攸县\",\n    \"430224\": \"茶陵县\",\n    \"430225\": \"炎陵县\",\n    \"430281\": \"醴陵市\",\n    \"430302\": \"雨湖区\",\n    \"430304\": \"岳塘区\",\n    \"430321\": \"湘潭县\",\n    \"430381\": \"湘乡市\",\n    \"430382\": \"韶山市\",\n    \"430405\": \"珠晖区\",\n    \"430406\": \"雁峰区\",\n    \"430407\": \"石鼓区\",\n    \"430408\": \"蒸湘区\",\n    \"430412\": \"南岳区\",\n    \"430421\": \"衡阳县\",\n    \"430422\": \"衡南县\",\n    \"430423\": \"衡山县\",\n    \"430424\": \"衡东县\",\n    \"430426\": \"祁东县\",\n    \"430481\": \"耒阳市\",\n    \"430482\": \"常宁市\",\n    \"430502\": \"双清区\",\n    \"430503\": \"大祥区\",\n    \"430511\": \"北塔区\",\n    \"430521\": \"邵东县\",\n    \"430522\": \"新邵县\",\n    \"430523\": \"邵阳县\",\n    \"430524\": \"隆回县\",\n    \"430525\": \"洞口县\",\n    \"430527\": \"绥宁县\",\n    \"430528\": \"新宁县\",\n    \"430529\": \"城步苗族自治县\",\n    \"430581\": \"武冈市\",\n    \"430602\": \"岳阳楼区\",\n    \"430603\": \"云溪区\",\n    \"430611\": \"君山区\",\n    \"430621\": \"岳阳县\",\n    \"430623\": \"华容县\",\n    \"430624\": \"湘阴县\",\n    \"430626\": \"平江县\",\n    \"430681\": \"汨罗市\",\n    \"430682\": \"临湘市\",\n    \"430702\": \"武陵区\",\n    \"430703\": \"鼎城区\",\n    \"430721\": \"安乡县\",\n    \"430722\": \"汉寿县\",\n    \"430723\": \"澧县\",\n    \"430724\": \"临澧县\",\n    \"430725\": \"桃源县\",\n    \"430726\": \"石门县\",\n    \"430781\": \"津市市\",\n    \"430802\": \"永定区\",\n    \"430811\": \"武陵源区\",\n    \"430821\": \"慈利县\",\n    \"430822\": \"桑植县\",\n    \"430902\": \"资阳区\",\n    \"430903\": \"赫山区\",\n    \"430921\": \"南县\",\n    \"430922\": \"桃江县\",\n    \"430923\": \"安化县\",\n    \"430981\": \"沅江市\",\n    \"431002\": \"北湖区\",\n    \"431003\": \"苏仙区\",\n    \"431021\": \"桂阳县\",\n    \"431022\": \"宜章县\",\n    \"431023\": \"永兴县\",\n    \"431024\": \"嘉禾县\",\n    \"431025\": \"临武县\",\n    \"431026\": \"汝城县\",\n    \"431027\": \"桂东县\",\n    \"431028\": \"安仁县\",\n    \"431081\": \"资兴市\",\n    \"431102\": \"零陵区\",\n    \"431103\": \"冷水滩区\",\n    \"431121\": \"祁阳县\",\n    \"431122\": \"东安县\",\n    \"431123\": \"双牌县\",\n    \"431124\": \"道县\",\n    \"431125\": \"江永县\",\n    \"431126\": \"宁远县\",\n    \"431127\": \"蓝山县\",\n    \"431128\": \"新田县\",\n    \"431129\": \"江华瑶族自治县\",\n    \"431202\": \"鹤城区\",\n    \"431221\": \"中方县\",\n    \"431222\": \"沅陵县\",\n    \"431223\": \"辰溪县\",\n    \"431224\": \"溆浦县\",\n    \"431225\": \"会同县\",\n    \"431226\": \"麻阳苗族自治县\",\n    \"431227\": \"新晃侗族自治县\",\n    \"431228\": \"芷江侗族自治县\",\n    \"431229\": \"靖州苗族侗族自治县\",\n    \"431230\": \"通道侗族自治县\",\n    \"431281\": \"洪江市\",\n    \"431302\": \"娄星区\",\n    \"431321\": \"双峰县\",\n    \"431322\": \"新化县\",\n    \"431381\": \"冷水江市\",\n    \"431382\": \"涟源市\",\n    \"433101\": \"吉首市\",\n    \"433122\": \"泸溪县\",\n    \"433123\": \"凤凰县\",\n    \"433124\": \"花垣县\",\n    \"433125\": \"保靖县\",\n    \"433126\": \"古丈县\",\n    \"433127\": \"永顺县\",\n    \"433130\": \"龙山县\",\n    \"440103\": \"荔湾区\",\n    \"440104\": \"越秀区\",\n    \"440105\": \"海珠区\",\n    \"440106\": \"天河区\",\n    \"440111\": \"白云区\",\n    \"440112\": \"黄埔区\",\n    \"440113\": \"番禺区\",\n    \"440114\": \"花都区\",\n    \"440115\": \"南沙区\",\n    \"440117\": \"从化区\",\n    \"440118\": \"增城区\",\n    \"440203\": \"武江区\",\n    \"440204\": \"浈江区\",\n    \"440205\": \"曲江区\",\n    \"440222\": \"始兴县\",\n    \"440224\": \"仁化县\",\n    \"440229\": \"翁源县\",\n    \"440232\": \"乳源瑶族自治县\",\n    \"440233\": \"新丰县\",\n    \"440281\": \"乐昌市\",\n    \"440282\": \"南雄市\",\n    \"440303\": \"罗湖区\",\n    \"440304\": \"福田区\",\n    \"440305\": \"南山区\",\n    \"440306\": \"宝安区\",\n    \"440307\": \"龙岗区\",\n    \"440308\": \"盐田区\",\n    \"440402\": \"香洲区\",\n    \"440403\": \"斗门区\",\n    \"440404\": \"金湾区\",\n    \"440507\": \"龙湖区\",\n    \"440511\": \"金平区\",\n    \"440512\": \"濠江区\",\n    \"440513\": \"潮阳区\",\n    \"440514\": \"潮南区\",\n    \"440515\": \"澄海区\",\n    \"440523\": \"南澳县\",\n    \"440604\": \"禅城区\",\n    \"440605\": \"南海区\",\n    \"440606\": \"顺德区\",\n    \"440607\": \"三水区\",\n    \"440608\": \"高明区\",\n    \"440703\": \"蓬江区\",\n    \"440704\": \"江海区\",\n    \"440705\": \"新会区\",\n    \"440781\": \"台山市\",\n    \"440783\": \"开平市\",\n    \"440784\": \"鹤山市\",\n    \"440785\": \"恩平市\",\n    \"440802\": \"赤坎区\",\n    \"440803\": \"霞山区\",\n    \"440804\": \"坡头区\",\n    \"440811\": \"麻章区\",\n    \"440823\": \"遂溪县\",\n    \"440825\": \"徐闻县\",\n    \"440881\": \"廉江市\",\n    \"440882\": \"雷州市\",\n    \"440883\": \"吴川市\",\n    \"440902\": \"茂南区\",\n    \"440904\": \"电白区\",\n    \"440981\": \"高州市\",\n    \"440982\": \"化州市\",\n    \"440983\": \"信宜市\",\n    \"441202\": \"端州区\",\n    \"441203\": \"鼎湖区\",\n    \"441204\": \"高要区\",\n    \"441223\": \"广宁县\",\n    \"441224\": \"怀集县\",\n    \"441225\": \"封开县\",\n    \"441226\": \"德庆县\",\n    \"441284\": \"四会市\",\n    \"441302\": \"惠城区\",\n    \"441303\": \"惠阳区\",\n    \"441322\": \"博罗县\",\n    \"441323\": \"惠东县\",\n    \"441324\": \"龙门县\",\n    \"441402\": \"梅江区\",\n    \"441403\": \"梅县区\",\n    \"441422\": \"大埔县\",\n    \"441423\": \"丰顺县\",\n    \"441424\": \"五华县\",\n    \"441426\": \"平远县\",\n    \"441427\": \"蕉岭县\",\n    \"441481\": \"兴宁市\",\n    \"441502\": \"城区\",\n    \"441521\": \"海丰县\",\n    \"441523\": \"陆河县\",\n    \"441581\": \"陆丰市\",\n    \"441602\": \"源城区\",\n    \"441621\": \"紫金县\",\n    \"441622\": \"龙川县\",\n    \"441623\": \"连平县\",\n    \"441624\": \"和平县\",\n    \"441625\": \"东源县\",\n    \"441702\": \"江城区\",\n    \"441704\": \"阳东区\",\n    \"441721\": \"阳西县\",\n    \"441781\": \"阳春市\",\n    \"441802\": \"清城区\",\n    \"441803\": \"清新区\",\n    \"441821\": \"佛冈县\",\n    \"441823\": \"阳山县\",\n    \"441825\": \"连山壮族瑶族自治县\",\n    \"441826\": \"连南瑶族自治县\",\n    \"441881\": \"英德市\",\n    \"441882\": \"连州市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445102\": \"湘桥区\",\n    \"445103\": \"潮安区\",\n    \"445122\": \"饶平县\",\n    \"445202\": \"榕城区\",\n    \"445203\": \"揭东区\",\n    \"445222\": \"揭西县\",\n    \"445224\": \"惠来县\",\n    \"445281\": \"普宁市\",\n    \"445302\": \"云城区\",\n    \"445303\": \"云安区\",\n    \"445321\": \"新兴县\",\n    \"445322\": \"郁南县\",\n    \"445381\": \"罗定市\",\n    \"450102\": \"兴宁区\",\n    \"450103\": \"青秀区\",\n    \"450105\": \"江南区\",\n    \"450107\": \"西乡塘区\",\n    \"450108\": \"良庆区\",\n    \"450109\": \"邕宁区\",\n    \"450110\": \"武鸣区\",\n    \"450123\": \"隆安县\",\n    \"450124\": \"马山县\",\n    \"450125\": \"上林县\",\n    \"450126\": \"宾阳县\",\n    \"450127\": \"横县\",\n    \"450202\": \"城中区\",\n    \"450203\": \"鱼峰区\",\n    \"450204\": \"柳南区\",\n    \"450205\": \"柳北区\",\n    \"450206\": \"柳江区\",\n    \"450222\": \"柳城县\",\n    \"450223\": \"鹿寨县\",\n    \"450224\": \"融安县\",\n    \"450225\": \"融水苗族自治县\",\n    \"450226\": \"三江侗族自治县\",\n    \"450302\": \"秀峰区\",\n    \"450303\": \"叠彩区\",\n    \"450304\": \"象山区\",\n    \"450305\": \"七星区\",\n    \"450311\": \"雁山区\",\n    \"450312\": \"临桂区\",\n    \"450321\": \"阳朔县\",\n    \"450323\": \"灵川县\",\n    \"450324\": \"全州县\",\n    \"450325\": \"兴安县\",\n    \"450326\": \"永福县\",\n    \"450327\": \"灌阳县\",\n    \"450328\": \"龙胜各族自治县\",\n    \"450329\": \"资源县\",\n    \"450330\": \"平乐县\",\n    \"450331\": \"荔浦县\",\n    \"450332\": \"恭城瑶族自治县\",\n    \"450403\": \"万秀区\",\n    \"450405\": \"长洲区\",\n    \"450406\": \"龙圩区\",\n    \"450421\": \"苍梧县\",\n    \"450422\": \"藤县\",\n    \"450423\": \"蒙山县\",\n    \"450481\": \"岑溪市\",\n    \"450502\": \"海城区\",\n    \"450503\": \"银海区\",\n    \"450512\": \"铁山港区\",\n    \"450521\": \"合浦县\",\n    \"450602\": \"港口区\",\n    \"450603\": \"防城区\",\n    \"450621\": \"上思县\",\n    \"450681\": \"东兴市\",\n    \"450702\": \"钦南区\",\n    \"450703\": \"钦北区\",\n    \"450721\": \"灵山县\",\n    \"450722\": \"浦北县\",\n    \"450802\": \"港北区\",\n    \"450803\": \"港南区\",\n    \"450804\": \"覃塘区\",\n    \"450821\": \"平南县\",\n    \"450881\": \"桂平市\",\n    \"450902\": \"玉州区\",\n    \"450903\": \"福绵区\",\n    \"450921\": \"容县\",\n    \"450922\": \"陆川县\",\n    \"450923\": \"博白县\",\n    \"450924\": \"兴业县\",\n    \"450981\": \"北流市\",\n    \"451002\": \"右江区\",\n    \"451021\": \"田阳县\",\n    \"451022\": \"田东县\",\n    \"451023\": \"平果县\",\n    \"451024\": \"德保县\",\n    \"451026\": \"那坡县\",\n    \"451027\": \"凌云县\",\n    \"451028\": \"乐业县\",\n    \"451029\": \"田林县\",\n    \"451030\": \"西林县\",\n    \"451031\": \"隆林各族自治县\",\n    \"451081\": \"靖西市\",\n    \"451102\": \"八步区\",\n    \"451103\": \"平桂区\",\n    \"451121\": \"昭平县\",\n    \"451122\": \"钟山县\",\n    \"451123\": \"富川瑶族自治县\",\n    \"451202\": \"金城江区\",\n    \"451221\": \"南丹县\",\n    \"451222\": \"天峨县\",\n    \"451223\": \"凤山县\",\n    \"451224\": \"东兰县\",\n    \"451225\": \"罗城仫佬族自治县\",\n    \"451226\": \"环江毛南族自治县\",\n    \"451227\": \"巴马瑶族自治县\",\n    \"451228\": \"都安瑶族自治县\",\n    \"451229\": \"大化瑶族自治县\",\n    \"451281\": \"宜州市\",\n    \"451302\": \"兴宾区\",\n    \"451321\": \"忻城县\",\n    \"451322\": \"象州县\",\n    \"451323\": \"武宣县\",\n    \"451324\": \"金秀瑶族自治县\",\n    \"451381\": \"合山市\",\n    \"451402\": \"江州区\",\n    \"451421\": \"扶绥县\",\n    \"451422\": \"宁明县\",\n    \"451423\": \"龙州县\",\n    \"451424\": \"大新县\",\n    \"451425\": \"天等县\",\n    \"451481\": \"凭祥市\",\n    \"460105\": \"秀英区\",\n    \"460106\": \"龙华区\",\n    \"460107\": \"琼山区\",\n    \"460108\": \"美兰区\",\n    \"460201\": \"市辖区\",\n    \"460202\": \"海棠区\",\n    \"460203\": \"吉阳区\",\n    \"460204\": \"天涯区\",\n    \"460205\": \"崖州区\",\n    \"460321\": \"西沙群岛\",\n    \"460322\": \"南沙群岛\",\n    \"460323\": \"中沙群岛的岛礁及其海域\",\n    \"460400\": \"儋州市\",\n    \"469001\": \"五指山市\",\n    \"469002\": \"琼海市\",\n    \"469005\": \"文昌市\",\n    \"469006\": \"万宁市\",\n    \"469007\": \"东方市\",\n    \"469021\": \"定安县\",\n    \"469022\": \"屯昌县\",\n    \"469023\": \"澄迈县\",\n    \"469024\": \"临高县\",\n    \"469025\": \"白沙黎族自治县\",\n    \"469026\": \"昌江黎族自治县\",\n    \"469027\": \"乐东黎族自治县\",\n    \"469028\": \"陵水黎族自治县\",\n    \"469029\": \"保亭黎族苗族自治县\",\n    \"469030\": \"琼中黎族苗族自治县\",\n    \"500101\": \"万州区\",\n    \"500102\": \"涪陵区\",\n    \"500103\": \"渝中区\",\n    \"500104\": \"大渡口区\",\n    \"500105\": \"江北区\",\n    \"500106\": \"沙坪坝区\",\n    \"500107\": \"九龙坡区\",\n    \"500108\": \"南岸区\",\n    \"500109\": \"北碚区\",\n    \"500110\": \"綦江区\",\n    \"500111\": \"大足区\",\n    \"500112\": \"渝北区\",\n    \"500113\": \"巴南区\",\n    \"500114\": \"黔江区\",\n    \"500115\": \"长寿区\",\n    \"500116\": \"江津区\",\n    \"500117\": \"合川区\",\n    \"500118\": \"永川区\",\n    \"500119\": \"南川区\",\n    \"500120\": \"璧山区\",\n    \"500151\": \"铜梁区\",\n    \"500152\": \"潼南区\",\n    \"500153\": \"荣昌区\",\n    \"500154\": \"开州区\",\n    \"500228\": \"梁平县\",\n    \"500229\": \"城口县\",\n    \"500230\": \"丰都县\",\n    \"500231\": \"垫江县\",\n    \"500232\": \"武隆县\",\n    \"500233\": \"忠县\",\n    \"500235\": \"云阳县\",\n    \"500236\": \"奉节县\",\n    \"500237\": \"巫山县\",\n    \"500238\": \"巫溪县\",\n    \"500240\": \"石柱土家族自治县\",\n    \"500241\": \"秀山土家族苗族自治县\",\n    \"500242\": \"酉阳土家族苗族自治县\",\n    \"500243\": \"彭水苗族土家族自治县\",\n    \"510104\": \"锦江区\",\n    \"510105\": \"青羊区\",\n    \"510106\": \"金牛区\",\n    \"510107\": \"武侯区\",\n    \"510108\": \"成华区\",\n    \"510112\": \"龙泉驿区\",\n    \"510113\": \"青白江区\",\n    \"510114\": \"新都区\",\n    \"510115\": \"温江区\",\n    \"510116\": \"双流区\",\n    \"510121\": \"金堂县\",\n    \"510124\": \"郫县\",\n    \"510129\": \"大邑县\",\n    \"510131\": \"蒲江县\",\n    \"510132\": \"新津县\",\n    \"510181\": \"都江堰市\",\n    \"510182\": \"彭州市\",\n    \"510183\": \"邛崃市\",\n    \"510184\": \"崇州市\",\n    \"510185\": \"简阳市\",\n    \"510302\": \"自流井区\",\n    \"510303\": \"贡井区\",\n    \"510304\": \"大安区\",\n    \"510311\": \"沿滩区\",\n    \"510321\": \"荣县\",\n    \"510322\": \"富顺县\",\n    \"510402\": \"东区\",\n    \"510403\": \"西区\",\n    \"510411\": \"仁和区\",\n    \"510421\": \"米易县\",\n    \"510422\": \"盐边县\",\n    \"510502\": \"江阳区\",\n    \"510503\": \"纳溪区\",\n    \"510504\": \"龙马潭区\",\n    \"510521\": \"泸县\",\n    \"510522\": \"合江县\",\n    \"510524\": \"叙永县\",\n    \"510525\": \"古蔺县\",\n    \"510603\": \"旌阳区\",\n    \"510623\": \"中江县\",\n    \"510626\": \"罗江县\",\n    \"510681\": \"广汉市\",\n    \"510682\": \"什邡市\",\n    \"510683\": \"绵竹市\",\n    \"510703\": \"涪城区\",\n    \"510704\": \"游仙区\",\n    \"510705\": \"安州区\",\n    \"510722\": \"三台县\",\n    \"510723\": \"盐亭县\",\n    \"510725\": \"梓潼县\",\n    \"510726\": \"北川羌族自治县\",\n    \"510727\": \"平武县\",\n    \"510781\": \"江油市\",\n    \"510802\": \"利州区\",\n    \"510811\": \"昭化区\",\n    \"510812\": \"朝天区\",\n    \"510821\": \"旺苍县\",\n    \"510822\": \"青川县\",\n    \"510823\": \"剑阁县\",\n    \"510824\": \"苍溪县\",\n    \"510903\": \"船山区\",\n    \"510904\": \"安居区\",\n    \"510921\": \"蓬溪县\",\n    \"510922\": \"射洪县\",\n    \"510923\": \"大英县\",\n    \"511002\": \"市中区\",\n    \"511011\": \"东兴区\",\n    \"511024\": \"威远县\",\n    \"511025\": \"资中县\",\n    \"511028\": \"隆昌县\",\n    \"511102\": \"市中区\",\n    \"511111\": \"沙湾区\",\n    \"511112\": \"五通桥区\",\n    \"511113\": \"金口河区\",\n    \"511123\": \"犍为县\",\n    \"511124\": \"井研县\",\n    \"511126\": \"夹江县\",\n    \"511129\": \"沐川县\",\n    \"511132\": \"峨边彝族自治县\",\n    \"511133\": \"马边彝族自治县\",\n    \"511181\": \"峨眉山市\",\n    \"511302\": \"顺庆区\",\n    \"511303\": \"高坪区\",\n    \"511304\": \"嘉陵区\",\n    \"511321\": \"南部县\",\n    \"511322\": \"营山县\",\n    \"511323\": \"蓬安县\",\n    \"511324\": \"仪陇县\",\n    \"511325\": \"西充县\",\n    \"511381\": \"阆中市\",\n    \"511402\": \"东坡区\",\n    \"511403\": \"彭山区\",\n    \"511421\": \"仁寿县\",\n    \"511423\": \"洪雅县\",\n    \"511424\": \"丹棱县\",\n    \"511425\": \"青神县\",\n    \"511502\": \"翠屏区\",\n    \"511503\": \"南溪区\",\n    \"511521\": \"宜宾县\",\n    \"511523\": \"江安县\",\n    \"511524\": \"长宁县\",\n    \"511525\": \"高县\",\n    \"511526\": \"珙县\",\n    \"511527\": \"筠连县\",\n    \"511528\": \"兴文县\",\n    \"511529\": \"屏山县\",\n    \"511602\": \"广安区\",\n    \"511603\": \"前锋区\",\n    \"511621\": \"岳池县\",\n    \"511622\": \"武胜县\",\n    \"511623\": \"邻水县\",\n    \"511681\": \"华蓥市\",\n    \"511702\": \"通川区\",\n    \"511703\": \"达川区\",\n    \"511722\": \"宣汉县\",\n    \"511723\": \"开江县\",\n    \"511724\": \"大竹县\",\n    \"511725\": \"渠县\",\n    \"511781\": \"万源市\",\n    \"511802\": \"雨城区\",\n    \"511803\": \"名山区\",\n    \"511822\": \"荥经县\",\n    \"511823\": \"汉源县\",\n    \"511824\": \"石棉县\",\n    \"511825\": \"天全县\",\n    \"511826\": \"芦山县\",\n    \"511827\": \"宝兴县\",\n    \"511902\": \"巴州区\",\n    \"511903\": \"恩阳区\",\n    \"511921\": \"通江县\",\n    \"511922\": \"南江县\",\n    \"511923\": \"平昌县\",\n    \"512002\": \"雁江区\",\n    \"512021\": \"安岳县\",\n    \"512022\": \"乐至县\",\n    \"513201\": \"马尔康市\",\n    \"513221\": \"汶川县\",\n    \"513222\": \"理县\",\n    \"513223\": \"茂县\",\n    \"513224\": \"松潘县\",\n    \"513225\": \"九寨沟县\",\n    \"513226\": \"金川县\",\n    \"513227\": \"小金县\",\n    \"513228\": \"黑水县\",\n    \"513230\": \"壤塘县\",\n    \"513231\": \"阿坝县\",\n    \"513232\": \"若尔盖县\",\n    \"513233\": \"红原县\",\n    \"513301\": \"康定市\",\n    \"513322\": \"泸定县\",\n    \"513323\": \"丹巴县\",\n    \"513324\": \"九龙县\",\n    \"513325\": \"雅江县\",\n    \"513326\": \"道孚县\",\n    \"513327\": \"炉霍县\",\n    \"513328\": \"甘孜县\",\n    \"513329\": \"新龙县\",\n    \"513330\": \"德格县\",\n    \"513331\": \"白玉县\",\n    \"513332\": \"石渠县\",\n    \"513333\": \"色达县\",\n    \"513334\": \"理塘县\",\n    \"513335\": \"巴塘县\",\n    \"513336\": \"乡城县\",\n    \"513337\": \"稻城县\",\n    \"513338\": \"得荣县\",\n    \"513401\": \"西昌市\",\n    \"513422\": \"木里藏族自治县\",\n    \"513423\": \"盐源县\",\n    \"513424\": \"德昌县\",\n    \"513425\": \"会理县\",\n    \"513426\": \"会东县\",\n    \"513427\": \"宁南县\",\n    \"513428\": \"普格县\",\n    \"513429\": \"布拖县\",\n    \"513430\": \"金阳县\",\n    \"513431\": \"昭觉县\",\n    \"513432\": \"喜德县\",\n    \"513433\": \"冕宁县\",\n    \"513434\": \"越西县\",\n    \"513435\": \"甘洛县\",\n    \"513436\": \"美姑县\",\n    \"513437\": \"雷波县\",\n    \"520102\": \"南明区\",\n    \"520103\": \"云岩区\",\n    \"520111\": \"花溪区\",\n    \"520112\": \"乌当区\",\n    \"520113\": \"白云区\",\n    \"520115\": \"观山湖区\",\n    \"520121\": \"开阳县\",\n    \"520122\": \"息烽县\",\n    \"520123\": \"修文县\",\n    \"520181\": \"清镇市\",\n    \"520201\": \"钟山区\",\n    \"520203\": \"六枝特区\",\n    \"520221\": \"水城县\",\n    \"520222\": \"盘县\",\n    \"520302\": \"红花岗区\",\n    \"520303\": \"汇川区\",\n    \"520304\": \"播州区\",\n    \"520322\": \"桐梓县\",\n    \"520323\": \"绥阳县\",\n    \"520324\": \"正安县\",\n    \"520325\": \"道真仡佬族苗族自治县\",\n    \"520326\": \"务川仡佬族苗族自治县\",\n    \"520327\": \"凤冈县\",\n    \"520328\": \"湄潭县\",\n    \"520329\": \"余庆县\",\n    \"520330\": \"习水县\",\n    \"520381\": \"赤水市\",\n    \"520382\": \"仁怀市\",\n    \"520402\": \"西秀区\",\n    \"520403\": \"平坝区\",\n    \"520422\": \"普定县\",\n    \"520423\": \"镇宁布依族苗族自治县\",\n    \"520424\": \"关岭布依族苗族自治县\",\n    \"520425\": \"紫云苗族布依族自治县\",\n    \"520502\": \"七星关区\",\n    \"520521\": \"大方县\",\n    \"520522\": \"黔西县\",\n    \"520523\": \"金沙县\",\n    \"520524\": \"织金县\",\n    \"520525\": \"纳雍县\",\n    \"520526\": \"威宁彝族回族苗族自治县\",\n    \"520527\": \"赫章县\",\n    \"520602\": \"碧江区\",\n    \"520603\": \"万山区\",\n    \"520621\": \"江口县\",\n    \"520622\": \"玉屏侗族自治县\",\n    \"520623\": \"石阡县\",\n    \"520624\": \"思南县\",\n    \"520625\": \"印江土家族苗族自治县\",\n    \"520626\": \"德江县\",\n    \"520627\": \"沿河土家族自治县\",\n    \"520628\": \"松桃苗族自治县\",\n    \"522301\": \"兴义市\",\n    \"522322\": \"兴仁县\",\n    \"522323\": \"普安县\",\n    \"522324\": \"晴隆县\",\n    \"522325\": \"贞丰县\",\n    \"522326\": \"望谟县\",\n    \"522327\": \"册亨县\",\n    \"522328\": \"安龙县\",\n    \"522601\": \"凯里市\",\n    \"522622\": \"黄平县\",\n    \"522623\": \"施秉县\",\n    \"522624\": \"三穗县\",\n    \"522625\": \"镇远县\",\n    \"522626\": \"岑巩县\",\n    \"522627\": \"天柱县\",\n    \"522628\": \"锦屏县\",\n    \"522629\": \"剑河县\",\n    \"522630\": \"台江县\",\n    \"522631\": \"黎平县\",\n    \"522632\": \"榕江县\",\n    \"522633\": \"从江县\",\n    \"522634\": \"雷山县\",\n    \"522635\": \"麻江县\",\n    \"522636\": \"丹寨县\",\n    \"522701\": \"都匀市\",\n    \"522702\": \"福泉市\",\n    \"522722\": \"荔波县\",\n    \"522723\": \"贵定县\",\n    \"522725\": \"瓮安县\",\n    \"522726\": \"独山县\",\n    \"522727\": \"平塘县\",\n    \"522728\": \"罗甸县\",\n    \"522729\": \"长顺县\",\n    \"522730\": \"龙里县\",\n    \"522731\": \"惠水县\",\n    \"522732\": \"三都水族自治县\",\n    \"530102\": \"五华区\",\n    \"530103\": \"盘龙区\",\n    \"530111\": \"官渡区\",\n    \"530112\": \"西山区\",\n    \"530113\": \"东川区\",\n    \"530114\": \"呈贡区\",\n    \"530122\": \"晋宁县\",\n    \"530124\": \"富民县\",\n    \"530125\": \"宜良县\",\n    \"530126\": \"石林彝族自治县\",\n    \"530127\": \"嵩明县\",\n    \"530128\": \"禄劝彝族苗族自治县\",\n    \"530129\": \"寻甸回族彝族自治县\",\n    \"530181\": \"安宁市\",\n    \"530302\": \"麒麟区\",\n    \"530303\": \"沾益区\",\n    \"530321\": \"马龙县\",\n    \"530322\": \"陆良县\",\n    \"530323\": \"师宗县\",\n    \"530324\": \"罗平县\",\n    \"530325\": \"富源县\",\n    \"530326\": \"会泽县\",\n    \"530381\": \"宣威市\",\n    \"530402\": \"红塔区\",\n    \"530403\": \"江川区\",\n    \"530422\": \"澄江县\",\n    \"530423\": \"通海县\",\n    \"530424\": \"华宁县\",\n    \"530425\": \"易门县\",\n    \"530426\": \"峨山彝族自治县\",\n    \"530427\": \"新平彝族傣族自治县\",\n    \"530428\": \"元江哈尼族彝族傣族自治县\",\n    \"530502\": \"隆阳区\",\n    \"530521\": \"施甸县\",\n    \"530523\": \"龙陵县\",\n    \"530524\": \"昌宁县\",\n    \"530581\": \"腾冲市\",\n    \"530602\": \"昭阳区\",\n    \"530621\": \"鲁甸县\",\n    \"530622\": \"巧家县\",\n    \"530623\": \"盐津县\",\n    \"530624\": \"大关县\",\n    \"530625\": \"永善县\",\n    \"530626\": \"绥江县\",\n    \"530627\": \"镇雄县\",\n    \"530628\": \"彝良县\",\n    \"530629\": \"威信县\",\n    \"530630\": \"水富县\",\n    \"530702\": \"古城区\",\n    \"530721\": \"玉龙纳西族自治县\",\n    \"530722\": \"永胜县\",\n    \"530723\": \"华坪县\",\n    \"530724\": \"宁蒗彝族自治县\",\n    \"530802\": \"思茅区\",\n    \"530821\": \"宁洱哈尼族彝族自治县\",\n    \"530822\": \"墨江哈尼族自治县\",\n    \"530823\": \"景东彝族自治县\",\n    \"530824\": \"景谷傣族彝族自治县\",\n    \"530825\": \"镇沅彝族哈尼族拉祜族自治县\",\n    \"530826\": \"江城哈尼族彝族自治县\",\n    \"530827\": \"孟连傣族拉祜族佤族自治县\",\n    \"530828\": \"澜沧拉祜族自治县\",\n    \"530829\": \"西盟佤族自治县\",\n    \"530902\": \"临翔区\",\n    \"530921\": \"凤庆县\",\n    \"530922\": \"云县\",\n    \"530923\": \"永德县\",\n    \"530924\": \"镇康县\",\n    \"530925\": \"双江拉祜族佤族布朗族傣族自治县\",\n    \"530926\": \"耿马傣族佤族自治县\",\n    \"530927\": \"沧源佤族自治县\",\n    \"532301\": \"楚雄市\",\n    \"532322\": \"双柏县\",\n    \"532323\": \"牟定县\",\n    \"532324\": \"南华县\",\n    \"532325\": \"姚安县\",\n    \"532326\": \"大姚县\",\n    \"532327\": \"永仁县\",\n    \"532328\": \"元谋县\",\n    \"532329\": \"武定县\",\n    \"532331\": \"禄丰县\",\n    \"532501\": \"个旧市\",\n    \"532502\": \"开远市\",\n    \"532503\": \"蒙自市\",\n    \"532504\": \"弥勒市\",\n    \"532523\": \"屏边苗族自治县\",\n    \"532524\": \"建水县\",\n    \"532525\": \"石屏县\",\n    \"532527\": \"泸西县\",\n    \"532528\": \"元阳县\",\n    \"532529\": \"红河县\",\n    \"532530\": \"金平苗族瑶族傣族自治县\",\n    \"532531\": \"绿春县\",\n    \"532532\": \"河口瑶族自治县\",\n    \"532601\": \"文山市\",\n    \"532622\": \"砚山县\",\n    \"532623\": \"西畴县\",\n    \"532624\": \"麻栗坡县\",\n    \"532625\": \"马关县\",\n    \"532626\": \"丘北县\",\n    \"532627\": \"广南县\",\n    \"532628\": \"富宁县\",\n    \"532801\": \"景洪市\",\n    \"532822\": \"勐海县\",\n    \"532823\": \"勐腊县\",\n    \"532901\": \"大理市\",\n    \"532922\": \"漾濞彝族自治县\",\n    \"532923\": \"祥云县\",\n    \"532924\": \"宾川县\",\n    \"532925\": \"弥渡县\",\n    \"532926\": \"南涧彝族自治县\",\n    \"532927\": \"巍山彝族回族自治县\",\n    \"532928\": \"永平县\",\n    \"532929\": \"云龙县\",\n    \"532930\": \"洱源县\",\n    \"532931\": \"剑川县\",\n    \"532932\": \"鹤庆县\",\n    \"533102\": \"瑞丽市\",\n    \"533103\": \"芒市\",\n    \"533122\": \"梁河县\",\n    \"533123\": \"盈江县\",\n    \"533124\": \"陇川县\",\n    \"533301\": \"泸水市\",\n    \"533323\": \"福贡县\",\n    \"533324\": \"贡山独龙族怒族自治县\",\n    \"533325\": \"兰坪白族普米族自治县\",\n    \"533401\": \"香格里拉市\",\n    \"533422\": \"德钦县\",\n    \"533423\": \"维西傈僳族自治县\",\n    \"540102\": \"城关区\",\n    \"540103\": \"堆龙德庆区\",\n    \"540121\": \"林周县\",\n    \"540122\": \"当雄县\",\n    \"540123\": \"尼木县\",\n    \"540124\": \"曲水县\",\n    \"540126\": \"达孜县\",\n    \"540127\": \"墨竹工卡县\",\n    \"540202\": \"桑珠孜区\",\n    \"540221\": \"南木林县\",\n    \"540222\": \"江孜县\",\n    \"540223\": \"定日县\",\n    \"540224\": \"萨迦县\",\n    \"540225\": \"拉孜县\",\n    \"540226\": \"昂仁县\",\n    \"540227\": \"谢通门县\",\n    \"540228\": \"白朗县\",\n    \"540229\": \"仁布县\",\n    \"540230\": \"康马县\",\n    \"540231\": \"定结县\",\n    \"540232\": \"仲巴县\",\n    \"540233\": \"亚东县\",\n    \"540234\": \"吉隆县\",\n    \"540235\": \"聂拉木县\",\n    \"540236\": \"萨嘎县\",\n    \"540237\": \"岗巴县\",\n    \"540302\": \"卡若区\",\n    \"540321\": \"江达县\",\n    \"540322\": \"贡觉县\",\n    \"540323\": \"类乌齐县\",\n    \"540324\": \"丁青县\",\n    \"540325\": \"察雅县\",\n    \"540326\": \"八宿县\",\n    \"540327\": \"左贡县\",\n    \"540328\": \"芒康县\",\n    \"540329\": \"洛隆县\",\n    \"540330\": \"边坝县\",\n    \"540402\": \"巴宜区\",\n    \"540421\": \"工布江达县\",\n    \"540422\": \"米林县\",\n    \"540423\": \"墨脱县\",\n    \"540424\": \"波密县\",\n    \"540425\": \"察隅县\",\n    \"540426\": \"朗县\",\n    \"540502\": \"乃东区\",\n    \"540521\": \"扎囊县\",\n    \"540522\": \"贡嘎县\",\n    \"540523\": \"桑日县\",\n    \"540524\": \"琼结县\",\n    \"540525\": \"曲松县\",\n    \"540526\": \"措美县\",\n    \"540527\": \"洛扎县\",\n    \"540528\": \"加查县\",\n    \"540529\": \"隆子县\",\n    \"540530\": \"错那县\",\n    \"540531\": \"浪卡子县\",\n    \"542421\": \"那曲县\",\n    \"542422\": \"嘉黎县\",\n    \"542423\": \"比如县\",\n    \"542424\": \"聂荣县\",\n    \"542425\": \"安多县\",\n    \"542426\": \"申扎县\",\n    \"542427\": \"索县\",\n    \"542428\": \"班戈县\",\n    \"542429\": \"巴青县\",\n    \"542430\": \"尼玛县\",\n    \"542431\": \"双湖县\",\n    \"542521\": \"普兰县\",\n    \"542522\": \"札达县\",\n    \"542523\": \"噶尔县\",\n    \"542524\": \"日土县\",\n    \"542525\": \"革吉县\",\n    \"542526\": \"改则县\",\n    \"542527\": \"措勤县\",\n    \"610102\": \"新城区\",\n    \"610103\": \"碑林区\",\n    \"610104\": \"莲湖区\",\n    \"610111\": \"灞桥区\",\n    \"610112\": \"未央区\",\n    \"610113\": \"雁塔区\",\n    \"610114\": \"阎良区\",\n    \"610115\": \"临潼区\",\n    \"610116\": \"长安区\",\n    \"610117\": \"高陵区\",\n    \"610122\": \"蓝田县\",\n    \"610124\": \"周至县\",\n    \"610125\": \"户县\",\n    \"610202\": \"王益区\",\n    \"610203\": \"印台区\",\n    \"610204\": \"耀州区\",\n    \"610222\": \"宜君县\",\n    \"610302\": \"渭滨区\",\n    \"610303\": \"金台区\",\n    \"610304\": \"陈仓区\",\n    \"610322\": \"凤翔县\",\n    \"610323\": \"岐山县\",\n    \"610324\": \"扶风县\",\n    \"610326\": \"眉县\",\n    \"610327\": \"陇县\",\n    \"610328\": \"千阳县\",\n    \"610329\": \"麟游县\",\n    \"610330\": \"凤县\",\n    \"610331\": \"太白县\",\n    \"610402\": \"秦都区\",\n    \"610403\": \"杨陵区\",\n    \"610404\": \"渭城区\",\n    \"610422\": \"三原县\",\n    \"610423\": \"泾阳县\",\n    \"610424\": \"乾县\",\n    \"610425\": \"礼泉县\",\n    \"610426\": \"永寿县\",\n    \"610427\": \"彬县\",\n    \"610428\": \"长武县\",\n    \"610429\": \"旬邑县\",\n    \"610430\": \"淳化县\",\n    \"610431\": \"武功县\",\n    \"610481\": \"兴平市\",\n    \"610502\": \"临渭区\",\n    \"610503\": \"华州区\",\n    \"610522\": \"潼关县\",\n    \"610523\": \"大荔县\",\n    \"610524\": \"合阳县\",\n    \"610525\": \"澄城县\",\n    \"610526\": \"蒲城县\",\n    \"610527\": \"白水县\",\n    \"610528\": \"富平县\",\n    \"610581\": \"韩城市\",\n    \"610582\": \"华阴市\",\n    \"610602\": \"宝塔区\",\n    \"610603\": \"安塞区\",\n    \"610621\": \"延长县\",\n    \"610622\": \"延川县\",\n    \"610623\": \"子长县\",\n    \"610625\": \"志丹县\",\n    \"610626\": \"吴起县\",\n    \"610627\": \"甘泉县\",\n    \"610628\": \"富县\",\n    \"610629\": \"洛川县\",\n    \"610630\": \"宜川县\",\n    \"610631\": \"黄龙县\",\n    \"610632\": \"黄陵县\",\n    \"610702\": \"汉台区\",\n    \"610721\": \"南郑县\",\n    \"610722\": \"城固县\",\n    \"610723\": \"洋县\",\n    \"610724\": \"西乡县\",\n    \"610725\": \"勉县\",\n    \"610726\": \"宁强县\",\n    \"610727\": \"略阳县\",\n    \"610728\": \"镇巴县\",\n    \"610729\": \"留坝县\",\n    \"610730\": \"佛坪县\",\n    \"610802\": \"榆阳区\",\n    \"610803\": \"横山区\",\n    \"610821\": \"神木县\",\n    \"610822\": \"府谷县\",\n    \"610824\": \"靖边县\",\n    \"610825\": \"定边县\",\n    \"610826\": \"绥德县\",\n    \"610827\": \"米脂县\",\n    \"610828\": \"佳县\",\n    \"610829\": \"吴堡县\",\n    \"610830\": \"清涧县\",\n    \"610831\": \"子洲县\",\n    \"610902\": \"汉滨区\",\n    \"610921\": \"汉阴县\",\n    \"610922\": \"石泉县\",\n    \"610923\": \"宁陕县\",\n    \"610924\": \"紫阳县\",\n    \"610925\": \"岚皋县\",\n    \"610926\": \"平利县\",\n    \"610927\": \"镇坪县\",\n    \"610928\": \"旬阳县\",\n    \"610929\": \"白河县\",\n    \"611002\": \"商州区\",\n    \"611021\": \"洛南县\",\n    \"611022\": \"丹凤县\",\n    \"611023\": \"商南县\",\n    \"611024\": \"山阳县\",\n    \"611025\": \"镇安县\",\n    \"611026\": \"柞水县\",\n    \"620102\": \"城关区\",\n    \"620103\": \"七里河区\",\n    \"620104\": \"西固区\",\n    \"620105\": \"安宁区\",\n    \"620111\": \"红古区\",\n    \"620121\": \"永登县\",\n    \"620122\": \"皋兰县\",\n    \"620123\": \"榆中县\",\n    \"620201\": \"嘉峪关市\",\n    \"620302\": \"金川区\",\n    \"620321\": \"永昌县\",\n    \"620402\": \"白银区\",\n    \"620403\": \"平川区\",\n    \"620421\": \"靖远县\",\n    \"620422\": \"会宁县\",\n    \"620423\": \"景泰县\",\n    \"620502\": \"秦州区\",\n    \"620503\": \"麦积区\",\n    \"620521\": \"清水县\",\n    \"620522\": \"秦安县\",\n    \"620523\": \"甘谷县\",\n    \"620524\": \"武山县\",\n    \"620525\": \"张家川回族自治县\",\n    \"620602\": \"凉州区\",\n    \"620621\": \"民勤县\",\n    \"620622\": \"古浪县\",\n    \"620623\": \"天祝藏族自治县\",\n    \"620702\": \"甘州区\",\n    \"620721\": \"肃南裕固族自治县\",\n    \"620722\": \"民乐县\",\n    \"620723\": \"临泽县\",\n    \"620724\": \"高台县\",\n    \"620725\": \"山丹县\",\n    \"620802\": \"崆峒区\",\n    \"620821\": \"泾川县\",\n    \"620822\": \"灵台县\",\n    \"620823\": \"崇信县\",\n    \"620824\": \"华亭县\",\n    \"620825\": \"庄浪县\",\n    \"620826\": \"静宁县\",\n    \"620902\": \"肃州区\",\n    \"620921\": \"金塔县\",\n    \"620922\": \"瓜州县\",\n    \"620923\": \"肃北蒙古族自治县\",\n    \"620924\": \"阿克塞哈萨克族自治县\",\n    \"620981\": \"玉门市\",\n    \"620982\": \"敦煌市\",\n    \"621002\": \"西峰区\",\n    \"621021\": \"庆城县\",\n    \"621022\": \"环县\",\n    \"621023\": \"华池县\",\n    \"621024\": \"合水县\",\n    \"621025\": \"正宁县\",\n    \"621026\": \"宁县\",\n    \"621027\": \"镇原县\",\n    \"621102\": \"安定区\",\n    \"621121\": \"通渭县\",\n    \"621122\": \"陇西县\",\n    \"621123\": \"渭源县\",\n    \"621124\": \"临洮县\",\n    \"621125\": \"漳县\",\n    \"621126\": \"岷县\",\n    \"621202\": \"武都区\",\n    \"621221\": \"成县\",\n    \"621222\": \"文县\",\n    \"621223\": \"宕昌县\",\n    \"621224\": \"康县\",\n    \"621225\": \"西和县\",\n    \"621226\": \"礼县\",\n    \"621227\": \"徽县\",\n    \"621228\": \"两当县\",\n    \"622901\": \"临夏市\",\n    \"622921\": \"临夏县\",\n    \"622922\": \"康乐县\",\n    \"622923\": \"永靖县\",\n    \"622924\": \"广河县\",\n    \"622925\": \"和政县\",\n    \"622926\": \"东乡族自治县\",\n    \"622927\": \"积石山保安族东乡族撒拉族自治县\",\n    \"623001\": \"合作市\",\n    \"623021\": \"临潭县\",\n    \"623022\": \"卓尼县\",\n    \"623023\": \"舟曲县\",\n    \"623024\": \"迭部县\",\n    \"623025\": \"玛曲县\",\n    \"623026\": \"碌曲县\",\n    \"623027\": \"夏河县\",\n    \"630102\": \"城东区\",\n    \"630103\": \"城中区\",\n    \"630104\": \"城西区\",\n    \"630105\": \"城北区\",\n    \"630121\": \"大通回族土族自治县\",\n    \"630122\": \"湟中县\",\n    \"630123\": \"湟源县\",\n    \"630202\": \"乐都区\",\n    \"630203\": \"平安区\",\n    \"630222\": \"民和回族土族自治县\",\n    \"630223\": \"互助土族自治县\",\n    \"630224\": \"化隆回族自治县\",\n    \"630225\": \"循化撒拉族自治县\",\n    \"632221\": \"门源回族自治县\",\n    \"632222\": \"祁连县\",\n    \"632223\": \"海晏县\",\n    \"632224\": \"刚察县\",\n    \"632321\": \"同仁县\",\n    \"632322\": \"尖扎县\",\n    \"632323\": \"泽库县\",\n    \"632324\": \"河南蒙古族自治县\",\n    \"632521\": \"共和县\",\n    \"632522\": \"同德县\",\n    \"632523\": \"贵德县\",\n    \"632524\": \"兴海县\",\n    \"632525\": \"贵南县\",\n    \"632621\": \"玛沁县\",\n    \"632622\": \"班玛县\",\n    \"632623\": \"甘德县\",\n    \"632624\": \"达日县\",\n    \"632625\": \"久治县\",\n    \"632626\": \"玛多县\",\n    \"632701\": \"玉树市\",\n    \"632722\": \"杂多县\",\n    \"632723\": \"称多县\",\n    \"632724\": \"治多县\",\n    \"632725\": \"囊谦县\",\n    \"632726\": \"曲麻莱县\",\n    \"632801\": \"格尔木市\",\n    \"632802\": \"德令哈市\",\n    \"632821\": \"乌兰县\",\n    \"632822\": \"都兰县\",\n    \"632823\": \"天峻县\",\n    \"640104\": \"兴庆区\",\n    \"640105\": \"西夏区\",\n    \"640106\": \"金凤区\",\n    \"640121\": \"永宁县\",\n    \"640122\": \"贺兰县\",\n    \"640181\": \"灵武市\",\n    \"640202\": \"大武口区\",\n    \"640205\": \"惠农区\",\n    \"640221\": \"平罗县\",\n    \"640302\": \"利通区\",\n    \"640303\": \"红寺堡区\",\n    \"640323\": \"盐池县\",\n    \"640324\": \"同心县\",\n    \"640381\": \"青铜峡市\",\n    \"640402\": \"原州区\",\n    \"640422\": \"西吉县\",\n    \"640423\": \"隆德县\",\n    \"640424\": \"泾源县\",\n    \"640425\": \"彭阳县\",\n    \"640502\": \"沙坡头区\",\n    \"640521\": \"中宁县\",\n    \"640522\": \"海原县\",\n    \"650102\": \"天山区\",\n    \"650103\": \"沙依巴克区\",\n    \"650104\": \"新市区\",\n    \"650105\": \"水磨沟区\",\n    \"650106\": \"头屯河区\",\n    \"650107\": \"达坂城区\",\n    \"650109\": \"米东区\",\n    \"650121\": \"乌鲁木齐县\",\n    \"650202\": \"独山子区\",\n    \"650203\": \"克拉玛依区\",\n    \"650204\": \"白碱滩区\",\n    \"650205\": \"乌尔禾区\",\n    \"650402\": \"高昌区\",\n    \"650421\": \"鄯善县\",\n    \"650422\": \"托克逊县\",\n    \"650502\": \"伊州区\",\n    \"650521\": \"巴里坤哈萨克自治县\",\n    \"650522\": \"伊吾县\",\n    \"652301\": \"昌吉市\",\n    \"652302\": \"阜康市\",\n    \"652323\": \"呼图壁县\",\n    \"652324\": \"玛纳斯县\",\n    \"652325\": \"奇台县\",\n    \"652327\": \"吉木萨尔县\",\n    \"652328\": \"木垒哈萨克自治县\",\n    \"652701\": \"博乐市\",\n    \"652702\": \"阿拉山口市\",\n    \"652722\": \"精河县\",\n    \"652723\": \"温泉县\",\n    \"652801\": \"库尔勒市\",\n    \"652822\": \"轮台县\",\n    \"652823\": \"尉犁县\",\n    \"652824\": \"若羌县\",\n    \"652825\": \"且末县\",\n    \"652826\": \"焉耆回族自治县\",\n    \"652827\": \"和静县\",\n    \"652828\": \"和硕县\",\n    \"652829\": \"博湖县\",\n    \"652901\": \"阿克苏市\",\n    \"652922\": \"温宿县\",\n    \"652923\": \"库车县\",\n    \"652924\": \"沙雅县\",\n    \"652925\": \"新和县\",\n    \"652926\": \"拜城县\",\n    \"652927\": \"乌什县\",\n    \"652928\": \"阿瓦提县\",\n    \"652929\": \"柯坪县\",\n    \"653001\": \"阿图什市\",\n    \"653022\": \"阿克陶县\",\n    \"653023\": \"阿合奇县\",\n    \"653024\": \"乌恰县\",\n    \"653101\": \"喀什市\",\n    \"653121\": \"疏附县\",\n    \"653122\": \"疏勒县\",\n    \"653123\": \"英吉沙县\",\n    \"653124\": \"泽普县\",\n    \"653125\": \"莎车县\",\n    \"653126\": \"叶城县\",\n    \"653127\": \"麦盖提县\",\n    \"653128\": \"岳普湖县\",\n    \"653129\": \"伽师县\",\n    \"653130\": \"巴楚县\",\n    \"653131\": \"塔什库尔干塔吉克自治县\",\n    \"653201\": \"和田市\",\n    \"653221\": \"和田县\",\n    \"653222\": \"墨玉县\",\n    \"653223\": \"皮山县\",\n    \"653224\": \"洛浦县\",\n    \"653225\": \"策勒县\",\n    \"653226\": \"于田县\",\n    \"653227\": \"民丰县\",\n    \"654002\": \"伊宁市\",\n    \"654003\": \"奎屯市\",\n    \"654004\": \"霍尔果斯市\",\n    \"654021\": \"伊宁县\",\n    \"654022\": \"察布查尔锡伯自治县\",\n    \"654023\": \"霍城县\",\n    \"654024\": \"巩留县\",\n    \"654025\": \"新源县\",\n    \"654026\": \"昭苏县\",\n    \"654027\": \"特克斯县\",\n    \"654028\": \"尼勒克县\",\n    \"654201\": \"塔城市\",\n    \"654202\": \"乌苏市\",\n    \"654221\": \"额敏县\",\n    \"654223\": \"沙湾县\",\n    \"654224\": \"托里县\",\n    \"654225\": \"裕民县\",\n    \"654226\": \"和布克赛尔蒙古自治县\",\n    \"654301\": \"阿勒泰市\",\n    \"654321\": \"布尔津县\",\n    \"654322\": \"富蕴县\",\n    \"654323\": \"福海县\",\n    \"654324\": \"哈巴河县\",\n    \"654325\": \"青河县\",\n    \"654326\": \"吉木乃县\",\n    \"659001\": \"石河子市\",\n    \"659002\": \"阿拉尔市\",\n    \"659003\": \"图木舒克市\",\n    \"659004\": \"五家渠市\",\n    \"659006\": \"铁门关市\"\n  }\n}\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-address-edit/index.vue",
    "content": "<template>\n  <div>\n    <van-nav-bar title=\"编辑地址\" left-text=\"返回\" left-arrow @click-left=\"goback\"/>\n    <van-address-edit\n      style=\"background-color: #fff;\"\n      :areaList=\"areaList\"\n      :addressInfo=\"addressInfo\"\n      show-set-default\n      show-delete\n      @save=\"onSave\"\n      @delete=\"onDelete\"\n    />\n  </div>\n</template>\n\n<script>\nimport { AddressEdit, NavBar } from 'vant';\nimport areaList from './area.json';\nimport { addressDetail, addressSave, addressDelete } from '@/api/api';\nimport { removeLocalStorage } from '@/utils/local-storage';\n\nexport default {\n  name: 'address-edit',\n\n  data() {\n    return {\n      areaList,\n      addressId: 0,\n      addressInfo: {}\n    };\n  },\n  created() {\n    this.addressId = this.$route.query.addressId;\n    if (this.addressId !== -1 && this.addressId !== 0) {\n      this.init();\n    }\n  },\n\n  methods: {\n    init() {\n      addressDetail({id: this.addressId}).then(res => {\n        this.addressInfo = res.data.data;\n      });\n    },\n    onSave(content) {\n      addressSave(content).then(res => {\n        this.$toast('成功');\n        this.$router.go(-1);\n      });\n    },\n    onDelete(content) {\n      addressDelete({ id: content.id });\n      removeLocalStorage('AddressId')\n      this.$router.go(-1);\n    },\n    goback() {\n      this.$router.go(-1);\n    }\n  },\n\n  components: {\n    [NavBar.name]: NavBar,\n    [AddressEdit.name]: AddressEdit\n  }\n};\n</script>\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-collect/index.vue",
    "content": "<template>\n  <div class=\"user_collect\">\n    <van-list v-model=\"loading\"\n              :finished=\"finished\"\n              :immediate-check=\"false\"\n              finished-text=\"没有更多了\"\n              @load=\"getCollectList\">\n      <van-card v-for=\"(item, i) in list\"\n                :key=\"i\"\n                :desc=\"item.brief\"\n                :title=\"item.name\"\n                :thumb=\"item.picUrl\"\n                :price=\"item.retailPrice\"\n                :origin-price=\"item.counterPrice\"\n                @click=\"itemClick(item.valueId)\">\n        <div slot=\"footer\">\n          <van-button size=\"mini\"\n                      icon=\"lajitong\"\n                      @click.stop=\"cancelCollect($event, i,item)\">删除</van-button>\n        </div>\n      </van-card>\n    </van-list>\n\n    <is-empty v-if=\"list.length === 0\">没有商品收藏</is-empty>\n\n  </div>\n</template>\n\n<script>\nimport { collectList, collectAddOrDelete } from '@/api/api';\nimport IsEmpty from '@/components/is-empty/';\nimport { Card, Search, List } from 'vant';\nimport scrollFixed from '@/mixin/scroll-fixed';\n\nexport default {\n  mixins: [scrollFixed],\n\n  data() {\n    return {\n      list: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  created() {\n    this.init();\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.list = [];\n      this.getCollectList()\n    },\n    getCollectList() {\n      this.page++;\n      collectList({ type: 0, page: this.page, limit: this.limit }).then(res => {\n        this.list.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    cancelCollect(event, i, item) {\n      this.$dialog.confirm({ message: '是否取消收藏该商品' }).then(() => {\n        collectAddOrDelete({ valueId: item.valueId, type: 0 }).then(res => {\n          this.list.splice(i, 1);\n        });\n      });\n    },\n    itemClick(id) {\n      this.$router.push(`/items/detail/${id}`);\n    }\n  },\n\n  components: {\n    [Search.name]: Search,\n    [IsEmpty.name]: IsEmpty,\n    [List.name]: List,\n    [Card.name]: Card\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.clear_invalid {\n  width: 120px;\n  color: $font-color-gray;\n  border: 1px solid $font-color-gray;\n  margin: 0 auto;\n  text-align: center;\n  padding: 5px 3px;\n  margin-top: 20px;\n  border-radius: 3px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-feedback/index.vue",
    "content": "<template>\n  <div>\n<van-cell-group title=\"反馈类型\">\n    <van-cell class=\"order-coupon\" :title=\"type\" is-link arrow-direction=\"down\" @click=\"showList = true\" />\n</van-cell-group>\n<van-cell-group title=\"反馈内容\">\n\n  <van-field v-model=\"content\" \n    clearable autosize center\n    placeholder=\"对我们网站、商品、服务，你还有什么建议吗？你还希望在商城上买到什么？请告诉我们...\" \n    type=\"textarea\"\n    rows=\"10\"\n    size=\"large\"\n    />\n</van-cell-group>\n\n<van-cell-group title=\"联系方式\">\n\n   <van-field size=\"large\" v-model=\"mobile\" placeholder=\"请输入联系电话，方便我们与您联系\" />\n   </van-cell-group>\n\n<van-button size=\"large\" type=\"primary\" @click=\"submit\">提交</van-button>\n\n\n<van-popup v-model=\"showList\" position=\"bottom\">\n<van-picker :columns=\"types\" @change=\"onType\" />\n</van-popup>\n  </div>\n</template>\n\n<script>\nimport { Field , Picker, Popup, Button } from 'vant';\nimport { feedbackAdd } from '@/api/api';\n\nexport default {\n  data() {\n    return {\n      mobile: '',\n      content: '',\n      showList: false,\n      types:['商品相关', '功能异常', '优化建议', '其他'],\n      type: ''\n    };\n  },\n  created() {\n  },\n  methods: {\n    onType(picker, value, index) {\n      this.type = value\n      this.showList = false\n    },\n    submit() {\n      if(this.mobile === ''){\n        this.$toast(\"请输入联系电话\");\n        return;\n      }\n      if(this.type === ''){\n        this.$toast(\"请选择反馈类型\");\n        return;\n      }\n      if(this.content === ''){\n        this.$toast(\"请输入反馈内容\");\n        return;\n      }      \n      feedbackAdd({ mobile: this.mobile, feedType: this.type, content: this.content}).then(res => {\n        this.$toast(\"感谢您的宝贵意见！\");\n        this.$router.go(-1);\n      })\n    }\n  },\n\n  components: {\n    [Field.name]: Field,\n    [Popup.name]: Popup,\n    [Button.name]: Button,\n    [Picker.name]: Picker\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.addressGroup {\n  margin-bottom: 10px;\n  &:last-child {\n    margin-bottom: 0;\n  }\n}\n\n.bottom_btn {\n  position: fixed;\n  bottom: 0;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/module-help/index.vue",
    "content": "<template>\n  <div>\n <van-collapse :accordion=\"true\" v-model=\"activeNames\">\n  <van-collapse-item :title=\"issue.question\" :name=\"index\" v-for=\"(issue, index) in issueList\" :key=\"index\">\n    {{issue.answer}}  \n  </van-collapse-item>\n</van-collapse>\n  </div>\n</template>\n\n<script>\nimport { Collapse, CollapseItem } from 'vant';\nimport { issueList } from '@/api/api';\n\nexport default {\n  data() {\n    return {\n      activeNames: [-1],\n      issueList: []\n    };\n  },\n  created() {\n    this.getIssueList();\n  },\n  methods: {\n    getIssueList() {\n      issueList().then(res => {\n        this.issueList = res.data.data.list\n      })\n    }\n  },\n\n  components: {\n    [Collapse.name]: Collapse,\n    [CollapseItem.name]: CollapseItem\n  }\n};\n</script>"
  },
  {
    "path": "litemall-vue/src/views/user/module-server/index.vue",
    "content": "<template>\n  <div>\n    <van-cell-group>\n      <van-cell title=\"联系客服\" @click=\"showKefu = true\" isLink></van-cell>\n      <van-cell title=\"意见反馈\" to=\"/user/feedback\" isLink></van-cell>\n      <van-cell title=\"常见问题\" to=\"/user/help\" isLink/>\n    </van-cell-group>\n    <van-popup v-model=\"showKefu\">\n      <van-cell-group>\n        <van-cell title=\"项目名称\" value=\"litemall\" />\n        <van-cell title=\"项目地址\" value=\"Github\"  url=\"https://github.com/linlinjava/litemall\"/>\n        <van-cell title=\"项目地址\" value=\"Gitee\"  url=\"https://gitee.com/linlinjava/litemall\"/>\n        <van-cell title=\"联系电话\" value=\"021-xxxx-xxxx\" />\n        <van-cell title=\"联系QQ\" value=\"738696120\" />\n        <van-cell title=\"当前版本\" value=\"V1.0\" />\n        <van-cell title=\"开源协议\" value=\"MIT\" />\n      </van-cell-group>\n    </van-popup>\n  </div>\n</template>\n\n<script>\nimport { Popup, Cell, CellGroup } from 'vant';\n\nexport default {\n  data() {\n    return {\n      showKefu: false\n    };\n  },\n\n  components: {\n    [Popup.name]: Popup,\n    [Cell.name]: Cell, \n    [CellGroup.name]: CellGroup    \n  }\n};\n</script>\n<style scoped lang=\"scss\">\n  .van-popup {\n    width: 80%;\n    padding: 20px;\n    box-sizing: border-box;\n\n  }\n</style>"
  },
  {
    "path": "litemall-vue/src/views/user/order-list/index.vue",
    "content": "<template>\n  <div class=\"order_list\">\n    <van-tabs v-model=\"activeIndex\"\n              :swipe-threshold=\"5\"\n              @click=\"handleTabClick\">\n      <van-tab v-for=\"(tabTitle, index) in tabTitles\"\n               :title=\"tabTitle\"\n               :key=\"index\">\n        <van-list v-model=\"loading\"\n                  :finished=\"finished\"\n                  :immediate-check=\"false\"\n                  finished-text=\"没有更多了\"\n                  @load=\"getOrderList\">\n          <van-panel v-for=\"(el, i) in orderList\"\n                     :key=\"i\"\n                     :title=\"'订单编号: ' + el.orderSn\"\n                     :status=\"el.orderStatusText\"\n                     @click.native=\"toOrderDetail(el.id)\">\n            <van-card v-for=\"(goods, goodsI) in el.goodsList\"\n                      :key=\"goodsI\"\n                      :title=\"goods.goodsName\"\n                      :num=\"goods.number\"\n                      :thumb=\"goods.picUrl\">\n              <div slot=\"desc\">\n                <div class=\"desc\">\n                  <van-tag plain\n                           style=\"margin-right:6px;\"\n                           v-for=\"(spec, index) in goods.specifications\"\n                           :key=\"index\">\n                    {{spec}}\n                  </van-tag>\n                </div>\n              </div>\n            </van-card>\n            <div class=\"total\">合计: {{el.actualPrice * 100 | yuan}}（含运费{{el.post_fee | yuan}}）</div>\n\n            <div slot=\"footer\"\n                 class=\"footer_btn\">\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.cancel\"\n                          @click.stop=\"cancelOrder(el.id)\">取消订单</van-button>\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.pay\"\n                          type=\"danger\"\n                          @click.stop=\"toPay(el.id)\">去支付</van-button>\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.refund\"\n                          type=\"danger\"\n                          @click.stop=\"refundOrder(el.id)\">退款</van-button>\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.confirm\"\n                          type=\"danger\"\n                          @click.stop=\"confirmOrder(el.id)\">确认收货</van-button>\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.delete\"\n                          @click.stop=\"delOrder(el.id)\">删除订单</van-button>\n              <van-button size=\"small\"\n                          v-if=\"el.handleOption.comment\"\n                          @click.stop=\"commentOrder(el.id)\">去评价</van-button>\n            </div>\n\n          </van-panel>\n\n        </van-list>\n\n      </van-tab>\n    </van-tabs>\n  </div>\n</template>\n\n<script>\nimport { orderList, orderDelete, orderConfirm, orderCancel, orderRefund } from '@/api/api';\nimport _ from 'lodash';\nimport { Tab, Tabs, Panel, Card, List, Tag } from 'vant';\n\nexport default {\n  name: 'order-list',\n\n  props: {\n    active: {\n      type: [String, Number],\n      default: 0\n    }\n  },\n  created() {\n    this.init();\n  },\n  data() {\n    return {\n      activeIndex: Number(this.active),\n      tabTitles: ['全部', '待付款', '待发货', '待收货', '待评价'],\n      orderList: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false\n    };\n  },\n\n  methods: {\n    init() {\n      this.page = 0;\n      this.orderList = [];\n      this.getOrderList();\n    },\n    getOrderList() {\n      this.page++;\n      orderList({\n        showType: this.activeIndex,\n        page: this.page,\n        limit: this.limit\n      }).then(res => {\n        this.orderList.push(...res.data.data.list);\n        this.loading = false;\n        this.finished = res.data.data.page >= res.data.data.pages;\n      });\n    },\n    delOrder(id) {\n      let that = this;\n      this.$dialog\n        .confirm({ message: '确定要删除该订单吗?' })\n        .then(() => {\n          orderDelete({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已删除订单');\n          });\n        })\n        .catch(() => {});\n    },\n    cancelOrder(id) {\n      this.$dialog\n        .confirm({ message: '确定要取消该订单吗?' })\n        .then(() => {\n          orderCancel({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已取消该订单');\n          });\n        })\n        .catch(() => {});\n    },\n    refundOrder(id) {\n      this.$dialog\n        .confirm({ message: '确定要申请退款吗?' })\n        .then(() => {\n          orderRefund({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已申请订单退款');\n          });\n        })\n        .catch(() => {});\n    },    \n    confirmOrder(id) {\n      this.$dialog\n        .confirm({\n          message: '请确认收到货物, 确认收货后无法撤销!'\n        })\n        .then(() => {\n          orderConfirm({ orderId: id }).then(() => {\n            this.init();\n            this.$toast('已确认收货');\n          });\n        })\n        .catch(() => {});\n    },\n    commentOrder(id) {},\n    toPay(id) {\n      this.$router.push({ name: 'payment', params: { orderId: id } });\n    },\n    handleTabClick() {\n      this.page = 0;\n      this.orderList = [];\n      this.getOrderList();\n    },\n    toOrderDetail(id) {\n      this.$router.push({\n        path: '/order/order-detail',\n        query: { orderId: id }\n      });\n    }\n  },\n  components: {\n    [Tab.name]: Tab,\n    [Tabs.name]: Tabs,\n    [Panel.name]: Panel,\n    [Card.name]: Card,\n    [List.name]: List,\n    [Tag.name]: Tag\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.order_list {\n  .van-panel {\n    margin-top: 20px;\n  }\n\n  .van-card {\n    background-color: #fff;\n  }\n\n  .total {\n    text-align: right;\n    padding: 10px;\n  }\n\n  .footer_btn {\n    text-align: right;\n    .van-button {\n      margin-left: 10px;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/refund-list/index.vue",
    "content": "<template>\n  <div class=\"refund_list\">\n    <van-tabs sticky :active=\"activeIndex\" :swipe-threshold=\"5\" @click=\"handleTabClick\">\n      <van-tab v-for=\"(tab, tabIndex) in tabsItem\" :title=\"tab.name\" :key=\"tabIndex\">\n        <van-list v-model=\"loading\"\n                  :finished=\"finished\"\n                  :immediate-check=\"false\"\n                  finished-text=\"没有更多了\"\n                  @load=\"getRefundList\">\n          <van-panel\n            v-for=\"(el, i) in tab.items\"\n            class=\"order_list--panel\"\n            :key=\"i\"\n            :title=\"'订单编号: ' + el.id\"\n            :status=\"getStatusText(el.status)\"\n          >\n            <div>\n              <van-card\n                class=\"order_list--van-card\"\n                :key=\"i\"\n                :title=\"el.orderItem.item_name\"\n                :desc=\"el.orderItem.sku_props_str\"\n                :num=\"10000\"\n                :price=\"(el.orderItem.price / 100).toFixed(2)\"\n                :thumb=\"el.orderItem.pic_url\"\n              />\n              <div\n                class=\"order_list--total\"\n              >合计: {{el.refund_fee | yuan}}（含运费{{el.refund_post_fee | yuan}}）</div>\n            </div>\n            <div slot=\"footer\" style=\"text-align: right;\">\n              <van-button\n                size=\"small\"\n                @click=\"refund_handle(i)\"\n              >{{ el.status == 10 ? \"撤销申请\" : \"查看详情\"}}</van-button>\n            </div>\n          </van-panel>\n        </van-list>\n      </van-tab>\n    </van-tabs>\n  </div>\n</template>\n\n<script>\nimport { REFUND_LIST } from '@/api/api';\n\nimport { Tab, Tabs, Panel, Card, List } from 'vant';\n\nconst STATUS_TEXT = {\n  10: '退款中',\n  50: '退款关闭',\n  60: '退款成功'\n};\n\nexport default {\n  name: 'order-list',\n\n  data() {\n    return {\n      listApi: REFUND_LIST,\n      activeIndex: 0,\n      items: [],\n      page: 0,\n      limit: 10,\n      loading: false,\n      finished: false,\n      tabsItem: [\n        {\n          name: '全部',\n          status: 0,\n          items: []\n        },\n        {\n          name: '退款中',\n          status: 10,\n          items: []\n        },\n        {\n          name: '退款成功',\n          status: 60,\n          items: []\n        }\n      ]\n    };\n  },\n\n  methods: {\n    onLoad(i, items) {\n      this.tabsItem[i].items.push(...items);\n    },\n    refund_handle(i) {\n      const item = this.items[i];\n      if (item.status == 10) {\n        this.$dialog\n          .confirm({\n            message: '撤销后将不能再次发起申请，确定要撤销该申请吗？'\n          })\n          .then(() => {\n            this.$toast('已撤销该退款申请');\n            this.items[i].status = 50;\n          });\n      } else {\n        // 跳转退款详情\n      }\n    },\n    handleTabClick(index) {\n      if (this.activeIndex != index) {\n        this.activeIndex = index;\n      }\n    },\n    getStatusText(status) {\n      return STATUS_TEXT[status] || '';\n    },\n    getRefundList(){\n\n    }\n  },\n  components: {\n    [Tab.name]: Tab,\n    [Tabs.name]: Tabs,\n    [Panel.name]: Panel,\n    [Card.name]: Card,\n    [List.name]: List\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.refund_list {\n  padding-bottom: 0;\n\n  &--footer_btn {\n    text-align: right;\n  }\n  &--panel {\n    margin-bottom: 10px;\n  }\n\n  &--van-card {\n    background-color: #fafafa;\n  }\n\n  &--total {\n    text-align: right;\n    padding: 10px;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/tabbar-user-coupon.vue",
    "content": "<template>\n\t<div>\n\t\t<van-cell-group>\n\t\t\t<van-cell title=\"我的优惠券\" isLink>\n\t\t\t\t<router-link to=\"/user/coupon/list/0\" class=\"text-desc\">全部优惠券</router-link>\n\t\t\t</van-cell>\n\t\t</van-cell-group>\n\n\t\t<van-row class=\"coupon_status\">\n\t\t\t<van-col span=\"8\">\n\t\t\t\t<div class=\"coupon_status_icon\" @click=\"$router.push({path: '/user/coupon/list/0'})\">\n\t\t\t\t\t<van-icon name=\"coupon\" />\n\t\t\t\t</div>\n\t\t\t\t<div>待使用</div>\n\t\t\t</van-col>\n\t\t\t<van-col span=\"8\">\n\t\t\t\t<div class=\"coupon_status_icon\" @click=\"$router.push({path: '/user/coupon/list/1'})\">\n\t\t\t\t\t<van-icon name=\"coupon-used\" />\n\t\t\t\t</div>\n\t\t\t\t<div>已使用</div>\n\t\t\t</van-col>\n\t\t\t<van-col span=\"8\">\n\t\t\t\t<div class=\"coupon_status_icon\" @click=\"$router.push({path: '/user/coupon/list/2'})\">\n\t\t\t\t\t<van-icon name=\"coupon-due\" />\n\t\t\t\t</div>\n\t\t\t\t<div>过期关闭</div>\n\t\t\t</van-col>\n\t\t</van-row>\n\n\t</div>\n</template>\n\n<script>\nimport { Row, Col } from 'vant';\n\nexport default {\n  name: 'coupon-group',\n  components: {\n    [Row.name]: Row,\n    [Col.name]: Col\n  }\n};\n</script>\n\n\n<style scoped lang=\"scss\">\n@import '../../assets/scss/mixin';\n.coupon_status {\n  background-color: #fff;\n  text-align: center;\n  padding: 10px 0;\n  font-size: 12px;\n\n  > div {\n    @include one-border;\n    &::after {\n      top: 50%;\n      left: 50%;\n      border-bottom: 0;\n      border-right: 1px solid $border-color;\n      height: 150%;\n      transform: scale(0.5) translate3d(-50%, -50%, 0);\n      transform-origin: 0 0;\n    }\n    &:last-child::after {\n      border: 0;\n    }\n  }\n\n  .coupon_status_icon {\n    position: relative;\n    width: 36px;\n    height: 36px;\n    border-radius: 50%;\n    display: inline-block;\n    i {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate3d(-50%, -50%, 0);\n      font-size: 24px;\n      color: #000;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/tabbar-user-header.vue",
    "content": "<template>\n  <div class=\"user_header\" :style=\"{backgroundImage: `url(${background_image})`}\">\n    <van-icon name=\"set\" class=\"user_set\" @click=\"toSetting\"/>\n    <div class=\"user_avatar\">\n      <img :src=\"avatar\" alt=\"头像\" width=\"55\" height=\"55\">\n    </div>\n    <div>{{nickName}}</div>\n  </div>\n</template>\n\n<script>\nimport avatar_default from '@/assets/images/avatar_default.png';\nimport bg_default from '@/assets/images/user_head_bg.png';\nimport { getLocalStorage } from '@/utils/local-storage';\n\nexport default {\n  name: 'user-header',\n\n  props: {\n    isLogin: {\n      type: Boolean,\n      default: false\n    }\n  },\n\n  data() {\n    return {\n      nickName: '昵称',\n      avatar: avatar_default,\n      background_image: bg_default\n    };\n  },\n\n  activated() {\n    this.getUserInfo();\n  },\n\n  methods: {\n    getUserInfo() {\n      const infoData = getLocalStorage(\n        'nickName',\n        'avatar'\n      );\n      this.avatar = infoData.avatar || avatar_default;\n      this.nickName = infoData.nickName || '昵称';\n    },\n    toSetting() {\n      this.$router.push({ name: 'user-information' });\n    }\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n.user_header {\n  background-repeat: no-repeat;\n  background-size: cover;\n  height: 130px;\n  text-align: center;\n  color: #fff;\n  padding-top: 30px;\n}\n\n.user_set {\n  position: absolute;\n  top: 10px;\n  right: 10px;\n  font-size: 24px;\n}\n.user_avatar {\n  margin-bottom: 10px;\n  img {\n    border: 0;\n    border-radius: 50%;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/tabbar-user-module.vue",
    "content": "<template>\n  <div class=\"user_module\">\n    <van-cell-group>\n      <van-cell icon=\"shoucang\" title=\"我的收藏\" to=\"/user/collect\" isLink/>\n      <van-cell icon=\"dingwei\" title=\"收货地址\" to=\"/user/address\" isLink/>\n      <van-cell icon=\"kefu\" title=\"服务中心\" to=\"/user/server\" isLink/>\n    </van-cell-group>\n  </div>\n</template>\n\n<script>\nexport default {\n  name: 'user-module'\n};\n</script>\n\n\n<style scoped lang=\"scss\">\n.user_module {\n  background-color: #fff;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/tabbar-user-order.vue",
    "content": "<template>\n  <div>\n    <van-cell-group>\n      <van-cell title=\"我的订单\" isLink>\n        <router-link to=\"/user/order/list/0\" class=\"text-desc\">全部订单</router-link>\n      </van-cell>\n    </van-cell-group>\n    <van-row class=\"order_status\">\n      <van-col span=\"6\">\n        <div class=\"order_status_icon\" @click=\"$router.push({path: '/user/order/list/1'})\">\n          <van-icon name=\"daifukuan\" :info=\"order.unpaid > 0 ? order.unpaid : ''\"/>\n        </div>\n        <div>待付款</div>\n      </van-col>\n      <van-col span=\"6\">\n        <div class=\"order_status_icon\" @click=\"$router.push({path: '/user/order/list/2'})\">\n          <van-icon name=\"daifahuo\" :info=\"order.unship > 0 ? order.unship : ''\"/>\n        </div>\n        <div>待发货</div>\n      </van-col>\n      <van-col span=\"6\">\n        <div class=\"order_status_icon\" @click=\"$router.push({path: '/user/order/list/3'})\">\n          <van-icon name=\"wuliu\" :info=\"order.unrecv > 0 ? order.unrecv : ''\"/>\n        </div>\n        <div>待收货</div>\n      </van-col>\n      <van-col span=\"6\">\n        <div class=\"order_status_icon\" @click=\"$router.push({path: '/user/order/list/4'})\">\n          <van-icon name=\"shouhouguanli\" :info=\"order.uncomment > 0 ? order.uncomment : ''\"/>\n        </div>\n        <div>已完成</div>\n      </van-col>\n    </van-row>\n  </div>\n</template>\n\n<script>\nimport { Row, Col } from 'vant';\nimport { userIndex } from '@/api/api';\n\nexport default {\n  name: 'order-group',\n\n  data() {\n    return {\n      order: []\n    };\n  },\n  created() {\n    this.init();\n  },\n  methods: {\n    init() {\n      userIndex().then(res => {\n      this.order = res.data.data.order;\n      });\n    }\n  },\n  components: {\n    [Row.name]: Row,\n    [Col.name]: Col\n  }\n};\n</script>\n\n\n<style scoped lang=\"scss\">\n@import '../../assets/scss/mixin';\n.order_status {\n  background-color: #fff;\n  text-align: center;\n  padding: 10px 0;\n  font-size: 12px;\n\n  > div {\n    @include one-border;\n    &::after {\n      top: 50%;\n      left: 50%;\n      border-bottom: 0;\n      border-right: 1px solid $border-color;\n      height: 150%;\n      transform: scale(0.5) translate3d(-50%, -50%, 0);\n      transform-origin: 0 0;\n    }\n    &:last-child::after {\n      border: 0;\n    }\n  }\n\n  .order_status_icon {\n    position: relative;\n    width: 36px;\n    height: 36px;\n    border-radius: 50%;\n    display: inline-block;\n    i {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate3d(-50%, -50%, 0);\n      font-size: 24px;\n      color: #000;\n    }\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/tabbar-user.vue",
    "content": "<template>\n  <div class=\"tabbar-user\">\n    <user-header :isLogin=\"isLogin\"/>\n    <order-group/>\n    <coupon-group/>\n    <user-module/>\n  </div>\n</template>\n\n<script>\nimport userHeader from './tabbar-user-header';\nimport orderGroup from './tabbar-user-order';\nimport couponGroup from './tabbar-user-coupon';\nimport userModule from './tabbar-user-module';\n\nexport default {\n  data() {\n    return {\n      isLogin: false\n    };\n  },\n\n  activated() {\n    this.getLoginStatus();\n  },\n\n  methods: {\n    getLoginStatus() {\n      this.isLogin =\n        !!localStorage.getItem('Authorization');\n    }\n  },\n\n  components: {\n    [userHeader.name]: userHeader,\n    [orderGroup.name]: orderGroup,\n    [couponGroup.name]: couponGroup,\n    [userModule.name]: userModule\n  }\n};\n</script>\n\n\n<style scoped lang=\"scss\">\n.tabbar-user {\n  > div {\n    margin-bottom: 10px;\n  }\n  &__quit {\n    border: 0;\n    border-radius: 0;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/user-information-set/index.vue",
    "content": "<template>\n  <div class=\"user_information\">\n    <van-cell-group>\n      <van-cell title=\"头像\" class=\"cell_middle\">\n        <van-uploader :afterRead=\"avatarAfterRead\">\n          <div class=\"user_avatar_upload\">\n            <img\n              :src=\"avatar + '?x-oss-process=image/resize,m_fill,h_50,w_50'\"\n              alt=\"你的头像\"\n              v-if=\"avatar\"\n            >\n            <van-icon name=\"camera_full\" v-else></van-icon>\n          </div>\n        </van-uploader>\n      </van-cell>\n\n      <van-cell title=\"昵称\" to=\"/user/information/setNickname\" :value=\"nickName\" isLink/>\n      <van-cell title=\"性别\" :value=\"genderText\" @click=\"showSex = true\" isLink/>\n      <van-cell title=\"密码设置\" to=\"/user/information/setPassword\" isLink/>\n      <van-cell title=\"手机号\" to=\"/user/information/setMobile\" :value=\"mobile\" isLink></van-cell>\n    </van-cell-group>\n\n    <van-button size=\"large\" class=\"user_quit\" @click=\"loginOut\">退出当前账户</van-button>\n\n    <van-popup v-model=\"showSex\" position=\"bottom\">\n      <van-picker\n        showToolbar\n        :columns=\"sexColumns\"\n        title=\"选择性别\"\n        @cancel=\"showSex = false\"\n        @confirm=\"onSexConfirm\"\n      />\n    </van-popup>\n  </div>\n</template>\n\n<script>\nimport { Uploader, Picker, Popup, Button } from 'vant';\nimport { removeLocalStorage } from '@/utils/local-storage';\nimport { getLocalStorage } from '@/utils/local-storage';\nimport { authInfo, authLogout, authProfile } from '@/api/api';\n\nexport default {\n  data() {\n    return {\n      sexColumns: [\n        {\n          values: ['保密', '男', '女'],\n          defaultIndex: 0\n        }\n      ],\n      showSex: false,\n      avatar: '',\n      nickName: '',\n      gender: 0,\n      mobile: ''\n    };\n  },\n\n  computed: {\n    genderText() {\n      const text = ['保密', '男', '女'];\n      return text[this.gender] || '';\n    }\n  },\n\n  created() {\n    this.getUserInfo();\n  },\n\n  methods: {\n    avatarAfterRead(file) {\n      console.log(file);\n    },\n    onSexConfirm(value, index) {\n      this.showSex = false;\n    },\n    getUserInfo() {\n      authInfo().then(res => {\n        this.avatar = res.data.data.avatar;\n        this.nickName = res.data.data.nickName;\n        this.gender = res.data.data.gender;\n        this.mobile = res.data.data.mobile;\n      })\n    },\n    loginOut() {\n      authLogout().then(res => {\n        removeLocalStorage('Authorization')\n        removeLocalStorage('avatar')\n        removeLocalStorage('nickName')\n        this.$router.push({ name: 'home' });\n      });\n\n    }\n  },\n\n  components: {\n    [Button.name]: Button,\n    [Uploader.name]: Uploader,\n    [Picker.name]: Picker,\n    [Popup.name]: Popup\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n.user_information {\n  .user_avatar_upload {\n    position: relative;\n    width: 50px;\n    height: 50px;\n    border: 1px solid $border-color;\n    img {\n      max-width: 100%;\n      max-height: 100%;\n    }\n    i {\n      position: absolute;\n      top: 50%;\n      left: 50%;\n      transform: translate(-50%, -50%);\n      font-size: 20px;\n      color: $border-color;\n    }\n  }\n  .user_quit {\n    margin-top: 20px;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/user-information-set/set-mobile/index.vue",
    "content": "<template>\n\t<div>\n\t\t<van-cell-group>\n\t\t\t<van-field\n\t\t\t\tlabel=\"登录密码\"\n\t\t\t\tv-model=\"password\"\n\t\t\t\ttype=\"password\"\n\t\t\t\tplaceholder=\"请输入登录密码\"\n\t\t\t\t />\n\n\t\t\t<van-field\n\t\t\t\tlabel=\"新手机号\"\n\t\t\t\tv-model=\"mobile\"\n\t\t\t\tplaceholder=\"请输入新手机号\"\n\t\t\t\t/>\n\n\t\t\t<van-field\n\t\t\t\tlabel=\"验证码\"\n\t\t\t\tv-model=\"code\"\n\t\t\t\t@click-icon=\"getCode\"\n\t\t\t\tplaceholder=\"请输入验证码\">\n\n\t\t\t\t<span slot=\"icon\"\n\t\t\t\t\tclass=\"verifi_code red\"\n\t\t\t\t\t:class=\"{verifi_code_counting: counting}\"\n\t\t\t\t\t@click=\"getCode\">\n\t\t\t\t\t<countdown v-if=\"counting\" :time=\"60000\" @end=\"countdownend\">\n\t\t\t\t\t  <template slot-scope=\"props\">{{ +props.seconds || 60 }}秒后获取</template>\n\t\t\t\t\t</countdown>\n\t\t\t\t\t<span v-else>获取验证码</span>\n\t\t\t\t</span>\n\t\t\t</van-field>\n\t\t</van-cell-group>\n\n\t\t<div class=\"bottom_btn\">\n\t\t\t<van-button size=\"large\" type=\"danger\" @click=\"saveMobile\">保存</van-button>\n\t\t</div>\n\t</div>\n</template>\n\n\n<script>\nimport { authCaptcha } from '@/api/api';\n\nimport { Field } from 'vant';\n\nexport default {\n  data: () => ({\n    password: '',\n    mobile: '',\n    code: '',\n    counting: false\n  }),\n\n  methods: {\n    getCode() {\n      if (!this.counting && this.vuelidate()) {\n        authCaptcha({\n          mobile: this.mobile,\n          type: 'bind-mobile'\n        }).then(() => {\n          this.$toast.success('发送成功');\n          this.counting = true;\n        }).catch(error => {\n          this.$toast.fail(error.data.errmsg);\n          this.counting = false;\n        })\n\n      }\n    },\n    countdownend() {\n      this.counting = false;\n    },\n    vuelidate() {\n      if(this.mobile === ''){\n        this.$toast.fail('请输入号码');\n        return false;\n      }\n      return true;\n    },\n    saveMobile() {\n      console.log('保存手机号');\n    }\n  },\n\n  components: {\n    [Field.name]: Field\n  }\n};\n</script>\n\n<style lang=\"scss\" scoped>\n@import '../../../../assets/scss/var';\n@import '../../../../assets/scss/mixin';\n.bottom_btn {\n  padding: 30px 15px 0 15px;\n}\n\n.verifi_code {\n  @include one-border;\n  padding-left: 10px;\n  &::after {\n    border-bottom: 0;\n    border-left: 1px solid $border-color;\n  }\n\n  &_counting {\n    color: $font-color-gray;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/user-information-set/set-nickname/index.vue",
    "content": "<template>\n  <div class=\"set_nickname\">\n    <van-cell-group>\n      <van-field v-model=\"nickName\" label=\"昵称\" />\n    </van-cell-group>\n\n    <div class=\"bottom_btn\">\n      <van-button size=\"large\" type=\"danger\" @click=\"saveNick\">保存</van-button>\n    </div>\n  </div>\n</template>\n\n<script>\nimport { authProfile } from '@/api/api';\nimport { Field } from 'vant';\n\nexport default {\n  data() {\n    return {\n      nickName: ''\n    };\n  },\n\n  created() {\n    this.getNick();\n  },\n\n  methods: {\n    getNick() {\n      this.nickName = localStorage.getItem('nickName') || '';\n    },\n    saveNick() {\n      authProfile({ nickname: this.nickName }).then(res => {\n        localStorage.setItem('nickName', this.nickName);\n        this.$dialog.alert({ message: '保存成功' }).then(() => {\n          this.$router.go(-1);\n        });\n      });\n    }\n  },\n\n  components: {\n    [Field.name]: Field\n  }\n};\n</script>\n\n<style scoped>\n.bottom_btn {\n  padding: 30px 15px 0 15px;\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/src/views/user/user-information-set/set-password/index.vue",
    "content": "<template>\n  <div>\n    <van-cell-group>\n\n      <van-field\n        label=\"手机号码\"\n        v-model=\"mobile\"\n        placeholder=\"请输入手机号码\"\n      />\n\n\t\t\t<van-field\n\t\t\t\tlabel=\"验证码\"\n\t\t\t\tv-model=\"code\"\n\t\t\t\t@click-icon=\"getCode\"\n\t\t\t\tplaceholder=\"请输入验证码\">\n\n\t\t\t\t<span slot=\"button\"\n\t\t\t\t\tclass=\"verifi_code red\"\n\t\t\t\t\t:class=\"{verifi_code_counting: counting}\"\n\t\t\t\t\t@click=\"getCode\">\n\t\t\t\t\t<countdown v-if=\"counting\" :time=\"60000\" @end=\"countdownend\">\n\t\t\t\t\t  <template slot-scope=\"props\">{{ +props.seconds || 60 }}秒后获取</template>\n\t\t\t\t\t</countdown>\n\t\t\t\t\t<span v-else>获取验证码</span>\n\t\t\t\t</span>\n\t\t\t</van-field>\n\n      <van-field\n        label=\"新密码\"\n        v-model=\"password\"\n        type=\"password\"\n        placeholder=\"请输入新密码\"\n      />\n\n      <van-field\n        label=\"确认密码\"\n        v-model=\"password2\"\n        type=\"password\"\n        placeholder=\"请再次输入密码\"\n      />\n\n    </van-cell-group>\n\n    <div class=\"bottom_btn\">\n      <van-button size=\"large\" type=\"danger\" @click=\"modifypassword\">保存</van-button>\n    </div>\n  </div>\n</template>\n\n\n<script>\nimport { authCaptcha, authReset, authLogout } from '@/api/api';\nimport { removeLocalStorage } from '@/utils/local-storage';\nimport { Field, Toast } from 'vant';\n\nexport default {\n  data: () => ({\n    password: '',\n    password2: '',\n    mobile: '',\n    code: '',\n    counting: false\n  }),\n\n  methods: {\n    modifypassword() {\n      if (this.passwordValid()) {\n        authReset({\n          password: this.password,\n          mobile: this.mobile,\n          code: this.code\n        })\n        .then(() => {\n          this.$dialog.alert({ message: '保存成功, 请重新登录.' })\n          authLogout();\n        }).catch (error => {\n        Toast.fail(error.data.errmsg);\n        });\n      }\n    },\n    passwordValid() {\n      return true;\n    },\n    getCode() {\n      if(this.mobile === ''){\n        this.$toast.fail('请输入号码');\n        return\n      }\n\n      if (!this.counting) {\n        authCaptcha({\n          mobile: this.mobile,\n          type: 'change-password'\n        }).then(() => {\n          this.$toast.success('发送成功');\n          this.counting = true;\n        }).catch(error => {\n          this.$toast.fail(error.data.errmsg);\n          this.counting = false;\n        })\n\n      }\n    },\n  },\n\n  components: {\n    [Field.name]: Field\n  }\n};\n</script>\n\n\n<style lang=\"scss\" scoped>\n@import '../../../../assets/scss/var';\n@import '../../../../assets/scss/mixin';\n.bottom_btn {\n  padding: 30px 15px 0 15px;\n}\n\n.verifi_code {\n  @include one-border;\n  padding-left: 10px;\n  &::after {\n    border-bottom: 0;\n    border-left: 1px solid $border-color;\n  }\n\n  &_counting {\n    color: $font-color-gray;\n  }\n}\n</style>\n"
  },
  {
    "path": "litemall-vue/vue.config.js",
    "content": "const path = require('path');\n\nfunction resolve(dir = '') {\n  return path.join(__dirname, './src', dir);\n}\n\nmodule.exports = {\n  publicPath: './',\n  outputDir: 'dist',\n  assetsDir: 'static',\n  productionSourceMap: false,\n  devServer: {\n    //九键输入法的 「mall」= 「6255」\n    port: 6255,\n    proxy: {\n      '/wx': {\n        target: 'http://localhost:8080'\n      },\n    },\n  },\n  chainWebpack: config => {\n    config.plugins.delete('prefetch');\n    config.plugins.delete('preload');\n  },\n  configureWebpack: {\n    resolve: {\n      alias: {\n        core: resolve('core')\n      }\n    },\n    optimization: {\n      runtimeChunk: {\n        name: entrypoint => `runtime~${entrypoint.name}`\n      },\n      splitChunks: {\n        minChunks: 2,\n        minSize: 20000,\n        maxAsyncRequests: 20,\n        maxInitialRequests: 30,\n        name: false\n      }\n    }\n  },\n  css: {\n    loaderOptions: {\n      sass: {\n        data:\n          '@import \"@/assets/scss/_var.scss\";@import \"@/assets/scss/_mixin.scss\";'\n      }\n    }\n  }\n};\n"
  },
  {
    "path": "litemall-wx/app.js",
    "content": "var util = require('./utils/util.js');\nvar api = require('./config/api.js');\nvar user = require('./utils/user.js');\n\nApp({\n  onLaunch: function() {\n    Promise.prototype.finally = function(callback){\n      let P = this.constructor;\n      return this.then(\n              value => {\n                   P.resolve(callback()).then(() => value)\n               },\n               reason => {\n                   P.resolve(callback()).then(() => { throw reason })\n               }\n           )\n    }\n    const updateManager = wx.getUpdateManager();\n    wx.getUpdateManager().onUpdateReady(function() {\n      wx.showModal({\n        title: '更新提示',\n        content: '新版本已经准备好，是否重启应用？',\n        success: function(res) {\n          if (res.confirm) {\n            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启\n            updateManager.applyUpdate()\n          }\n        }\n      })\n    })\n  },\n  onShow: function(options) {\n    user.checkLogin().then(res => {\n      this.globalData.hasLogin = true;\n    }).catch(() => {\n      this.globalData.hasLogin = false;\n    });\n  },\n  globalData: {\n    hasLogin: false\n  }\n})"
  },
  {
    "path": "litemall-wx/app.json",
    "content": "{\n  \"pages\": [\n    \"pages/index/index\",\n    \"pages/catalog/catalog\",\n    \"pages/newGoods/newGoods\",\n    \"pages/hotGoods/hotGoods\",\n    \"pages/ucenter/index/index\",\n    \"pages/ucenter/address/address\",\n    \"pages/ucenter/addressAdd/addressAdd\",\n    \"pages/ucenter/feedback/feedback\",\n    \"pages/ucenter/footprint/footprint\",\n    \"pages/ucenter/order/order\",\n    \"pages/ucenter/orderDetail/orderDetail\",\n    \"pages/ucenter/couponList/couponList\",\n    \"pages/ucenter/couponSelect/couponSelect\",\n    \"pages/ucenter/collect/collect\",\n    \"pages/auth/login/login\",\n    \"pages/auth/accountLogin/accountLogin\",\n    \"pages/auth/register/register\",\n    \"pages/auth/reset/reset\",\n    \"pages/payResult/payResult\",\n    \"pages/comment/comment\",\n    \"pages/commentPost/commentPost\",\n    \"pages/topic/topic\",\n    \"pages/topicComment/topicComment\",\n    \"pages/topicDetail/topicDetail\",\n    \"pages/topicCommentPost/topicCommentPost\",\n    \"pages/brand/brand\",\n    \"pages/brandDetail/brandDetail\",\n    \"pages/search/search\",\n    \"pages/category/category\",\n    \"pages/cart/cart\",\n    \"pages/checkout/checkout\",\n    \"pages/goods/goods\",\n    \"pages/about/about\",\n    \"pages/groupon/myGroupon/myGroupon\",\n    \"pages/groupon/grouponDetail/grouponDetail\",\n    \"pages/groupon/grouponList/grouponList\",\n    \"pages/coupon/coupon\",\n    \"pages/help/help\",\n    \"pages/ucenter/aftersale/aftersale\",\n    \"pages/ucenter/aftersaleList/aftersaleList\",\n    \"pages/ucenter/aftersaleDetail/aftersaleDetail\"\n  ],\n  \"window\": {\n    \"navigationBarBackgroundColor\": \"#FFFFFF\",\n    \"navigationBarTitleText\": \"litemall小程序商城\",\n    \"enablePullDownRefresh\": false,\n    \"navigationBarTextStyle\": \"black\",\n    \"backgroundColor\": \"#FFFFFF\",\n    \"backgroundTextStyle\": \"dark\"\n  },\n  \"tabBar\": {\n    \"backgroundColor\": \"#fafafa\",\n    \"borderStyle\": \"white\",\n    \"selectedColor\": \"#AB956D\",\n    \"color\": \"#666\",\n    \"list\": [\n      {\n        \"pagePath\": \"pages/index/index\",\n        \"iconPath\": \"static/images/home.png\",\n        \"selectedIconPath\": \"static/images/home@selected.png\",\n        \"text\": \"首页\"\n      },\n      {\n        \"pagePath\": \"pages/catalog/catalog\",\n        \"iconPath\": \"static/images/category.png\",\n        \"selectedIconPath\": \"static/images/category@selected.png\",\n        \"text\": \"分类\"\n      },\n      {\n        \"pagePath\": \"pages/cart/cart\",\n        \"iconPath\": \"static/images/cart.png\",\n        \"selectedIconPath\": \"static/images/cart@selected.png\",\n        \"text\": \"购物车\"\n      },\n      {\n        \"pagePath\": \"pages/ucenter/index/index\",\n        \"iconPath\": \"static/images/my.png\",\n        \"selectedIconPath\": \"static/images/my@selected.png\",\n        \"text\": \"个人\"\n      }\n    ]\n  },\n  \"networkTimeout\": {\n    \"request\": 10000,\n    \"connectSocket\": 10000,\n    \"uploadFile\": 10000,\n    \"downloadFile\": 10000\n  },\n  \"debug\": true,\n  \"usingComponents\": {\n    \"van-cell\": \"./lib/vant-weapp/cell/index\",\n    \"van-cell-group\": \"./lib/vant-weapp/cell-group/index\",\n    \"van-picker\": \"./lib/vant-weapp/picker/index\",\n    \"van-popup\": \"./lib/vant-weapp/popup/index\",\n    \"van-field\": \"./lib/vant-weapp/field/index\",\n    \"van-uploader\": \"./lib/vant-weapp/uploader/index\",\n    \"van-button\": \"./lib/vant-weapp/button/index\",\n    \"van-tag\": \"./lib/vant-weapp/tag/index\",\n    \"van-icon\": \"./lib/vant-weapp/icon/index\",\n    \"van-checkbox\": \"./lib/vant-weapp/checkbox/index\",\n    \"van-steps\": \"./lib/vant-weapp/steps/index\"\n  },\n  \"sitemapLocation\": \"sitemap.json\"\n}"
  },
  {
    "path": "litemall-wx/app.wxss",
    "content": "/**app.wxss**/\n\n.container {\n  box-sizing: border-box;\n  background-color: #f4f4f4;\n  font-family: PingFangSC-Light, helvetica, 'Heiti SC';\n}\n\nview, image, text, navigator {\n  box-sizing: border-box;\n  padding: 0;\n  margin: 0;\n}\n\nview, text {\n  font-family: PingFangSC-Light, helvetica, 'Heiti SC';\n  font-size: 29rpx;\n  color: #333;\n}\n"
  },
  {
    "path": "litemall-wx/config/api.js",
    "content": "// 以下是业务服务器API地址\n// 本机开发时使用\nvar WxApiRoot = 'http://localhost:8080/wx/';\n// 局域网测试使用\n// var WxApiRoot = 'http://192.168.1.3:8080/wx/';\n// 云平台部署时使用\n// var WxApiRoot = 'http://122.51.199.160:8080/wx/';\n// 云平台上线时使用\n// var WxApiRoot = 'https://www.menethil.com.cn/wx/';\n\nmodule.exports = {\n  IndexUrl: WxApiRoot + 'home/index', //首页数据接口\n  AboutUrl: WxApiRoot + 'home/about', //介绍信息\n\n  CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口\n  CatalogCurrent: WxApiRoot + 'catalog/current', //分类目录当前分类数据接口\n\n  AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录\n  AuthLoginByAccount: WxApiRoot + 'auth/login', //账号登录\n  AuthLogout: WxApiRoot + 'auth/logout', //账号登出\n  AuthRegister: WxApiRoot + 'auth/register', //账号注册\n  AuthReset: WxApiRoot + 'auth/reset', //账号密码重置\n  AuthRegisterCaptcha: WxApiRoot + 'auth/regCaptcha', //验证码\n  AuthBindPhone: WxApiRoot + 'auth/bindPhone', //绑定微信手机号\n\n  GoodsCount: WxApiRoot + 'goods/count', //统计商品总数\n  GoodsList: WxApiRoot + 'goods/list', //获得商品列表\n  GoodsCategory: WxApiRoot + 'goods/category', //获得分类数据\n  GoodsDetail: WxApiRoot + 'goods/detail', //获得商品的详情\n  GoodsRelated: WxApiRoot + 'goods/related', //商品详情页的关联商品（大家都在看）\n\n  BrandList: WxApiRoot + 'brand/list', //品牌列表\n  BrandDetail: WxApiRoot + 'brand/detail', //品牌详情\n\n  CartList: WxApiRoot + 'cart/index', //获取购物车的数据\n  CartAdd: WxApiRoot + 'cart/add', // 添加商品到购物车\n  CartFastAdd: WxApiRoot + 'cart/fastadd', // 立即购买商品\n  CartUpdate: WxApiRoot + 'cart/update', // 更新购物车的商品\n  CartDelete: WxApiRoot + 'cart/delete', // 删除购物车的商品\n  CartChecked: WxApiRoot + 'cart/checked', // 选择或取消选择商品\n  CartGoodsCount: WxApiRoot + 'cart/goodscount', // 获取购物车商品件数\n  CartCheckout: WxApiRoot + 'cart/checkout', // 下单前信息确认\n\n  CollectList: WxApiRoot + 'collect/list', //收藏列表\n  CollectAddOrDelete: WxApiRoot + 'collect/addordelete', //添加或取消收藏\n\n  CommentList: WxApiRoot + 'comment/list', //评论列表\n  CommentCount: WxApiRoot + 'comment/count', //评论总数\n  CommentPost: WxApiRoot + 'comment/post', //发表评论\n\n  TopicList: WxApiRoot + 'topic/list', //专题列表\n  TopicDetail: WxApiRoot + 'topic/detail', //专题详情\n  TopicRelated: WxApiRoot + 'topic/related', //相关专题\n\n  SearchIndex: WxApiRoot + 'search/index', //搜索关键字\n  SearchResult: WxApiRoot + 'search/result', //搜索结果\n  SearchHelper: WxApiRoot + 'search/helper', //搜索帮助\n  SearchClearHistory: WxApiRoot + 'search/clearhistory', //搜索历史清楚\n\n  AddressList: WxApiRoot + 'address/list', //收货地址列表\n  AddressDetail: WxApiRoot + 'address/detail', //收货地址详情\n  AddressSave: WxApiRoot + 'address/save', //保存收货地址\n  AddressDelete: WxApiRoot + 'address/delete', //保存收货地址\n\n  ExpressQuery: WxApiRoot + 'express/query', //物流查询\n\n  RegionList: WxApiRoot + 'region/list', //获取区域列表\n\n  OrderSubmit: WxApiRoot + 'order/submit', // 提交订单\n  OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话\n  OrderList: WxApiRoot + 'order/list', //订单列表\n  OrderDetail: WxApiRoot + 'order/detail', //订单详情\n  OrderCancel: WxApiRoot + 'order/cancel', //取消订单\n  OrderRefund: WxApiRoot + 'order/refund', //退款取消订单\n  OrderDelete: WxApiRoot + 'order/delete', //删除订单\n  OrderConfirm: WxApiRoot + 'order/confirm', //确认收货\n  OrderGoods: WxApiRoot + 'order/goods', // 代评价商品信息\n  OrderComment: WxApiRoot + 'order/comment', // 评价订单商品信息\n\n  AftersaleSubmit: WxApiRoot + 'aftersale/submit', // 提交售后申请\n  AftersaleList: WxApiRoot + 'aftersale/list', // 售后列表\n  AftersaleDetail: WxApiRoot + 'aftersale/detail', // 售后详情\n\n  FeedbackAdd: WxApiRoot + 'feedback/submit', //添加反馈\n  FootprintList: WxApiRoot + 'footprint/list', //足迹列表\n  FootprintDelete: WxApiRoot + 'footprint/delete', //删除足迹\n\n  GroupOnList: WxApiRoot + 'groupon/list', //团购列表\n  GroupOnMy: WxApiRoot + 'groupon/my', //团购API-我的团购\n  GroupOnDetail: WxApiRoot + 'groupon/detail', //团购API-详情\n  GroupOnJoin: WxApiRoot + 'groupon/join', //团购API-详情\n\n  CouponList: WxApiRoot + 'coupon/list', //优惠券列表\n  CouponMyList: WxApiRoot + 'coupon/mylist', //我的优惠券列表\n  CouponSelectList: WxApiRoot + 'coupon/selectlist', //当前订单可用优惠券列表\n  CouponReceive: WxApiRoot + 'coupon/receive', //优惠券领取\n  CouponExchange: WxApiRoot + 'coupon/exchange', //优惠券兑换\n\n  StorageUpload: WxApiRoot + 'storage/upload', //图片上传,\n\n  UserIndex: WxApiRoot + 'user/index', //个人页面用户相关信息\n  IssueList: WxApiRoot + 'issue/list', //帮助信息\n};"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/action-sheet/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/action-sheet/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        show: Boolean,\n        title: String,\n        cancelText: String,\n        description: String,\n        round: {\n            type: Boolean,\n            value: true\n        },\n        zIndex: {\n            type: Number,\n            value: 100\n        },\n        actions: {\n            type: Array,\n            value: []\n        },\n        overlay: {\n            type: Boolean,\n            value: true\n        },\n        closeOnClickOverlay: {\n            type: Boolean,\n            value: true\n        },\n        closeOnClickAction: {\n            type: Boolean,\n            value: true\n        },\n        safeAreaInsetBottom: {\n            type: Boolean,\n            value: true\n        }\n    },\n    methods: {\n        onSelect(event) {\n            const { index } = event.currentTarget.dataset;\n            const item = this.data.actions[index];\n            if (item && !item.disabled && !item.loading) {\n                this.$emit('select', item);\n                if (this.data.closeOnClickAction) {\n                    this.onClose();\n                }\n            }\n        },\n        onCancel() {\n            this.$emit('cancel');\n        },\n        onClose() {\n            this.$emit('close');\n        },\n        onClickOverlay() {\n            this.$emit('click-overlay');\n            this.onClose();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/action-sheet/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-popup\": \"../popup/index\",\n    \"van-loading\": \"../loading/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/action-sheet/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<van-popup\n  show=\"{{ show }}\"\n  position=\"bottom\"\n  round=\"{{ round }}\"\n  z-index=\"{{ zIndex }}\"\n  overlay=\"{{ overlay }}\"\n  custom-class=\"van-action-sheet\"\n  safe-area-inset-bottom=\"{{ safeAreaInsetBottom }}\"\n  close-on-click-overlay=\"{{ closeOnClickOverlay }}\"\n  bind:close=\"onClickOverlay\"\n>\n  <view wx:if=\"{{ title }}\" class=\"van-hairline--bottom van-action-sheet__header\">\n    {{ title }}\n    <van-icon\n      name=\"close\"\n      custom-class=\"van-action-sheet__close\"\n      bind:click=\"onClose\"\n    />\n  </view>\n  <view wx:if=\"{{ description }}\" class=\"van-action-sheet__description\">\n    {{ description }}\n  </view>\n  <view wx:if=\"{{ actions && actions.length }}\">\n    <!-- button外包一层view，防止actions动态变化，导致渲染时button被打散 -->\n    <button\n      wx:for=\"{{ actions }}\"\n      wx:key=\"index\"\n      open-type=\"{{ item.openType }}\"\n      style=\"{{ item.color ? 'color: ' + item.color : '' }}\"\n      class=\"{{ utils.bem('action-sheet__item', { disabled: item.disabled || item.loading }) }} van-hairline--top {{ item.className || '' }}\"\n      hover-class=\"van-action-sheet__item--hover\"\n      data-index=\"{{ index }}\"\n      bind:tap=\"onSelect\"\n    >\n      <block wx:if=\"{{ !item.loading }}\">\n        {{ item.name }}\n        <text wx:if=\"{{ item.subname }}\" class=\"van-action-sheet__subname\" >{{ item.subname }}</text>\n      </block>\n      <van-loading wx:else custom-class=\"van-action-sheet__loading\" size=\"20px\" />\n    </button>\n  </view>\n  <slot />\n  <view\n    wx:if=\"{{ cancelText }}\"\n    class=\"van-action-sheet__cancel\"\n    hover-class=\"van-action-sheet__cancel--hover\"\n    hover-stay-time=\"70\"\n    bind:tap=\"onCancel\"\n  >\n    {{ cancelText }}\n  </view>\n</van-popup>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/action-sheet/index.wxss",
    "content": "@import '../common/index.wxss';.van-action-sheet{max-height:90%!important;max-height:var(--action-sheet-max-height,90%)!important;color:#323233;color:var(--action-sheet-item-text-color,#323233)}.van-action-sheet__cancel,.van-action-sheet__item{text-align:center;font-size:16px;font-size:var(--action-sheet-item-font-size,16px);line-height:50px;line-height:var(--action-sheet-item-height,50px);background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__cancel--hover,.van-action-sheet__item--hover{background-color:#f2f3f5;background-color:var(--active-color,#f2f3f5)}.van-action-sheet__cancel:before{display:block;content:\" \";height:8px;height:var(--action-sheet-cancel-padding-top,8px);background-color:#f7f8fa;background-color:var(--action-sheet-cancel-padding-color,#f7f8fa)}.van-action-sheet__item--disabled{color:#c8c9cc;color:var(--action-sheet-item-disabled-text-color,#c8c9cc)}.van-action-sheet__item--disabled.van-action-sheet__item--hover{background-color:#fff;background-color:var(--action-sheet-item-background,#fff)}.van-action-sheet__subname{margin-left:4px;margin-left:var(--padding-base,4px);font-size:12px;font-size:var(--action-sheet-subname-font-size,12px);color:#646566;color:var(--action-sheet-subname-color,#646566)}.van-action-sheet__header{text-align:center;font-weight:500;font-weight:var(--font-weight-bold,500);font-size:16px;font-size:var(--action-sheet-header-font-size,16px);line-height:44px;line-height:var(--action-sheet-header-height,44px)}.van-action-sheet__description{text-align:center;padding:16px;padding:var(--padding-md,16px);color:#646566;color:var(--action-sheet-description-color,#646566);font-size:14px;font-size:var(--action-sheet-description-font-size,14px);line-height:20px;line-height:var(--action-sheet-description-line-height,20px)}.van-action-sheet__close{position:absolute!important;top:0;right:0;line-height:inherit!important;padding:0 12px;padding:var(--action-sheet-close-icon-padding,0 12px);font-size:18px!important;font-size:var(--action-sheet-close-icon-size,18px)!important;color:#969799;color:var(--action-sheet-close-icon-color,#969799)}.van-action-sheet__loading{display:-webkit-flex!important;display:flex!important;height:50px;height:var(--action-sheet-item-height,50px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/area/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/area/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { pickerProps } from '../picker/shared';\nconst COLUMNSPLACEHOLDERCODE = '000000';\nVantComponent({\n    classes: ['active-class', 'toolbar-class', 'column-class'],\n    props: Object.assign(Object.assign({}, pickerProps), { value: String, areaList: {\n            type: Object,\n            value: {}\n        }, columnsNum: {\n            type: null,\n            value: 3\n        }, columnsPlaceholder: {\n            type: Array,\n            observer(val) {\n                this.setData({\n                    typeToColumnsPlaceholder: {\n                        province: val[0] || '',\n                        city: val[1] || '',\n                        county: val[2] || '',\n                    }\n                });\n            }\n        } }),\n    data: {\n        columns: [{ values: [] }, { values: [] }, { values: [] }],\n        displayColumns: [{ values: [] }, { values: [] }, { values: [] }],\n        typeToColumnsPlaceholder: {}\n    },\n    watch: {\n        value(value) {\n            this.code = value;\n            this.setValues();\n        },\n        areaList: 'setValues',\n        columnsNum(value) {\n            this.setData({\n                displayColumns: this.data.columns.slice(0, +value)\n            });\n        }\n    },\n    mounted() {\n        setTimeout(() => {\n            this.setValues();\n        }, 0);\n    },\n    methods: {\n        getPicker() {\n            if (this.picker == null) {\n                this.picker = this.selectComponent('.van-area__picker');\n            }\n            return this.picker;\n        },\n        onCancel(event) {\n            this.emit('cancel', event.detail);\n        },\n        onConfirm(event) {\n            const { index } = event.detail;\n            let { value } = event.detail;\n            value = this.parseOutputValues(value);\n            this.emit('confirm', { value, index });\n        },\n        emit(type, detail) {\n            detail.values = detail.value;\n            delete detail.value;\n            this.$emit(type, detail);\n        },\n        // parse output columns data\n        parseOutputValues(values) {\n            const { columnsPlaceholder } = this.data;\n            return values.map((value, index) => {\n                // save undefined value\n                if (!value)\n                    return value;\n                value = JSON.parse(JSON.stringify(value));\n                if (!value.code || value.name === columnsPlaceholder[index]) {\n                    value.code = '';\n                    value.name = '';\n                }\n                return value;\n            });\n        },\n        onChange(event) {\n            const { index, picker, value } = event.detail;\n            this.code = value[index].code;\n            this.setValues().then(() => {\n                this.$emit('change', {\n                    picker,\n                    values: this.parseOutputValues(picker.getValues()),\n                    index\n                });\n            });\n        },\n        getConfig(type) {\n            const { areaList } = this.data;\n            return (areaList && areaList[`${type}_list`]) || {};\n        },\n        getList(type, code) {\n            const { typeToColumnsPlaceholder } = this.data;\n            let result = [];\n            if (type !== 'province' && !code) {\n                return result;\n            }\n            const list = this.getConfig(type);\n            result = Object.keys(list).map(code => ({\n                code,\n                name: list[code]\n            }));\n            if (code) {\n                // oversea code\n                if (code[0] === '9' && type === 'city') {\n                    code = '9';\n                }\n                result = result.filter(item => item.code.indexOf(code) === 0);\n            }\n            if (typeToColumnsPlaceholder[type] && result.length) {\n                // set columns placeholder\n                const codeFill = type === 'province' ? '' : type === 'city' ? COLUMNSPLACEHOLDERCODE.slice(2, 4) : COLUMNSPLACEHOLDERCODE.slice(4, 6);\n                result.unshift({\n                    code: `${code}${codeFill}`,\n                    name: typeToColumnsPlaceholder[type]\n                });\n            }\n            return result;\n        },\n        getIndex(type, code) {\n            let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;\n            const list = this.getList(type, code.slice(0, compareNum - 2));\n            // oversea code\n            if (code[0] === '9' && type === 'province') {\n                compareNum = 1;\n            }\n            code = code.slice(0, compareNum);\n            for (let i = 0; i < list.length; i++) {\n                if (list[i].code.slice(0, compareNum) === code) {\n                    return i;\n                }\n            }\n            return 0;\n        },\n        setValues() {\n            const county = this.getConfig('county');\n            let { code } = this;\n            if (!code) {\n                if (this.data.columnsPlaceholder.length) {\n                    code = COLUMNSPLACEHOLDERCODE;\n                }\n                else if (Object.keys(county)[0]) {\n                    code = Object.keys(county)[0];\n                }\n                else {\n                    code = '';\n                }\n            }\n            const province = this.getList('province');\n            const city = this.getList('city', code.slice(0, 2));\n            const picker = this.getPicker();\n            if (!picker) {\n                return;\n            }\n            const stack = [];\n            stack.push(picker.setColumnValues(0, province, false));\n            stack.push(picker.setColumnValues(1, city, false));\n            if (city.length && code.slice(2, 4) === '00') {\n                [{ code }] = city;\n            }\n            stack.push(picker.setColumnValues(2, this.getList('county', code.slice(0, 4)), false));\n            return Promise.all(stack)\n                .catch(() => { })\n                .then(() => picker.setIndexes([\n                this.getIndex('province', code),\n                this.getIndex('city', code),\n                this.getIndex('county', code)\n            ]))\n                .catch(() => { });\n        },\n        getValues() {\n            const picker = this.getPicker();\n            return picker ? picker.getValues().filter(value => !!value) : [];\n        },\n        getDetail() {\n            const values = this.getValues();\n            const area = {\n                code: '',\n                country: '',\n                province: '',\n                city: '',\n                county: ''\n            };\n            if (!values.length) {\n                return area;\n            }\n            const names = values.map((item) => item.name);\n            area.code = values[values.length - 1].code;\n            if (area.code[0] === '9') {\n                area.country = names[1] || '';\n                area.province = names[2] || '';\n            }\n            else {\n                area.province = names[0] || '';\n                area.city = names[1] || '';\n                area.county = names[2] || '';\n            }\n            return area;\n        },\n        reset(code) {\n            this.code = code || '';\n            return this.setValues();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/area/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-picker\": \"../picker/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/area/index.wxml",
    "content": "<van-picker\n  class=\"van-area__picker\"\n  active-class=\"active-class\"\n  toolbar-class=\"toolbar-class\"\n  column-class=\"column-class\"\n  show-toolbar\n  value-key=\"name\"\n  title=\"{{ title }}\"\n  loading=\"{{ loading }}\"\n  columns=\"{{ displayColumns }}\"\n  item-height=\"{{ itemHeight }}\"\n  visible-item-count=\"{{ visibleItemCount }}\"\n  cancel-button-text=\"{{ cancelButtonText }}\"\n  confirm-button-text=\"{{ confirmButtonText }}\"\n  bind:change=\"onChange\"\n  bind:confirm=\"onConfirm\"\n  bind:cancel=\"onCancel\"\n/>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/area/index.wxss",
    "content": "@import '../common/index.wxss';"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/button/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/button/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nimport { openType } from '../mixins/open-type';\nVantComponent({\n    mixins: [button, openType],\n    classes: ['hover-class', 'loading-class'],\n    data: {\n        style: ''\n    },\n    props: {\n        icon: String,\n        plain: Boolean,\n        block: Boolean,\n        round: Boolean,\n        square: Boolean,\n        loading: Boolean,\n        hairline: Boolean,\n        disabled: Boolean,\n        loadingText: String,\n        customStyle: String,\n        loadingType: {\n            type: String,\n            value: 'circular'\n        },\n        type: {\n            type: String,\n            value: 'default'\n        },\n        size: {\n            type: String,\n            value: 'normal'\n        },\n        loadingSize: {\n            type: String,\n            value: '20px'\n        },\n        color: {\n            type: String,\n            observer(color) {\n                let style = '';\n                if (color) {\n                    style += `color: ${this.data.plain ? color : 'white'};`;\n                    if (!this.data.plain) {\n                        // Use background instead of backgroundColor to make linear-gradient work\n                        style += `background: ${color};`;\n                    }\n                    // hide border when color is linear-gradient\n                    if (color.indexOf('gradient') !== -1) {\n                        style += 'border: 0;';\n                    }\n                    else {\n                        style += `border-color: ${color};`;\n                    }\n                }\n                if (style !== this.data.style) {\n                    this.setData({ style });\n                }\n            }\n        }\n    },\n    methods: {\n        onClick() {\n            if (!this.data.disabled && !this.data.loading) {\n                this.$emit('click');\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/button/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-loading\": \"../loading/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/button/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<button\n  id=\"{{ id }}\"\n  class=\"custom-class {{ utils.bem('button', [type, size, { block, round, plain, square, loading, disabled, hairline, unclickable: disabled || loading }]) }} {{ hairline ? 'van-hairline--surround' : '' }}\"\n  hover-class=\"van-button--active hover-class\"\n  lang=\"{{ lang }}\"\n  style=\"{{ style }} {{ customStyle }}\"\n  open-type=\"{{ openType }}\"\n  business-id=\"{{ businessId }}\"\n  session-from=\"{{ sessionFrom }}\"\n  send-message-title=\"{{ sendMessageTitle }}\"\n  send-message-path=\"{{ sendMessagePath }}\"\n  send-message-img=\"{{ sendMessageImg }}\"\n  show-message-card=\"{{ showMessageCard }}\"\n  app-parameter=\"{{ appParameter }}\"\n  aria-label=\"{{ ariaLabel }}\"\n  bindtap=\"onClick\"\n  bindgetuserinfo=\"bindGetUserInfo\"\n  bindcontact=\"bindContact\"\n  bindgetphonenumber=\"bindGetPhoneNumber\"\n  binderror=\"bindError\"\n  bindlaunchapp=\"bindLaunchApp\"\n  bindopensetting=\"bindOpenSetting\"\n>\n  <block wx:if=\"{{ loading }}\">\n    <van-loading\n      custom-class=\"loading-class\"\n      size=\"{{ loadingSize }}\"\n      type=\"{{ loadingType }}\"\n      color=\"{{ type === 'default' ? '#c9c9c9' : 'white' }}\"\n    />\n    <view\n      wx:if=\"{{ loadingText }}\"\n      class=\"van-button__loading-text\"\n    >\n      {{ loadingText }}\n    </view>\n  </block>\n  <block wx:else>\n    <van-icon\n      wx:if=\"{{ icon }}\"\n      size=\"1.2em\"\n      name=\"{{ icon }}\"\n      class=\"van-button__icon\"\n      custom-style=\"line-height: inherit;\"\n    />\n    <view class=\"van-button__text\">\n      <slot />\n    </view>\n  </block>\n</button>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/button/index.wxss",
    "content": "@import '../common/index.wxss';.van-button{position:relative;display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;padding:0;line-height:20px;text-align:center;vertical-align:middle;-webkit-appearance:none;-webkit-text-size-adjust:100%;height:44px;height:var(--button-default-height,44px);font-size:16px;font-size:var(--button-default-font-size,16px);transition:opacity .2s;transition:opacity var(--animation-duration-fast,.2s);border-radius:2px;border-radius:var(--button-border-radius,2px)}.van-button:before{position:absolute;top:50%;left:50%;width:100%;height:100%;border:inherit;border-radius:inherit;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);opacity:0;content:\" \";background-color:#000;background-color:var(--black,#000);border-color:#000;border-color:var(--black,#000)}.van-button:after{border-width:0}.van-button--active:before{opacity:.15}.van-button--unclickable:after{display:none}.van-button--default{color:#323233;color:var(--button-default-color,#323233);background-color:#fff;background-color:var(--button-default-background-color,#fff);border:1px solid #ebedf0;border:1px solid var(--button-default-border-color,#ebedf0)}.van-button--primary{color:#fff;color:var(--button-primary-color,#fff);background-color:#07c160;background-color:var(--button-primary-background-color,#07c160);border:1px solid #07c160;border:1px solid var(--button-primary-border-color,#07c160)}.van-button--info{color:#fff;color:var(--button-info-color,#fff);background-color:#1989fa;background-color:var(--button-info-background-color,#1989fa);border:1px solid #1989fa;border:1px solid var(--button-info-border-color,#1989fa)}.van-button--danger{color:#fff;color:var(--button-danger-color,#fff);background-color:#ee0a24;background-color:var(--button-danger-background-color,#ee0a24);border:1px solid #ee0a24;border:1px solid var(--button-danger-border-color,#ee0a24)}.van-button--warning{color:#fff;color:var(--button-warning-color,#fff);background-color:#ff976a;background-color:var(--button-warning-background-color,#ff976a);border:1px solid #ff976a;border:1px solid var(--button-warning-border-color,#ff976a)}.van-button--plain{background-color:#fff;background-color:var(--button-plain-background-color,#fff)}.van-button--plain.van-button--primary{color:#07c160;color:var(--button-primary-background-color,#07c160)}.van-button--plain.van-button--info{color:#1989fa;color:var(--button-info-background-color,#1989fa)}.van-button--plain.van-button--danger{color:#ee0a24;color:var(--button-danger-background-color,#ee0a24)}.van-button--plain.van-button--warning{color:#ff976a;color:var(--button-warning-background-color,#ff976a)}.van-button--large{width:100%;height:50px;height:var(--button-large-height,50px)}.van-button--normal{padding:0 15px;font-size:14px;font-size:var(--button-normal-font-size,14px)}.van-button--small{min-width:60px;min-width:var(--button-small-min-width,60px);height:30px;height:var(--button-small-height,30px);padding:0 8px;padding:0 var(--padding-xs,8px);font-size:12px;font-size:var(--button-small-font-size,12px)}.van-button--mini{display:inline-block;min-width:50px;min-width:var(--button-mini-min-width,50px);height:22px;height:var(--button-mini-height,22px);font-size:10px;font-size:var(--button-mini-font-size,10px)}.van-button--mini+.van-button--mini{margin-left:5px}.van-button--block{display:-webkit-flex;display:flex;width:100%}.van-button--round{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--square{border-radius:0}.van-button--disabled{opacity:.5;opacity:var(--button-disabled-opacity,.5)}.van-button__text{display:inline}.van-button__icon+.van-button__text:not(:empty),.van-button__loading-text{margin-left:4px}.van-button__icon{min-width:1em;line-height:inherit!important;vertical-align:top}.van-button--hairline{padding-top:1px;border-width:0}.van-button--hairline:after{border-color:inherit;border-width:1px;border-radius:4px;border-radius:calc(var(--button-border-radius, 2px)*2)}.van-button--hairline.van-button--round:after{border-radius:999px;border-radius:var(--button-round-border-radius,999px)}.van-button--hairline.van-button--square:after{border-radius:0}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/card/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/card/index.js",
    "content": "import { link } from '../mixins/link';\nimport { VantComponent } from '../common/component';\nVantComponent({\n    classes: [\n        'num-class',\n        'desc-class',\n        'thumb-class',\n        'title-class',\n        'price-class',\n        'origin-price-class',\n    ],\n    mixins: [link],\n    props: {\n        tag: String,\n        num: String,\n        desc: String,\n        thumb: String,\n        title: String,\n        price: String,\n        centered: Boolean,\n        lazyLoad: Boolean,\n        thumbLink: String,\n        originPrice: String,\n        thumbMode: {\n            type: String,\n            value: 'aspectFit'\n        },\n        currency: {\n            type: String,\n            value: '¥'\n        }\n    },\n    methods: {\n        onClickThumb() {\n            this.jumpLink('thumbLink');\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/card/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-tag\": \"../tag/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/card/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"custom-class van-card\">\n  <view class=\"{{ utils.bem('card__header', { center: centered }) }}\">\n    <view class=\"van-card__thumb\" bind:tap=\"onClickThumb\">\n      <image\n        wx:if=\"{{ thumb }}\"\n        src=\"{{ thumb }}\"\n        mode=\"{{ thumbMode }}\"\n        lazy-load=\"{{ lazyLoad }}\"\n        class=\"van-card__img thumb-class\"\n      />\n      <slot name=\"thumb\" />\n      <van-tag\n        wx:if=\"{{ tag }}\"\n        mark\n        type=\"danger\"\n        custom-class=\"van-card__tag\"\n      >\n        {{ tag }}\n      </van-tag>\n    </view>\n\n    <view class=\"van-card__content\">\n      <view wx:if=\"{{ title }}\" class=\"van-card__title title-class\">{{ title }}</view>\n      <slot wx:else name=\"title\" />\n\n      <view wx:if=\"{{ desc }}\" class=\"van-card__desc desc-class\">{{ desc }}</view>\n      <slot wx:else name=\"desc\" />\n\n      <slot name=\"tags\" />\n\n      <view class=\"van-card__bottom\">\n        <view wx:if=\"{{ price || price === 0 }}\" class=\"van-card__price price-class\">{{ currency }} {{ price }}</view>\n        <view wx:if=\"{{ originPrice || originPrice === 0 }}\" class=\"van-card__origin-price origin-price-class\">{{ currency }} {{ originPrice }}</view>\n        <view wx:if=\"{{ num }}\" class=\"van-card__num num-class\">x {{ num }}</view>\n        <slot name=\"bottom\" />\n      </view>\n    </view>\n  </view>\n\n  <view class=\"van-card__footer\">\n    <slot name=\"footer\" />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/card/index.wxss",
    "content": "@import '../common/index.wxss';.van-card{position:relative;box-sizing:border-box;padding:8px 16px;padding:var(--card-padding,8px 16px);font-size:12px;font-size:var(--card-font-size,12px);color:#323233;color:var(--card-text-color,#323233);background-color:#fafafa;background-color:var(--card-background-color,#fafafa)}.van-card__header{display:-webkit-flex;display:flex}.van-card__header--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-card__thumb{position:relative;-webkit-flex:none;flex:none;width:90px;width:var(--card-thumb-size,90px);height:90px;height:var(--card-thumb-size,90px);margin-right:8px;margin-right:var(--padding-xs,8px)}.van-card__thumb:empty{display:none}.van-card__img{width:100%;height:100%}.van-card__content{position:relative;-webkit-flex:1;flex:1;min-width:0}.van-card__desc,.van-card__title{word-wrap:break-word}.van-card__title{font-weight:700;line-height:16px;line-height:var(--card-title-line-height,16px)}.van-card__desc{line-height:20px;line-height:var(--card-desc-line-height,20px);color:#646566;color:var(--card-desc-color,#646566)}.van-card__bottom{line-height:20px}.van-card__price{display:inline-block;font-weight:700;color:#ee0a24;color:var(--card-price-color,#ee0a24)}.van-card__origin-price{display:inline-block;margin-left:5px;text-decoration:line-through;font-size:10px;font-size:var(--card-origin-price-font-size,10px);color:#646566;color:var(--card-origin-price-color,#646566)}.van-card__num{float:right}.van-card__tag{position:absolute;top:2px;left:0}.van-card__footer{-webkit-flex:none;flex:none;width:100%;text-align:right}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell/index.js",
    "content": "import { link } from '../mixins/link';\nimport { VantComponent } from '../common/component';\nVantComponent({\n    classes: [\n        'title-class',\n        'label-class',\n        'value-class',\n        'right-icon-class',\n        'hover-class'\n    ],\n    mixins: [link],\n    props: {\n        title: null,\n        value: null,\n        icon: String,\n        size: String,\n        label: String,\n        center: Boolean,\n        isLink: Boolean,\n        required: Boolean,\n        clickable: Boolean,\n        titleWidth: String,\n        customStyle: String,\n        arrowDirection: String,\n        useLabelSlot: Boolean,\n        border: {\n            type: Boolean,\n            value: true\n        }\n    },\n    methods: {\n        onClick(event) {\n            this.$emit('click', event.detail);\n            this.jumpLink();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('cell', [size, { center, required, borderless: !border, clickable: isLink || clickable }]) }}\"\n  hover-class=\"van-cell--hover hover-class\"\n  hover-stay-time=\"70\"\n  style=\"{{ customStyle }}\"\n  bind:tap=\"onClick\"\n>\n  <van-icon\n    wx:if=\"{{ icon }}\"\n    name=\"{{ icon }}\"\n    class=\"van-cell__left-icon-wrap\"\n    custom-class=\"van-cell__left-icon\"\n  />\n  <slot wx:else name=\"icon\" />\n\n  <view\n    style=\"{{ titleWidth ? 'max-width:' + titleWidth + ';min-width:' + titleWidth : '' }}\"\n    class=\"van-cell__title title-class\"\n  >\n    <block wx:if=\"{{ title }}\">{{ title }}</block>\n    <slot wx:else name=\"title\" />\n\n    <view wx:if=\"{{ label || useLabelSlot }}\" class=\"van-cell__label label-class\">\n      <slot wx:if=\"{{ useLabelSlot }}\" name=\"label\" />\n      <block wx:elif=\"{{ label }}\">{{ label }}</block>\n    </view>\n  </view>\n\n  <view class=\"van-cell__value value-class\">\n    <block wx:if=\"{{ value || value === 0 }}\">{{ value }}</block>\n    <slot wx:else />\n  </view>\n\n  <van-icon\n    wx:if=\"{{ isLink }}\"\n    name=\"{{ arrowDirection ? 'arrow' + '-' + arrowDirection : 'arrow' }}\"\n    class=\"van-cell__right-icon-wrap right-icon-class\"\n    custom-class=\"van-cell__right-icon\"\n  />\n  <slot wx:else name=\"right-icon\" />\n\n  <slot name=\"extra\" />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell/index.wxss",
    "content": "@import '../common/index.wxss';.van-cell{position:relative;display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:10px 16px;padding:var(--cell-vertical-padding,10px) var(--cell-horizontal-padding,16px);font-size:14px;font-size:var(--cell-font-size,14px);line-height:24px;line-height:var(--cell-line-height,24px);color:#323233;color:var(--cell-text-color,#323233);background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:\" \";pointer-events:none;top:auto;right:0;bottom:0;left:16px;border-bottom:1px solid #ebedf0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-cell--borderless:after{display:none}.van-cell-group{background-color:#fff;background-color:var(--cell-background-color,#fff)}.van-cell__label{margin-top:3px;margin-top:var(--cell-label-margin-top,3px);font-size:12px;font-size:var(--cell-label-font-size,12px);line-height:18px;line-height:var(--cell-label-line-height,18px);color:#969799;color:var(--cell-label-color,#969799)}.van-cell__value{overflow:hidden;text-align:right;vertical-align:middle;color:#969799;color:var(--cell-value-color,#969799)}.van-cell__title,.van-cell__value{-webkit-flex:1;flex:1}.van-cell__title:empty,.van-cell__value:empty{display:none}.van-cell__left-icon-wrap,.van-cell__right-icon-wrap{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:24px;height:var(--cell-line-height,24px);font-size:16px;font-size:var(--cell-icon-size,16px)}.van-cell__left-icon-wrap{margin-right:5px}.van-cell__right-icon-wrap{margin-left:5px;color:#969799;color:var(--cell-right-icon-color,#969799)}.van-cell__left-icon{vertical-align:middle}.van-cell__left-icon,.van-cell__right-icon{line-height:24px;line-height:var(--cell-line-height,24px)}.van-cell--clickable.van-cell--hover{background-color:#f2f3f5;background-color:var(--cell-active-color,#f2f3f5)}.van-cell--required{overflow:visible}.van-cell--required:before{position:absolute;content:\"*\";left:8px;left:var(--padding-xs,8px);font-size:14px;font-size:var(--cell-font-size,14px);color:#ee0a24;color:var(--cell-required-color,#ee0a24)}.van-cell--center{-webkit-align-items:center;align-items:center}.van-cell--large{padding-top:12px;padding-top:var(--cell-large-vertical-padding,12px);padding-bottom:12px;padding-bottom:var(--cell-large-vertical-padding,12px)}.van-cell--large .van-cell__title{font-size:16px;font-size:var(--cell-large-title-font-size,16px)}.van-cell--large .van-cell__label{font-size:14px;font-size:var(--cell-large-label-font-size,14px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell-group/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell-group/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        title: String,\n        border: {\n            type: Boolean,\n            value: true\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell-group/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell-group/index.wxml",
    "content": "<view\n  wx:if=\"{{ title }}\"\n  class=\"van-cell-group__title\"\n>\n  {{ title }}\n</view>\n<view class=\"custom-class van-cell-group {{ border ? 'van-hairline--top-bottom' : '' }}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/cell-group/index.wxss",
    "content": "@import '../common/index.wxss';.van-cell-group__title{padding:16px 16px 8px;padding:var(--cell-group-title-padding,16px 16px 8px);font-size:14px;font-size:var(--cell-group-title-font-size,14px);line-height:16px;line-height:var(--cell-group-title-line-height,16px);color:#969799;color:var(--cell-group-title-color,#969799)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nfunction emit(target, value) {\n    target.$emit('input', value);\n    target.$emit('change', value);\n}\nVantComponent({\n    field: true,\n    relation: {\n        name: 'checkbox-group',\n        type: 'ancestor',\n        linked(target) {\n            this.parent = target;\n        },\n        unlinked() {\n            this.parent = null;\n        }\n    },\n    classes: ['icon-class', 'label-class'],\n    props: {\n        value: Boolean,\n        disabled: Boolean,\n        useIconSlot: Boolean,\n        checkedColor: String,\n        labelPosition: String,\n        labelDisabled: Boolean,\n        shape: {\n            type: String,\n            value: 'round'\n        },\n        iconSize: {\n            type: null,\n            observer: 'setSizeWithUnit'\n        }\n    },\n    data: {\n        sizeWithUnit: '20px'\n    },\n    methods: {\n        emitChange(value) {\n            if (this.parent) {\n                this.setParentValue(this.parent, value);\n            }\n            else {\n                emit(this, value);\n            }\n        },\n        toggle() {\n            const { disabled, value } = this.data;\n            if (!disabled) {\n                this.emitChange(!value);\n            }\n        },\n        onClickLabel() {\n            const { labelDisabled, disabled, value } = this.data;\n            if (!disabled && !labelDisabled) {\n                this.emitChange(!value);\n            }\n        },\n        setParentValue(parent, value) {\n            const parentValue = parent.data.value.slice();\n            const { name } = this.data;\n            const { max } = parent.data;\n            if (value) {\n                if (max && parentValue.length >= max) {\n                    return;\n                }\n                if (parentValue.indexOf(name) === -1) {\n                    parentValue.push(name);\n                    emit(parent, parentValue);\n                }\n            }\n            else {\n                const index = parentValue.indexOf(name);\n                if (index !== -1) {\n                    parentValue.splice(index, 1);\n                    emit(parent, parentValue);\n                }\n            }\n        },\n        setSizeWithUnit(size) {\n            this.set({\n                sizeWithUnit: addUnit(size)\n            });\n        },\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-checkbox custom-class\">\n  <view class=\"van-checkbox__icon-wrap\" bindtap=\"toggle\">\n    <slot wx:if=\"{{ useIconSlot }}\" name=\"icon\" />\n    <van-icon\n      wx:else\n      name=\"success\"\n      size=\"0.8em\"\n      class=\"{{ utils.bem('checkbox__icon', [shape, { disabled, checked: value }]) }}\"\n      style=\"font-size: {{ sizeWithUnit }};{{ checkedColor && value && !disabled ? 'border-color:' + checkedColor + '; background-color:' + checkedColor : '' }}\"\n      custom-class=\"icon-class\"\n      custom-style=\"line-height: 1.25em;\"\n    />\n  </view>\n  <view class=\"label-class {{ utils.bem('checkbox__label', [labelPosition, { disabled }]) }}\" bindtap=\"onClickLabel\">\n    <slot />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox/index.wxss",
    "content": "@import '../common/index.wxss';.van-checkbox{display:-webkit-flex;display:flex;overflow:hidden;-webkit-user-select:none;user-select:none}.van-checkbox__icon-wrap,.van-checkbox__label{line-height:20px;line-height:var(--checkbox-size,20px)}.van-checkbox__icon-wrap{-webkit-flex:none;flex:none}.van-checkbox__icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;font-size:20px;font-size:var(--checkbox-size,20px);border:1px solid #c8c9cc;border:1px solid var(--checkbox-border-color,#c8c9cc);transition-duration:.2s;transition-duration:var(--checkbox-transition-duration,.2s)}.van-checkbox__icon--round{border-radius:100%}.van-checkbox__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--checkbox-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--checkbox-checked-icon-color,#1989fa)}.van-checkbox__icon--disabled{background-color:#ebedf0;background-color:var(--checkbox-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__icon--disabled.van-checkbox__icon--checked{color:#c8c9cc;color:var(--checkbox-disabled-icon-color,#c8c9cc)}.van-checkbox__label{word-wrap:break-word;margin-left:10px;margin-left:var(--checkbox-label-margin,10px);color:#323233;color:var(--checkbox-label-color,#323233)}.van-checkbox__label--left{float:left;margin:0 10px 0 0;margin:0 var(--checkbox-label-margin,10px) 0 0}.van-checkbox__label--disabled{color:#c8c9cc;color:var(--checkbox-disabled-label-color,#c8c9cc)}.van-checkbox__label:empty{margin:0}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox-group/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox-group/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    field: true,\n    relation: {\n        name: 'checkbox',\n        type: 'descendant',\n        linked(target) {\n            this.children = this.children || [];\n            this.children.push(target);\n            this.updateChild(target);\n        },\n        unlinked(target) {\n            this.children = this.children.filter((child) => child !== target);\n        }\n    },\n    props: {\n        max: Number,\n        value: {\n            type: Array,\n            observer: 'updateChildren'\n        },\n        disabled: {\n            type: Boolean,\n            observer: 'updateChildren'\n        }\n    },\n    methods: {\n        updateChildren() {\n            (this.children || []).forEach((child) => this.updateChild(child));\n        },\n        updateChild(child) {\n            const { value, disabled } = this.data;\n            child.setData({\n                value: value.indexOf(child.data.name) !== -1,\n                disabled: disabled || child.data.disabled\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox-group/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox-group/index.wxml",
    "content": "<slot />\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/checkbox-group/index.wxss",
    "content": "@import '../common/index.wxss';"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/circle/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/circle/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { isObj } from '../common/utils';\nimport { BLUE, WHITE } from '../common/color';\nfunction format(rate) {\n    return Math.min(Math.max(rate, 0), 100);\n}\nconst PERIMETER = 2 * Math.PI;\nconst BEGIN_ANGLE = -Math.PI / 2;\nconst STEP = 1;\nVantComponent({\n    props: {\n        text: String,\n        lineCap: {\n            type: String,\n            value: 'round'\n        },\n        value: {\n            type: Number,\n            value: 0,\n            observer: 'reRender'\n        },\n        speed: {\n            type: Number,\n            value: 50\n        },\n        size: {\n            type: Number,\n            value: 100,\n            observer: 'setStyle'\n        },\n        fill: String,\n        layerColor: {\n            type: String,\n            value: WHITE\n        },\n        color: {\n            type: [String, Object],\n            value: BLUE,\n            observer: 'setHoverColor'\n        },\n        strokeWidth: {\n            type: Number,\n            value: 4\n        },\n        clockwise: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        style: 'width: 100px; height: 100px;',\n        hoverColor: BLUE\n    },\n    methods: {\n        getContext() {\n            if (!this.ctx) {\n                this.ctx = wx.createCanvasContext('van-circle', this);\n            }\n            return this.ctx;\n        },\n        setHoverColor() {\n            const context = this.getContext();\n            const { color, size } = this.data;\n            let hoverColor = color;\n            if (isObj(color)) {\n                const LinearColor = context.createLinearGradient(size, 0, 0, 0);\n                Object.keys(color)\n                    .sort((a, b) => parseFloat(a) - parseFloat(b))\n                    .map(key => LinearColor.addColorStop(parseFloat(key) / 100, color[key]));\n                hoverColor = LinearColor;\n            }\n            this.setData({ hoverColor });\n        },\n        setStyle() {\n            const { size } = this.data;\n            const style = `width: ${size}px; height: ${size}px;`;\n            this.setData({ style });\n        },\n        presetCanvas(context, strokeStyle, beginAngle, endAngle, fill) {\n            const { strokeWidth, lineCap, clockwise, size } = this.data;\n            const position = size / 2;\n            const radius = position - strokeWidth / 2;\n            context.setStrokeStyle(strokeStyle);\n            context.setLineWidth(strokeWidth);\n            context.setLineCap(lineCap);\n            context.beginPath();\n            context.arc(position, position, radius, beginAngle, endAngle, !clockwise);\n            context.stroke();\n            if (fill) {\n                context.setFillStyle(fill);\n                context.fill();\n            }\n        },\n        renderLayerCircle(context) {\n            const { layerColor, fill } = this.data;\n            this.presetCanvas(context, layerColor, 0, PERIMETER, fill);\n        },\n        renderHoverCircle(context, formatValue) {\n            const { clockwise, hoverColor } = this.data;\n            // 结束角度\n            const progress = PERIMETER * (formatValue / 100);\n            const endAngle = clockwise\n                ? BEGIN_ANGLE + progress\n                : 3 * Math.PI - (BEGIN_ANGLE + progress);\n            this.presetCanvas(context, hoverColor, BEGIN_ANGLE, endAngle);\n        },\n        drawCircle(currentValue) {\n            const context = this.getContext();\n            const { size } = this.data;\n            context.clearRect(0, 0, size, size);\n            this.renderLayerCircle(context);\n            const formatValue = format(currentValue);\n            if (formatValue !== 0) {\n                this.renderHoverCircle(context, formatValue);\n            }\n            context.draw();\n        },\n        reRender() {\n            // tofector 动画暂时没有想到好的解决方案\n            const { value, speed } = this.data;\n            if (speed <= 0 || speed > 1000) {\n                this.drawCircle(value);\n                return;\n            }\n            this.clearInterval();\n            this.currentValue = this.currentValue || 0;\n            this.interval = setInterval(() => {\n                if (this.currentValue !== value) {\n                    if (this.currentValue < value) {\n                        this.currentValue += STEP;\n                    }\n                    else {\n                        this.currentValue -= STEP;\n                    }\n                    this.drawCircle(this.currentValue);\n                }\n                else {\n                    this.clearInterval();\n                }\n            }, 1000 / speed);\n        },\n        clearInterval() {\n            if (this.interval) {\n                clearInterval(this.interval);\n                this.interval = null;\n            }\n        }\n    },\n    created() {\n        const { value } = this.data;\n        this.currentValue = value;\n        this.drawCircle(value);\n    },\n    destroyed() {\n        this.ctx = null;\n        this.clearInterval();\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/circle/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/circle/index.wxml",
    "content": "<view class=\"van-circle\">\n  <canvas class=\"van-circle__canvas\" style=\"{{ style }}\" canvas-id=\"van-circle\"></canvas>\n  <view wx:if=\"{{ !text }}\" class=\"van-circle__text\">\n    <slot></slot>\n  </view>\n  <cover-view wx:else class=\"van-circle__text\">{{ text }}</cover-view>\n</view>"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/circle/index.wxss",
    "content": "@import '../common/index.wxss';.van-circle{position:relative;display:inline-block;text-align:center}.van-circle__text{position:absolute;top:50%;left:0;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#323233;color:var(--circle-text-color,#323233)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/col/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/col/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'row',\n        type: 'ancestor'\n    },\n    props: {\n        span: Number,\n        offset: Number\n    },\n    data: {\n        style: ''\n    },\n    methods: {\n        setGutter(gutter) {\n            const padding = `${gutter / 2}px`;\n            const style = gutter ? `padding-left: ${padding}; padding-right: ${padding};` : '';\n            if (style !== this.data.style) {\n                this.setData({ style });\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/col/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/col/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('col', [span]) }} {{ offset ? 'van-col--offset-' + offset : '' }}\"\n  style=\"{{ style }}\"\n>\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/col/index.wxss",
    "content": "@import '../common/index.wxss';.van-col{float:left;box-sizing:border-box}.van-col--1{width:4.16666667%}.van-col--offset-1{margin-left:4.16666667%}.van-col--2{width:8.33333333%}.van-col--offset-2{margin-left:8.33333333%}.van-col--3{width:12.5%}.van-col--offset-3{margin-left:12.5%}.van-col--4{width:16.66666667%}.van-col--offset-4{margin-left:16.66666667%}.van-col--5{width:20.83333333%}.van-col--offset-5{margin-left:20.83333333%}.van-col--6{width:25%}.van-col--offset-6{margin-left:25%}.van-col--7{width:29.16666667%}.van-col--offset-7{margin-left:29.16666667%}.van-col--8{width:33.33333333%}.van-col--offset-8{margin-left:33.33333333%}.van-col--9{width:37.5%}.van-col--offset-9{margin-left:37.5%}.van-col--10{width:41.66666667%}.van-col--offset-10{margin-left:41.66666667%}.van-col--11{width:45.83333333%}.van-col--offset-11{margin-left:45.83333333%}.van-col--12{width:50%}.van-col--offset-12{margin-left:50%}.van-col--13{width:54.16666667%}.van-col--offset-13{margin-left:54.16666667%}.van-col--14{width:58.33333333%}.van-col--offset-14{margin-left:58.33333333%}.van-col--15{width:62.5%}.van-col--offset-15{margin-left:62.5%}.van-col--16{width:66.66666667%}.van-col--offset-16{margin-left:66.66666667%}.van-col--17{width:70.83333333%}.van-col--offset-17{margin-left:70.83333333%}.van-col--18{width:75%}.van-col--offset-18{margin-left:75%}.van-col--19{width:79.16666667%}.van-col--offset-19{margin-left:79.16666667%}.van-col--20{width:83.33333333%}.van-col--offset-20{margin-left:83.33333333%}.van-col--21{width:87.5%}.van-col--offset-21{margin-left:87.5%}.van-col--22{width:91.66666667%}.van-col--offset-22{margin-left:91.66666667%}.van-col--23{width:95.83333333%}.van-col--offset-23{margin-left:95.83333333%}.van-col--24{width:100%}.van-col--offset-24{margin-left:100%}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'collapse-item',\n        type: 'descendant',\n        linked(child) {\n            this.children.push(child);\n        },\n        unlinked(child) {\n            this.children = this.children.filter((item) => item !== child);\n        }\n    },\n    props: {\n        value: {\n            type: null,\n            observer: 'updateExpanded'\n        },\n        accordion: {\n            type: Boolean,\n            observer: 'updateExpanded'\n        },\n        border: {\n            type: Boolean,\n            value: true\n        }\n    },\n    beforeCreate() {\n        this.children = [];\n    },\n    methods: {\n        updateExpanded() {\n            this.children.forEach((child) => {\n                child.updateExpanded();\n            });\n        },\n        switch(name, expanded) {\n            const { accordion, value } = this.data;\n            if (!accordion) {\n                name = expanded\n                    ? (value || []).concat(name)\n                    : (value || []).filter((activeName) => activeName !== name);\n            }\n            else {\n                name = expanded ? name : '';\n            }\n            this.$emit('change', name);\n            this.$emit('input', name);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse/index.wxml",
    "content": "<view class=\"custom-class van-collapse {{ border ? 'van-hairline--top-bottom' : '' }}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse/index.wxss",
    "content": "@import '../common/index.wxss';"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse-item/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse-item/index.js",
    "content": "import { VantComponent } from '../common/component';\nconst nextTick = () => new Promise(resolve => setTimeout(resolve, 20));\nVantComponent({\n    classes: ['title-class', 'content-class'],\n    relation: {\n        name: 'collapse',\n        type: 'ancestor',\n        linked(parent) {\n            this.parent = parent;\n        }\n    },\n    props: {\n        name: null,\n        title: null,\n        value: null,\n        icon: String,\n        label: String,\n        disabled: Boolean,\n        clickable: Boolean,\n        border: {\n            type: Boolean,\n            value: true\n        },\n        isLink: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        contentHeight: 0,\n        expanded: false,\n        transition: false\n    },\n    mounted() {\n        this.updateExpanded()\n            .then(nextTick)\n            .then(() => {\n            const data = { transition: true };\n            if (this.data.expanded) {\n                data.contentHeight = 'auto';\n            }\n            this.setData(data);\n        });\n    },\n    methods: {\n        updateExpanded() {\n            if (!this.parent) {\n                return Promise.resolve();\n            }\n            const { value, accordion } = this.parent.data;\n            const { children = [] } = this.parent;\n            const { name } = this.data;\n            const index = children.indexOf(this);\n            const currentName = name == null ? index : name;\n            const expanded = accordion\n                ? value === currentName\n                : (value || []).some((name) => name === currentName);\n            const stack = [];\n            if (expanded !== this.data.expanded) {\n                stack.push(this.updateStyle(expanded));\n            }\n            stack.push(this.set({ index, expanded }));\n            return Promise.all(stack);\n        },\n        updateStyle(expanded) {\n            return this.getRect('.van-collapse-item__content')\n                .then((rect) => rect.height)\n                .then((height) => {\n                if (expanded) {\n                    return this.set({\n                        contentHeight: height ? `${height}px` : 'auto'\n                    });\n                }\n                return this.set({ contentHeight: `${height}px` })\n                    .then(nextTick)\n                    .then(() => this.set({ contentHeight: 0 }));\n            });\n        },\n        onClick() {\n            if (this.data.disabled) {\n                return;\n            }\n            const { name, expanded } = this.data;\n            const index = this.parent.children.indexOf(this);\n            const currentName = name == null ? index : name;\n            this.parent.switch(currentName, !expanded);\n        },\n        onTransitionEnd() {\n            if (this.data.expanded) {\n                this.setData({\n                    contentHeight: 'auto'\n                });\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse-item/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-cell\": \"../cell/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse-item/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-collapse-item custom-class {{ index !== 0 ? 'van-hairline--top' : '' }}\">\n  <van-cell\n    title=\"{{ title }}\"\n    title-class=\"title-class\"\n    icon=\"{{ icon }}\"\n    value=\"{{ value }}\"\n    label=\"{{ label }}\"\n    is-link=\"{{ isLink }}\"\n    clickable=\"{{ clickable }}\"\n    border=\"{{ border && expanded }}\"\n    class=\"{{ utils.bem('collapse-item__title', { disabled, expanded }) }}\"\n    right-icon-class=\"van-cell__right-icon\"\n    custom-class=\"van-cell\"\n    hover-class=\"van-cell--hover\"\n    bind:click=\"onClick\"\n  >\n    <slot\n      name=\"title\"\n      slot=\"title\"\n    />\n    <slot\n      name=\"icon\"\n      slot=\"icon\"\n    />\n    <slot name=\"value\" />\n    <slot\n      name=\"right-icon\"\n      slot=\"right-icon\"\n    />\n  </van-cell>\n  <view\n    class=\"{{ utils.bem('collapse-item__wrapper', { transition }) }}\"\n    style=\"height: {{ contentHeight }};\"\n    bind:transitionend=\"onTransitionEnd\"\n  >\n    <view\n      class=\"van-collapse-item__content content-class\"\n    >\n      <slot />\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/collapse-item/index.wxss",
    "content": "@import '../common/index.wxss';.van-collapse-item__title .van-cell__right-icon{-webkit-transform:rotate(90deg);transform:rotate(90deg);transition:-webkit-transform .3s;transition:transform .3s;transition:transform .3s,-webkit-transform .3s;transition:-webkit-transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s);transition:transform var(--collapse-item-transition-duration,.3s),-webkit-transform var(--collapse-item-transition-duration,.3s)}.van-collapse-item__title--expanded .van-cell__right-icon{-webkit-transform:rotate(-90deg);transform:rotate(-90deg)}.van-collapse-item__title--disabled .van-cell,.van-collapse-item__title--disabled .van-cell__right-icon{color:#c8c9cc!important;color:var(--collapse-item-title-disabled-color,#c8c9cc)!important}.van-collapse-item__title--disabled .van-cell--hover{background-color:#fff!important;background-color:var(--white,#fff)!important}.van-collapse-item__wrapper{overflow:hidden}.van-collapse-item__wrapper--transition{transition:height .3s ease-in-out}.van-collapse-item__content{padding:15px;padding:var(--collapse-item-content-padding,15px);color:#969799;color:var(--collapse-item-content-text-color,#969799);font-size:13px;font-size:var(--collapse-item-content-font-size,13px);line-height:1.5;line-height:var(--collapse-item-content-line-height,1.5);background-color:#fff;background-color:var(--collapse-item-content-background-color,#fff)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/color.d.ts",
    "content": "export declare const RED = \"#ee0a24\";\nexport declare const BLUE = \"#1989fa\";\nexport declare const WHITE = \"#fff\";\nexport declare const GREEN = \"#07c160\";\nexport declare const ORANGE = \"#ff976a\";\nexport declare const GRAY = \"#323233\";\nexport declare const GRAY_DARK = \"#969799\";\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/color.js",
    "content": "export const RED = '#ee0a24';\nexport const BLUE = '#1989fa';\nexport const WHITE = '#fff';\nexport const GREEN = '#07c160';\nexport const ORANGE = '#ff976a';\nexport const GRAY = '#323233';\nexport const GRAY_DARK = '#969799';\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/component.d.ts",
    "content": "import { VantComponentOptions, CombinedComponentInstance } from '../definitions/index';\ndeclare function VantComponent<Data, Props, Methods>(vantOptions?: VantComponentOptions<Data, Props, Methods, CombinedComponentInstance<Data, Props, Methods>>): void;\nexport { VantComponent };\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/component.js",
    "content": "import { basic } from '../mixins/basic';\nimport { observe } from '../mixins/observer/index';\nfunction mapKeys(source, target, map) {\n    Object.keys(map).forEach(key => {\n        if (source[key]) {\n            target[map[key]] = source[key];\n        }\n    });\n}\nfunction VantComponent(vantOptions = {}) {\n    const options = {};\n    mapKeys(vantOptions, options, {\n        data: 'data',\n        props: 'properties',\n        mixins: 'behaviors',\n        methods: 'methods',\n        beforeCreate: 'created',\n        created: 'attached',\n        mounted: 'ready',\n        relations: 'relations',\n        destroyed: 'detached',\n        classes: 'externalClasses'\n    });\n    const { relation } = vantOptions;\n    if (relation) {\n        options.relations = Object.assign(options.relations || {}, {\n            [`../${relation.name}/index`]: relation\n        });\n    }\n    // add default externalClasses\n    options.externalClasses = options.externalClasses || [];\n    options.externalClasses.push('custom-class');\n    // add default behaviors\n    options.behaviors = options.behaviors || [];\n    options.behaviors.push(basic);\n    // map field to form-field behavior\n    if (vantOptions.field) {\n        options.behaviors.push('wx://form-field');\n    }\n    // add default options\n    options.options = {\n        multipleSlots: true,\n        addGlobalClass: true\n    };\n    observe(vantOptions, options);\n    Component(options);\n}\nexport { VantComponent };\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/index.wxss",
    "content": ".van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}.van-clearfix:after{display:table;clear:both;content:\"\"}.van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:\" \";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #eee;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/clearfix.wxss",
    "content": ".van-clearfix:after{display:table;clear:both;content:\"\"}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/ellipsis.wxss",
    "content": ".van-ellipsis{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.van-multi-ellipsis--l2{-webkit-line-clamp:2}.van-multi-ellipsis--l2,.van-multi-ellipsis--l3{display:-webkit-box;overflow:hidden;text-overflow:ellipsis;-webkit-box-orient:vertical}.van-multi-ellipsis--l3{-webkit-line-clamp:3}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/hairline.wxss",
    "content": ".van-hairline,.van-hairline--bottom,.van-hairline--left,.van-hairline--right,.van-hairline--surround,.van-hairline--top,.van-hairline--top-bottom{position:relative}.van-hairline--bottom:after,.van-hairline--left:after,.van-hairline--right:after,.van-hairline--surround:after,.van-hairline--top-bottom:after,.van-hairline--top:after,.van-hairline:after{position:absolute;box-sizing:border-box;-webkit-transform-origin:center;transform-origin:center;content:\" \";pointer-events:none;top:-50%;right:-50%;bottom:-50%;left:-50%;border:0 solid #eee;-webkit-transform:scale(.5);transform:scale(.5)}.van-hairline--top:after{border-top-width:1px}.van-hairline--left:after{border-left-width:1px}.van-hairline--right:after{border-right-width:1px}.van-hairline--bottom:after{border-bottom-width:1px}.van-hairline--top-bottom:after{border-width:1px 0}.van-hairline--surround:after{border-width:1px}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/mixins/clearfix.wxss",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/mixins/ellipsis.wxss",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/mixins/hairline.wxss",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/theme.wxss",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/style/var.wxss",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/utils.d.ts",
    "content": "/// <reference types=\"miniprogram-api-typings\" />\nexport declare function isDef(value: any): boolean;\nexport declare function isObj(x: any): boolean;\nexport declare function isNumber(value: any): boolean;\nexport declare function range(num: number, min: number, max: number): number;\nexport declare function nextTick(fn: Function): void;\nexport declare function getSystemInfoSync(): WechatMiniprogram.GetSystemInfoSuccessCallbackResult;\nexport declare function addUnit(value?: string | number): string | undefined;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/common/utils.js",
    "content": "export function isDef(value) {\n    return value !== undefined && value !== null;\n}\nexport function isObj(x) {\n    const type = typeof x;\n    return x !== null && (type === 'object' || type === 'function');\n}\nexport function isNumber(value) {\n    return /^\\d+(\\.\\d+)?$/.test(value);\n}\nexport function range(num, min, max) {\n    return Math.min(Math.max(num, min), max);\n}\nexport function nextTick(fn) {\n    setTimeout(() => {\n        fn();\n    }, 1000 / 30);\n}\nlet systemInfo = null;\nexport function getSystemInfoSync() {\n    if (systemInfo == null) {\n        systemInfo = wx.getSystemInfoSync();\n    }\n    return systemInfo;\n}\nexport function addUnit(value) {\n    if (!isDef(value)) {\n        return undefined;\n    }\n    value = String(value);\n    return isNumber(value) ? `${value}px` : value;\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { isSameSecond, parseFormat, parseTimeData } from './utils';\nfunction simpleTick(fn) {\n    return setTimeout(fn, 30);\n}\nVantComponent({\n    props: {\n        useSlot: Boolean,\n        millisecond: Boolean,\n        time: {\n            type: Number,\n            observer: 'reset'\n        },\n        format: {\n            type: String,\n            value: 'HH:mm:ss'\n        },\n        autoStart: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        timeData: parseTimeData(0),\n        formattedTime: '0'\n    },\n    destroyed() {\n        clearTimeout(this.tid);\n        this.tid = null;\n    },\n    methods: {\n        // 开始\n        start() {\n            if (this.counting) {\n                return;\n            }\n            this.counting = true;\n            this.endTime = Date.now() + this.remain;\n            this.tick();\n        },\n        // 暂停\n        pause() {\n            this.counting = false;\n            clearTimeout(this.tid);\n        },\n        // 重置\n        reset() {\n            this.pause();\n            this.remain = this.data.time;\n            this.setRemain(this.remain);\n            if (this.data.autoStart) {\n                this.start();\n            }\n        },\n        tick() {\n            if (this.data.millisecond) {\n                this.microTick();\n            }\n            else {\n                this.macroTick();\n            }\n        },\n        microTick() {\n            this.tid = simpleTick(() => {\n                this.setRemain(this.getRemain());\n                if (this.remain !== 0) {\n                    this.microTick();\n                }\n            });\n        },\n        macroTick() {\n            this.tid = simpleTick(() => {\n                const remain = this.getRemain();\n                if (!isSameSecond(remain, this.remain) || remain === 0) {\n                    this.setRemain(remain);\n                }\n                if (this.remain !== 0) {\n                    this.macroTick();\n                }\n            });\n        },\n        getRemain() {\n            return Math.max(this.endTime - Date.now(), 0);\n        },\n        setRemain(remain) {\n            this.remain = remain;\n            const timeData = parseTimeData(remain);\n            if (this.data.useSlot) {\n                this.$emit('change', timeData);\n            }\n            this.setData({\n                formattedTime: parseFormat(this.data.format, timeData)\n            });\n            if (remain === 0) {\n                this.pause();\n                this.$emit('finish');\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/index.wxml",
    "content": "<view class=\"van-count-down\">\n  <slot wx:if=\"{{ useSlot }}\"/>\n  <block wx:else>{{ formattedTime }}</block>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/index.wxss",
    "content": "@import '../common/index.wxss';.van-count-down{color:#323233;color:var(--count-down-text-color,#323233);font-size:14px;font-size:var(--count-down-font-size,14px);line-height:20px;line-height:var(--count-down-line-height,20px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/utils.d.ts",
    "content": "export declare type TimeData = {\n    days: number;\n    hours: number;\n    minutes: number;\n    seconds: number;\n    milliseconds: number;\n};\nexport declare function parseTimeData(time: number): TimeData;\nexport declare function parseFormat(format: string, timeData: TimeData): string;\nexport declare function isSameSecond(time1: number, time2: number): boolean;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/count-down/utils.js",
    "content": "function padZero(num, targetLength = 2) {\n    let str = num + '';\n    while (str.length < targetLength) {\n        str = '0' + str;\n    }\n    return str;\n}\nconst SECOND = 1000;\nconst MINUTE = 60 * SECOND;\nconst HOUR = 60 * MINUTE;\nconst DAY = 24 * HOUR;\nexport function parseTimeData(time) {\n    const days = Math.floor(time / DAY);\n    const hours = Math.floor((time % DAY) / HOUR);\n    const minutes = Math.floor((time % HOUR) / MINUTE);\n    const seconds = Math.floor((time % MINUTE) / SECOND);\n    const milliseconds = Math.floor(time % SECOND);\n    return {\n        days,\n        hours,\n        minutes,\n        seconds,\n        milliseconds\n    };\n}\nexport function parseFormat(format, timeData) {\n    const { days } = timeData;\n    let { hours, minutes, seconds, milliseconds } = timeData;\n    if (format.indexOf('DD') === -1) {\n        hours += days * 24;\n    }\n    else {\n        format = format.replace('DD', padZero(days));\n    }\n    if (format.indexOf('HH') === -1) {\n        minutes += hours * 60;\n    }\n    else {\n        format = format.replace('HH', padZero(hours));\n    }\n    if (format.indexOf('mm') === -1) {\n        seconds += minutes * 60;\n    }\n    else {\n        format = format.replace('mm', padZero(minutes));\n    }\n    if (format.indexOf('ss') === -1) {\n        milliseconds += seconds * 1000;\n    }\n    else {\n        format = format.replace('ss', padZero(seconds));\n    }\n    return format.replace('SSS', padZero(milliseconds, 3));\n}\nexport function isSameSecond(time1, time2) {\n    return Math.floor(time1 / 1000) === Math.floor(time2 / 1000);\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/datetime-picker/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/datetime-picker/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { isDef } from '../common/utils';\nimport { pickerProps } from '../picker/shared';\nconst currentYear = new Date().getFullYear();\nfunction isValidDate(date) {\n    return isDef(date) && !isNaN(new Date(date).getTime());\n}\nfunction range(num, min, max) {\n    return Math.min(Math.max(num, min), max);\n}\nfunction padZero(val) {\n    return `00${val}`.slice(-2);\n}\nfunction times(n, iteratee) {\n    let index = -1;\n    const result = Array(n < 0 ? 0 : n);\n    while (++index < n) {\n        result[index] = iteratee(index);\n    }\n    return result;\n}\nfunction getTrueValue(formattedValue) {\n    if (!formattedValue)\n        return;\n    while (isNaN(parseInt(formattedValue, 10))) {\n        formattedValue = formattedValue.slice(1);\n    }\n    return parseInt(formattedValue, 10);\n}\nfunction getMonthEndDay(year, month) {\n    return 32 - new Date(year, month - 1, 32).getDate();\n}\nconst defaultFormatter = (_, value) => value;\nVantComponent({\n    classes: ['active-class', 'toolbar-class', 'column-class'],\n    props: Object.assign(Object.assign({}, pickerProps), { value: null, filter: null, type: {\n            type: String,\n            value: 'datetime'\n        }, showToolbar: {\n            type: Boolean,\n            value: true\n        }, formatter: {\n            type: null,\n            value: defaultFormatter\n        }, minDate: {\n            type: Number,\n            value: new Date(currentYear - 10, 0, 1).getTime()\n        }, maxDate: {\n            type: Number,\n            value: new Date(currentYear + 10, 11, 31).getTime()\n        }, minHour: {\n            type: Number,\n            value: 0\n        }, maxHour: {\n            type: Number,\n            value: 23\n        }, minMinute: {\n            type: Number,\n            value: 0\n        }, maxMinute: {\n            type: Number,\n            value: 59\n        } }),\n    data: {\n        innerValue: Date.now(),\n        columns: []\n    },\n    watch: {\n        value: 'updateValue',\n        type: 'updateValue',\n        minDate: 'updateValue',\n        maxDate: 'updateValue',\n        minHour: 'updateValue',\n        maxHour: 'updateValue',\n        minMinute: 'updateValue',\n        maxMinute: 'updateValue'\n    },\n    methods: {\n        updateValue() {\n            const { data } = this;\n            const val = this.correctValue(this.data.value);\n            const isEqual = val === data.innerValue;\n            if (!isEqual) {\n                this.updateColumnValue(val).then(() => {\n                    this.$emit('input', val);\n                });\n            }\n            else {\n                this.updateColumns();\n            }\n        },\n        getPicker() {\n            if (this.picker == null) {\n                this.picker = this.selectComponent('.van-datetime-picker');\n                const { picker } = this;\n                const { setColumnValues } = picker;\n                picker.setColumnValues = (...args) => setColumnValues.apply(picker, [...args, false]);\n            }\n            return this.picker;\n        },\n        updateColumns() {\n            const { formatter = defaultFormatter } = this.data;\n            const results = this.getOriginColumns().map(column => ({\n                values: column.values.map(value => formatter(column.type, value))\n            }));\n            return this.set({ columns: results });\n        },\n        getOriginColumns() {\n            const { filter } = this.data;\n            const results = this.getRanges().map(({ type, range }) => {\n                let values = times(range[1] - range[0] + 1, index => {\n                    let value = range[0] + index;\n                    value = type === 'year' ? `${value}` : padZero(value);\n                    return value;\n                });\n                if (filter) {\n                    values = filter(type, values);\n                }\n                return { type, values };\n            });\n            return results;\n        },\n        getRanges() {\n            const { data } = this;\n            if (data.type === 'time') {\n                return [\n                    {\n                        type: 'hour',\n                        range: [data.minHour, data.maxHour]\n                    },\n                    {\n                        type: 'minute',\n                        range: [data.minMinute, data.maxMinute]\n                    }\n                ];\n            }\n            const { maxYear, maxDate, maxMonth, maxHour, maxMinute } = this.getBoundary('max', data.innerValue);\n            const { minYear, minDate, minMonth, minHour, minMinute } = this.getBoundary('min', data.innerValue);\n            const result = [\n                {\n                    type: 'year',\n                    range: [minYear, maxYear]\n                },\n                {\n                    type: 'month',\n                    range: [minMonth, maxMonth]\n                },\n                {\n                    type: 'day',\n                    range: [minDate, maxDate]\n                },\n                {\n                    type: 'hour',\n                    range: [minHour, maxHour]\n                },\n                {\n                    type: 'minute',\n                    range: [minMinute, maxMinute]\n                }\n            ];\n            if (data.type === 'date')\n                result.splice(3, 2);\n            if (data.type === 'year-month')\n                result.splice(2, 3);\n            return result;\n        },\n        correctValue(value) {\n            const { data } = this;\n            // validate value\n            const isDateType = data.type !== 'time';\n            if (isDateType && !isValidDate(value)) {\n                value = data.minDate;\n            }\n            else if (!isDateType && !value) {\n                const { minHour } = data;\n                value = `${padZero(minHour)}:00`;\n            }\n            // time type\n            if (!isDateType) {\n                let [hour, minute] = value.split(':');\n                hour = padZero(range(hour, data.minHour, data.maxHour));\n                minute = padZero(range(minute, data.minMinute, data.maxMinute));\n                return `${hour}:${minute}`;\n            }\n            // date type\n            value = Math.max(value, data.minDate);\n            value = Math.min(value, data.maxDate);\n            return value;\n        },\n        getBoundary(type, innerValue) {\n            const value = new Date(innerValue);\n            const boundary = new Date(this.data[`${type}Date`]);\n            const year = boundary.getFullYear();\n            let month = 1;\n            let date = 1;\n            let hour = 0;\n            let minute = 0;\n            if (type === 'max') {\n                month = 12;\n                date = getMonthEndDay(value.getFullYear(), value.getMonth() + 1);\n                hour = 23;\n                minute = 59;\n            }\n            if (value.getFullYear() === year) {\n                month = boundary.getMonth() + 1;\n                if (value.getMonth() + 1 === month) {\n                    date = boundary.getDate();\n                    if (value.getDate() === date) {\n                        hour = boundary.getHours();\n                        if (value.getHours() === hour) {\n                            minute = boundary.getMinutes();\n                        }\n                    }\n                }\n            }\n            return {\n                [`${type}Year`]: year,\n                [`${type}Month`]: month,\n                [`${type}Date`]: date,\n                [`${type}Hour`]: hour,\n                [`${type}Minute`]: minute\n            };\n        },\n        onCancel() {\n            this.$emit('cancel');\n        },\n        onConfirm() {\n            this.$emit('confirm', this.data.innerValue);\n        },\n        onChange() {\n            const { data } = this;\n            let value;\n            const picker = this.getPicker();\n            if (data.type === 'time') {\n                const indexes = picker.getIndexes();\n                value = `${+data.columns[0].values[indexes[0]]}:${+data.columns[1].values[indexes[1]]}`;\n            }\n            else {\n                const values = picker.getValues();\n                const year = getTrueValue(values[0]);\n                const month = getTrueValue(values[1]);\n                const maxDate = getMonthEndDay(year, month);\n                let date = getTrueValue(values[2]);\n                if (data.type === 'year-month') {\n                    date = 1;\n                }\n                date = date > maxDate ? maxDate : date;\n                let hour = 0;\n                let minute = 0;\n                if (data.type === 'datetime') {\n                    hour = getTrueValue(values[3]);\n                    minute = getTrueValue(values[4]);\n                }\n                value = new Date(year, month - 1, date, hour, minute);\n            }\n            value = this.correctValue(value);\n            this.updateColumnValue(value).then(() => {\n                this.$emit('input', value);\n                this.$emit('change', picker);\n            });\n        },\n        updateColumnValue(value) {\n            let values = [];\n            const { type, formatter = defaultFormatter } = this.data;\n            const picker = this.getPicker();\n            if (type === 'time') {\n                const pair = value.split(':');\n                values = [\n                    formatter('hour', pair[0]),\n                    formatter('minute', pair[1])\n                ];\n            }\n            else {\n                const date = new Date(value);\n                values = [\n                    formatter('year', `${date.getFullYear()}`),\n                    formatter('month', padZero(date.getMonth() + 1))\n                ];\n                if (type === 'date') {\n                    values.push(formatter('day', padZero(date.getDate())));\n                }\n                if (type === 'datetime') {\n                    values.push(formatter('day', padZero(date.getDate())), formatter('hour', padZero(date.getHours())), formatter('minute', padZero(date.getMinutes())));\n                }\n            }\n            return this.set({ innerValue: value })\n                .then(() => this.updateColumns())\n                .then(() => picker.setValues(values));\n        }\n    },\n    created() {\n        const innerValue = this.correctValue(this.data.value);\n        this.updateColumnValue(innerValue).then(() => {\n            this.$emit('input', innerValue);\n        });\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/datetime-picker/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-picker\": \"../picker/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/datetime-picker/index.wxml",
    "content": "<van-picker\n  class=\"van-datetime-picker\"\n  active-class=\"active-class\"\n  toolbar-class=\"toolbar-class\"\n  column-class=\"column-class\"\n  title=\"{{ title }}\"\n  columns=\"{{ columns }}\"\n  item-height=\"{{ itemHeight }}\"\n  show-toolbar=\"{{ showToolbar }}\"\n  visible-item-count=\"{{ visibleItemCount }}\"\n  confirm-button-text=\"{{ confirmButtonText }}\"\n  cancel-button-text=\"{{ cancelButtonText }}\"\n  bind:change=\"onChange\"\n  bind:confirm=\"onConfirm\"\n  bind:cancel=\"onCancel\"\n/>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/datetime-picker/index.wxss",
    "content": "@import '../common/index.wxss';"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/definitions/index.d.ts",
    "content": "/// <reference types=\"miniprogram-api-typings\" />\nimport { Weapp } from './weapp';\ndeclare type RecordToAny<T> = {\n    [K in keyof T]: any;\n};\nexport declare type CombinedComponentInstance<Data, Props, Methods> = Methods & WechatMiniprogram.Component.TrivialInstance & Weapp.FormField & {\n    data: Data & RecordToAny<Props>;\n};\nexport interface VantComponentOptions<Data, Props, Methods, Instance> {\n    data?: Data;\n    field?: boolean;\n    classes?: string[];\n    mixins?: string[];\n    props?: Props & Weapp.PropertyOption;\n    watch?: Weapp.WatchOption<Instance>;\n    relation?: Weapp.RelationOption<Instance> & {\n        name: string;\n    };\n    relations?: {\n        [componentName: string]: Weapp.RelationOption<Instance>;\n    };\n    methods?: Methods & Weapp.MethodOption<Instance>;\n    beforeCreate?: (this: Instance) => void;\n    created?: (this: Instance) => void;\n    mounted?: (this: Instance) => void;\n    destroyed?: (this: Instance) => void;\n}\nexport {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/definitions/index.js",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/definitions/weapp.d.ts",
    "content": "/// <reference types=\"miniprogram-api-typings\" />\nexport declare namespace Weapp {\n    export interface FormField {\n        data: {\n            name: string;\n            value: any;\n        };\n    }\n    interface Target {\n        id: string;\n        tagName: string;\n        dataset: {\n            [key: string]: any;\n        };\n    }\n    export interface Event {\n        /**\n         * 代表事件的类型。\n         */\n        type: string;\n        /**\n         * 页面打开到触发事件所经过的毫秒数。\n         */\n        timeStamp: number;\n        /**\n         * 触发事件的源组件。\n         */\n        target: Target;\n        /**\n         * 事件绑定的当前组件。\n         */\n        currentTarget: Target;\n        /**\n         * 额外的信息\n         */\n        detail: any;\n    }\n    interface Touch {\n        /**\n         * 触摸点的标识符\n         */\n        identifier: number;\n        /**\n         * 距离文档左上角的距离，文档的左上角为原点 ，横向为X轴，纵向为Y轴\n         */\n        pageX: number;\n        /**\n         * 距离文档左上角的距离，文档的左上角为原点 ，横向为X轴，纵向为Y轴\n         */\n        pageY: number;\n        /**\n         * 距离页面可显示区域（屏幕除去导航条）左上角距离，横向为X轴，纵向为Y轴\n         */\n        clientX: number;\n        /**\n         * 距离页面可显示区域（屏幕除去导航条）左上角距离，横向为X轴，纵向为Y轴\n         */\n        clientY: number;\n    }\n    export interface TouchEvent extends Event {\n        touches: Array<Touch>;\n        changedTouches: Array<Touch>;\n    }\n    /**\n     * relation定义，miniprogram-api-typings缺少this定义\n     */\n    export interface RelationOption<Instance> {\n        /** 目标组件的相对关系 */\n        type: 'parent' | 'child' | 'ancestor' | 'descendant';\n        /** 关系生命周期函数，当关系被建立在页面节点树中时触发，触发时机在组件attached生命周期之后 */\n        linked?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;\n        /** 关系生命周期函数，当关系在页面节点树中发生改变时触发，触发时机在组件moved生命周期之后 */\n        linkChanged?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;\n        /** 关系生命周期函数，当关系脱离页面节点树时触发，触发时机在组件detached生命周期之后 */\n        unlinked?(this: Instance, target: WechatMiniprogram.Component.TrivialInstance): void;\n        /** 如果这一项被设置，则它表示关联的目标节点所应具有的behavior，所有拥有这一behavior的组件节点都会被关联 */\n        target?: string;\n    }\n    /**\n     * obverser定义，miniprogram-api-typings缺少this定义\n     */\n    type Observer<Instance, T> = (this: Instance, newVal: T, oldVal: T, changedPath: Array<string | number>) => void;\n    /**\n     * watch定义\n     */\n    export interface WatchOption<Instance> {\n        [name: string]: string | Observer<Instance, any>;\n    }\n    /**\n     * methods定义，miniprogram-api-typings缺少this定义\n     */\n    export interface MethodOption<Instance> {\n        [name: string]: (this: Instance, ...args: any[]) => any;\n    }\n    export interface ComputedOption<Instance> {\n        [name: string]: (this: Instance) => any;\n    }\n    type PropertyType = StringConstructor | NumberConstructor | BooleanConstructor | ArrayConstructor | ObjectConstructor | FunctionConstructor | null;\n    export interface PropertyOption {\n        [name: string]: PropertyType | PropertyType[] | {\n            /** 属性类型 */\n            type: PropertyType | PropertyType[];\n            /** 属性初始值 */\n            value?: any;\n            /** 属性值被更改时的响应函数 */\n            observer?: string | Observer<WechatMiniprogram.Component.TrivialInstance, any>;\n            /** 属性的类型（可以指定多个） */\n            optionalTypes?: PropertyType[];\n        };\n    }\n    export {};\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/definitions/weapp.js",
    "content": ""
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/dialog.d.ts",
    "content": "/// <reference types=\"miniprogram-api-typings\" />\ndeclare type DialogAction = 'confirm' | 'cancel';\ndeclare type DialogOptions = {\n    lang?: string;\n    show?: boolean;\n    title?: string;\n    width?: string | number;\n    zIndex?: number;\n    context?: WechatMiniprogram.Page.TrivialInstance | WechatMiniprogram.Component.TrivialInstance;\n    message?: string;\n    overlay?: boolean;\n    selector?: string;\n    ariaLabel?: string;\n    className?: string;\n    customStyle?: string;\n    transition?: string;\n    asyncClose?: boolean;\n    businessId?: number;\n    sessionFrom?: string;\n    overlayStyle?: string;\n    appParameter?: string;\n    messageAlign?: string;\n    sendMessageImg?: string;\n    showMessageCard?: boolean;\n    sendMessagePath?: string;\n    sendMessageTitle?: string;\n    confirmButtonText?: string;\n    cancelButtonText?: string;\n    showConfirmButton?: boolean;\n    showCancelButton?: boolean;\n    closeOnClickOverlay?: boolean;\n    confirmButtonOpenType?: string;\n};\ninterface Dialog {\n    (options: DialogOptions): Promise<DialogAction>;\n    alert?: (options: DialogOptions) => Promise<DialogAction>;\n    confirm?: (options: DialogOptions) => Promise<DialogAction>;\n    close?: () => void;\n    stopLoading?: () => void;\n    install?: () => void;\n    setDefaultOptions?: (options: DialogOptions) => void;\n    resetDefaultOptions?: () => void;\n    defaultOptions?: DialogOptions;\n    currentOptions?: DialogOptions;\n}\ndeclare const Dialog: Dialog;\nexport default Dialog;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/dialog.js",
    "content": "let queue = [];\nfunction getContext() {\n    const pages = getCurrentPages();\n    return pages[pages.length - 1];\n}\nconst Dialog = options => {\n    options = Object.assign(Object.assign({}, Dialog.currentOptions), options);\n    return new Promise((resolve, reject) => {\n        const context = options.context || getContext();\n        const dialog = context.selectComponent(options.selector);\n        delete options.context;\n        delete options.selector;\n        if (dialog) {\n            dialog.setData(Object.assign({ onCancel: reject, onConfirm: resolve }, options));\n            queue.push(dialog);\n        }\n        else {\n            console.warn('未找到 van-dialog 节点，请确认 selector 及 context 是否正确');\n        }\n    });\n};\nDialog.defaultOptions = {\n    show: true,\n    title: '',\n    width: null,\n    message: '',\n    zIndex: 100,\n    overlay: true,\n    selector: '#van-dialog',\n    className: '',\n    asyncClose: false,\n    transition: 'scale',\n    customStyle: '',\n    messageAlign: '',\n    overlayStyle: '',\n    confirmButtonText: '确认',\n    cancelButtonText: '取消',\n    showConfirmButton: true,\n    showCancelButton: false,\n    closeOnClickOverlay: false,\n    confirmButtonOpenType: ''\n};\nDialog.alert = Dialog;\nDialog.confirm = options => Dialog(Object.assign({ showCancelButton: true }, options));\nDialog.close = () => {\n    queue.forEach(dialog => {\n        dialog.close();\n    });\n    queue = [];\n};\nDialog.stopLoading = () => {\n    queue.forEach(dialog => {\n        dialog.stopLoading();\n    });\n};\nDialog.setDefaultOptions = options => {\n    Object.assign(Dialog.currentOptions, options);\n};\nDialog.resetDefaultOptions = () => {\n    Dialog.currentOptions = Object.assign({}, Dialog.defaultOptions);\n};\nDialog.resetDefaultOptions();\nexport default Dialog;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nimport { openType } from '../mixins/open-type';\nimport { addUnit } from '../common/utils';\nimport { GRAY, BLUE } from '../common/color';\nVantComponent({\n    mixins: [button, openType],\n    props: {\n        show: Boolean,\n        title: String,\n        message: String,\n        useSlot: Boolean,\n        className: String,\n        customStyle: String,\n        asyncClose: Boolean,\n        messageAlign: String,\n        overlayStyle: String,\n        useTitleSlot: Boolean,\n        showCancelButton: Boolean,\n        closeOnClickOverlay: Boolean,\n        confirmButtonOpenType: String,\n        width: {\n            type: null,\n            observer: 'setWidthWithUnit'\n        },\n        zIndex: {\n            type: Number,\n            value: 2000\n        },\n        confirmButtonText: {\n            type: String,\n            value: '确认'\n        },\n        cancelButtonText: {\n            type: String,\n            value: '取消'\n        },\n        confirmButtonColor: {\n            type: String,\n            value: BLUE\n        },\n        cancelButtonColor: {\n            type: String,\n            value: GRAY\n        },\n        showConfirmButton: {\n            type: Boolean,\n            value: true\n        },\n        overlay: {\n            type: Boolean,\n            value: true\n        },\n        transition: {\n            type: String,\n            value: 'scale'\n        }\n    },\n    data: {\n        loading: {\n            confirm: false,\n            cancel: false\n        }\n    },\n    watch: {\n        show(show) {\n            !show && this.stopLoading();\n        }\n    },\n    methods: {\n        onConfirm() {\n            this.handleAction('confirm');\n        },\n        onCancel() {\n            this.handleAction('cancel');\n        },\n        onClickOverlay() {\n            this.onClose('overlay');\n        },\n        handleAction(action) {\n            if (this.data.asyncClose) {\n                this.setData({\n                    [`loading.${action}`]: true\n                });\n            }\n            this.onClose(action);\n        },\n        close() {\n            this.setData({\n                show: false\n            });\n        },\n        stopLoading() {\n            this.setData({\n                loading: {\n                    confirm: false,\n                    cancel: false\n                }\n            });\n        },\n        onClose(action) {\n            if (!this.data.asyncClose) {\n                this.close();\n            }\n            this.$emit('close', action);\n            // 把 dialog 实例传递出去，可以通过 stopLoading() 在外部关闭按钮的 loading\n            this.$emit(action, { dialog: this });\n            const callback = this.data[action === 'confirm' ? 'onConfirm' : 'onCancel'];\n            if (callback) {\n                callback(this);\n            }\n        },\n        setWidthWithUnit(val) {\n            this.setData({\n                widthWithUnit: addUnit(val)\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-popup\": \"../popup/index\",\n    \"van-button\": \"../button/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/index.wxml",
    "content": "<van-popup\n  show=\"{{ show }}\"\n  z-index=\"{{ zIndex }}\"\n  overlay=\"{{ overlay }}\"\n  transition=\"{{ transition }}\"\n  custom-class=\"van-dialog {{ className }}\"\n  custom-style=\"{{ widthWithUnit ? 'width: ' + widthWithUnit + ';' : '' }}{{ customStyle }}\"\n  overlay-style=\"{{ overlayStyle }}\"\n  close-on-click-overlay=\"{{ closeOnClickOverlay }}\"\n  bind:close=\"onClickOverlay\"\n>\n  <view\n    wx:if=\"{{ title || useTitleSlot  }}\"\n    class=\"van-dialog__header {{ message || useSlot ? '' : 'van-dialog--isolated' }}\"\n  >\n    <slot wx:if=\"{{ useTitleSlot }}\" name=\"title\" />\n    <block wx:elif=\"{{ title }}\"> {{ title }}</block>\n  </view>\n\n  <slot wx:if=\"{{ useSlot }}\" />\n  <view\n    wx:elif=\"{{ message }}\"\n    class=\"van-dialog__message {{ title ? 'van-dialog__message--has-title' : '' }} {{ messageAlign ? 'van-dialog__message--' + messageAlign : '' }}\"\n  >\n    <text class=\"van-dialog__message-text\">{{ message }}</text>\n  </view>\n\n  <view class=\"van-hairline--top van-dialog__footer\">\n    <van-button\n      wx:if=\"{{ showCancelButton }}\"\n      size=\"large\"\n      loading=\"{{ loading.cancel }}\"\n      class=\"van-dialog__button van-hairline--right\"\n      custom-class=\"van-dialog__cancel\"\n      custom-style=\"color: {{ cancelButtonColor }}\"\n      bind:click=\"onCancel\"\n    >\n      {{ cancelButtonText }}\n    </van-button>\n    <van-button\n      wx:if=\"{{ showConfirmButton }}\"\n      size=\"large\"\n      class=\"van-dialog__button\"\n      loading=\"{{ loading.confirm }}\"\n      custom-class=\"van-dialog__confirm\"\n      custom-style=\"color: {{ confirmButtonColor }}\"\n\n      open-type=\"{{ confirmButtonOpenType }}\"\n      lang=\"{{ lang }}\"\n      business-id=\"{{ businessId }}\"\n      session-from=\"{{ sessionFrom }}\"\n      send-message-title=\"{{ sendMessageTitle }}\"\n      send-message-path=\"{{ sendMessagePath }}\"\n      send-message-img=\"{{ sendMessageImg }}\"\n      show-message-card=\"{{ showMessageCard }}\"\n      app-parameter=\"{{ appParameter }}\"\n\n      bind:click=\"onConfirm\"\n      bindgetuserinfo=\"bindGetUserInfo\"\n      bindcontact=\"bindContact\"\n      bindgetphonenumber=\"bindGetPhoneNumber\"\n      binderror=\"bindError\"\n      bindlaunchapp=\"bindLaunchApp\"\n      bindopensetting=\"bindOpenSetting\"\n    >\n      {{ confirmButtonText }}\n    </van-button>\n  </view>\n</van-popup>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dialog/index.wxss",
    "content": "@import '../common/index.wxss';.van-dialog{top:45%!important;overflow:hidden;width:320px;width:var(--dialog-width,320px);font-size:16px;font-size:var(--dialog-font-size,16px);border-radius:16px;border-radius:var(--dialog-border-radius,16px);background-color:#fff;background-color:var(--dialog-background-color,#fff)}@media (max-width:321px){.van-dialog{width:90%;width:var(--dialog-small-screen-width,90%)}}.van-dialog__header{text-align:center;padding-top:24px;padding-top:var(--dialog-header-padding-top,24px);font-weight:500;font-weight:var(--dialog-header-font-weight,500);line-height:24px;line-height:var(--dialog-header-line-height,24px)}.van-dialog__header--isolated{padding:24px 0;padding:var(--dialog-header-isolated-padding,24px 0)}.van-dialog__message{overflow-y:auto;text-align:center;-webkit-overflow-scrolling:touch;font-size:14px;font-size:var(--dialog-message-font-size,14px);line-height:20px;line-height:var(--dialog-message-line-height,20px);max-height:60vh;max-height:var(--dialog-message-max-height,60vh);padding:24px;padding:var(--dialog-message-padding,24px)}.van-dialog__message-text{word-wrap:break-word}.van-dialog__message--has-title{padding-top:12px;padding-top:var(--dialog-has-title-message-padding-top,12px);color:#646566;color:var(--dialog-has-title-message-text-color,#646566)}.van-dialog__message--left{text-align:left}.van-dialog__message--right{text-align:right}.van-dialog__footer{display:-webkit-flex;display:flex}.van-dialog__button{-webkit-flex:1;flex:1}.van-dialog__cancel,.van-dialog__confirm{border:0!important}.van-dialog-bounce-enter{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-dialog-bounce-leave-active{-webkit-transform:translate3d(-50%,-50%,0) scale(.9);transform:translate3d(-50%,-50%,0) scale(.9);opacity:0}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/divider/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/divider/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        dashed: {\n            type: Boolean,\n            value: false\n        },\n        hairline: {\n            type: Boolean,\n            value: false\n        },\n        contentPosition: {\n            type: String,\n            value: ''\n        },\n        fontSize: {\n            type: Number,\n            value: ''\n        },\n        borderColor: {\n            type: String,\n            value: ''\n        },\n        textColor: {\n            type: String,\n            value: ''\n        },\n        customStyle: {\n            type: String,\n            value: ''\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/divider/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {}\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/divider/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('divider', [{dashed, hairline}, contentPosition]) }}\"\n  style=\"{{ borderColor  ? 'border-color: ' + borderColor + ';' : '' }}{{ textColor ? 'color: ' + textColor + ';' : '' }} {{ fontSize ? 'font-size: ' + fontSize + 'px;' : '' }} {{ customStyle }}\"\n>\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/divider/index.wxss",
    "content": "@import '../common/index.wxss';.van-divider{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin:16px 0;margin:var(--divider-margin,16px 0);color:#969799;color:var(--divider-text-color,#969799);font-size:14px;font-size:var(--divider-font-size,14px);line-height:24px;line-height:var(--divider-line-height,24px);border:0 solid #ebedf0;border-color:var(--divider-border-color,#ebedf0)}.van-divider:after,.van-divider:before{display:block;-webkit-flex:1;flex:1;box-sizing:border-box;height:1px;border-color:inherit;border-style:inherit;border-width:1px 0 0}.van-divider:before{content:\"\"}.van-divider--hairline:after,.van-divider--hairline:before{-webkit-transform:scaleY(.5);transform:scaleY(.5)}.van-divider--dashed{border-style:dashed}.van-divider--center:before,.van-divider--left:before,.van-divider--right:before{margin-right:16px;margin-right:var(--divider-content-padding,16px)}.van-divider--center:after,.van-divider--left:after,.van-divider--right:after{content:\"\";margin-left:16px;margin-left:var(--divider-content-padding,16px)}.van-divider--left:before{max-width:10%;max-width:var(--divider-content-left-width,10%)}.van-divider--right:after{max-width:10%;max-width:var(--divider-content-right-width,10%)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-item/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-item/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    field: true,\n    relation: {\n        name: 'dropdown-menu',\n        type: 'ancestor',\n        linked(target) {\n            this.parent = target;\n            this.updateDataFromParent();\n        },\n        unlinked() {\n            this.parent = null;\n        }\n    },\n    props: {\n        value: {\n            type: null,\n            observer: 'rerender'\n        },\n        title: {\n            type: String,\n            observer: 'rerender'\n        },\n        disabled: Boolean,\n        titleClass: {\n            type: String,\n            observer: 'rerender'\n        },\n        options: {\n            type: Array,\n            value: [],\n            observer: 'rerender'\n        }\n    },\n    data: {\n        transition: true,\n        showPopup: false,\n        showWrapper: false,\n        displayTitle: ''\n    },\n    methods: {\n        rerender() {\n            wx.nextTick(() => {\n                this.parent && this.parent.updateItemListData();\n            });\n        },\n        updateDataFromParent() {\n            if (this.parent) {\n                const { overlay, duration, activeColor, closeOnClickOverlay, direction } = this.parent.data;\n                this.setData({\n                    overlay,\n                    duration,\n                    activeColor,\n                    closeOnClickOverlay,\n                    direction\n                });\n            }\n        },\n        onClickOverlay() {\n            this.toggle();\n            this.$emit('close');\n        },\n        onOptionTap(event) {\n            const { option } = event.currentTarget.dataset;\n            const { value } = option;\n            const shouldEmitChange = this.data.value !== value;\n            this.setData({ showPopup: false, value });\n            setTimeout(() => {\n                this.setData({ showWrapper: false });\n            }, this.data.duration || 0);\n            this.rerender();\n            if (shouldEmitChange) {\n                this.$emit('change', value);\n            }\n        },\n        toggle(show, options = {}) {\n            const { showPopup, duration } = this.data;\n            if (show == null) {\n                show = !showPopup;\n            }\n            if (show === showPopup) {\n                return;\n            }\n            if (!show) {\n                const time = options.immediate ? 0 : duration;\n                this.setData({ transition: !options.immediate, showPopup: show });\n                setTimeout(() => {\n                    this.setData({ showWrapper: false });\n                }, time);\n                this.rerender();\n                return;\n            }\n            this.parent.getChildWrapperStyle().then((wrapperStyle = '') => {\n                this.setData({\n                    transition: !options.immediate,\n                    showPopup: show,\n                    wrapperStyle,\n                    showWrapper: true\n                });\n                this.rerender();\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-item/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-popup\": \"../popup/index\",\n    \"van-cell\": \"../cell/index\",\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-item/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  wx:if=\"{{ showWrapper }}\"\n  class=\"{{ utils.bem('dropdown-item', direction) }}\"\n  style=\"{{ wrapperStyle }}\"\n>\n  <van-popup\n    show=\"{{ showPopup }}\"\n    custom-style=\"position: absolute;\"\n    overlay-style=\"position: absolute;\"\n    overlay=\"{{ overlay }}\"\n    position=\"{{ direction === 'down' ? 'top' : 'bottom' }}\"\n    duration=\"{{ transition ? duration : 0 }}\"\n    close-on-click-overlay=\"{{ closeOnClickOverlay }}\"\n    bind:close=\"onClickOverlay\"\n  >\n    <van-cell\n      wx:for=\"{{ options }}\"\n      wx:key=\"{{ item.value }}\"\n      data-option=\"{{ item }}\"\n      class=\"{{ utils.bem('dropdown-item__option', { active: item.value === value } ) }}\"\n      clickable\n      icon=\"{{ item.icon }}\"\n      bind:tap=\"onOptionTap\"\n    >\n      <view\n        slot=\"title\"\n        class=\"van-dropdown-item__title\"\n        style=\"{{ item.value === value  ? 'color:' + activeColor : '' }}\"\n      >\n        {{ item.text }}\n      </view>\n      <van-icon\n        wx:if=\"{{ item.value === value }}\"\n        name=\"success\"\n        class=\"van-dropdown-item__icon\"\n        color=\"{{ activeColor }}\"\n      />\n    </van-cell>\n\n    <slot />\n  </van-popup>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-item/index.wxss",
    "content": "@import '../common/index.wxss';.van-dropdown-item{position:fixed;right:0;left:0;overflow:hidden}.van-dropdown-item__option{text-align:left}.van-dropdown-item__option--active .van-dropdown-item__icon,.van-dropdown-item__option--active .van-dropdown-item__title{color:#1989fa;color:var(--dropdown-menu-option-active-color,#1989fa)}.van-dropdown-item--up{top:0}.van-dropdown-item--down{bottom:0}.van-dropdown-item__icon{display:block;line-height:inherit}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nlet ARRAY = [];\nVantComponent({\n    field: true,\n    relation: {\n        name: 'dropdown-item',\n        type: 'descendant',\n        linked(target) {\n            this.children.push(target);\n            this.updateItemListData();\n        },\n        unlinked(target) {\n            this.children = this.children.filter((child) => child !== target);\n            this.updateItemListData();\n        }\n    },\n    props: {\n        activeColor: {\n            type: String,\n            observer: 'updateChildrenData'\n        },\n        overlay: {\n            type: Boolean,\n            value: true,\n            observer: 'updateChildrenData'\n        },\n        zIndex: {\n            type: Number,\n            value: 10\n        },\n        duration: {\n            type: Number,\n            value: 200,\n            observer: 'updateChildrenData'\n        },\n        direction: {\n            type: String,\n            value: 'down',\n            observer: 'updateChildrenData'\n        },\n        closeOnClickOverlay: {\n            type: Boolean,\n            value: true,\n            observer: 'updateChildrenData'\n        },\n        closeOnClickOutside: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        itemListData: []\n    },\n    beforeCreate() {\n        const { windowHeight } = wx.getSystemInfoSync();\n        this.windowHeight = windowHeight;\n        this.children = [];\n        ARRAY.push(this);\n    },\n    destroyed() {\n        ARRAY = ARRAY.filter(item => item !== this);\n    },\n    methods: {\n        updateItemListData() {\n            this.setData({\n                itemListData: this.children.map((child) => child.data)\n            });\n        },\n        updateChildrenData() {\n            this.children.forEach((child) => {\n                child.updateDataFromParent();\n            });\n        },\n        toggleItem(active) {\n            this.children.forEach((item, index) => {\n                const { showPopup } = item.data;\n                if (index === active) {\n                    item.toggle();\n                }\n                else if (showPopup) {\n                    item.toggle(false, { immediate: true });\n                }\n            });\n        },\n        close() {\n            this.children.forEach((child) => {\n                child.toggle(false, { immediate: true });\n            });\n        },\n        getChildWrapperStyle() {\n            const { zIndex, direction } = this.data;\n            return this.getRect('.van-dropdown-menu').then((rect) => {\n                const { top = 0, bottom = 0 } = rect;\n                const offset = direction === 'down' ? bottom : this.windowHeight - top;\n                let wrapperStyle = `z-index: ${zIndex};`;\n                if (direction === 'down') {\n                    wrapperStyle += `top: ${addUnit(offset)};`;\n                }\n                else {\n                    wrapperStyle += `bottom: ${addUnit(offset)};`;\n                }\n                return wrapperStyle;\n            });\n        },\n        onTitleTap(event) {\n            const { index } = event.currentTarget.dataset;\n            const child = this.children[index];\n            if (!child.data.disabled) {\n                ARRAY.forEach(menuItem => {\n                    if (menuItem &&\n                        menuItem.data.closeOnClickOutside &&\n                        menuItem !== this) {\n                        menuItem.close();\n                    }\n                });\n                this.toggleItem(index);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"computed\" />\n\n<view class=\"van-dropdown-menu van-dropdown-menu--top-bottom\">\n  <view\n    wx:for=\"{{ itemListData }}\"\n    wx:key=\"index\"\n    data-index=\"{{ index }}\"\n    class=\"{{ utils.bem('dropdown-menu__item', { disabled: item.disabled }) }}\"\n    bind:tap=\"onTitleTap\"\n  >\n    <view\n      class=\"{{ item.titleClass }} {{ utils.bem('dropdown-menu__title', { active: item.showPopup, down: item.showPopup === (direction === 'down') }) }}\"\n      style=\"{{ item.showPopup ? 'color:' + activeColor : '' }}\"\n    >\n      <view class=\"van-ellipsis\">\n        {{ computed.displayTitle(item) }}\n      </view>\n    </view>\n  </view>\n\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.wxs",
    "content": "/* eslint-disable */\nfunction displayTitle(item) {\n  if (item.title) {\n    return item.title;\n  }\n\n  var match = item.options.filter(function(option) {\n    return option.value === item.value;\n  });\n  var displayTitle = match.length ? match[0].text : '';\n  return displayTitle;\n}\n\nmodule.exports = {\n  displayTitle: displayTitle\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/dropdown-menu/index.wxss",
    "content": "@import '../common/index.wxss';.van-dropdown-menu{display:-webkit-flex;display:flex;-webkit-user-select:none;user-select:none;height:50px;height:var(--dropdown-menu-height,50px);background-color:#fff;background-color:var(--dropdown-menu-background-color,#fff)}.van-dropdown-menu__item{display:-webkit-flex;display:flex;-webkit-flex:1;flex:1;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;min-width:0}.van-dropdown-menu__item:active{opacity:.7}.van-dropdown-menu__item--disabled:active{opacity:1}.van-dropdown-menu__item--disabled .van-dropdown-menu__title{color:#969799;color:var(--dropdown-menu-title-disabled-text-color,#969799)}.van-dropdown-menu__title{position:relative;box-sizing:border-box;max-width:100%;padding:0 8px;padding:var(--dropdown-menu-title-padding,0 8px);color:#323233;color:var(--dropdown-menu-title-text-color,#323233);font-size:15px;font-size:var(--dropdown-menu-title-font-size,15px);line-height:18px;line-height:var(--dropdown-menu-title-line-height,18px)}.van-dropdown-menu__title:after{position:absolute;top:50%;right:-4px;margin-top:-5px;border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:3px;-webkit-transform:rotate(-45deg);transform:rotate(-45deg);opacity:.8;content:\"\"}.van-dropdown-menu__title--active{color:#1989fa;color:var(--dropdown-menu-title-active-text-color,#1989fa)}.van-dropdown-menu__title--down:after{margin-top:-1px;-webkit-transform:rotate(135deg);transform:rotate(135deg)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/field/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/field/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { getSystemInfoSync } from '../common/utils';\nVantComponent({\n    field: true,\n    classes: ['input-class', 'right-icon-class'],\n    props: {\n        size: String,\n        icon: String,\n        label: String,\n        error: Boolean,\n        fixed: Boolean,\n        focus: Boolean,\n        center: Boolean,\n        isLink: Boolean,\n        leftIcon: String,\n        rightIcon: String,\n        disabled: Boolean,\n        autosize: Boolean,\n        readonly: Boolean,\n        required: Boolean,\n        password: Boolean,\n        iconClass: String,\n        clearable: Boolean,\n        clickable: Boolean,\n        inputAlign: String,\n        placeholder: String,\n        customStyle: String,\n        confirmType: String,\n        confirmHold: Boolean,\n        holdKeyboard: Boolean,\n        errorMessage: String,\n        arrowDirection: String,\n        placeholderStyle: String,\n        errorMessageAlign: String,\n        selectionEnd: {\n            type: Number,\n            value: -1\n        },\n        selectionStart: {\n            type: Number,\n            value: -1\n        },\n        showConfirmBar: {\n            type: Boolean,\n            value: true\n        },\n        adjustPosition: {\n            type: Boolean,\n            value: true\n        },\n        cursorSpacing: {\n            type: Number,\n            value: 50\n        },\n        maxlength: {\n            type: Number,\n            value: -1\n        },\n        type: {\n            type: String,\n            value: 'text'\n        },\n        border: {\n            type: Boolean,\n            value: true\n        },\n        titleWidth: {\n            type: String,\n            value: '90px'\n        }\n    },\n    data: {\n        focused: false,\n        system: getSystemInfoSync().system.split(' ').shift().toLowerCase()\n    },\n    methods: {\n        onInput(event) {\n            const { value = '' } = event.detail || {};\n            this.setData({ value }, () => {\n                this.emitChange(value);\n            });\n        },\n        onFocus(event) {\n            this.setData({ focused: true });\n            this.$emit('focus', event.detail);\n        },\n        onBlur(event) {\n            this.setData({ focused: false });\n            this.$emit('blur', event.detail);\n        },\n        onClickIcon() {\n            this.$emit('click-icon');\n        },\n        onClear() {\n            this.setData({ value: '' }, () => {\n                this.emitChange('');\n                this.$emit('clear', '');\n            });\n        },\n        onConfirm() {\n            this.$emit('confirm', this.data.value);\n        },\n        emitChange(value) {\n            this.$emit('input', value);\n            this.$emit('change', value);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/field/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-cell\": \"../cell/index\",\n    \"van-icon\": \"../icon/index\"\n  }\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/field/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<van-cell\n  size=\"{{ size }}\"\n  icon=\"{{ leftIcon }}\"\n  title=\"{{ label }}\"\n  center=\"{{ center }}\"\n  border=\"{{ border }}\"\n  is-link=\"{{ isLink }}\"\n  required=\"{{ required }}\"\n  clickable=\"{{ clickable }}\"\n  title-width=\"{{ titleWidth }}\"\n  custom-style=\"{{ customStyle }}\"\n  arrow-direction=\"{{ arrowDirection }}\"\n  custom-class=\"van-field\"\n>\n  <slot name=\"left-icon\" slot=\"icon\" />\n  <slot name=\"label\" slot=\"title\" />\n  <view class=\"{{ utils.bem('field__body', [type, system]) }}\">\n    <textarea\n      wx:if=\"{{ type === 'textarea' }}\"\n      class=\"input-class {{ utils.bem('field__input', [inputAlign, type, { disabled, error }]) }}\"\n      fixed=\"{{ fixed }}\"\n      focus=\"{{ focus }}\"\n      value=\"{{ value }}\"\n      disabled=\"{{ disabled || readonly }}\"\n      maxlength=\"{{ maxlength }}\"\n      placeholder=\"{{ placeholder }}\"\n      placeholder-style=\"{{ placeholderStyle }}\"\n      placeholder-class=\"{{ utils.bem('field__placeholder', { error }) }}\"\n      auto-height=\"{{ autosize }}\"\n      cursor-spacing=\"{{ cursorSpacing }}\"\n      adjust-position=\"{{ adjustPosition }}\"\n      show-confirm-bar=\"{{ showConfirmBar }}\"\n      hold-keyboard=\"{{ holdKeyboard }}\"\n      selection-end=\"{{ selectionEnd }}\"\n      selection-start=\"{{ selectionStart }}\"\n      bindinput=\"onInput\"\n      bind:blur=\"onBlur\"\n      bind:focus=\"onFocus\"\n      bind:confirm=\"onConfirm\"\n    >\n    </textarea>\n    <input\n      wx:else\n      class=\"input-class {{ utils.bem('field__input', [inputAlign, { disabled, error }]) }}\"\n      type=\"{{ type }}\"\n      focus=\"{{ focus }}\"\n      value=\"{{ value }}\"\n      disabled=\"{{ disabled || readonly }}\"\n      maxlength=\"{{ maxlength }}\"\n      placeholder=\"{{ placeholder }}\"\n      placeholder-style=\"{{ placeholderStyle }}\"\n      placeholder-class=\"{{ utils.bem('field__placeholder', { error }) }}\"\n      confirm-type=\"{{ confirmType }}\"\n      confirm-hold=\"{{ confirmHold }}\"\n      hold-keyboard=\"{{ holdKeyboard }}\"\n      cursor-spacing=\"{{ cursorSpacing }}\"\n      adjust-position=\"{{ adjustPosition }}\"\n      selection-end=\"{{ selectionEnd }}\"\n      selection-start=\"{{ selectionStart }}\"\n      password=\"{{ password || type === 'password' }}\"\n      bindinput=\"onInput\"\n      bind:blur=\"onBlur\"\n      bind:focus=\"onFocus\"\n      bind:confirm=\"onConfirm\"\n    />\n    <van-icon\n      wx:if=\"{{ clearable && focused && value && !readonly }}\"\n      size=\"16px\"\n      name=\"clear\"\n      class=\"van-field__clear-root van-field__icon-root\"\n      bindtouchstart=\"onClear\"\n    />\n    <view class=\"van-field__icon-container\" bind:tap=\"onClickIcon\">\n      <van-icon\n        wx:if=\"{{ rightIcon || icon }}\"\n        size=\"16px\"\n        name=\"{{ rightIcon || icon }}\"\n        class=\"van-field__icon-root {{ iconClass }}\"\n        custom-class=\"right-icon-class\"\n      />\n      <slot name=\"right-icon\" />\n      <slot name=\"icon\" />\n    </view>\n    <view class=\"van-field__button\">\n      <slot name=\"button\" />\n    </view>\n  </view>\n  <view wx:if=\"{{ errorMessage }}\" class=\"van-field__error-message {{ utils.bem('field__error', [errorMessageAlign, { disabled, error }]) }}\">\n    {{ errorMessage }}\n  </view>\n</van-cell>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/field/index.wxss",
    "content": "@import '../common/index.wxss';.van-field__body{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center}.van-field__body--textarea{line-height:1.2em;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__body--textarea.van-field__body--ios{margin-top:-4.5px}.van-field__input{position:relative;display:block;box-sizing:border-box;width:100%;margin:0;padding:0;line-height:inherit;text-align:left;background-color:initial;border:0;resize:none;color:#323233;color:var(--field-input-text-color,#323233);height:24px;height:var(--cell-line-height,24px);min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__input--textarea{height:18px;height:var(--field-text-area-min-height,18px);min-height:18px;min-height:var(--field-text-area-min-height,18px)}.van-field__input--error{color:#ee0a24;color:var(--field-input-error-text-color,#ee0a24)}.van-field__input--disabled{background-color:initial;opacity:1;color:#969799;color:var(--field-input-disabled-text-color,#969799)}.van-field__input--center{text-align:center}.van-field__input--right{text-align:right}.van-field__placeholder{position:absolute;top:0;right:0;left:0;pointer-events:none;color:#969799;color:var(--field-placeholder-text-color,#969799)}.van-field__placeholder--error{color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__icon-root{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;min-height:24px;min-height:var(--cell-line-height,24px)}.van-field__clear-root,.van-field__icon-container{line-height:inherit;vertical-align:middle;padding:0 8px;padding:0 var(--padding-xs,8px);margin-right:-8px;margin-right:-var(--padding-xs,8px)}.van-field__button,.van-field__clear-root,.van-field__icon-container{-webkit-flex-shrink:0;flex-shrink:0}.van-field__clear-root{color:#c8c9cc;color:var(--field-clear-icon-color,#c8c9cc)}.van-field__icon-container{color:#969799;color:var(--field-icon-container-color,#969799)}.van-field__icon-container:empty{display:none}.van-field__button{padding-left:8px;padding-left:var(--padding-xs,8px)}.van-field__button:empty{display:none}.van-field__error-message{text-align:left;font-size:12px;font-size:var(--field-error-message-text-font-size,12px);color:#ee0a24;color:var(--field-error-message-color,#ee0a24)}.van-field__error-message--center{text-align:center}.van-field__error-message--right{text-align:right}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        type: 'descendant',\n        name: 'goods-action-button',\n        linked(child) {\n            this.children.push(child);\n        },\n        unlinked(child) {\n            this.children = this.children.filter((item) => item !== child);\n        }\n    },\n    beforeCreate() {\n        this.children = [];\n    },\n    props: {\n        safeAreaInsetBottom: {\n            type: Boolean,\n            value: true\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"custom-class {{ utils.bem('goods-action', { safe: safeAreaInsetBottom }) }}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action/index.wxss",
    "content": "@import '../common/index.wxss';.van-goods-action{position:fixed;right:0;bottom:0;left:0;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;background-color:#fff;background-color:var(--goods-action-background-color,#fff)}.van-goods-action--safe{padding-bottom:env(safe-area-inset-bottom)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-button/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-button/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { link } from '../mixins/link';\nimport { button } from '../mixins/button';\nimport { openType } from '../mixins/open-type';\nVantComponent({\n    mixins: [link, button, openType],\n    relation: {\n        type: 'ancestor',\n        name: 'goods-action',\n        linked(parent) {\n            this.parent = parent;\n        }\n    },\n    props: {\n        text: String,\n        color: String,\n        loading: Boolean,\n        disabled: Boolean,\n        type: {\n            type: String,\n            value: 'danger'\n        }\n    },\n    mounted() {\n        this.updateStyle();\n    },\n    methods: {\n        onClick(event) {\n            this.$emit('click', event.detail);\n            this.jumpLink();\n        },\n        updateStyle() {\n            const { children = [] } = this.parent;\n            const index = children.indexOf(this);\n            this.setData({\n                isFirst: index === 0,\n                isLast: index === children.length - 1\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-button/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-button\": \"../button/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-button/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<van-button\n  square\n  id=\"{{ id }}\"\n  lang=\"{{ lang }}\"\n  type=\"{{ type }}\"\n  color=\"{{ color }}\"\n  loading=\"{{ loading }}\"\n  disabled=\"{{ disabled }}\"\n  open-type=\"{{ openType }}\"\n  custom-class=\"{{ utils.bem('goods-action-button', [type, { first: isFirst, last: isLast }]) }}\"\n  business-id=\"{{ businessId }}\"\n  session-from=\"{{ sessionFrom }}\"\n  app-parameter=\"{{ appParameter }}\"\n  send-message-img=\"{{ sendMessageImg }}\"\n  send-message-path=\"{{ sendMessagePath }}\"\n  show-message-card=\"{{ showMessageCard }}\"\n  send-message-title=\"{{ sendMessageTitle }}\"\n  bind:click=\"onClick\"\n  binderror=\"bindError\"\n  bindcontact=\"bindContact\"\n  bindopensetting=\"bindOpenSetting\"\n  bindgetuserinfo=\"bindGetUserInfo\"\n  bindgetphonenumber=\"bindGetPhoneNumber\"\n  bindlaunchapp=\"bindLaunchApp\"\n>\n  {{ text }}\n</van-button>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-button/index.wxss",
    "content": "@import '../common/index.wxss';:host{-webkit-flex:1;flex:1}.van-goods-action-button{border:none!important;height:40px!important;height:var(--goods-action-button-height,40px)!important;font-weight:500!important;font-weight:var(--font-weight-bold,500)!important;line-height:40px!important;line-height:var(--goods-action-button-height,40px)!important}.van-goods-action-button--first{display:block!important;margin-left:5px;border-top-left-radius:20px!important;border-top-left-radius:var(--goods-action-button-border-radius,20px)!important;border-bottom-left-radius:20px!important;border-bottom-left-radius:var(--goods-action-button-border-radius,20px)!important}.van-goods-action-button--last{display:block!important;margin-right:5px;border-top-right-radius:20px!important;border-top-right-radius:var(--goods-action-button-border-radius,20px)!important;border-bottom-right-radius:20px!important;border-bottom-right-radius:var(--goods-action-button-border-radius,20px)!important}.van-goods-action-button--warning{background:linear-gradient(90deg,#ffd01e,#ff8917);background:var(--goods-action-button-warning-color,linear-gradient(90deg,#ffd01e,#ff8917))}.van-goods-action-button--danger{background:linear-gradient(90deg,#ff6034,#ee0a24);background:var(--goods-action-button-danger-color,linear-gradient(90deg,#ff6034,#ee0a24))}@media (max-width:321px){.van-goods-action-button{font-size:13px}}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-icon/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-icon/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { link } from '../mixins/link';\nimport { button } from '../mixins/button';\nimport { openType } from '../mixins/open-type';\nVantComponent({\n    classes: ['icon-class', 'text-class'],\n    mixins: [link, button, openType],\n    props: {\n        text: String,\n        dot: Boolean,\n        info: String,\n        icon: String,\n        disabled: Boolean,\n        loading: Boolean\n    },\n    methods: {\n        onClick(event) {\n            this.$emit('click', event.detail);\n            this.jumpLink();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-icon/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-button\": \"../button/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-icon/index.wxml",
    "content": "<van-button\n  square\n  id=\"{{ id }}\"\n  size=\"large\"\n  lang=\"{{ lang }}\"\n  loading=\"{{ loading }}\"\n  disabled=\"{{ disabled }}\"\n  open-type=\"{{ openType }}\"\n  business-id=\"{{ businessId }}\"\n  custom-class=\"van-goods-action-icon\"\n  session-from=\"{{ sessionFrom }}\"\n  app-parameter=\"{{ appParameter }}\"\n  send-message-img=\"{{ sendMessageImg }}\"\n  send-message-path=\"{{ sendMessagePath }}\"\n  show-message-card=\"{{ showMessageCard }}\"\n  send-message-title=\"{{ sendMessageTitle }}\"\n  bind:click=\"onClick\"\n  binderror=\"bindError\"\n  bindcontact=\"bindContact\"\n  bindopensetting=\"bindOpenSetting\"\n  bindgetuserinfo=\"bindGetUserInfo\"\n  bindgetphonenumber=\"bindGetPhoneNumber\"\n  bindlaunchapp=\"bindLaunchApp\"\n>\n  <view class=\"van-goods-action-icon__content\">\n    <van-icon\n      wx:if=\"{{ icon }}\"\n      size=\"20px\"\n      name=\"{{ icon }}\"\n      dot=\"{{ dot }}\"\n      info=\"{{ info }}\"\n      class=\"van-goods-action-icon__icon\"\n      custom-class=\"icon-class\"\n    />\n    <slot name=\"icon\" />\n    <text class=\"text-class\">{{ text }}</text>\n  </view>\n</van-button>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/goods-action-icon/index.wxss",
    "content": "@import '../common/index.wxss';.van-goods-action-icon{border:none!important;width:50px!important;width:var(--goods-action-icon-height,50px)!important}.van-goods-action-icon__content{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-justify-content:center;justify-content:center;height:100%;line-height:1;font-size:10px;font-size:var(--goods-action-icon-font-size,10px);color:#646566;color:var(--goods-action-icon-text-color,#646566)}.van-goods-action-icon__icon{margin-bottom:4px}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    relation: {\n        name: 'grid-item',\n        type: 'descendant',\n        linked(child) {\n            this.children.push(child);\n        },\n        unlinked(child) {\n            this.children = this.children.filter((item) => item !== child);\n        }\n    },\n    props: {\n        square: {\n            type: Boolean,\n            observer: 'updateChildren'\n        },\n        gutter: {\n            type: [Number, String],\n            value: 0,\n            observer: 'updateChildren'\n        },\n        clickable: {\n            type: Boolean,\n            observer: 'updateChildren'\n        },\n        columnNum: {\n            type: Number,\n            value: 4,\n            observer: 'updateChildren'\n        },\n        center: {\n            type: Boolean,\n            value: true,\n            observer: 'updateChildren'\n        },\n        border: {\n            type: Boolean,\n            value: true,\n            observer: 'updateChildren'\n        }\n    },\n    beforeCreate() {\n        this.children = [];\n    },\n    created() {\n        const { gutter } = this.data;\n        if (gutter) {\n            this.setData({\n                style: `padding-left: ${addUnit(gutter)}`\n            });\n        }\n    },\n    methods: {\n        updateChildren() {\n            this.children.forEach((child) => {\n                child.updateStyle();\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid/index.wxml",
    "content": "<view class=\"van-grid {{ border && !gutter ? 'van-hairline--top' : '' }}\" style=\"{{ style }}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid/index.wxss",
    "content": "@import '../common/index.wxss';.van-grid{position:relative;box-sizing:border-box;overflow:hidden}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid-item/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid-item/index.js",
    "content": "import { link } from '../mixins/link';\nimport { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    relation: {\n        name: 'grid',\n        type: 'ancestor',\n        linked(parent) {\n            this.parent = parent;\n        }\n    },\n    mixins: [link],\n    props: {\n        icon: String,\n        dot: Boolean,\n        info: null,\n        text: String,\n        useSlot: Boolean\n    },\n    mounted() {\n        this.updateStyle();\n    },\n    methods: {\n        updateStyle() {\n            if (!this.parent) {\n                return;\n            }\n            const { data, children } = this.parent;\n            const { columnNum, border, square, gutter, clickable, center } = data;\n            const width = `${100 / columnNum}%`;\n            const styleWrapper = [];\n            styleWrapper.push(`width: ${width}`);\n            if (square) {\n                styleWrapper.push(`padding-top: ${width}`);\n            }\n            if (gutter) {\n                const gutterValue = addUnit(gutter);\n                styleWrapper.push(`padding-right: ${gutterValue}`);\n                const index = children.indexOf(this);\n                if (index >= columnNum) {\n                    styleWrapper.push(`margin-top: ${gutterValue}`);\n                }\n            }\n            let contentStyle = '';\n            if (square && gutter) {\n                const gutterValue = addUnit(gutter);\n                contentStyle = `\n          right: ${gutterValue};\n          bottom: ${gutterValue};\n          height: auto;\n        `;\n            }\n            this.setData({\n                style: styleWrapper.join('; '),\n                contentStyle,\n                center,\n                border,\n                square,\n                gutter,\n                clickable\n            });\n        },\n        onClick() {\n            this.$emit('click');\n            this.jumpLink();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid-item/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid-item/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"{{ utils.bem('grid-item', { square }) }}\" style=\"{{ style }}\" bindtap=\"onClick\">\n  <view\n    class=\"{{ utils.bem('grid-item__content', { center, square, clickable, surround: border && gutter }) }} {{ border ? 'van-hairline--surround' : '' }}\"\n    style=\"{{ contentStyle }}\"\n  >\n    <block wx:if=\"{{ useSlot }}\">\n      <slot />\n    </block>\n    <block wx:else>\n      <view class=\"van-grid-item__icon\">\n        <van-icon wx:if=\"{{ icon }}\" name=\"{{ icon }}\" dot=\"{{ dot }}\" info=\"{{ info }}\" />\n        <slot wx:else name=\"icon\"></slot>\n      </view>\n      <view class=\"van-grid-item__text\">\n        <text wx:if=\"{{ text }}\">{{ text }}</text>\n        <slot wx:else name=\"text\"></slot>\n      </view>\n    </block>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/grid-item/index.wxss",
    "content": "@import '../common/index.wxss';.van-grid-item{position:relative;float:left;box-sizing:border-box}.van-grid-item--square{height:0}.van-grid-item__content{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;box-sizing:border-box;height:100%;padding:16px 8px;padding:var(--grid-item-content-padding,16px 8px);background-color:#fff;background-color:var(--grid-item-content-background-color,#fff)}.van-grid-item__content:after{z-index:1;border-width:0 1px 1px 0;border-bottom-width:var(--border-width-base,1px);border-right-width:var(--border-width-base,1px);border-top-width:0}.van-grid-item__content--surround:after{border-width:1px;border-width:var(--border-width-base,1px)}.van-grid-item__content--center{-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-grid-item__content--square{position:absolute;top:0;right:0;left:0}.van-grid-item__content--clickable:active{background-color:#f2f3f5;background-color:var(--grid-item-content-active-color,#f2f3f5)}.van-grid-item__icon{font-size:26px;font-size:var(--grid-item-icon-size,26px)}.van-grid-item__text{word-wrap:break-word;color:#646566;color:var(--grid-item-text-color,#646566);font-size:12px;font-size:var(--grid-item-text-font-size,12px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/icon/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/icon/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    props: {\n        dot: Boolean,\n        info: null,\n        size: {\n            type: null,\n            observer: 'setSizeWithUnit'\n        },\n        color: String,\n        customStyle: String,\n        classPrefix: {\n            type: String,\n            value: 'van-icon'\n        },\n        name: {\n            type: String,\n            observer(val) {\n                this.setData({\n                    isImageName: val.indexOf('/') !== -1\n                });\n            }\n        }\n    },\n    data: {\n        sizeWithUnit: null,\n    },\n    methods: {\n        onClick() {\n            this.$emit('click');\n        },\n        setSizeWithUnit(size) {\n            this.setData({\n                sizeWithUnit: addUnit(size)\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/icon/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-info\": \"../info/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/icon/index.wxml",
    "content": "<view\n  class=\"custom-class {{ classPrefix }} {{ isImageName ? 'van-icon--image' : classPrefix + '-' + name }}\"\n  style=\"{{ color ? 'color: ' + color + ';' : '' }}{{ size ? 'font-size: ' + sizeWithUnit + ';' : '' }}{{ customStyle }}\"\n  bind:tap=\"onClick\"\n>\n  <van-info\n    wx:if=\"{{ info !== null || dot }}\"\n    dot=\"{{ dot }}\"\n    info=\"{{ info }}\"\n    custom-class=\"van-icon__info\"\n  />\n  <image\n    wx:if=\"{{ isImageName }}\"\n    src=\"{{ name }}\"\n    mode=\"aspectFit\"\n    class=\"van-icon__image\"\n  />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/icon/index.wxss",
    "content": "@import '../common/index.wxss';@font-face{font-weight:400;font-family:vant-icon;font-style:normal;font-display:auto;src:url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff2) format(\"woff2\"),url(https://img.yzcdn.cn/vant/vant-icon-0bc654.woff) format(\"woff\"),url(https://img.yzcdn.cn/vant/vant-icon-0bc654.ttf) format(\"truetype\")}.van-icon{position:relative;font:normal normal normal 14px/1 vant-icon;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased}.van-icon,.van-icon:before{display:inline-block}.van-icon-add-o:before{content:\"\\F000\"}.van-icon-add-square:before{content:\"\\F001\"}.van-icon-add:before{content:\"\\F002\"}.van-icon-after-sale:before{content:\"\\F003\"}.van-icon-aim:before{content:\"\\F004\"}.van-icon-alipay:before{content:\"\\F005\"}.van-icon-apps-o:before{content:\"\\F006\"}.van-icon-arrow-down:before{content:\"\\F007\"}.van-icon-arrow-left:before{content:\"\\F008\"}.van-icon-arrow-up:before{content:\"\\F009\"}.van-icon-arrow:before{content:\"\\F00A\"}.van-icon-ascending:before{content:\"\\F00B\"}.van-icon-audio:before{content:\"\\F00C\"}.van-icon-award-o:before{content:\"\\F00D\"}.van-icon-award:before{content:\"\\F00E\"}.van-icon-bag-o:before{content:\"\\F00F\"}.van-icon-bag:before{content:\"\\F010\"}.van-icon-balance-list-o:before{content:\"\\F011\"}.van-icon-balance-list:before{content:\"\\F012\"}.van-icon-balance-o:before{content:\"\\F013\"}.van-icon-balance-pay:before{content:\"\\F014\"}.van-icon-bar-chart-o:before{content:\"\\F015\"}.van-icon-bars:before{content:\"\\F016\"}.van-icon-bell:before{content:\"\\F017\"}.van-icon-bill-o:before{content:\"\\F018\"}.van-icon-bill:before{content:\"\\F019\"}.van-icon-birthday-cake-o:before{content:\"\\F01A\"}.van-icon-bookmark-o:before{content:\"\\F01B\"}.van-icon-bookmark:before{content:\"\\F01C\"}.van-icon-browsing-history-o:before{content:\"\\F01D\"}.van-icon-browsing-history:before{content:\"\\F01E\"}.van-icon-brush-o:before{content:\"\\F01F\"}.van-icon-bulb-o:before{content:\"\\F020\"}.van-icon-bullhorn-o:before{content:\"\\F021\"}.van-icon-calender-o:before{content:\"\\F022\"}.van-icon-card:before{content:\"\\F023\"}.van-icon-cart-circle-o:before{content:\"\\F024\"}.van-icon-cart-circle:before{content:\"\\F025\"}.van-icon-cart-o:before{content:\"\\F026\"}.van-icon-cart:before{content:\"\\F027\"}.van-icon-cash-back-record:before{content:\"\\F028\"}.van-icon-cash-on-deliver:before{content:\"\\F029\"}.van-icon-cashier-o:before{content:\"\\F02A\"}.van-icon-certificate:before{content:\"\\F02B\"}.van-icon-chart-trending-o:before{content:\"\\F02C\"}.van-icon-chat-o:before{content:\"\\F02D\"}.van-icon-chat:before{content:\"\\F02E\"}.van-icon-checked:before{content:\"\\F02F\"}.van-icon-circle:before{content:\"\\F030\"}.van-icon-clear:before{content:\"\\F031\"}.van-icon-clock-o:before{content:\"\\F032\"}.van-icon-clock:before{content:\"\\F033\"}.van-icon-close:before{content:\"\\F034\"}.van-icon-closed-eye:before{content:\"\\F035\"}.van-icon-cluster-o:before{content:\"\\F036\"}.van-icon-cluster:before{content:\"\\F037\"}.van-icon-column:before{content:\"\\F038\"}.van-icon-comment-circle-o:before{content:\"\\F039\"}.van-icon-comment-circle:before{content:\"\\F03A\"}.van-icon-comment-o:before{content:\"\\F03B\"}.van-icon-comment:before{content:\"\\F03C\"}.van-icon-completed:before{content:\"\\F03D\"}.van-icon-contact:before{content:\"\\F03E\"}.van-icon-coupon-o:before{content:\"\\F03F\"}.van-icon-coupon:before{content:\"\\F040\"}.van-icon-credit-pay:before{content:\"\\F041\"}.van-icon-cross:before{content:\"\\F042\"}.van-icon-debit-pay:before{content:\"\\F043\"}.van-icon-delete:before{content:\"\\F044\"}.van-icon-descending:before{content:\"\\F045\"}.van-icon-description:before{content:\"\\F046\"}.van-icon-desktop-o:before{content:\"\\F047\"}.van-icon-diamond-o:before{content:\"\\F048\"}.van-icon-diamond:before{content:\"\\F049\"}.van-icon-discount:before{content:\"\\F04A\"}.van-icon-down:before{content:\"\\F04B\"}.van-icon-ecard-pay:before{content:\"\\F04C\"}.van-icon-edit:before{content:\"\\F04D\"}.van-icon-ellipsis:before{content:\"\\F04E\"}.van-icon-empty:before{content:\"\\F04F\"}.van-icon-envelop-o:before{content:\"\\F050\"}.van-icon-exchange:before{content:\"\\F051\"}.van-icon-expand-o:before{content:\"\\F052\"}.van-icon-expand:before{content:\"\\F053\"}.van-icon-eye-o:before{content:\"\\F054\"}.van-icon-eye:before{content:\"\\F055\"}.van-icon-fail:before{content:\"\\F056\"}.van-icon-failure:before{content:\"\\F057\"}.van-icon-filter-o:before{content:\"\\F058\"}.van-icon-fire-o:before{content:\"\\F059\"}.van-icon-fire:before{content:\"\\F05A\"}.van-icon-flag-o:before{content:\"\\F05B\"}.van-icon-flower-o:before{content:\"\\F05C\"}.van-icon-free-postage:before{content:\"\\F05D\"}.van-icon-friends-o:before{content:\"\\F05E\"}.van-icon-friends:before{content:\"\\F05F\"}.van-icon-gem-o:before{content:\"\\F060\"}.van-icon-gem:before{content:\"\\F061\"}.van-icon-gift-card-o:before{content:\"\\F062\"}.van-icon-gift-card:before{content:\"\\F063\"}.van-icon-gift-o:before{content:\"\\F064\"}.van-icon-gift:before{content:\"\\F065\"}.van-icon-gold-coin-o:before{content:\"\\F066\"}.van-icon-gold-coin:before{content:\"\\F067\"}.van-icon-good-job-o:before{content:\"\\F068\"}.van-icon-good-job:before{content:\"\\F069\"}.van-icon-goods-collect-o:before{content:\"\\F06A\"}.van-icon-goods-collect:before{content:\"\\F06B\"}.van-icon-graphic:before{content:\"\\F06C\"}.van-icon-home-o:before{content:\"\\F06D\"}.van-icon-hot-o:before{content:\"\\F06E\"}.van-icon-hot-sale-o:before{content:\"\\F06F\"}.van-icon-hot-sale:before{content:\"\\F070\"}.van-icon-hot:before{content:\"\\F071\"}.van-icon-hotel-o:before{content:\"\\F072\"}.van-icon-idcard:before{content:\"\\F073\"}.van-icon-info-o:before{content:\"\\F074\"}.van-icon-info:before{content:\"\\F075\"}.van-icon-invition:before{content:\"\\F076\"}.van-icon-label-o:before{content:\"\\F077\"}.van-icon-label:before{content:\"\\F078\"}.van-icon-like-o:before{content:\"\\F079\"}.van-icon-like:before{content:\"\\F07A\"}.van-icon-live:before{content:\"\\F07B\"}.van-icon-location-o:before{content:\"\\F07C\"}.van-icon-location:before{content:\"\\F07D\"}.van-icon-lock:before{content:\"\\F07E\"}.van-icon-logistics:before{content:\"\\F07F\"}.van-icon-manager-o:before{content:\"\\F080\"}.van-icon-manager:before{content:\"\\F081\"}.van-icon-map-marked:before{content:\"\\F082\"}.van-icon-medel-o:before{content:\"\\F083\"}.van-icon-medel:before{content:\"\\F084\"}.van-icon-more-o:before{content:\"\\F085\"}.van-icon-more:before{content:\"\\F086\"}.van-icon-music-o:before{content:\"\\F087\"}.van-icon-music:before{content:\"\\F088\"}.van-icon-new-arrival-o:before{content:\"\\F089\"}.van-icon-new-arrival:before{content:\"\\F08A\"}.van-icon-new-o:before{content:\"\\F08B\"}.van-icon-new:before{content:\"\\F08C\"}.van-icon-newspaper-o:before{content:\"\\F08D\"}.van-icon-notes-o:before{content:\"\\F08E\"}.van-icon-orders-o:before{content:\"\\F08F\"}.van-icon-other-pay:before{content:\"\\F090\"}.van-icon-paid:before{content:\"\\F091\"}.van-icon-passed:before{content:\"\\F092\"}.van-icon-pause-circle-o:before{content:\"\\F093\"}.van-icon-pause-circle:before{content:\"\\F094\"}.van-icon-pause:before{content:\"\\F095\"}.van-icon-peer-pay:before{content:\"\\F096\"}.van-icon-pending-payment:before{content:\"\\F097\"}.van-icon-phone-circle-o:before{content:\"\\F098\"}.van-icon-phone-circle:before{content:\"\\F099\"}.van-icon-phone-o:before{content:\"\\F09A\"}.van-icon-phone:before{content:\"\\F09B\"}.van-icon-photo-o:before{content:\"\\F09C\"}.van-icon-photo:before{content:\"\\F09D\"}.van-icon-photograph:before{content:\"\\F09E\"}.van-icon-play-circle-o:before{content:\"\\F09F\"}.van-icon-play-circle:before{content:\"\\F0A0\"}.van-icon-play:before{content:\"\\F0A1\"}.van-icon-plus:before{content:\"\\F0A2\"}.van-icon-point-gift-o:before{content:\"\\F0A3\"}.van-icon-point-gift:before{content:\"\\F0A4\"}.van-icon-points:before{content:\"\\F0A5\"}.van-icon-printer:before{content:\"\\F0A6\"}.van-icon-qr-invalid:before{content:\"\\F0A7\"}.van-icon-qr:before{content:\"\\F0A8\"}.van-icon-question-o:before{content:\"\\F0A9\"}.van-icon-question:before{content:\"\\F0AA\"}.van-icon-records:before{content:\"\\F0AB\"}.van-icon-refund-o:before{content:\"\\F0AC\"}.van-icon-replay:before{content:\"\\F0AD\"}.van-icon-scan:before{content:\"\\F0AE\"}.van-icon-search:before{content:\"\\F0AF\"}.van-icon-send-gift-o:before{content:\"\\F0B0\"}.van-icon-send-gift:before{content:\"\\F0B1\"}.van-icon-service-o:before{content:\"\\F0B2\"}.van-icon-service:before{content:\"\\F0B3\"}.van-icon-setting-o:before{content:\"\\F0B4\"}.van-icon-setting:before{content:\"\\F0B5\"}.van-icon-share:before{content:\"\\F0B6\"}.van-icon-shop-collect-o:before{content:\"\\F0B7\"}.van-icon-shop-collect:before{content:\"\\F0B8\"}.van-icon-shop-o:before{content:\"\\F0B9\"}.van-icon-shop:before{content:\"\\F0BA\"}.van-icon-shopping-cart-o:before{content:\"\\F0BB\"}.van-icon-shopping-cart:before{content:\"\\F0BC\"}.van-icon-shrink:before{content:\"\\F0BD\"}.van-icon-sign:before{content:\"\\F0BE\"}.van-icon-smile-comment-o:before{content:\"\\F0BF\"}.van-icon-smile-comment:before{content:\"\\F0C0\"}.van-icon-smile-o:before{content:\"\\F0C1\"}.van-icon-smile:before{content:\"\\F0C2\"}.van-icon-star-o:before{content:\"\\F0C3\"}.van-icon-star:before{content:\"\\F0C4\"}.van-icon-stop-circle-o:before{content:\"\\F0C5\"}.van-icon-stop-circle:before{content:\"\\F0C6\"}.van-icon-stop:before{content:\"\\F0C7\"}.van-icon-success:before{content:\"\\F0C8\"}.van-icon-thumb-circle-o:before{content:\"\\F0C9\"}.van-icon-thumb-circle:before{content:\"\\F0CA\"}.van-icon-todo-list-o:before{content:\"\\F0CB\"}.van-icon-todo-list:before{content:\"\\F0CC\"}.van-icon-tosend:before{content:\"\\F0CD\"}.van-icon-tv-o:before{content:\"\\F0CE\"}.van-icon-umbrella-circle:before{content:\"\\F0CF\"}.van-icon-underway-o:before{content:\"\\F0D0\"}.van-icon-underway:before{content:\"\\F0D1\"}.van-icon-upgrade:before{content:\"\\F0D2\"}.van-icon-user-circle-o:before{content:\"\\F0D3\"}.van-icon-user-o:before{content:\"\\F0D4\"}.van-icon-video-o:before{content:\"\\F0D5\"}.van-icon-video:before{content:\"\\F0D6\"}.van-icon-vip-card-o:before{content:\"\\F0D7\"}.van-icon-vip-card:before{content:\"\\F0D8\"}.van-icon-volume-o:before{content:\"\\F0D9\"}.van-icon-volume:before{content:\"\\F0DA\"}.van-icon-wap-home-o:before{content:\"\\F0DB\"}.van-icon-wap-home:before{content:\"\\F0DC\"}.van-icon-wap-nav:before{content:\"\\F0DD\"}.van-icon-warn-o:before{content:\"\\F0DE\"}.van-icon-warning-o:before{content:\"\\F0DF\"}.van-icon-warning:before{content:\"\\F0E0\"}.van-icon-weapp-nav:before{content:\"\\F0E1\"}.van-icon-wechat:before{content:\"\\F0E2\"}.van-icon-youzan-shield:before{content:\"\\F0E3\"}:host{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center}.van-icon--image{width:1em;height:1em}.van-icon__image{width:100%;height:100%}.van-icon__info{z-index:1}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/image/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/image/index.js",
    "content": "import { addUnit, isDef } from '../common/utils';\nimport { VantComponent } from '../common/component';\nimport { button } from '../mixins/button';\nimport { openType } from '../mixins/open-type';\nconst FIT_MODE_MAP = {\n    none: 'center',\n    fill: 'scaleToFill',\n    cover: 'aspectFill',\n    contain: 'aspectFit'\n};\nVantComponent({\n    mixins: [button, openType],\n    classes: ['custom-class', 'loading-class', 'error-class', 'image-class'],\n    props: {\n        src: String,\n        round: Boolean,\n        width: {\n            type: null,\n            observer: 'setStyle'\n        },\n        height: {\n            type: null,\n            observer: 'setStyle'\n        },\n        radius: null,\n        lazyLoad: Boolean,\n        useErrorSlot: Boolean,\n        useLoadingSlot: Boolean,\n        showMenuByLongpress: Boolean,\n        fit: {\n            type: String,\n            value: 'fill',\n            observer: 'setMode'\n        },\n        showError: {\n            type: Boolean,\n            value: true\n        },\n        showLoading: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        error: false,\n        loading: true\n    },\n    watch: {\n        src() {\n            this.setData({\n                error: false,\n                loading: true\n            });\n        }\n    },\n    mounted() {\n        this.setMode();\n        this.setStyle();\n    },\n    methods: {\n        setMode() {\n            this.setData({\n                mode: FIT_MODE_MAP[this.data.fit],\n            });\n        },\n        setStyle() {\n            const { width, height, radius } = this.data;\n            let style = '';\n            if (isDef(width)) {\n                style += `width: ${addUnit(width)};`;\n            }\n            if (isDef(height)) {\n                style += `height: ${addUnit(height)};`;\n            }\n            if (isDef(radius)) {\n                style += 'overflow: hidden;';\n                style += `border-radius: ${addUnit(radius)};`;\n            }\n            this.setData({ style });\n        },\n        onLoad(event) {\n            this.setData({\n                loading: false\n            });\n            this.$emit('load', event.detail);\n        },\n        onError(event) {\n            this.setData({\n                loading: false,\n                error: true\n            });\n            this.$emit('error', event.detail);\n        },\n        onClick(event) {\n            this.$emit('click', event.detail);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/image/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-loading\": \"../loading/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/image/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  style=\"{{ style }}\"\n  class=\"custom-class {{ utils.bem('image', { round })}}\"\n  bind:tap=\"onClick\"\n>\n  <image\n    wx:if=\"{{ !error }}\"\n    src=\"{{ src }}\"\n    mode=\"{{ mode }}\"\n    lazy-load=\"{{ lazyLoad }}\"\n    class=\"image-class van-image__img\"\n    show-menu-by-longpress=\"{{ showMenuByLongpress }}\"\n    bind:load=\"onLoad\"\n    bind:error=\"onError\"\n  />\n\n  <view\n    wx:if=\"{{ loading && showLoading }}\"\n    class=\"loading-class van-image__loading\"\n  >\n    <slot wx:if=\"{{ useLoadingSlot }}\" name=\"loading\" />\n    <van-icon wx:else name=\"photo-o\" size=\"22\" />\n  </view>\n  <view\n    wx:if=\"{{ error && showError }}\"\n    class=\"error-class van-image__error\"\n  >\n    <slot wx:if=\"{{ useErrorSlot }}\" name=\"error\" />\n    <van-icon wx:else name=\"warning-o\" size=\"22\" />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/image/index.wxss",
    "content": "@import '../common/index.wxss';.van-image{position:relative;display:inline-block}.van-image--round{overflow:hidden;border-radius:50%}.van-image--round .van-image__img{border-radius:inherit}.van-image__error,.van-image__img,.van-image__loading{display:block;width:100%;height:100%}.van-image__error,.van-image__loading{position:absolute;top:0;left:0;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;color:#969799;color:var(--image-placeholder-text-color,#969799);font-size:14px;font-size:var(--image-placeholder-font-size,14px);background-color:#f7f8fa;background-color:var(--image-placeholder-background-color,#f7f8fa)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-anchor/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-anchor/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'index-bar',\n        type: 'ancestor',\n        linked(target) {\n            this.parent = target;\n        },\n        unlinked() {\n            this.parent = null;\n        }\n    },\n    props: {\n        useSlot: Boolean,\n        index: null\n    },\n    data: {\n        active: false,\n        wrapperStyle: '',\n        anchorStyle: ''\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-anchor/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-anchor/index.wxml",
    "content": "<view\n  class=\"van-index-anchor-wrapper\"\n  style=\"{{ wrapperStyle }}\"\n>\n  <view\n    class=\"van-index-anchor {{ active ? 'van-index-anchor--active van-hairline--bottom' : '' }}\"\n    style=\"{{ anchorStyle }}\"\n  >\n    <slot wx:if=\"{{ useSlot }}\"/>\n    <block wx:else>\n      <text>{{ index }}</text>\n    </block>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-anchor/index.wxss",
    "content": "@import '../common/index.wxss';.van-index-anchor{padding:0 16px;padding:var(--index-anchor-padding,0 16px);color:#323233;color:var(--index-anchor-text-color,#323233);font-weight:500;font-weight:var(--index-anchor-font-weight,500);font-size:14px;font-size:var(--index-anchor-font-size,14px);line-height:32px;line-height:var(--index-anchor-line-height,32px);background-color:initial;background-color:var(--index-anchor-background-color,transparent)}.van-index-anchor--active{right:0;left:0;color:#07c160;color:var(--index-anchor-active-text-color,#07c160);background-color:#fff;background-color:var(--index-anchor-active-background-color,#fff)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-bar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-bar/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { GREEN } from '../common/color';\nconst indexList = () => {\n    const indexList = [];\n    const charCodeOfA = 'A'.charCodeAt(0);\n    for (let i = 0; i < 26; i++) {\n        indexList.push(String.fromCharCode(charCodeOfA + i));\n    }\n    return indexList;\n};\nVantComponent({\n    relation: {\n        name: 'index-anchor',\n        type: 'descendant',\n        linked() {\n            this.updateData();\n        },\n        linkChanged() {\n            this.updateData();\n        },\n        unlinked() {\n            this.updateData();\n        }\n    },\n    props: {\n        sticky: {\n            type: Boolean,\n            value: true\n        },\n        zIndex: {\n            type: Number,\n            value: 1\n        },\n        highlightColor: {\n            type: String,\n            value: GREEN\n        },\n        scrollTop: {\n            type: Number,\n            value: 0,\n            observer: 'onScroll'\n        },\n        stickyOffsetTop: {\n            type: Number,\n            value: 0\n        },\n        indexList: {\n            type: Array,\n            value: indexList()\n        }\n    },\n    data: {\n        activeAnchorIndex: null,\n        showSidebar: false\n    },\n    methods: {\n        updateData() {\n            this.timer && clearTimeout(this.timer);\n            this.timer = setTimeout(() => {\n                this.children = this.getRelationNodes('../index-anchor/index');\n                this.setData({\n                    showSidebar: !!this.children.length\n                });\n                this.setRect().then(() => {\n                    this.onScroll();\n                });\n            }, 0);\n        },\n        setRect() {\n            return Promise.all([\n                this.setAnchorsRect(),\n                this.setListRect(),\n                this.setSiderbarRect()\n            ]);\n        },\n        setAnchorsRect() {\n            return Promise.all(this.children.map(anchor => (anchor.getRect('.van-index-anchor-wrapper').then((rect) => {\n                Object.assign(anchor, {\n                    height: rect.height,\n                    top: rect.top + this.data.scrollTop\n                });\n            }))));\n        },\n        setListRect() {\n            return this.getRect('.van-index-bar').then((rect) => {\n                Object.assign(this, {\n                    height: rect.height,\n                    top: rect.top + this.data.scrollTop\n                });\n            });\n        },\n        setSiderbarRect() {\n            return this.getRect('.van-index-bar__sidebar').then(res => {\n                this.sidebar = {\n                    height: res.height,\n                    top: res.top\n                };\n            });\n        },\n        setDiffData({ target, data }) {\n            const diffData = {};\n            Object.keys(data).forEach(key => {\n                if (target.data[key] !== data[key]) {\n                    diffData[key] = data[key];\n                }\n            });\n            if (Object.keys(diffData).length) {\n                target.setData(diffData);\n            }\n        },\n        getAnchorRect(anchor) {\n            return anchor.getRect('.van-index-anchor-wrapper').then((rect) => ({\n                height: rect.height,\n                top: rect.top\n            }));\n        },\n        getActiveAnchorIndex() {\n            const { children } = this;\n            const { sticky, scrollTop, stickyOffsetTop } = this.data;\n            for (let i = this.children.length - 1; i >= 0; i--) {\n                const preAnchorHeight = i > 0 ? children[i - 1].height : 0;\n                const reachTop = sticky ? preAnchorHeight + stickyOffsetTop : 0;\n                if (reachTop + scrollTop >= children[i].top) {\n                    return i;\n                }\n            }\n            return -1;\n        },\n        onScroll() {\n            const { children = [] } = this;\n            if (!children.length) {\n                return;\n            }\n            const { sticky, stickyOffsetTop, zIndex, highlightColor, scrollTop } = this.data;\n            const active = this.getActiveAnchorIndex();\n            this.setDiffData({\n                target: this,\n                data: {\n                    activeAnchorIndex: active\n                }\n            });\n            if (sticky) {\n                let isActiveAnchorSticky = false;\n                if (active !== -1) {\n                    isActiveAnchorSticky = children[active].top <= stickyOffsetTop + scrollTop;\n                }\n                children.forEach((item, index) => {\n                    if (index === active) {\n                        let wrapperStyle = '';\n                        let anchorStyle = `\n              color: ${highlightColor};\n            `;\n                        if (isActiveAnchorSticky) {\n                            wrapperStyle = `\n                height: ${children[index].height}px;\n              `;\n                            anchorStyle = `\n                position: fixed;\n                top: ${stickyOffsetTop}px;\n                z-index: ${zIndex};\n                color: ${highlightColor};\n              `;\n                        }\n                        this.setDiffData({\n                            target: item,\n                            data: {\n                                active: true,\n                                anchorStyle,\n                                wrapperStyle\n                            }\n                        });\n                    }\n                    else if (index === active - 1) {\n                        const currentAnchor = children[index];\n                        const currentOffsetTop = currentAnchor.top;\n                        const targetOffsetTop = index === children.length - 1\n                            ? this.top\n                            : children[index + 1].top;\n                        const parentOffsetHeight = targetOffsetTop - currentOffsetTop;\n                        const translateY = parentOffsetHeight - currentAnchor.height;\n                        const anchorStyle = `\n              position: relative;\n              transform: translate3d(0, ${translateY}px, 0);\n              z-index: ${zIndex};\n              color: ${highlightColor};\n            `;\n                        this.setDiffData({\n                            target: item,\n                            data: {\n                                active: true,\n                                anchorStyle\n                            }\n                        });\n                    }\n                    else {\n                        this.setDiffData({\n                            target: item,\n                            data: {\n                                active: false,\n                                anchorStyle: '',\n                                wrapperStyle: '',\n                            }\n                        });\n                    }\n                });\n            }\n        },\n        onClick(event) {\n            this.scrollToAnchor(event.target.dataset.index);\n        },\n        onTouchMove(event) {\n            const sidebarLength = this.children.length;\n            const touch = event.touches[0];\n            const itemHeight = this.sidebar.height / sidebarLength;\n            let index = Math.floor((touch.clientY - this.sidebar.top) / itemHeight);\n            if (index < 0) {\n                index = 0;\n            }\n            else if (index > sidebarLength - 1) {\n                index = sidebarLength - 1;\n            }\n            this.scrollToAnchor(index);\n        },\n        onTouchStop() {\n            this.scrollToAnchorIndex = null;\n        },\n        scrollToAnchor(index) {\n            if (typeof index !== 'number' || this.scrollToAnchorIndex === index) {\n                return;\n            }\n            this.scrollToAnchorIndex = index;\n            const anchor = this.children.filter(item => item.data.index === this.data.indexList[index])[0];\n            this.$emit('select', anchor.data.index);\n            anchor && wx.pageScrollTo({\n                duration: 0,\n                scrollTop: anchor.top\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-bar/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-bar/index.wxml",
    "content": "<view class=\"van-index-bar\">\n  <slot />\n\n  <view\n    wx:if=\"{{ showSidebar }}\"\n    class=\"van-index-bar__sidebar\"\n    catch:tap=\"onClick\"\n    catch:touchmove=\"onTouchMove\"\n    catch:touchend=\"onTouchStop\"\n    catch:touchcancel=\"onTouchStop\"\n  >\n    <view\n      wx:for=\"{{ indexList }}\"\n      wx:key=\"index\"\n      class=\"van-index-bar__index\"\n      style=\"z-index: {{ zIndex + 1 }}; color: {{ activeAnchorIndex === index ? highlightColor : '' }}\"\n      data-index=\"{{ index }}\"\n    >\n      {{ item }}\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/index-bar/index.wxss",
    "content": "@import '../common/index.wxss';.van-index-bar{position:relative}.van-index-bar__sidebar{position:fixed;top:50%;right:0;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;text-align:center;-webkit-transform:translateY(-50%);transform:translateY(-50%);-webkit-user-select:none;user-select:none}.van-index-bar__index{font-weight:500;padding:0 4px 0 16px;padding:0 var(--padding-base,4px) 0 var(--padding-md,16px);font-size:10px;font-size:var(--index-bar-index-font-size,10px);line-height:14px;line-height:var(--index-bar-index-line-height,14px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/info/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/info/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        dot: Boolean,\n        info: null,\n        customStyle: String\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/info/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/info/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  wx:if=\"{{ info !== null && info !== '' || dot }}\"\n  class=\"custom-class van-info {{ utils.bem('info', { dot }) }}\"\n  style=\"{{ customStyle }}\"\n>{{ dot ? '' : info }}</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/info/index.wxss",
    "content": "@import '../common/index.wxss';.van-info{position:absolute;top:0;right:0;box-sizing:border-box;white-space:nowrap;text-align:center;-webkit-transform:translate(50%,-50%);transform:translate(50%,-50%);-webkit-transform-origin:100%;transform-origin:100%;min-width:16px;min-width:var(--info-size,16px);padding:0 3px;padding:var(--info-padding,0 3px);color:#fff;color:var(--info-color,#fff);font-weight:500;font-weight:var(--info-font-weight,500);font-size:12px;font-size:var(--info-font-size,12px);font-family:PingFang SC,Helvetica Neue,Arial,sans-serif;font-family:var(--info-font-family,PingFang SC,Helvetica Neue,Arial,sans-serif);line-height:14px;line-height:calc(var(--info-size, 16px) - var(--info-border-width, 1px)*2);background-color:#ee0a24;background-color:var(--info-background-color,#ee0a24);border:1px solid #fff;border:var(--info-border-width,1px) solid var(--white,#fff);border-radius:16px;border-radius:var(--info-size,16px)}.van-info--dot{min-width:0;border-radius:100%;width:8px;width:var(--info-dot-size,8px);height:8px;height:var(--info-dot-size,8px);background-color:#ee0a24;background-color:var(--info-dot-color,#ee0a24)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/loading/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/loading/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    props: {\n        color: String,\n        vertical: Boolean,\n        type: {\n            type: String,\n            value: 'circular'\n        },\n        size: {\n            type: String,\n            observer: 'setSizeWithUnit'\n        },\n        textSize: {\n            type: String,\n            observer: 'setTextSizeWithUnit'\n        }\n    },\n    methods: {\n        setSizeWithUnit(size) {\n            this.setData({\n                sizeWithUnit: addUnit(size)\n            });\n        },\n        setTextSizeWithUnit(size) {\n            this.set({\n                textSizeWithUnit: addUnit(size)\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/loading/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/loading/index.wxml",
    "content": "<view class=\"custom-class van-loading {{ vertical ? 'van-loading--vertical' : '' }}\">\n  <view\n    class=\"van-loading__spinner van-loading__spinner--{{ type }}\"\n    style=\"color: {{ color }}; width: {{ sizeWithUnit }}; height: {{ sizeWithUnit }}\"\n  >\n    <view\n      wx:if=\"{{ type === 'spinner' }}\"\n      wx:for=\"item in 12\"\n      wx:key=\"index\"\n      class=\"van-loading__dot\"\n    />\n  </view>\n  <view class=\"van-loading__text\" style=\"font-size: {{ textSizeWithUnit }};\">\n    <slot />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/loading/index.wxss",
    "content": "@import '../common/index.wxss';:host{font-size:0;line-height:1}.van-loading{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;color:#c8c9cc;color:var(--loading-spinner-color,#c8c9cc)}.van-loading__spinner{position:relative;box-sizing:border-box;width:30px;width:var(--loading-spinner-size,30px);max-width:100%;max-height:100%;height:30px;height:var(--loading-spinner-size,30px);-webkit-animation:van-rotate .8s linear infinite;animation:van-rotate .8s linear infinite;-webkit-animation:van-rotate var(--loading-spinner-animation-duration,.8s) linear infinite;animation:van-rotate var(--loading-spinner-animation-duration,.8s) linear infinite}.van-loading__spinner--spinner{-webkit-animation-timing-function:steps(12);animation-timing-function:steps(12)}.van-loading__spinner--circular{border:1px solid transparent;border-top-color:initial;border-radius:100%}.van-loading__text{margin-left:8px;margin-left:var(--padding-xs,8px);color:#969799;color:var(--loading-text-color,#969799);font-size:14px;font-size:var(--loading-text-font-size,14px);line-height:20px;line-height:var(--loading-text-line-height,20px)}.van-loading__text:empty{display:none}.van-loading--vertical{-webkit-flex-direction:column;flex-direction:column}.van-loading--vertical .van-loading__text{margin:8px 0 0;margin:var(--padding-xs,8px) 0 0}.van-loading__dot{position:absolute;top:0;left:0;width:100%;height:100%}.van-loading__dot:before{display:block;width:2px;height:25%;margin:0 auto;background-color:currentColor;border-radius:40%;content:\" \"}.van-loading__dot:first-of-type{-webkit-transform:rotate(30deg);transform:rotate(30deg);opacity:1}.van-loading__dot:nth-of-type(2){-webkit-transform:rotate(60deg);transform:rotate(60deg);opacity:.9375}.van-loading__dot:nth-of-type(3){-webkit-transform:rotate(90deg);transform:rotate(90deg);opacity:.875}.van-loading__dot:nth-of-type(4){-webkit-transform:rotate(120deg);transform:rotate(120deg);opacity:.8125}.van-loading__dot:nth-of-type(5){-webkit-transform:rotate(150deg);transform:rotate(150deg);opacity:.75}.van-loading__dot:nth-of-type(6){-webkit-transform:rotate(180deg);transform:rotate(180deg);opacity:.6875}.van-loading__dot:nth-of-type(7){-webkit-transform:rotate(210deg);transform:rotate(210deg);opacity:.625}.van-loading__dot:nth-of-type(8){-webkit-transform:rotate(240deg);transform:rotate(240deg);opacity:.5625}.van-loading__dot:nth-of-type(9){-webkit-transform:rotate(270deg);transform:rotate(270deg);opacity:.5}.van-loading__dot:nth-of-type(10){-webkit-transform:rotate(300deg);transform:rotate(300deg);opacity:.4375}.van-loading__dot:nth-of-type(11){-webkit-transform:rotate(330deg);transform:rotate(330deg);opacity:.375}.van-loading__dot:nth-of-type(12){-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:.3125}@-webkit-keyframes van-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes van-rotate{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/basic.d.ts",
    "content": "export declare const basic: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/basic.js",
    "content": "export const basic = Behavior({\n    methods: {\n        $emit(...args) {\n            this.triggerEvent(...args);\n        },\n        getRect(selector, all) {\n            return new Promise(resolve => {\n                wx.createSelectorQuery()\n                    .in(this)[all ? 'selectAll' : 'select'](selector)\n                    .boundingClientRect(rect => {\n                    if (all && Array.isArray(rect) && rect.length) {\n                        resolve(rect);\n                    }\n                    if (!all && rect) {\n                        resolve(rect);\n                    }\n                })\n                    .exec();\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/button.d.ts",
    "content": "export declare const button: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/button.js",
    "content": "export const button = Behavior({\n    externalClasses: ['hover-class'],\n    properties: {\n        id: String,\n        lang: {\n            type: String,\n            value: 'en'\n        },\n        businessId: Number,\n        sessionFrom: String,\n        sendMessageTitle: String,\n        sendMessagePath: String,\n        sendMessageImg: String,\n        showMessageCard: Boolean,\n        appParameter: String,\n        ariaLabel: String\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/link.d.ts",
    "content": "export declare const link: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/link.js",
    "content": "export const link = Behavior({\n    properties: {\n        url: String,\n        linkType: {\n            type: String,\n            value: 'navigateTo'\n        }\n    },\n    methods: {\n        jumpLink(urlKey = 'url') {\n            const url = this.data[urlKey];\n            if (url) {\n                wx[this.data.linkType]({ url });\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/observer/behavior.d.ts",
    "content": "export declare const behavior: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/observer/behavior.js",
    "content": "export const behavior = Behavior({\n    methods: {\n        set(data, callback) {\n            return new Promise(resolve => {\n                this.setData(data, () => {\n                    if (callback && typeof callback === 'function') {\n                        callback.call(this);\n                    }\n                    resolve();\n                });\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/observer/index.d.ts",
    "content": "export declare function observe(vantOptions: any, options: any): void;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/observer/index.js",
    "content": "import { behavior } from './behavior';\nexport function observe(vantOptions, options) {\n    const { watch } = vantOptions;\n    options.behaviors.push(behavior);\n    if (watch) {\n        const props = options.properties || {};\n        Object.keys(watch).forEach(key => {\n            if (key in props) {\n                let prop = props[key];\n                if (prop === null || !('type' in prop)) {\n                    prop = { type: prop };\n                }\n                prop.observer = watch[key];\n                props[key] = prop;\n            }\n        });\n        options.properties = props;\n    }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/open-type.d.ts",
    "content": "export declare const openType: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/open-type.js",
    "content": "export const openType = Behavior({\n    properties: {\n        openType: String\n    },\n    methods: {\n        bindGetUserInfo(event) {\n            this.$emit('getuserinfo', event.detail);\n        },\n        bindContact(event) {\n            this.$emit('contact', event.detail);\n        },\n        bindGetPhoneNumber(event) {\n            this.$emit('getphonenumber', event.detail);\n        },\n        bindError(event) {\n            this.$emit('error', event.detail);\n        },\n        bindLaunchApp(event) {\n            this.$emit('launchapp', event.detail);\n        },\n        bindOpenSetting(event) {\n            this.$emit('opensetting', event.detail);\n        },\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/touch.d.ts",
    "content": "export declare const touch: string;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/touch.js",
    "content": "const MIN_DISTANCE = 10;\nfunction getDirection(x, y) {\n    if (x > y && x > MIN_DISTANCE) {\n        return 'horizontal';\n    }\n    if (y > x && y > MIN_DISTANCE) {\n        return 'vertical';\n    }\n    return '';\n}\nexport const touch = Behavior({\n    methods: {\n        resetTouchStatus() {\n            this.direction = '';\n            this.deltaX = 0;\n            this.deltaY = 0;\n            this.offsetX = 0;\n            this.offsetY = 0;\n        },\n        touchStart(event) {\n            this.resetTouchStatus();\n            const touch = event.touches[0];\n            this.startX = touch.clientX;\n            this.startY = touch.clientY;\n        },\n        touchMove(event) {\n            const touch = event.touches[0];\n            this.deltaX = touch.clientX - this.startX;\n            this.deltaY = touch.clientY - this.startY;\n            this.offsetX = Math.abs(this.deltaX);\n            this.offsetY = Math.abs(this.deltaY);\n            this.direction = this.direction || getDirection(this.offsetX, this.offsetY);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/transition.d.ts",
    "content": "export declare const transition: (showDefaultValue: boolean) => any;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/mixins/transition.js",
    "content": "import { isObj } from '../common/utils';\nconst getClassNames = (name) => ({\n    enter: `van-${name}-enter van-${name}-enter-active enter-class enter-active-class`,\n    'enter-to': `van-${name}-enter-to van-${name}-enter-active enter-to-class enter-active-class`,\n    leave: `van-${name}-leave van-${name}-leave-active leave-class leave-active-class`,\n    'leave-to': `van-${name}-leave-to van-${name}-leave-active leave-to-class leave-active-class`\n});\nconst nextTick = () => new Promise(resolve => setTimeout(resolve, 1000 / 30));\nexport const transition = function (showDefaultValue) {\n    return Behavior({\n        properties: {\n            customStyle: String,\n            // @ts-ignore\n            show: {\n                type: Boolean,\n                value: showDefaultValue,\n                observer: 'observeShow'\n            },\n            // @ts-ignore\n            duration: {\n                type: null,\n                value: 300,\n                observer: 'observeDuration'\n            },\n            name: {\n                type: String,\n                value: 'fade'\n            }\n        },\n        data: {\n            type: '',\n            inited: false,\n            display: false\n        },\n        attached() {\n            if (this.data.show) {\n                this.enter();\n            }\n        },\n        methods: {\n            observeShow(value) {\n                value ? this.enter() : this.leave();\n            },\n            enter() {\n                const { duration, name } = this.data;\n                const classNames = getClassNames(name);\n                const currentDuration = isObj(duration) ? duration.enter : duration;\n                this.status = 'enter';\n                this.$emit('before-enter');\n                Promise.resolve()\n                    .then(nextTick)\n                    .then(() => {\n                    this.checkStatus('enter');\n                    this.$emit('enter');\n                    this.setData({\n                        inited: true,\n                        display: true,\n                        classes: classNames.enter,\n                        currentDuration\n                    });\n                })\n                    .then(nextTick)\n                    .then(() => {\n                    this.checkStatus('enter');\n                    this.transitionEnded = false;\n                    this.setData({\n                        classes: classNames['enter-to']\n                    });\n                })\n                    .catch(() => { });\n            },\n            leave() {\n                if (!this.data.display) {\n                    return;\n                }\n                const { duration, name } = this.data;\n                const classNames = getClassNames(name);\n                const currentDuration = isObj(duration) ? duration.leave : duration;\n                this.status = 'leave';\n                this.$emit('before-leave');\n                Promise.resolve()\n                    .then(nextTick)\n                    .then(() => {\n                    this.checkStatus('leave');\n                    this.$emit('leave');\n                    this.setData({\n                        classes: classNames.leave,\n                        currentDuration\n                    });\n                })\n                    .then(nextTick)\n                    .then(() => {\n                    this.checkStatus('leave');\n                    this.transitionEnded = false;\n                    setTimeout(() => this.onTransitionEnd(), currentDuration);\n                    this.setData({\n                        classes: classNames['leave-to']\n                    });\n                })\n                    .catch(() => { });\n            },\n            checkStatus(status) {\n                if (status !== this.status) {\n                    throw new Error(`incongruent status: ${status}`);\n                }\n            },\n            onTransitionEnd() {\n                if (this.transitionEnded) {\n                    return;\n                }\n                this.transitionEnded = true;\n                this.$emit(`after-${this.status}`);\n                const { show, display } = this.data;\n                if (!show && display) {\n                    this.setData({ display: false });\n                }\n            }\n        }\n    });\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/nav-bar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/nav-bar/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    classes: ['title-class'],\n    props: {\n        title: String,\n        fixed: Boolean,\n        leftText: String,\n        rightText: String,\n        leftArrow: Boolean,\n        border: {\n            type: Boolean,\n            value: true\n        },\n        zIndex: {\n            type: Number,\n            value: 1\n        },\n        safeAreaInsetTop: {\n            type: Boolean,\n            value: true\n        },\n    },\n    data: {\n        statusBarHeight: 0\n    },\n    created() {\n        const { statusBarHeight } = wx.getSystemInfoSync();\n        this.setData({ statusBarHeight });\n    },\n    methods: {\n        onClickLeft() {\n            this.$emit('click-left');\n        },\n        onClickRight() {\n            this.$emit('click-right');\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/nav-bar/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/nav-bar/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"{{ utils.bem('nav-bar', { fixed }) }} custom-class {{ border ? 'van-hairline--bottom' : '' }}\"\n  style=\"z-index: {{ zIndex }}; padding-top: {{ safeAreaInsetTop ? statusBarHeight : 0 }}px;\"\n>\n  <view class=\"van-nav-bar__left\" bind:tap=\"onClickLeft\">\n    <block wx:if=\"{{ leftArrow || leftText }}\">\n      <van-icon\n        wx:if=\"{{ leftArrow }}\"\n        size=\"16px\"\n        name=\"arrow-left\"\n        custom-class=\"van-nav-bar__arrow\"\n      />\n      <view\n        wx:if=\"{{ leftText }}\"\n        class=\"van-nav-bar__text\"\n        hover-class=\"van-nav-bar__text--hover\"\n        hover-stay-time=\"70\"\n      >{{ leftText }}</view>\n    </block>\n    <slot wx:else name=\"left\" />\n  </view>\n  <view class=\"van-nav-bar__title title-class van-ellipsis\">\n    <block wx:if=\"{{ title }}\">{{ title }}</block>\n    <slot wx:else name=\"title\" />\n  </view>\n  <view class=\"van-nav-bar__right\" bind:tap=\"onClickRight\">\n    <view\n      wx:if=\"{{ rightText }}\"\n      class=\"van-nav-bar__text\"\n      hover-class=\"van-nav-bar__text--hover\"\n      hover-stay-time=\"70\"\n    >{{ rightText }}</view>\n    <slot wx:else name=\"right\" />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/nav-bar/index.wxss",
    "content": "@import '../common/index.wxss';.van-nav-bar{position:relative;text-align:center;-webkit-user-select:none;user-select:none;height:44px;height:var(--nav-bar-height,44px);line-height:44px;line-height:var(--nav-bar-height,44px);background-color:#fff;background-color:var(--nav-bar-background-color,#fff)}.van-nav-bar__text{display:inline-block;vertical-align:middle;margin:0 -16px;margin:0 -var(--padding-md,16px);padding:0 16px;padding:0 var(--padding-md,16px);color:#1989fa;color:var(--nav-bar-text-color,#1989fa)}.van-nav-bar__text--hover{background-color:#f2f3f5;background-color:var(--active-color,#f2f3f5)}.van-nav-bar__arrow{vertical-align:middle;font-size:16px;font-size:var(--nav-bar-arrow-size,16px);color:#1989fa;color:var(--nav-bar-text-color,#1989fa)}.van-nav-bar__arrow+.van-nav-bar__text{margin-left:-20px;padding-left:25px}.van-nav-bar--fixed{position:fixed;top:0;left:0;width:100%}.van-nav-bar__title{max-width:60%;margin:0 auto;color:#323233;color:var(--nav-bar-title-text-color,#323233);font-weight:500;font-weight:var(--font-weight-bold,500);font-size:16px;font-size:var(--nav-bar-title-font-size,16px)}.van-nav-bar__left,.van-nav-bar__right{position:absolute;bottom:0;font-size:14px;font-size:var(--font-size-md,14px)}.van-nav-bar__left{left:16px;left:var(--padding-md,16px)}.van-nav-bar__right{right:16px;right:var(--padding-md,16px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notice-bar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notice-bar/index.js",
    "content": "import { VantComponent } from '../common/component';\nconst FONT_COLOR = '#ed6a0c';\nconst BG_COLOR = '#fffbe8';\nVantComponent({\n    props: {\n        text: {\n            type: String,\n            value: ''\n        },\n        mode: {\n            type: String,\n            value: ''\n        },\n        url: {\n            type: String,\n            value: ''\n        },\n        openType: {\n            type: String,\n            value: 'navigate'\n        },\n        delay: {\n            type: Number,\n            value: 1\n        },\n        speed: {\n            type: Number,\n            value: 50\n        },\n        scrollable: {\n            type: Boolean,\n            value: true\n        },\n        leftIcon: {\n            type: String,\n            value: ''\n        },\n        color: {\n            type: String,\n            value: FONT_COLOR\n        },\n        backgroundColor: {\n            type: String,\n            value: BG_COLOR\n        },\n        wrapable: Boolean\n    },\n    data: {\n        show: true\n    },\n    watch: {\n        text() {\n            this.setData({}, this.init);\n        }\n    },\n    created() {\n        this.resetAnimation = wx.createAnimation({\n            duration: 0,\n            timingFunction: 'linear'\n        });\n    },\n    destroyed() {\n        this.timer && clearTimeout(this.timer);\n    },\n    methods: {\n        init() {\n            Promise.all([\n                this.getRect('.van-notice-bar__content'),\n                this.getRect('.van-notice-bar__wrap')\n            ]).then((rects) => {\n                const [contentRect, wrapRect] = rects;\n                if (contentRect == null ||\n                    wrapRect == null ||\n                    !contentRect.width ||\n                    !wrapRect.width) {\n                    return;\n                }\n                const { speed, scrollable, delay } = this.data;\n                if (scrollable && wrapRect.width < contentRect.width) {\n                    const duration = (contentRect.width / speed) * 1000;\n                    this.wrapWidth = wrapRect.width;\n                    this.contentWidth = contentRect.width;\n                    this.duration = duration;\n                    this.animation = wx.createAnimation({\n                        duration,\n                        timingFunction: 'linear',\n                        delay\n                    });\n                    this.scroll();\n                }\n            });\n        },\n        scroll() {\n            this.timer && clearTimeout(this.timer);\n            this.timer = null;\n            this.setData({\n                animationData: this.resetAnimation\n                    .translateX(this.wrapWidth)\n                    .step()\n                    .export()\n            });\n            setTimeout(() => {\n                this.setData({\n                    animationData: this.animation\n                        .translateX(-this.contentWidth)\n                        .step()\n                        .export()\n                });\n            }, 20);\n            this.timer = setTimeout(() => {\n                this.scroll();\n            }, this.duration);\n        },\n        onClickIcon() {\n            this.timer && clearTimeout(this.timer);\n            this.timer = null;\n            this.setData({ show: false });\n        },\n        onClick(event) {\n            this.$emit('click', event);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notice-bar/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notice-bar/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  wx:if=\"{{ show }}\"\n  class=\"custom-class {{ utils.bem('notice-bar', { withicon: mode, wrapable }) }}\"\n  style=\"color: {{ color }}; background-color: {{ backgroundColor }};\"\n  bind:tap=\"onClick\"\n>\n  <van-icon\n    wx:if=\"{{ leftIcon }}\"\n    size=\"16px\"\n    name=\"{{ leftIcon }}\"\n    class=\"van-notice-bar__left-icon\"\n  />\n  <slot wx:else name=\"left-icon\" />\n\n  <view class=\"van-notice-bar__wrap\">\n    <view class=\"van-notice-bar__content {{ !scrollable && !wrapable ? 'van-ellipsis' : '' }}\" animation=\"{{ animationData }}\">\n      {{ text }}\n    </view>\n  </view>\n\n  <van-icon\n    wx:if=\"{{ mode === 'closeable' }}\"\n    class=\"van-notice-bar__right-icon\"\n    name=\"cross\"\n    catch:tap=\"onClickIcon\"\n  />\n  <navigator\n    wx:elif=\"{{ mode === 'link' }}\"\n    url=\"{{ url }}\"\n    open-type=\"{{ openType }}\"\n  >\n    <van-icon class=\"van-notice-bar__right-icon\" name=\"arrow\" />\n  </navigator>\n  <slot wx:else name=\"right-icon\" />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notice-bar/index.wxss",
    "content": "@import '../common/index.wxss';.van-notice-bar{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;height:40px;height:var(--notice-bar-height,40px);padding:0 16px;padding:var(--notice-bar-padding,0 16px);font-size:14px;font-size:var(--notice-bar-font-size,14px);color:#ed6a0c;color:var(--notice-bar-text-color,#ed6a0c);line-height:24px;line-height:var(--notice-bar-line-height,24px);background-color:#fffbe8;background-color:var(--notice-bar-background-color,#fffbe8)}.van-notice-bar--withicon{position:relative;padding-right:40px}.van-notice-bar--wrapable{height:auto;padding:8px 16px;padding:var(--notice-bar-wrapable-padding,8px 16px)}.van-notice-bar--wrapable .van-notice-bar__wrap{height:auto}.van-notice-bar--wrapable .van-notice-bar__content{position:relative;white-space:normal}.van-notice-bar__left-icon{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;margin-right:4px;vertical-align:middle}.van-notice-bar__left-icon,.van-notice-bar__right-icon{font-size:16px;font-size:var(--notice-bar-icon-size,16px);min-width:22px;min-width:var(--notice-bar-icon-min-width,22px)}.van-notice-bar__right-icon{position:absolute;top:10px;right:15px}.van-notice-bar__wrap{position:relative;-webkit-flex:1;flex:1;overflow:hidden;height:24px;height:var(--notice-bar-line-height,24px)}.van-notice-bar__content{position:absolute;white-space:nowrap}.van-notice-bar__content.van-ellipsis{max-width:100%}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { WHITE } from '../common/color';\nVantComponent({\n    props: {\n        message: String,\n        background: String,\n        type: {\n            type: String,\n            value: 'danger'\n        },\n        color: {\n            type: String,\n            value: WHITE\n        },\n        duration: {\n            type: Number,\n            value: 3000\n        },\n        zIndex: {\n            type: Number,\n            value: 110\n        },\n        safeAreaInsetTop: {\n            type: Boolean,\n            value: false\n        }\n    },\n    created() {\n        const { statusBarHeight } = wx.getSystemInfoSync();\n        this.setData({ statusBarHeight });\n    },\n    methods: {\n        show() {\n            const { duration, onOpened } = this.data;\n            clearTimeout(this.timer);\n            this.setData({\n                show: true\n            }, onOpened);\n            if (duration > 0 && duration !== Infinity) {\n                this.timer = setTimeout(() => {\n                    this.hide();\n                }, duration);\n            }\n        },\n        hide() {\n            const { onClose } = this.data;\n            clearTimeout(this.timer);\n            this.setData({\n                show: false\n            }, onClose);\n        },\n        onTap(event) {\n            const { onClick } = this.data;\n            if (onClick) {\n                onClick(event.detail);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-transition\": \"../transition/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/index.wxml",
    "content": "<van-transition\n  name=\"slide-down\"\n  show=\"{{ show }}\"\n  custom-class=\"van-notify__container\"\n  custom-style=\"z-index: {{ zIndex }};\"\n  bind:tap=\"onTap\"\n>\n  <view\n    class=\"van-notify van-notify--{{ type }}\"\n    style=\"background:{{ background }};color:{{ color }};\"\n  >\n    <view wx:if=\"{{ safeAreaInsetTop }}\" class=\"van-notify__safe-area\"></view>\n    <text>{{ message }}</text>\n  </view>\n</van-transition>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/index.wxss",
    "content": "@import '../common/index.wxss';.van-notify{text-align:center;word-wrap:break-word;padding:6px 15px;padding:var(--notify-padding,6px 15px);font-size:14px;font-size:var(--notify-font-size,14px);line-height:20px;line-height:var(--notify-line-height,20px)}.van-notify__container{position:fixed;top:0;box-sizing:border-box;width:100%}.van-notify--primary{background-color:#1989fa;background-color:var(--notify-primary-background-color,#1989fa)}.van-notify--success{background-color:#07c160;background-color:var(--notify-success-background-color,#07c160)}.van-notify--danger{background-color:#ee0a24;background-color:var(--notify-danger-background-color,#ee0a24)}.van-notify--warning{background-color:#ff976a;background-color:var(--notify-warning-background-color,#ff976a)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/notify.d.ts",
    "content": "interface NotifyOptions {\n    type?: 'primary' | 'success' | 'danger' | 'warning';\n    color?: string;\n    zIndex?: number;\n    message: string;\n    context?: any;\n    duration?: number;\n    selector?: string;\n    background?: string;\n    safeAreaInsetTop?: boolean;\n    onClick?: () => void;\n    onOpened?: () => void;\n    onClose?: () => void;\n}\ndeclare function Notify(options: NotifyOptions | string): any;\ndeclare namespace Notify {\n    var clear: (options?: NotifyOptions) => void;\n}\nexport default Notify;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/notify/notify.js",
    "content": "import { WHITE } from '../common/color';\nconst defaultOptions = {\n    selector: '#van-notify',\n    type: 'danger',\n    message: '',\n    background: '',\n    duration: 3000,\n    zIndex: 110,\n    color: WHITE,\n    onClick: () => { },\n    onOpened: () => { },\n    onClose: () => { }\n};\nfunction parseOptions(message) {\n    return typeof message === 'string' ? { message } : message;\n}\nfunction getContext() {\n    const pages = getCurrentPages();\n    return pages[pages.length - 1];\n}\nexport default function Notify(options) {\n    options = Object.assign({}, defaultOptions, parseOptions(options));\n    const context = options.context || getContext();\n    const notify = context.selectComponent(options.selector);\n    delete options.context;\n    delete options.selector;\n    if (notify) {\n        notify.set(options);\n        notify.show();\n        return notify;\n    }\n    console.warn('未找到 van-notify 节点，请确认 selector 及 context 是否正确');\n}\nNotify.clear = function (options) {\n    options = Object.assign({}, defaultOptions, parseOptions(options));\n    const context = options.context || getContext();\n    const notify = context.selectComponent(options.selector);\n    if (notify) {\n        notify.hide();\n    }\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/overlay/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/overlay/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        show: Boolean,\n        customStyle: String,\n        duration: {\n            type: null,\n            value: 300\n        },\n        zIndex: {\n            type: Number,\n            value: 1\n        }\n    },\n    methods: {\n        onClick() {\n            this.$emit('click');\n        },\n        // for prevent touchmove\n        noop() { }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/overlay/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-transition\": \"../transition/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/overlay/index.wxml",
    "content": "<van-transition\n  show=\"{{ show }}\"\n  custom-class=\"van-overlay\"\n  custom-style=\"z-index: {{ zIndex }}; {{ customStyle }}\"\n  duration=\"{{ duration }}\"\n  bind:tap=\"onClick\"\n  catch:touchmove=\"noop\"\n>\n  <slot></slot>\n</van-transition>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/overlay/index.wxss",
    "content": "@import '../common/index.wxss';.van-overlay{position:fixed;top:0;left:0;width:100%;height:100%;background-color:rgba(0,0,0,.7);background-color:var(--overlay-background-color,rgba(0,0,0,.7))}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/panel/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/panel/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    classes: ['header-class', 'footer-class'],\n    props: {\n        desc: String,\n        title: String,\n        status: String,\n        useFooterSlot: Boolean\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/panel/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-cell\": \"../cell/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/panel/index.wxml",
    "content": "<view class=\"van-panel van-hairline--top-bottom custom-class\">\n  <van-cell \n    wx:if=\"{{ title || desc || status }}\"\n    title=\"{{ title }}\"\n    label=\"{{ desc }}\"\n    value=\"{{ status }}\"\n    custom-class=\"header-class\"\n    value-class=\"van-panel__header-value\"\n  />\n  <slot wx:else name=\"header\" />\n\n  <view class=\"van-panel__content\">\n    <slot />\n  </view>\n\n  <view wx:if=\"{{ useFooterSlot }}\" class=\"van-panel__footer van-hairline--top footer-class\">\n    <slot name=\"footer\" />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/panel/index.wxss",
    "content": "@import '../common/index.wxss';.van-panel{background:#fff;background:var(--panel-background-color,#fff)}.van-panel__header-value{color:#ee0a24;color:var(--panel-header-value-color,#ee0a24)}.van-panel__footer{padding:8px 16px;padding:var(--panel-footer-padding,8px 16px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { pickerProps } from './shared';\nVantComponent({\n    classes: ['active-class', 'toolbar-class', 'column-class'],\n    props: Object.assign(Object.assign({}, pickerProps), { valueKey: {\n            type: String,\n            value: 'text'\n        }, toolbarPosition: {\n            type: String,\n            value: 'top'\n        }, defaultIndex: {\n            type: Number,\n            value: 0\n        }, columns: {\n            type: Array,\n            value: [],\n            observer(columns = []) {\n                this.simple = columns.length && !columns[0].values;\n                this.children = this.selectAllComponents('.van-picker__column');\n                if (Array.isArray(this.children) && this.children.length) {\n                    this.setColumns().catch(() => { });\n                }\n            }\n        } }),\n    beforeCreate() {\n        this.children = [];\n    },\n    methods: {\n        noop() { },\n        setColumns() {\n            const { data } = this;\n            const columns = this.simple ? [{ values: data.columns }] : data.columns;\n            const stack = columns.map((column, index) => this.setColumnValues(index, column.values));\n            return Promise.all(stack);\n        },\n        emit(event) {\n            const { type } = event.currentTarget.dataset;\n            if (this.simple) {\n                this.$emit(type, {\n                    value: this.getColumnValue(0),\n                    index: this.getColumnIndex(0)\n                });\n            }\n            else {\n                this.$emit(type, {\n                    value: this.getValues(),\n                    index: this.getIndexes()\n                });\n            }\n        },\n        onChange(event) {\n            if (this.simple) {\n                this.$emit('change', {\n                    picker: this,\n                    value: this.getColumnValue(0),\n                    index: this.getColumnIndex(0)\n                });\n            }\n            else {\n                this.$emit('change', {\n                    picker: this,\n                    value: this.getValues(),\n                    index: event.currentTarget.dataset.index\n                });\n            }\n        },\n        // get column instance by index\n        getColumn(index) {\n            return this.children[index];\n        },\n        // get column value by index\n        getColumnValue(index) {\n            const column = this.getColumn(index);\n            return column && column.getValue();\n        },\n        // set column value by index\n        setColumnValue(index, value) {\n            const column = this.getColumn(index);\n            if (column == null) {\n                return Promise.reject(new Error('setColumnValue: 对应列不存在'));\n            }\n            return column.setValue(value);\n        },\n        // get column option index by column index\n        getColumnIndex(columnIndex) {\n            return (this.getColumn(columnIndex) || {}).data.currentIndex;\n        },\n        // set column option index by column index\n        setColumnIndex(columnIndex, optionIndex) {\n            const column = this.getColumn(columnIndex);\n            if (column == null) {\n                return Promise.reject(new Error('setColumnIndex: 对应列不存在'));\n            }\n            return column.setIndex(optionIndex);\n        },\n        // get options of column by index\n        getColumnValues(index) {\n            return (this.children[index] || {}).data.options;\n        },\n        // set options of column by index\n        setColumnValues(index, options, needReset = true) {\n            const column = this.children[index];\n            if (column == null) {\n                return Promise.reject(new Error('setColumnValues: 对应列不存在'));\n            }\n            const isSame = JSON.stringify(column.data.options) === JSON.stringify(options);\n            if (isSame) {\n                return Promise.resolve();\n            }\n            return column.set({ options }).then(() => {\n                if (needReset) {\n                    column.setIndex(0);\n                }\n            });\n        },\n        // get values of all columns\n        getValues() {\n            return this.children.map((child) => child.getValue());\n        },\n        // set values of all columns\n        setValues(values) {\n            const stack = values.map((value, index) => this.setColumnValue(index, value));\n            return Promise.all(stack);\n        },\n        // get indexes of all columns\n        getIndexes() {\n            return this.children.map((child) => child.data.currentIndex);\n        },\n        // set indexes of all columns\n        setIndexes(indexes) {\n            const stack = indexes.map((optionIndex, columnIndex) => this.setColumnIndex(columnIndex, optionIndex));\n            return Promise.all(stack);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"picker-column\": \"../picker-column/index\",\n    \"loading\": \"../loading/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/index.wxml",
    "content": "<template name=\"toolbar\">\n  <view\n    wx:if=\"{{ showToolbar }}\"\n    class=\"van-picker__toolbar van-hairline--top-bottom toolbar-class\"\n  >\n    <view\n      class=\"van-picker__cancel\"\n      hover-class=\"van-picker__cancel--hover\"\n      hover-stay-time=\"70\"\n      data-type=\"cancel\"\n      bindtap=\"emit\"\n    >\n      {{ cancelButtonText }}\n    </view>\n    <view wx:if=\"{{ title }}\" class=\"van-picker__title van-ellipsis\">{{ title }}</view>\n    <view\n      class=\"van-picker__confirm\"\n      hover-class=\"van-picker__confirm--hover\"\n      hover-stay-time=\"70\"\n      data-type=\"confirm\"\n      bindtap=\"emit\"\n    >\n      {{ confirmButtonText }}\n    </view>\n  </view>\n</template>\n\n<view class=\"van-picker custom-class\">\n  <template is=\"toolbar\" wx:if=\"{{ toolbarPosition === 'top' }}\" data=\"{{ showToolbar, cancelButtonText, title, confirmButtonText }}\"></template>\n  <view wx:if=\"{{ loading }}\" class=\"van-picker__loading\">\n    <loading color=\"#1989fa\"/>\n  </view>\n  <view\n    class=\"van-picker__columns\"\n    style=\"height: {{ itemHeight * visibleItemCount }}px\"\n    catch:touchmove=\"noop\"\n  >\n    <picker-column\n      class=\"van-picker__column\"\n      wx:for=\"{{ isSimple(columns) ? [columns] : columns }}\"\n      wx:key=\"index\"\n      data-index=\"{{ index }}\"\n      custom-class=\"column-class\"\n      value-key=\"{{ valueKey }}\"\n      initial-options=\"{{ isSimple(columns) ? item : item.values }}\"\n      default-index=\"{{ item.defaultIndex || defaultIndex }}\"\n      item-height=\"{{ itemHeight }}\"\n      visible-item-count=\"{{ visibleItemCount }}\"\n      active-class=\"active-class\"\n      bind:change=\"onChange\"\n    />\n    <view\n      class=\"van-picker__frame van-hairline--top-bottom\"\n      style=\"height: {{ itemHeight }}px\"\n    />\n  </view>\n  <template is=\"toolbar\" wx:if=\"{{ toolbarPosition === 'bottom' }}\" data=\"{{ showToolbar, cancelButtonText, title, confirmButtonText }}\"></template>\n</view>\n\n<wxs module=\"isSimple\">\n  function isSimple(columns) {\n    return columns.length && !columns[0].values;\n  }\n  module.exports = isSimple;\n</wxs>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/index.wxss",
    "content": "@import '../common/index.wxss';.van-picker{position:relative;overflow:hidden;-webkit-text-size-adjust:100%;-webkit-user-select:none;user-select:none;background-color:#fff;background-color:var(--picker-background-color,#fff)}.van-picker__toolbar{display:-webkit-flex;display:flex;-webkit-justify-content:space-between;justify-content:space-between;height:44px;height:var(--picker-toolbar-height,44px);line-height:44px;line-height:var(--picker-toolbar-height,44px)}.van-picker__cancel,.van-picker__confirm{padding:0 16px;padding:var(--picker-action-padding,0 16px);font-size:14px;font-size:var(--picker-action-font-size,14px);color:#1989fa;color:var(--picker-action-text-color,#1989fa)}.van-picker__cancel--hover,.van-picker__confirm--hover{background-color:#f2f3f5;background-color:var(--picker-action-active-color,#f2f3f5)}.van-picker__title{max-width:50%;text-align:center;font-weight:500;font-weight:var(--font-weight-bold,500);font-size:16px;font-size:var(--picker-option-font-size,16px)}.van-picker__columns{position:relative;display:-webkit-flex;display:flex}.van-picker__column{-webkit-flex:1 1;flex:1 1;width:0}.van-picker__loading{position:absolute;top:0;right:0;bottom:0;left:0;z-index:4;display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;background-color:hsla(0,0%,100%,.9);background-color:var(--picker-loading-mask-color,hsla(0,0%,100%,.9))}.van-picker__frame,.van-picker__loading .van-loading{position:absolute;top:50%;left:0;z-index:1;width:100%;-webkit-transform:translateY(-50%);transform:translateY(-50%);pointer-events:none}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/shared.d.ts",
    "content": "export declare const pickerProps: {\n    title: StringConstructor;\n    loading: BooleanConstructor;\n    showToolbar: BooleanConstructor;\n    cancelButtonText: {\n        type: StringConstructor;\n        value: string;\n    };\n    confirmButtonText: {\n        type: StringConstructor;\n        value: string;\n    };\n    visibleItemCount: {\n        type: NumberConstructor;\n        value: number;\n    };\n    itemHeight: {\n        type: NumberConstructor;\n        value: number;\n    };\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker/shared.js",
    "content": "export const pickerProps = {\n    title: String,\n    loading: Boolean,\n    showToolbar: Boolean,\n    cancelButtonText: {\n        type: String,\n        value: '取消'\n    },\n    confirmButtonText: {\n        type: String,\n        value: '确认'\n    },\n    visibleItemCount: {\n        type: Number,\n        value: 5\n    },\n    itemHeight: {\n        type: Number,\n        value: 44\n    }\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { isObj, range } from '../common/utils';\nconst DEFAULT_DURATION = 200;\nVantComponent({\n    classes: ['active-class'],\n    props: {\n        valueKey: String,\n        className: String,\n        itemHeight: Number,\n        visibleItemCount: Number,\n        initialOptions: {\n            type: Array,\n            value: []\n        },\n        defaultIndex: {\n            type: Number,\n            value: 0\n        }\n    },\n    data: {\n        startY: 0,\n        offset: 0,\n        duration: 0,\n        startOffset: 0,\n        options: [],\n        currentIndex: 0\n    },\n    created() {\n        const { defaultIndex, initialOptions } = this.data;\n        this.set({\n            currentIndex: defaultIndex,\n            options: initialOptions\n        }).then(() => {\n            this.setIndex(defaultIndex);\n        });\n    },\n    watch: {\n        defaultIndex(value) {\n            this.setIndex(value);\n        }\n    },\n    methods: {\n        getCount() {\n            return this.data.options.length;\n        },\n        onTouchStart(event) {\n            this.setData({\n                startY: event.touches[0].clientY,\n                startOffset: this.data.offset,\n                duration: 0\n            });\n        },\n        onTouchMove(event) {\n            const { data } = this;\n            const deltaY = event.touches[0].clientY - data.startY;\n            this.setData({\n                offset: range(data.startOffset + deltaY, -(this.getCount() * data.itemHeight), data.itemHeight)\n            });\n        },\n        onTouchEnd() {\n            const { data } = this;\n            if (data.offset !== data.startOffset) {\n                this.setData({ duration: DEFAULT_DURATION });\n                const index = range(Math.round(-data.offset / data.itemHeight), 0, this.getCount() - 1);\n                this.setIndex(index, true);\n            }\n        },\n        onClickItem(event) {\n            const { index } = event.currentTarget.dataset;\n            this.setIndex(index, true);\n        },\n        adjustIndex(index) {\n            const { data } = this;\n            const count = this.getCount();\n            index = range(index, 0, count);\n            for (let i = index; i < count; i++) {\n                if (!this.isDisabled(data.options[i]))\n                    return i;\n            }\n            for (let i = index - 1; i >= 0; i--) {\n                if (!this.isDisabled(data.options[i]))\n                    return i;\n            }\n        },\n        isDisabled(option) {\n            return isObj(option) && option.disabled;\n        },\n        getOptionText(option) {\n            const { data } = this;\n            return isObj(option) && data.valueKey in option\n                ? option[data.valueKey]\n                : option;\n        },\n        setIndex(index, userAction) {\n            const { data } = this;\n            index = this.adjustIndex(index) || 0;\n            const offset = -index * data.itemHeight;\n            if (index !== data.currentIndex) {\n                return this.set({ offset, currentIndex: index }).then(() => {\n                    userAction && this.$emit('change', index);\n                });\n            }\n            return this.set({ offset });\n        },\n        setValue(value) {\n            const { options } = this.data;\n            for (let i = 0; i < options.length; i++) {\n                if (this.getOptionText(options[i]) === value) {\n                    return this.setIndex(i);\n                }\n            }\n            return Promise.resolve();\n        },\n        getValue() {\n            const { data } = this;\n            return data.options[data.currentIndex];\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.wxml",
    "content": "<wxs src=\"./index.wxs\" module=\"getOptionText\" />\n\n<view\n  class=\"van-picker-column custom-class\"\n  style=\"height: {{ itemHeight * visibleItemCount }}px\"\n  bind:touchstart=\"onTouchStart\"\n  catch:touchmove=\"onTouchMove\"\n  bind:touchend=\"onTouchEnd\"\n  bind:touchcancel=\"onTouchEnd\"\n>\n  <view style=\"transition: transform {{ duration }}ms; line-height: {{ itemHeight }}px; transform: translate3d(0, {{ offset + (itemHeight * (visibleItemCount - 1)) / 2 }}px, 0)\">\n    <view\n      wx:for=\"{{ options }}\"\n      wx:for-item=\"option\"\n      wx:key=\"index\"\n      data-index=\"{{ index }}\"\n      style=\"height: {{ itemHeight }}px\"\n      class=\"van-ellipsis van-picker-column__item {{ option && option.disabled ? 'van-picker-column__item--disabled' : '' }} {{ index === currentIndex ? 'van-picker-column__item--selected active-class' : '' }}\"\n      bindtap=\"onClickItem\"\n    >{{ getOptionText(option, valueKey) }}</view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.wxs",
    "content": "function isObj(x) {\n  var type = typeof x;\n  return x !== null && (type === 'object' || type === 'function');\n}\n\nmodule.exports = function (option, valueKey) {\n  return isObj(option) && option[valueKey] != null ? option[valueKey] : option;\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/picker-column/index.wxss",
    "content": "@import '../common/index.wxss';.van-picker-column{overflow:hidden;text-align:center;color:#000;color:var(--picker-option-text-color,#000);font-size:16px;font-size:var(--picker-option-font-size,16px)}.van-picker-column__item{padding:0 5px}.van-picker-column__item--selected{font-weight:500;font-weight:var(--font-weight-bold,500);color:#323233;color:var(--picker-option-selected-text-color,#323233)}.van-picker-column__item--disabled{opacity:.3;opacity:var(--picker-option-disabled-opacity,.3)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/popup/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/popup/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { transition } from '../mixins/transition';\nVantComponent({\n    classes: [\n        'enter-class',\n        'enter-active-class',\n        'enter-to-class',\n        'leave-class',\n        'leave-active-class',\n        'leave-to-class'\n    ],\n    mixins: [transition(false)],\n    props: {\n        round: Boolean,\n        closeable: Boolean,\n        customStyle: String,\n        overlayStyle: String,\n        transition: {\n            type: String,\n            observer: 'observeClass'\n        },\n        zIndex: {\n            type: Number,\n            value: 100\n        },\n        overlay: {\n            type: Boolean,\n            value: true\n        },\n        closeIcon: {\n            type: String,\n            value: 'cross'\n        },\n        closeIconPosition: {\n            type: String,\n            value: 'top-right'\n        },\n        closeOnClickOverlay: {\n            type: Boolean,\n            value: true\n        },\n        position: {\n            type: String,\n            value: 'center',\n            observer: 'observeClass'\n        },\n        safeAreaInsetBottom: {\n            type: Boolean,\n            value: true\n        },\n        safeAreaInsetTop: {\n            type: Boolean,\n            value: false\n        }\n    },\n    created() {\n        this.observeClass();\n    },\n    methods: {\n        onClickCloseIcon() {\n            this.$emit('close');\n        },\n        onClickOverlay() {\n            this.$emit('click-overlay');\n            if (this.data.closeOnClickOverlay) {\n                this.$emit('close');\n            }\n        },\n        observeClass() {\n            const { transition, position } = this.data;\n            const updateData = {\n                name: transition || position\n            };\n            if (transition === 'none') {\n                updateData.duration = 0;\n            }\n            this.setData(updateData);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/popup/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-overlay\": \"../overlay/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/popup/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<van-overlay\n  wx:if=\"{{ overlay }}\"\n  show=\"{{ show }}\"\n  z-index=\"{{ zIndex }}\"\n  custom-style=\"{{ overlayStyle }}\"\n  duration=\"{{ duration }}\"\n  bind:click=\"onClickOverlay\"\n/>\n<view\n  wx:if=\"{{ inited }}\"\n  class=\"custom-class {{ classes }} {{ utils.bem('popup', [position, { round, safe: safeAreaInsetBottom, safeTop: safeAreaInsetTop }]) }}\"\n  style=\"z-index: {{ zIndex }}; -webkit-transition-duration:{{ currentDuration }}ms; transition-duration:{{ currentDuration }}ms; {{ display ? '' : 'display: none;' }};{{ customStyle }}\"\n  bind:transitionend=\"onTransitionEnd\"\n>\n  <slot />\n  <van-icon\n    wx:if=\"{{ closeable }}\"\n    name=\"{{ closeIcon }}\"\n    class=\"van-popup__close-icon van-popup__close-icon--{{ closeIconPosition }}\"\n    bind:tap=\"onClickCloseIcon\"\n  />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/popup/index.wxss",
    "content": "@import '../common/index.wxss';.van-popup{position:fixed;box-sizing:border-box;max-height:100%;overflow-y:auto;transition-timing-function:ease;-webkit-animation:ease both;animation:ease both;-webkit-overflow-scrolling:touch;background-color:#fff;background-color:var(--popup-background-color,#fff)}.van-popup--center{top:50%;left:50%;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-popup--center.van-popup--round{border-radius:20px;border-radius:var(--popup-round-border-radius,20px)}.van-popup--top{top:0;left:0;width:100%}.van-popup--top.van-popup--round{border-radius:0 0 20px 20px;border-radius:0 0 var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px)}.van-popup--right{top:50%;right:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--right.van-popup--round{border-radius:20px 0 0 20px;border-radius:var(--popup-round-border-radius,20px) 0 0 var(--popup-round-border-radius,20px)}.van-popup--bottom{bottom:0;left:0;width:100%}.van-popup--bottom.van-popup--round{border-radius:20px 20px 0 0;border-radius:var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px) 0 0}.van-popup--left{top:50%;left:0;-webkit-transform:translate3d(0,-50%,0);transform:translate3d(0,-50%,0)}.van-popup--left.van-popup--round{border-radius:0 20px 20px 0;border-radius:0 var(--popup-round-border-radius,20px) var(--popup-round-border-radius,20px) 0}.van-popup--bottom.van-popup--safe{padding-bottom:env(safe-area-inset-bottom)}.van-popup--safeTop{padding-top:env(safe-area-inset-top)}.van-popup__close-icon{position:absolute;z-index:1;z-index:var(--popup-close-icon-z-index,1);color:#969799;color:var(--popup-close-icon-color,#969799);font-size:18px;font-size:var(--popup-close-icon-size,18px)}.van-popup__close-icon--top-left{top:16px;top:var(--popup-close-icon-margin,16px);left:16px;left:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--top-right{top:16px;top:var(--popup-close-icon-margin,16px);right:16px;right:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--bottom-left{bottom:16px;bottom:var(--popup-close-icon-margin,16px);left:16px;left:var(--popup-close-icon-margin,16px)}.van-popup__close-icon--bottom-right{right:16px;right:var(--popup-close-icon-margin,16px);bottom:16px;bottom:var(--popup-close-icon-margin,16px)}.van-popup__close-icon:active{opacity:.6}.van-scale-enter-active,.van-scale-leave-active{transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.van-scale-enter,.van-scale-leave-to{-webkit-transform:translate3d(-50%,-50%,0) scale(.7);transform:translate3d(-50%,-50%,0) scale(.7);opacity:0}.van-fade-enter-active,.van-fade-leave-active{transition-property:opacity}.van-fade-enter,.van-fade-leave-to{opacity:0}.van-center-enter-active,.van-center-leave-active{transition-property:opacity}.van-center-enter,.van-center-leave-to{opacity:0}.van-bottom-enter-active,.van-bottom-leave-active,.van-left-enter-active,.van-left-leave-active,.van-right-enter-active,.van-right-leave-active,.van-top-enter-active,.van-top-leave-active{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-bottom-enter,.van-bottom-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.van-top-enter,.van-top-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.van-left-enter,.van-left-leave-to{-webkit-transform:translate3d(-100%,-50%,0);transform:translate3d(-100%,-50%,0)}.van-right-enter,.van-right-leave-to{-webkit-transform:translate3d(100%,-50%,0);transform:translate3d(100%,-50%,0)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { BLUE } from '../common/color';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    props: {\n        inactive: Boolean,\n        percentage: Number,\n        pivotText: String,\n        pivotColor: String,\n        trackColor: String,\n        showPivot: {\n            type: Boolean,\n            value: true\n        },\n        color: {\n            type: String,\n            value: BLUE\n        },\n        textColor: {\n            type: String,\n            value: '#fff'\n        },\n        strokeWidth: {\n            type: null,\n            observer: 'setStrokeWidthUnit'\n        }\n    },\n    data: {\n        strokeWidthUnit: '4px'\n    },\n    methods: {\n        setStrokeWidthUnit(val) {\n            this.setData({\n                strokeWidthUnit: addUnit(val)\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.wxml",
    "content": "<wxs src=\"./index.wxs\" module=\"getters\" />\n\n<view\n  class=\"van-progress custom-class\"\n  style=\"height: {{ strokeWidthUnit }}; {{ trackColor ? 'background: ' + trackColor : '' }}\"\n>\n  <view\n    class=\"van-progress__portion\"\n    style=\"width: {{ percentage }}%; background: {{ inactive ? '#cacaca' : color }}\"\n  >\n    <view\n      wx:if=\"{{ showPivot && getters.text(pivotText, percentage) }}\"\n      style=\"color: {{ textColor }}; background: {{ pivotColor ? pivotColor : inactive ? '#cacaca' : color }}\"\n      class=\"van-progress__pivot\"\n    >\n      {{ getters.text(pivotText, percentage) }}\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.wxs",
    "content": "module.exports = {\n  text: function(pivotText, percentage) {\n    return pivotText || percentage + '%';\n  }\n};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/progress/index.wxss",
    "content": "@import '../common/index.wxss';.van-progress{position:relative;height:4px;height:var(--progress-height,4px);border-radius:4px;border-radius:var(--progress-height,4px);background:#ebedf0;background:var(--progress-background-color,#ebedf0)}.van-progress__portion{position:absolute;left:0;height:100%;border-radius:inherit;background:#1989fa;background:var(--progress-color,#1989fa)}.van-progress__pivot{position:absolute;top:50%;right:0;box-sizing:border-box;min-width:2em;text-align:center;word-break:keep-all;border-radius:1em;-webkit-transform:translateY(-50%);transform:translateY(-50%);color:#fff;color:var(--progress-pivot-text-color,#fff);padding:0 5px;padding:var(--progress-pivot-padding,0 5px);font-size:10px;font-size:var(--progress-pivot-font-size,10px);line-height:1.6;line-height:var(--progress-pivot-line-height,1.6);background-color:#1989fa;background-color:var(--progress-pivot-background-color,#1989fa)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    field: true,\n    relation: {\n        name: 'radio-group',\n        type: 'ancestor',\n        linked(target) {\n            this.parent = target;\n        },\n        unlinked() {\n            this.parent = null;\n        }\n    },\n    classes: ['icon-class', 'label-class'],\n    props: {\n        value: null,\n        disabled: Boolean,\n        useIconSlot: Boolean,\n        checkedColor: String,\n        labelPosition: {\n            type: String,\n            value: 'right'\n        },\n        labelDisabled: Boolean,\n        shape: {\n            type: String,\n            value: 'round'\n        },\n        iconSize: {\n            type: null,\n            observer: 'setIconSizeUnit'\n        }\n    },\n    data: {\n        iconSizeWithUnit: '20px'\n    },\n    methods: {\n        setIconSizeUnit(val) {\n            this.setData({\n                iconSizeWithUnit: addUnit(val)\n            });\n        },\n        emitChange(value) {\n            const instance = this.parent || this;\n            instance.$emit('input', value);\n            instance.$emit('change', value);\n        },\n        onChange(event) {\n            console.log(event);\n            this.emitChange(this.data.name);\n        },\n        onClickLabel() {\n            const { disabled, labelDisabled, name } = this.data;\n            if (!disabled && !labelDisabled) {\n                this.emitChange(name);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-radio custom-class\">\n  <view\n    wx:if=\"{{ labelPosition === 'left' }}\"\n    class=\"label-class {{ utils.bem('radio__label', [labelPosition, { disabled }]) }}\"\n    bindtap=\"onClickLabel\"\n  >\n    <slot />\n  </view>\n  <view class=\"van-radio__icon-wrap\" style=\"font-size: {{ iconSizeWithUnit }};\" bindtap=\"onChange\">\n    <slot wx:if=\"{{ useIconSlot }}\" name=\"icon\" />\n    <van-icon\n      wx:else\n      name=\"success\"\n      class=\"{{ utils.bem('radio__icon', [shape, { disabled, checked: value === name }]) }}\"\n      style=\"{{ checkedColor && !disabled && value === name ? 'border-color:' + checkedColor + '; background-color:' + checkedColor + ';' : '' }}\"\n      custom-class=\"icon-class\"\n      custom-style=\"line-height: {{ iconSizeWithUnit }};font-size: .8em;display: block;\"\n    />\n  </view>\n  <view\n    wx:if=\"{{ labelPosition === 'right' }}\"\n    class=\"label-class {{ utils.bem('radio__label', [labelPosition, { disabled }]) }}\"\n    bindtap=\"onClickLabel\"\n  >\n    <slot />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio/index.wxss",
    "content": "@import '../common/index.wxss';.van-radio{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;overflow:hidden;-webkit-user-select:none;user-select:none}.van-radio__icon-wrap{-webkit-flex:none;flex:none}.van-radio__icon{display:block;box-sizing:border-box;width:1em;height:1em;color:transparent;text-align:center;transition-property:color,border-color,background-color;border:1px solid #c8c9cc;border:1px solid var(--radio-border-color,#c8c9cc);font-size:20px;font-size:var(--radio-size,20px);transition-duration:.2s;transition-duration:var(--radio-transition-duration,.2s)}.van-radio__icon--round{border-radius:100%}.van-radio__icon--checked{color:#fff;color:var(--white,#fff);background-color:#1989fa;background-color:var(--radio-checked-icon-color,#1989fa);border-color:#1989fa;border-color:var(--radio-checked-icon-color,#1989fa)}.van-radio__icon--disabled{background-color:#ebedf0;background-color:var(--radio-disabled-background-color,#ebedf0);border-color:#c8c9cc;border-color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__icon--disabled.van-radio__icon--checked{color:#c8c9cc;color:var(--radio-disabled-icon-color,#c8c9cc)}.van-radio__label{word-wrap:break-word;margin-left:10px;margin-left:var(--radio-label-margin,10px);color:#323233;color:var(--radio-label-color,#323233);line-height:20px;line-height:var(--radio-size,20px)}.van-radio__label--left{float:left;margin:0 10px 0 0;margin:0 var(--radio-label-margin,10px) 0 0}.van-radio__label--disabled{color:#c8c9cc;color:var(--radio-disabled-label-color,#c8c9cc)}.van-radio__label:empty{margin:0}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio-group/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio-group/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    field: true,\n    relation: {\n        name: 'radio',\n        type: 'descendant',\n        linked(target) {\n            this.children = this.children || [];\n            this.children.push(target);\n            this.updateChild(target);\n        },\n        unlinked(target) {\n            this.children = this.children.filter((child) => child !== target);\n        }\n    },\n    props: {\n        value: {\n            type: null,\n            observer: 'updateChildren'\n        },\n        disabled: {\n            type: Boolean,\n            observer: 'updateChildren'\n        }\n    },\n    methods: {\n        updateChildren() {\n            (this.children || []).forEach((child) => this.updateChild(child));\n        },\n        updateChild(child) {\n            const { value, disabled } = this.data;\n            child.setData({\n                value,\n                disabled: disabled || child.data.disabled\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio-group/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio-group/index.wxml",
    "content": "<slot />\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/radio-group/index.wxss",
    "content": "@import '../common/index.wxss';"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/rate/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/rate/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    field: true,\n    classes: ['icon-class'],\n    props: {\n        value: Number,\n        readonly: Boolean,\n        disabled: Boolean,\n        allowHalf: Boolean,\n        size: {\n            type: null,\n            observer: 'setSizeWithUnit'\n        },\n        icon: {\n            type: String,\n            value: 'star'\n        },\n        voidIcon: {\n            type: String,\n            value: 'star-o'\n        },\n        color: {\n            type: String,\n            value: '#ffd21e'\n        },\n        voidColor: {\n            type: String,\n            value: '#c7c7c7'\n        },\n        disabledColor: {\n            type: String,\n            value: '#bdbdbd'\n        },\n        count: {\n            type: Number,\n            value: 5\n        },\n        gutter: {\n            type: null,\n            observer: 'setGutterWithUnit'\n        },\n        touchable: {\n            type: Boolean,\n            value: true\n        }\n    },\n    data: {\n        innerValue: 0,\n        gutterWithUnit: undefined,\n        sizeWithUnit: null\n    },\n    watch: {\n        value(value) {\n            if (value !== this.data.innerValue) {\n                this.setData({ innerValue: value });\n            }\n        }\n    },\n    methods: {\n        setGutterWithUnit(val) {\n            this.setData({\n                gutterWithUnit: addUnit(val)\n            });\n        },\n        setSizeWithUnit(size) {\n            this.setData({\n                sizeWithUnit: addUnit(size)\n            });\n        },\n        onSelect(event) {\n            const { data } = this;\n            const { score } = event.currentTarget.dataset;\n            if (!data.disabled && !data.readonly) {\n                this.setData({ innerValue: score + 1 });\n                this.$emit('input', score + 1);\n                this.$emit('change', score + 1);\n            }\n        },\n        onTouchMove(event) {\n            const { touchable } = this.data;\n            if (!touchable)\n                return;\n            const { clientX } = event.touches[0];\n            this.getRect('.van-rate__icon', true).then((list) => {\n                const target = list\n                    .sort(item => item.right - item.left)\n                    .find(item => clientX >= item.left && clientX <= item.right);\n                if (target != null) {\n                    this.onSelect(Object.assign(Object.assign({}, event), { currentTarget: target }));\n                }\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/rate/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/rate/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"van-rate custom-class\"\n  bind:touchmove=\"onTouchMove\"\n>\n  <view\n    class=\"van-rate__item\"\n    wx:for=\"{{ count }}\"\n    wx:key=\"index\"\n    style=\"padding-right: {{ index !== count - 1 ? gutterWithUnit : '' }}\"\n  >\n    <van-icon\n      name=\"{{ index + 1 <= innerValue ? icon : voidIcon }}\"\n      class=\"van-rate__icon\"\n      style=\"font-size :{{ size? sizeWithUnit : ''}}\"\n      custom-class=\"icon-class\"\n      data-score=\"{{ index }}\"\n      color=\"{{ disabled ? disabledColor : index + 1 <= innerValue ? color : voidColor }}\"\n      bind:click=\"onSelect\"\n    />\n\n    <van-icon\n      wx:if=\"{{ allowHalf }}\"\n      name=\"{{ index + 0.5 <= innerValue ? icon : voidIcon }}\"\n      class=\"{{ utils.bem('rate__icon', ['half']) }}\"\n      style=\"font-size :{{ size? sizeWithUnit : ''}}\"\n      custom-class=\"icon-class\"\n      data-score=\"{{ index - 0.5 }}\"\n      color=\"{{ disabled ? disabledColor : index + 0.5 <= innerValue ? color : voidColor }}\"\n      bind:click=\"onSelect\"\n    />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/rate/index.wxss",
    "content": "@import '../common/index.wxss';.van-rate{display:-webkit-inline-flex;display:inline-flex;-webkit-user-select:none;user-select:none}.van-rate__item{position:relative;padding:0 2px;padding:0 var(--rate-horizontal-padding,2px)}.van-rate__icon{display:block;height:1em;font-size:20px;font-size:var(--rate-icon-size,20px)}.van-rate__icon--half{position:absolute;top:0;width:.5em;overflow:hidden;left:2px;left:var(--rate-horizontal-padding,2px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/row/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/row/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'col',\n        type: 'descendant',\n        linked(target) {\n            if (this.data.gutter) {\n                target.setGutter(this.data.gutter);\n            }\n        }\n    },\n    props: {\n        gutter: Number\n    },\n    watch: {\n        gutter: 'setGutter'\n    },\n    mounted() {\n        if (this.data.gutter) {\n            this.setGutter();\n        }\n    },\n    methods: {\n        setGutter() {\n            const { gutter } = this.data;\n            const margin = `-${Number(gutter) / 2}px`;\n            const style = gutter\n                ? `margin-right: ${margin}; margin-left: ${margin};`\n                : '';\n            this.setData({ style });\n            this.getRelationNodes('../col/index').forEach(col => {\n                col.setGutter(this.data.gutter);\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/row/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/row/index.wxml",
    "content": "<view class=\"custom-class van-row\" style=\"{{ style }}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/row/index.wxss",
    "content": "@import '../common/index.wxss';.van-row:after{display:table;clear:both;content:\"\"}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/search/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/search/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    field: true,\n    classes: ['field-class', 'input-class', 'cancel-class'],\n    props: {\n        label: String,\n        focus: Boolean,\n        error: Boolean,\n        disabled: Boolean,\n        readonly: Boolean,\n        inputAlign: String,\n        showAction: Boolean,\n        useActionSlot: Boolean,\n        useLeftIconSlot: Boolean,\n        useRightIconSlot: Boolean,\n        leftIcon: {\n            type: String,\n            value: 'search'\n        },\n        rightIcon: String,\n        placeholder: String,\n        placeholderStyle: String,\n        actionText: {\n            type: String,\n            value: '取消'\n        },\n        background: {\n            type: String,\n            value: '#ffffff'\n        },\n        maxlength: {\n            type: Number,\n            value: -1\n        },\n        shape: {\n            type: String,\n            value: 'square'\n        },\n        clearable: {\n            type: Boolean,\n            value: true\n        }\n    },\n    methods: {\n        onChange(event) {\n            this.setData({ value: event.detail });\n            this.$emit('change', event.detail);\n        },\n        onCancel() {\n            /**\n             * 修复修改输入框值时，输入框失焦和赋值同时触发，赋值失效\n             * https://github.com/youzan/@vant/weapp/issues/1768\n             */\n            setTimeout(() => {\n                this.setData({ value: '' });\n                this.$emit('cancel');\n                this.$emit('change', '');\n            }, 200);\n        },\n        onSearch() {\n            this.$emit('search', this.data.value);\n        },\n        onFocus() {\n            this.$emit('focus');\n        },\n        onBlur() {\n            this.$emit('blur');\n        },\n        onClear() {\n            this.$emit('clear');\n        },\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/search/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-field\": \"../field/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/search/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"{{ utils.bem('search', { withaction: showAction || useActionSlot }) }} custom-class\"\n  style=\"background: {{ background }}\"\n>\n  <view class=\"{{ utils.bem('search__content', [shape]) }}\">\n    <view class=\"van-search__label\" wx:if=\"{{ label }}\">{{ label }}</view>\n    <slot wx:else name=\"label\" />\n\n    <van-field\n      type=\"search\"\n      left-icon=\"{{ !useLeftIconSlot ? leftIcon : '' }}\"\n      right-icon=\"{{ !useRightIconSlot ? rightIcon : '' }}\"\n      focus=\"{{ focus }}\"\n      error=\"{{ error }}\"\n      border=\"{{ false }}\"\n      confirm-type=\"search\"\n      class=\"van-search__field field-class\"\n      value=\"{{ value }}\"\n      disabled=\"{{ disabled }}\"\n      readonly=\"{{ readonly }}\"\n      clearable=\"{{ clearable }}\"\n      maxlength=\"{{ maxlength }}\"\n      input-align=\"{{ inputAlign }}\"\n      input-class=\"input-class\"\n      placeholder=\"{{ placeholder }}\"\n      placeholder-style=\"{{ placeholderStyle }}\"\n      custom-style=\"padding: 5px 10px 5px 0; background-color: transparent;\"\n      bind:blur=\"onBlur\"\n      bind:focus=\"onFocus\"\n      bind:change=\"onChange\"\n      bind:confirm=\"onSearch\"\n      bind:clear=\"onClear\"\n    >\n      <slot wx:if=\"{{ useLeftIconSlot }}\" name=\"left-icon\" slot=\"left-icon\" />\n      <slot wx:if=\"{{ useRightIconSlot }}\" name=\"right-icon\" slot=\"right-icon\" />\n    </van-field>\n  </view>\n\n  <view\n    wx:if=\"{{ showAction || useActionSlot }}\"\n    class=\"van-search__action\"\n    hover-class=\"van-search__action--hover\"\n    hover-stay-time=\"70\"\n  >\n    <slot wx:if=\"{{ useActionSlot }}\" name=\"action\" />\n    <view wx:else bind:tap=\"onCancel\" class=\"cancel-class\">{{ actionText }}</view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/search/index.wxss",
    "content": "@import '../common/index.wxss';.van-search{-webkit-align-items:center;align-items:center;box-sizing:border-box;padding:10px 12px;padding:var(--search-padding,10px 12px)}.van-search,.van-search__content{display:-webkit-flex;display:flex}.van-search__content{-webkit-flex:1;flex:1;padding-left:8px;padding-left:var(--padding-xs,8px);border-radius:2px;border-radius:var(--border-radius-sm,2px);background-color:#f7f8fa;background-color:var(--search-background-color,#f7f8fa)}.van-search__content--round{border-radius:17px;border-radius:calc(var(--search-input-height, 34px)/2)}.van-search__label{padding:0 5px;padding:var(--search-label-padding,0 5px);font-size:14px;font-size:var(--search-label-font-size,14px);line-height:34px;line-height:var(--search-input-height,34px);color:#323233;color:var(--search-label-color,#323233)}.van-search__field{-webkit-flex:1;flex:1}.van-search__field__left-icon{color:#969799;color:var(--search-left-icon-color,#969799)}.van-search--withaction{padding-right:0}.van-search__action{padding:0 8px;padding:var(--search-action-padding,0 8px);font-size:14px;font-size:var(--search-action-font-size,14px);line-height:34px;line-height:var(--search-input-height,34px);color:#323233;color:var(--search-action-text-color,#323233)}.van-search__action--hover{background-color:#f2f3f5;background-color:var(--active-color,#f2f3f5)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'sidebar-item',\n        type: 'descendant',\n        linked(target) {\n            this.children.push(target);\n            this.setActive(this.data.activeKey);\n        },\n        unlinked(target) {\n            this.children = this.children.filter((item) => item !== target);\n            this.setActive(this.data.activeKey);\n        }\n    },\n    props: {\n        activeKey: {\n            type: Number,\n            value: 0,\n            observer: 'setActive'\n        }\n    },\n    beforeCreate() {\n        this.children = [];\n        this.currentActive = -1;\n    },\n    methods: {\n        setActive(activeKey) {\n            const { children, currentActive } = this;\n            if (!children.length) {\n                return Promise.resolve();\n            }\n            this.currentActive = activeKey;\n            const stack = [];\n            if (currentActive !== activeKey && children[currentActive]) {\n                stack.push(children[currentActive].setActive(false));\n            }\n            if (children[activeKey]) {\n                stack.push(children[activeKey].setActive(true));\n            }\n            return Promise.all(stack);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar/index.wxml",
    "content": "<view class=\"van-sidebar van-hairline--top-bottom custom-class\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar/index.wxss",
    "content": "@import '../common/index.wxss';.van-sidebar{width:85px;width:var(--sidebar-width,85px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar-item/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar-item/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    classes: [\n        'active-class',\n        'disabled-class',\n    ],\n    relation: {\n        type: 'ancestor',\n        name: 'sidebar',\n        linked(target) {\n            this.parent = target;\n        }\n    },\n    props: {\n        dot: Boolean,\n        info: null,\n        title: String,\n        disabled: Boolean\n    },\n    methods: {\n        onClick() {\n            const { parent } = this;\n            if (!parent || this.data.disabled) {\n                return;\n            }\n            const index = parent.children.indexOf(this);\n            parent.setActive(index).then(() => {\n                this.$emit('click', index);\n                parent.$emit('change', index);\n            });\n        },\n        setActive(selected) {\n            return this.setData({ selected });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar-item/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-info\": \"../info/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar-item/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"{{ utils.bem('sidebar-item', { selected, disabled }) }} {{ selected ? 'active-class' : '' }} {{ disabled ? 'disabled-class' : '' }} custom-class\"\n  hover-class=\"van-sidebar-item--hover\"\n  hover-stay-time=\"70\"\n  bind:tap=\"onClick\"\n>\n  <view class=\"van-sidebar-item__text\">\n    <van-info\n      wx:if=\"{{ info !== null || dot }}\"\n      dot=\"{{ dot }}\"\n      info=\"{{ info }}\"\n      custom-style=\"right: 4px\"\n    />\n    {{ title }}\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sidebar-item/index.wxss",
    "content": "@import '../common/index.wxss';.van-sidebar-item{display:block;box-sizing:border-box;overflow:hidden;word-wrap:break-word;border-left:3px solid transparent;-webkit-user-select:none;user-select:none;padding:20px 12px 20px 8px;padding:var(--sidebar-padding,20px 12px 20px 8px);font-size:14px;font-size:var(--sidebar-font-size,14px);line-height:20px;line-height:var(--sidebar-line-height,20px);color:#323233;color:var(--sidebar-text-color,#323233);background-color:#fafafa;background-color:var(--sidebar-background-color,#fafafa)}.van-sidebar-item__text{position:relative;display:inline-block}.van-sidebar-item--hover:not(.van-sidebar-item--disabled){background-color:#f2f3f5;background-color:var(--sidebar-active-color,#f2f3f5)}.van-sidebar-item:after{border-bottom-width:1px}.van-sidebar-item--selected{color:#323233;color:var(--sidebar-selected-text-color,#323233);font-weight:500;font-weight:var(--sidebar-selected-font-weight,500);border-color:#ee0a24;border-color:var(--sidebar-selected-border-color,#ee0a24)}.van-sidebar-item--selected:after{border-right-width:1px}.van-sidebar-item--selected,.van-sidebar-item--selected.van-sidebar-item--hover{background-color:#fff;background-color:var(--sidebar-selected-background-color,#fff)}.van-sidebar-item--disabled{color:#c8c9cc;color:var(--sidebar-disabled-text-color,#c8c9cc)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/skeleton/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/skeleton/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        row: {\n            type: Number,\n            value: 0\n        },\n        title: Boolean,\n        avatar: Boolean,\n        loading: {\n            type: Boolean,\n            value: true\n        },\n        animate: {\n            type: Boolean,\n            value: true\n        },\n        avatarSize: {\n            type: String,\n            value: '32px'\n        },\n        avatarShape: {\n            type: String,\n            value: 'round'\n        },\n        titleWidth: {\n            type: String,\n            value: '40%'\n        },\n        rowWidth: {\n            type: null,\n            value: '100%',\n            observer(val) {\n                this.setData({ isArray: val instanceof Array });\n            }\n        }\n    },\n    data: {\n        isArray: false\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/skeleton/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {}\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/skeleton/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  wx:if=\"{{ loading }}\"\n  class=\"custom-class {{ utils.bem('skeleton', [{animate}]) }}\"\n>\n  <view\n    wx:if=\"{{ avatar }}\"\n    class=\"{{ utils.bem('skeleton__avatar', [avatarShape])}}\"\n    style=\"{{ 'width:' + avatarSize + ';height:' + avatarSize }}\"\n  />\n  <view class=\"{{ utils.bem('skeleton__content')}}\">\n    <view\n      wx:if=\"{{ title }}\"\n      class=\"{{ utils.bem('skeleton__title') }}\"\n      style=\"{{ 'width:' + titleWidth }}\"\n    />\n    <view\n      wx:for=\"{{ row }}\"\n      wx:key=\"index\"\n      wx:for-index=\"index\"\n      class=\"{{ utils.bem('skeleton__row') }}\"\n      style=\"{{ 'width:' + (isArray ? rowWidth[index] : rowWidth) }}\"\n    />\n  </view>\n</view>\n<view wx:else class=\"{{ utils.bem('skeleton__content')}}\">\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/skeleton/index.wxss",
    "content": "@import '../common/index.wxss';.van-skeleton{display:-webkit-flex;display:flex;box-sizing:border-box;width:100%;padding:0 16px;padding:var(--skeleton-padding,0 16px)}.van-skeleton__avatar{-webkit-flex-shrink:0;flex-shrink:0;margin-right:16px;margin-right:var(--padding-md,16px);background-color:#f2f3f5;background-color:var(--skeleton-avatar-background-color,#f2f3f5)}.van-skeleton__avatar--round{border-radius:100%}.van-skeleton__content{-webkit-flex:1;flex:1}.van-skeleton__avatar+.van-skeleton__content{padding-top:8px;padding-top:var(--padding-xs,8px)}.van-skeleton__row,.van-skeleton__title{height:16px;height:var(--skeleton-row-height,16px);background-color:#f2f3f5;background-color:var(--skeleton-row-background-color,#f2f3f5)}.van-skeleton__title{margin:0}.van-skeleton__row:not(:first-child){margin-top:12px;margin-top:var(--skeleton-row-margin-top,12px)}.van-skeleton__title+.van-skeleton__row{margin-top:20px}.van-skeleton--animate{-webkit-animation:van-skeleton-blink 1.2s ease-in-out infinite;animation:van-skeleton-blink 1.2s ease-in-out infinite}@-webkit-keyframes van-skeleton-blink{50%{opacity:.6}}@keyframes van-skeleton-blink{50%{opacity:.6}}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/slider/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/slider/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { touch } from '../mixins/touch';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    mixins: [touch],\n    props: {\n        disabled: Boolean,\n        useButtonSlot: Boolean,\n        activeColor: String,\n        inactiveColor: String,\n        max: {\n            type: Number,\n            value: 100\n        },\n        min: {\n            type: Number,\n            value: 0\n        },\n        step: {\n            type: Number,\n            value: 1\n        },\n        value: {\n            type: Number,\n            value: 0\n        },\n        barHeight: {\n            type: null,\n            value: '2px'\n        }\n    },\n    watch: {\n        value(value) {\n            this.updateValue(value, false);\n        }\n    },\n    created() {\n        this.updateValue(this.data.value);\n    },\n    methods: {\n        onTouchStart(event) {\n            if (this.data.disabled)\n                return;\n            this.touchStart(event);\n            this.startValue = this.format(this.data.value);\n            this.dragStatus = 'start';\n        },\n        onTouchMove(event) {\n            if (this.data.disabled)\n                return;\n            if (this.dragStatus === 'start') {\n                this.$emit('drag-start');\n            }\n            this.touchMove(event);\n            this.dragStatus = 'draging';\n            this.getRect('.van-slider').then((rect) => {\n                const diff = this.deltaX / rect.width * 100;\n                this.newValue = this.startValue + diff;\n                this.updateValue(this.newValue, false, true);\n            });\n        },\n        onTouchEnd() {\n            if (this.data.disabled)\n                return;\n            if (this.dragStatus === 'draging') {\n                this.updateValue(this.newValue, true);\n                this.$emit('drag-end');\n            }\n        },\n        onClick(event) {\n            if (this.data.disabled)\n                return;\n            const { min } = this.data;\n            this.getRect('.van-slider').then((rect) => {\n                const value = (event.detail.x - rect.left) / rect.width * this.getRange() + min;\n                this.updateValue(value, true);\n            });\n        },\n        updateValue(value, end, drag) {\n            value = this.format(value);\n            const { barHeight, min } = this.data;\n            const width = `${((value - min) * 100) / this.getRange()}%`;\n            this.setData({\n                value,\n                barStyle: `\n          width: ${width};\n          height: ${addUnit(barHeight)};\n          ${drag ? 'transition: none;' : ''}\n        `,\n            });\n            if (drag) {\n                this.$emit('drag', { value });\n            }\n            if (end) {\n                this.$emit('change', value);\n            }\n        },\n        getRange() {\n            const { max, min } = this.data;\n            return max - min;\n        },\n        format(value) {\n            const { max, min, step } = this.data;\n            return Math.round(Math.max(min, Math.min(value, max)) / step) * step;\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/slider/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/slider/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('slider', { disabled }) }}\"\n  style=\"{{ inactiveColor ? 'background:' + inactiveColor : '' }}\"\n  bind:tap=\"onClick\"\n>\n  <view\n    class=\"van-slider__bar\"\n    style=\"{{ barStyle }}; {{ activeColor ? 'background:' + activeColor : '' }}\"\n  >\n    <view\n      class=\"van-slider__button-wrapper\"\n      bind:touchstart=\"onTouchStart\"\n      catch:touchmove=\"onTouchMove\"\n      bind:touchend=\"onTouchEnd\"\n      bind:touchcancel=\"onTouchEnd\"\n    >\n      <slot\n        wx:if=\"{{ useButtonSlot }}\"\n        name=\"button\"\n      />\n      <view\n        wx:else\n        class=\"van-slider__button\"\n      />\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/slider/index.wxss",
    "content": "@import '../common/index.wxss';.van-slider{position:relative;border-radius:999px;border-radius:var(--border-radius-max,999px);background-color:#ebedf0;background-color:var(--slider-inactive-background-color,#ebedf0)}.van-slider:before{position:absolute;right:0;left:0;content:\"\";top:-8px;top:-var(--padding-xs,8px);bottom:-8px;bottom:-var(--padding-xs,8px)}.van-slider__bar{position:relative;border-radius:inherit;transition:width .2s;transition:width var(--animation-duration-fast,.2s);background-color:#1989fa;background-color:var(--slider-active-background-color,#1989fa)}.van-slider__button{width:24px;height:24px;border-radius:50%;box-shadow:0 1px 2px rgba(0,0,0,.5);background-color:#fff;background-color:var(--slider-button-background-color,#fff)}.van-slider__button-wrapper{position:absolute;top:50%;right:0;-webkit-transform:translate3d(50%,-50%,0);transform:translate3d(50%,-50%,0)}.van-slider--disabled{opacity:.5}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/stepper/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/stepper/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit, isDef } from '../common/utils';\nconst LONG_PRESS_START_TIME = 600;\nconst LONG_PRESS_INTERVAL = 200;\n// add num and avoid float number\nfunction add(num1, num2) {\n    const cardinal = Math.pow(10, 10);\n    return Math.round((num1 + num2) * cardinal) / cardinal;\n}\nVantComponent({\n    field: true,\n    classes: ['input-class', 'plus-class', 'minus-class'],\n    props: {\n        value: null,\n        integer: Boolean,\n        disabled: Boolean,\n        inputWidth: null,\n        buttonSize: null,\n        asyncChange: Boolean,\n        disableInput: Boolean,\n        decimalLength: {\n            type: Number,\n            value: null\n        },\n        min: {\n            type: null,\n            value: 1\n        },\n        max: {\n            type: null,\n            value: Number.MAX_SAFE_INTEGER\n        },\n        step: {\n            type: null,\n            value: 1\n        },\n        showPlus: {\n            type: Boolean,\n            value: true\n        },\n        showMinus: {\n            type: Boolean,\n            value: true\n        },\n        disablePlus: Boolean,\n        disableMinus: Boolean\n    },\n    watch: {\n        value(value) {\n            if (value === '') {\n                return;\n            }\n            const newValue = this.range(value);\n            if (typeof newValue === 'number' && +this.data.value !== newValue) {\n                this.setData({ value: newValue });\n            }\n        },\n        inputWidth() {\n            this.set({\n                inputStyle: this.computeInputStyle()\n            });\n        },\n        buttonSize() {\n            this.set({\n                inputStyle: this.computeInputStyle(),\n                buttonStyle: this.computeButtonStyle()\n            });\n        }\n    },\n    data: {\n        focus: false,\n        inputStyle: '',\n        buttonStyle: ''\n    },\n    created() {\n        this.setData({\n            value: this.range(this.data.value)\n        });\n    },\n    methods: {\n        isDisabled(type) {\n            if (type === 'plus') {\n                return this.data.disabled || this.data.disablePlus || this.data.value >= this.data.max;\n            }\n            return this.data.disabled || this.data.disableMinus || this.data.value <= this.data.min;\n        },\n        onFocus(event) {\n            this.$emit('focus', event.detail);\n        },\n        onBlur(event) {\n            const value = this.range(this.data.value);\n            this.triggerInput(value);\n            this.$emit('blur', event.detail);\n        },\n        // limit value range\n        range(value) {\n            value = String(value).replace(/[^0-9.-]/g, '');\n            // format range\n            value = value === '' ? 0 : +value;\n            value = Math.max(Math.min(this.data.max, value), this.data.min);\n            // format decimal\n            if (isDef(this.data.decimalLength)) {\n                value = value.toFixed(this.data.decimalLength);\n            }\n            return value;\n        },\n        onInput(event) {\n            const { value = '' } = event.detail || {};\n            this.triggerInput(value);\n        },\n        onChange() {\n            const { type } = this;\n            if (this.isDisabled(type)) {\n                this.$emit('overlimit', type);\n                return;\n            }\n            const diff = type === 'minus' ? -this.data.step : +this.data.step;\n            const value = add(+this.data.value, diff);\n            this.triggerInput(this.range(value));\n            this.$emit(type);\n        },\n        longPressStep() {\n            this.longPressTimer = setTimeout(() => {\n                this.onChange();\n                this.longPressStep();\n            }, LONG_PRESS_INTERVAL);\n        },\n        onTap(event) {\n            const { type } = event.currentTarget.dataset;\n            this.type = type;\n            this.onChange();\n        },\n        onTouchStart(event) {\n            clearTimeout(this.longPressTimer);\n            const { type } = event.currentTarget.dataset;\n            this.type = type;\n            this.isLongPress = false;\n            this.longPressTimer = setTimeout(() => {\n                this.isLongPress = true;\n                this.onChange();\n                this.longPressStep();\n            }, LONG_PRESS_START_TIME);\n        },\n        onTouchEnd() {\n            clearTimeout(this.longPressTimer);\n        },\n        triggerInput(value) {\n            this.setData({\n                value: this.data.asyncChange ? this.data.value : value\n            });\n            this.$emit('change', value);\n        },\n        computeInputStyle() {\n            let style = '';\n            if (this.data.inputWidth) {\n                style = `width: ${addUnit(this.data.inputWidth)};`;\n            }\n            if (this.data.buttonSize) {\n                style += `height: ${addUnit(this.data.buttonSize)};`;\n            }\n            return style;\n        },\n        computeButtonStyle() {\n            let style = '';\n            const size = addUnit(this.data.buttonSize);\n            if (this.data.buttonSize) {\n                style = `width: ${size};height: ${size};`;\n            }\n            return style;\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/stepper/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/stepper/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-stepper custom-class\">\n  <view\n    wx:if=\"{{ showMinus }}\"\n    data-type=\"minus\"\n    style=\"{{ buttonStyle }}\"\n    class=\"minus-class {{ utils.bem('stepper__minus', { disabled: disabled || disableMinus || value <= min }) }}\"\n    hover-class=\"van-stepper__minus--hover\"\n    hover-stay-time=\"70\"\n    bind:tap=\"onTap\"\n    bind:touchstart=\"onTouchStart\"\n    bind:touchend=\"onTouchEnd\"\n  />\n  <input\n    type=\"{{ integer ? 'number' : 'digit' }}\"\n    class=\"input-class {{ utils.bem('stepper__input', { disabled: disabled || disableInput }) }}\"\n    style=\"{{ inputStyle }}\"\n    value=\"{{ value }}\"\n    focus=\"{{ focus }}\"\n    disabled=\"{{ disabled || disableInput }}\"\n    bindinput=\"onInput\"\n    bind:focus=\"onFocus\"\n    bind:blur=\"onBlur\"\n  />\n  <view\n    wx:if=\"{{ showPlus }}\"\n    data-type=\"plus\"\n    style=\"{{ buttonStyle }}\"\n    class=\"plus-class {{ utils.bem('stepper__plus', { disabled: disabled || disablePlus || value >= max }) }}\"\n    hover-class=\"van-stepper__plus--hover\"\n    hover-stay-time=\"70\"\n    bind:tap=\"onTap\"\n    bind:touchstart=\"onTouchStart\"\n    bind:touchend=\"onTouchEnd\"\n  />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/stepper/index.wxss",
    "content": "@import '../common/index.wxss';.van-stepper{font-size:0}.van-stepper__minus,.van-stepper__plus{position:relative;display:inline-block;box-sizing:border-box;margin:1px;vertical-align:middle;border:0;background-color:#f2f3f5;background-color:var(--stepper-background-color,#f2f3f5);color:#323233;color:var(--stepper-button-icon-color,#323233);width:28px;width:var(--stepper-input-height,28px);height:28px;height:var(--stepper-input-height,28px);padding:4px;padding:var(--padding-base,4px)}.van-stepper__minus:before,.van-stepper__plus:before{width:9px;height:1px}.van-stepper__minus:after,.van-stepper__plus:after{width:1px;height:9px}.van-stepper__minus:after,.van-stepper__minus:before,.van-stepper__plus:after,.van-stepper__plus:before{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;background-color:currentColor;content:\"\"}.van-stepper__minus--hover,.van-stepper__plus--hover{background-color:#e8e8e8;background-color:var(--stepper-active-color,#e8e8e8)}.van-stepper__minus--disabled,.van-stepper__plus--disabled{color:#c8c9cc;color:var(--stepper-button-disabled-icon-color,#c8c9cc)}.van-stepper__minus--disabled,.van-stepper__minus--disabled.van-stepper__minus--hover,.van-stepper__minus--disabled.van-stepper__plus--hover,.van-stepper__plus--disabled,.van-stepper__plus--disabled.van-stepper__minus--hover,.van-stepper__plus--disabled.van-stepper__plus--hover{background-color:#f7f8fa;background-color:var(--stepper-button-disabled-color,#f7f8fa)}.van-stepper__minus{border-radius:4px 0 0 4px;border-radius:var(--stepper-border-radius,4px) 0 0 var(--stepper-border-radius,4px)}.van-stepper__minus:after{display:none}.van-stepper__plus{border-radius:0 4px 4px 0;border-radius:0 var(--stepper-border-radius,4px) var(--stepper-border-radius,4px) 0}.van-stepper__input{display:inline-block;box-sizing:border-box;min-height:0;margin:1px;padding:1px;text-align:center;vertical-align:middle;border:0;border-width:1px 0;border-radius:0;-webkit-appearance:none;font-size:14px;font-size:var(--stepper-input-font-size,14px);color:#323233;color:var(--stepper-input-text-color,#323233);background-color:#f2f3f5;background-color:var(--stepper-background-color,#f2f3f5);width:32px;width:var(--stepper-input-width,32px);height:28px;height:var(--stepper-input-height,28px)}.van-stepper__input--disabled{color:#c8c9cc;color:var(--stepper-input-disabled-text-color,#c8c9cc);background-color:#f2f3f5;background-color:var(--stepper-input-disabled-background-color,#f2f3f5)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/steps/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/steps/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { GREEN } from '../common/color';\nVantComponent({\n    props: {\n        icon: String,\n        steps: Array,\n        active: Number,\n        direction: {\n            type: String,\n            value: 'horizontal'\n        },\n        activeColor: {\n            type: String,\n            value: GREEN\n        },\n        activeIcon: {\n            type: String,\n            value: 'checked'\n        },\n        inactiveIcon: String\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/steps/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/steps/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"custom-class {{ utils.bem('steps', [direction]) }}\">\n  <view class=\"van-step__wrapper\">\n    <view\n      wx:for=\"{{ steps }}\"\n      wx:key=\"index\"\n      class=\"{{ utils.bem('step', [direction, status(index, active)]) }} van-hairline\"\n    >\n      <view class=\"van-step__title\" style=\"{{ index === active ? 'color: ' + activeColor : '' }}\">\n        <view>{{ item.text }}</view>\n        <view>{{ item.desc }}</view>\n      </view>\n      <view class=\"van-step__circle-container\">\n        <block wx:if=\"{{ index !== active }}\">\n          <van-icon\n            wx:if=\"{{ inactiveIcon }}\"\n            color=\"#969799\"\n            name=\"{{ inactiveIcon }}\"\n            custom-class=\"van-step__icon\"\n          />\n          <view\n            wx:else\n            class=\"van-step__circle\"\n            style=\"{{ index < active ? 'background-color: ' + activeColor : '' }}\"\n          />\n        </block>\n\n        <van-icon wx:else name=\"{{ activeIcon }}\" color=\"{{ activeColor }}\" custom-class=\"van-step__icon\" />\n      </view>\n      <view\n        wx:if=\"{{ index !== steps.length - 1 }}\"\n        class=\"van-step__line\" style=\"{{ index < active ? 'background-color: ' + activeColor : '' }}\"\n      />\n    </view>\n  </view>\n</view>\n\n<wxs module=\"status\">\nfunction get(index, active) {\n  if (index < active) {\n    return 'finish';\n  } else if (index === active) {\n    return 'process';\n  }\n\n  return '';\n}\n\nmodule.exports = get;\n</wxs>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/steps/index.wxss",
    "content": "@import '../common/index.wxss';.van-steps{overflow:hidden;background-color:#fff;background-color:var(--steps-background-color,#fff)}.van-steps--horizontal{padding:10px}.van-steps--horizontal .van-step__wrapper{position:relative;display:-webkit-flex;display:flex;overflow:hidden}.van-steps--vertical{padding-left:10px}.van-steps--vertical .van-step__wrapper{padding:0 0 0 20px}.van-step{position:relative;-webkit-flex:1;flex:1;font-size:14px;font-size:var(--step-font-size,14px);color:#969799;color:var(--step-text-color,#969799)}.van-step--finish{color:#323233;color:var(--step-finish-text-color,#323233)}.van-step__circle{border-radius:50%;width:5px;width:var(--step-circle-size,5px);height:5px;height:var(--step-circle-size,5px);background-color:#969799;background-color:var(--step-circle-color,#969799)}.van-step--horizontal{padding-bottom:14px}.van-step--horizontal:first-child .van-step__title{-webkit-transform:none;transform:none}.van-step--horizontal:first-child .van-step__circle-container{padding:0 8px 0 0;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal:last-child{position:absolute;right:0;width:auto}.van-step--horizontal:last-child .van-step__title{text-align:right;-webkit-transform:none;transform:none}.van-step--horizontal:last-child .van-step__circle-container{right:0;padding:0 0 0 8px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0)}.van-step--horizontal .van-step__circle-container{position:absolute;bottom:6px;z-index:1;-webkit-transform:translate3d(-50%,50%,0);transform:translate3d(-50%,50%,0);background-color:#fff;background-color:var(--white,#fff);padding:0 8px;padding:0 var(--padding-xs,8px)}.van-step--horizontal .van-step__title{display:inline-block;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);font-size:12px;font-size:var(--step-horizontal-title-font-size,12px)}.van-step--horizontal .van-step__line{position:absolute;right:0;bottom:6px;left:0;height:1px;-webkit-transform:translate3d(0,50%,0);transform:translate3d(0,50%,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}.van-step--horizontal.van-step--process{color:#323233;color:var(--step-process-text-color,#323233)}.van-step--horizontal.van-step--process .van-step__icon{display:block;line-height:1;font-size:12px;font-size:var(--step-icon-size,12px)}.van-step--vertical{padding:10px 10px 10px 0;line-height:18px}.van-step--vertical:after{border-bottom-width:1px}.van-step--vertical:last-child:after{border-bottom-width:none}.van-step--vertical:first-child:before{position:absolute;top:0;left:-15px;z-index:1;width:1px;height:20px;content:\"\";background-color:#fff;background-color:var(--white,#fff)}.van-step--vertical .van-step__circle,.van-step--vertical .van-step__icon,.van-step--vertical .van-step__line{position:absolute;top:19px;left:-14px;z-index:2;-webkit-transform:translate3d(-50%,-50%,0);transform:translate3d(-50%,-50%,0)}.van-step--vertical .van-step__icon{line-height:1;font-size:12px;font-size:var(--step-icon-size,12px)}.van-step--vertical .van-step__line{z-index:1;width:1px;height:100%;-webkit-transform:translate3d(-50%,0,0);transform:translate3d(-50%,0,0);background-color:#ebedf0;background-color:var(--step-line-color,#ebedf0)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sticky/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sticky/index.js",
    "content": "import { VantComponent } from '../common/component';\nconst ROOT_ELEMENT = '.van-sticky';\nVantComponent({\n    props: {\n        zIndex: {\n            type: Number,\n            value: 99\n        },\n        offsetTop: {\n            type: Number,\n            value: 0,\n            observer: 'observeContent'\n        },\n        disabled: {\n            type: Boolean,\n            observer(value) {\n                if (!this.mounted) {\n                    return;\n                }\n                value ? this.disconnectObserver() : this.initObserver();\n            }\n        },\n        container: {\n            type: null,\n            observer(target) {\n                if (typeof target !== 'function' || !this.data.height) {\n                    return;\n                }\n                this.observeContainer();\n            }\n        }\n    },\n    data: {\n        wrapStyle: '',\n        containerStyle: ''\n    },\n    methods: {\n        setStyle() {\n            const { offsetTop, height, fixed, zIndex } = this.data;\n            if (fixed) {\n                this.setData({\n                    wrapStyle: `top: ${offsetTop}px;`,\n                    containerStyle: `height: ${height}px; z-index: ${zIndex};`\n                });\n            }\n            else {\n                this.setData({\n                    wrapStyle: '',\n                    containerStyle: ''\n                });\n            }\n        },\n        getContainerRect() {\n            const nodesRef = this.data.container();\n            return new Promise(resolve => nodesRef.boundingClientRect(resolve).exec());\n        },\n        initObserver() {\n            this.disconnectObserver();\n            this.getRect(ROOT_ELEMENT).then((rect) => {\n                this.setData({ height: rect.height });\n                wx.nextTick(() => {\n                    this.observeContent();\n                    this.observeContainer();\n                });\n            });\n        },\n        disconnectObserver(observerName) {\n            if (observerName) {\n                const observer = this[observerName];\n                observer && observer.disconnect();\n            }\n            else {\n                this.contentObserver && this.contentObserver.disconnect();\n                this.containerObserver && this.containerObserver.disconnect();\n            }\n        },\n        observeContent() {\n            const { offsetTop } = this.data;\n            this.disconnectObserver('contentObserver');\n            const contentObserver = this.createIntersectionObserver({\n                thresholds: [0, 1]\n            });\n            this.contentObserver = contentObserver;\n            contentObserver.relativeToViewport({ top: -offsetTop });\n            contentObserver.observe(ROOT_ELEMENT, res => {\n                if (this.data.disabled) {\n                    return;\n                }\n                this.setFixed(res.boundingClientRect.top);\n            });\n        },\n        observeContainer() {\n            if (typeof this.data.container !== 'function') {\n                return;\n            }\n            const { height } = this.data;\n            this.getContainerRect().then((rect) => {\n                this.containerHeight = rect.height;\n                this.disconnectObserver('containerObserver');\n                const containerObserver = this.createIntersectionObserver({\n                    thresholds: [0, 1]\n                });\n                this.containerObserver = containerObserver;\n                containerObserver.relativeToViewport({\n                    top: this.containerHeight - height\n                });\n                containerObserver.observe(ROOT_ELEMENT, res => {\n                    if (this.data.disabled) {\n                        return;\n                    }\n                    this.setFixed(res.boundingClientRect.top);\n                });\n            });\n        },\n        setFixed(top) {\n            const { offsetTop, height } = this.data;\n            const { containerHeight } = this;\n            const fixed = containerHeight && height\n                ? top > height - containerHeight && top < offsetTop\n                : top < offsetTop;\n            this.$emit('scroll', {\n                scrollTop: top,\n                isFixed: fixed\n            });\n            this.setData({ fixed });\n            wx.nextTick(() => {\n                this.setStyle();\n            });\n        }\n    },\n    mounted() {\n        this.mounted = true;\n        if (!this.data.disabled) {\n            this.initObserver();\n        }\n    },\n    destroyed() {\n        this.disconnectObserver();\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sticky/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sticky/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"custom-class van-sticky\" style=\"{{ containerStyle }}\">\n  <view class=\"{{ utils.bem('sticky-wrap', { fixed }) }}\" style=\"{{ wrapStyle }}\">\n    <slot />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/sticky/index.wxss",
    "content": "@import '../common/index.wxss';.van-sticky{position:relative}.van-sticky-wrap--fixed{position:fixed;right:0;left:0}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/submit-bar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/submit-bar/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    classes: [\n        'bar-class',\n        'price-class',\n        'button-class'\n    ],\n    props: {\n        tip: {\n            type: null,\n            observer: 'updateTip'\n        },\n        tipIcon: String,\n        type: Number,\n        price: {\n            type: null,\n            observer: 'updatePrice'\n        },\n        label: String,\n        loading: Boolean,\n        disabled: Boolean,\n        buttonText: String,\n        currency: {\n            type: String,\n            value: '¥'\n        },\n        buttonType: {\n            type: String,\n            value: 'danger'\n        },\n        decimalLength: {\n            type: Number,\n            value: 2,\n            observer: 'updatePrice'\n        },\n        suffixLabel: String,\n        safeAreaInsetBottom: {\n            type: Boolean,\n            value: true\n        }\n    },\n    methods: {\n        updatePrice() {\n            const { price, decimalLength } = this.data;\n            this.setData({\n                hasPrice: typeof price === 'number',\n                priceStr: (price / 100).toFixed(decimalLength)\n            });\n        },\n        updateTip() {\n            this.setData({ hasTip: typeof this.data.tip === 'string' });\n        },\n        onSubmit(event) {\n            this.$emit('submit', event.detail);\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/submit-bar/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-button\": \"../button/index\",\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/submit-bar/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-submit-bar custom-class\">\n  <slot name=\"top\" />\n\n  <view class=\"van-submit-bar__tip\">\n    <van-icon\n      wx:if=\"{{ tipIcon }}\"\n      size=\"12px\"\n      name=\"{{ tipIcon }}\"\n      custom-class=\"van-submit-bar__tip-icon\"\n    />\n    <view wx:if=\"{{ hasTip }}\" class=\"van-submit-bar__tip-text\">\n      {{ tip }}\n    </view>\n    <slot name=\"tip\" />\n  </view>\n\n  <view class=\"bar-class {{ utils.bem('submit-bar__bar', { safe: safeAreaInsetBottom }) }}\">\n    <slot />\n    <view wx:if=\"{{ hasPrice }}\" class=\"van-submit-bar__text\">\n      <text>{{ label || '合计：' }}</text>\n      <text class=\"van-submit-bar__price price-class\">\n        <text class=\"van-submit-bar__currency\">{{ currency }} </text>\n        <text>{{ priceStr }}</text>\n      </text>\n      <text class=\"van-submit-bar__suffix-label\">{{ suffixLabel }}</text>\n    </view>\n    <van-button\n      square\n      size=\"large\"\n      type=\"{{ buttonType }}\"\n      loading=\"{{ loading }}\"\n      disabled=\"{{ disabled }}\"\n      class=\"van-submit-bar__button\"\n      custom-class=\"button-class\"\n      bind:click=\"onSubmit\"\n    >\n      {{ loading ? '' : buttonText }}\n    </van-button>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/submit-bar/index.wxss",
    "content": "@import '../common/index.wxss';.van-submit-bar{position:fixed;bottom:0;left:0;width:100%;-webkit-user-select:none;user-select:none;z-index:100;z-index:var(--submit-bar-z-index,100);background-color:#fff;background-color:var(--submit-bar-background-color,#fff)}.van-submit-bar__tip{padding:10px;padding:var(--submit-bar-tip-padding,10px);color:#f56723;color:var(--submit-bar-tip-color,#f56723);font-size:12px;font-size:var(--submit-bar-tip-font-size,12px);line-height:1.5;line-height:var(--submit-bar-tip-line-height,1.5);background-color:#fff7cc;background-color:var(--submit-bar-tip-background-color,#fff7cc)}.van-submit-bar__tip:empty{display:none}.van-submit-bar__tip-icon{width:12px;height:12px;margin-right:4px;vertical-align:middle;font-size:12px;font-size:var(--submit-bar-tip-icon-size,12px);min-width:18px;min-width:calc(var(--submit-bar-tip-icon-size, 12px)*1.5)}.van-submit-bar__tip-text{display:inline;vertical-align:middle}.van-submit-bar__bar{display:-webkit-flex;display:flex;-webkit-align-items:center;align-items:center;-webkit-justify-content:flex-end;justify-content:flex-end;height:50px;height:var(--submit-bar-height,50px);font-size:14px;font-size:var(--submit-bar-text-font-size,14px);background-color:#fff;background-color:var(--submit-bar-background-color,#fff)}.van-submit-bar__bar--safe{padding-bottom:env(safe-area-inset-bottom)}.van-submit-bar__text{-webkit-flex:1;flex:1;text-align:right;color:#323233;color:var(--submit-bar-text-color,#323233);padding-right:12px;padding-right:var(--padding-sm,12px);font-weight:500;font-weight:var(--font-weight-bold,500)}.van-submit-bar__price{color:#ee0a24;color:var(--submit-bar-price-color,#ee0a24);font-size:18px;font-size:var(--submit-bar-price-font-size,18px)}.van-submit-bar__currency{font-size:14px;font-size:var(--submit-bar-currency-font-size,14px)}.van-submit-bar__suffix-label{margin-left:5px}.van-submit-bar__button{width:110px;width:var(--submit-bar-button-width,110px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/swipe-cell/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/swipe-cell/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { touch } from '../mixins/touch';\nimport { range } from '../common/utils';\nconst THRESHOLD = 0.3;\nlet ARRAY = [];\nVantComponent({\n    props: {\n        disabled: Boolean,\n        leftWidth: {\n            type: Number,\n            value: 0\n        },\n        rightWidth: {\n            type: Number,\n            value: 0\n        },\n        asyncClose: Boolean,\n        name: {\n            type: [Number, String],\n            value: ''\n        }\n    },\n    mixins: [touch],\n    data: {\n        catchMove: false\n    },\n    created() {\n        this.offset = 0;\n        ARRAY.push(this);\n    },\n    destroyed() {\n        ARRAY = ARRAY.filter(item => item !== this);\n    },\n    methods: {\n        open(position) {\n            const { leftWidth, rightWidth } = this.data;\n            const offset = position === 'left' ? leftWidth : -rightWidth;\n            this.swipeMove(offset);\n            this.$emit('open', {\n                position,\n                name: this.data.name\n            });\n        },\n        close() {\n            this.swipeMove(0);\n        },\n        swipeMove(offset = 0) {\n            this.offset = range(offset, -this.data.rightWidth, this.data.leftWidth);\n            const transform = `translate3d(${this.offset}px, 0, 0)`;\n            const transition = this.dragging\n                ? 'none'\n                : 'transform .6s cubic-bezier(0.18, 0.89, 0.32, 1)';\n            this.setData({\n                wrapperStyle: `\n        -webkit-transform: ${transform};\n        -webkit-transition: ${transition};\n        transform: ${transform};\n        transition: ${transition};\n      `\n            });\n        },\n        swipeLeaveTransition() {\n            const { leftWidth, rightWidth } = this.data;\n            const { offset } = this;\n            if (rightWidth > 0 && -offset > rightWidth * THRESHOLD) {\n                this.open('right');\n            }\n            else if (leftWidth > 0 && offset > leftWidth * THRESHOLD) {\n                this.open('left');\n            }\n            else {\n                this.swipeMove(0);\n            }\n            this.setData({ catchMove: false });\n        },\n        startDrag(event) {\n            if (this.data.disabled) {\n                return;\n            }\n            this.startOffset = this.offset;\n            this.touchStart(event);\n        },\n        noop() { },\n        onDrag(event) {\n            if (this.data.disabled) {\n                return;\n            }\n            this.touchMove(event);\n            if (this.direction !== 'horizontal') {\n                return;\n            }\n            this.dragging = true;\n            ARRAY.filter(item => item !== this).forEach(item => item.close());\n            this.setData({ catchMove: true });\n            this.swipeMove(this.startOffset + this.deltaX);\n        },\n        endDrag() {\n            if (this.data.disabled) {\n                return;\n            }\n            this.dragging = false;\n            this.swipeLeaveTransition();\n        },\n        onClick(event) {\n            const { key: position = 'outside' } = event.currentTarget.dataset;\n            this.$emit('click', position);\n            if (!this.offset) {\n                return;\n            }\n            if (this.data.asyncClose) {\n                this.$emit('close', {\n                    position,\n                    instance: this,\n                    name: this.data.name\n                });\n            }\n            else {\n                this.swipeMove(0);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/swipe-cell/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/swipe-cell/index.wxml",
    "content": "<view\n  class=\"van-swipe-cell\"\n  data-key=\"cell\"\n  catchtap=\"onClick\"\n  bindtouchstart=\"startDrag\"\n  catchtouchmove=\"{{ catchMove ? 'noop' : '' }}\"\n  capture-bind:touchmove=\"onDrag\"\n  bindtouchend=\"endDrag\"\n  bindtouchcancel=\"endDrag\"\n>\n  <view style=\"{{ wrapperStyle }}\">\n    <view wx:if=\"{{ leftWidth }}\" class=\"van-swipe-cell__left\" data-key=\"left\" catch:tap=\"onClick\">\n      <slot name=\"left\" />\n    </view>\n    <slot />\n    <view wx:if=\"{{ rightWidth }}\" class=\"van-swipe-cell__right\" data-key=\"right\" catch:tap=\"onClick\">\n      <slot name=\"right\" />\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/swipe-cell/index.wxss",
    "content": "@import '../common/index.wxss';.van-swipe-cell{position:relative;overflow:hidden}.van-swipe-cell__left,.van-swipe-cell__right{position:absolute;top:0;height:100%}.van-swipe-cell__left{left:0;-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.van-swipe-cell__right{right:0;-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/switch/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/switch/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { BLUE, GRAY_DARK } from '../common/color';\nVantComponent({\n    field: true,\n    classes: ['node-class'],\n    props: {\n        checked: null,\n        loading: Boolean,\n        disabled: Boolean,\n        activeColor: String,\n        inactiveColor: String,\n        size: {\n            type: String,\n            value: '30px'\n        },\n        activeValue: {\n            type: null,\n            value: true\n        },\n        inactiveValue: {\n            type: null,\n            value: false\n        }\n    },\n    watch: {\n        checked(value) {\n            const loadingColor = this.getLoadingColor(value);\n            this.setData({ value, loadingColor });\n        }\n    },\n    created() {\n        const { checked: value } = this.data;\n        const loadingColor = this.getLoadingColor(value);\n        this.setData({ value, loadingColor });\n    },\n    methods: {\n        getLoadingColor(checked) {\n            const { activeColor, inactiveColor } = this.data;\n            return checked ? activeColor || BLUE : inactiveColor || GRAY_DARK;\n        },\n        onClick() {\n            const { activeValue, inactiveValue } = this.data;\n            if (!this.data.disabled && !this.data.loading) {\n                const checked = this.data.checked === activeValue;\n                const value = checked ? inactiveValue : activeValue;\n                this.$emit('input', value);\n                this.$emit('change', value);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/switch/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-loading\": \"../loading/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/switch/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('switch', { on: value === activeValue, disabled }) }}\"\n  style=\"font-size: {{ size }}; {{ (checked ? activeColor : inactiveColor) ? 'background-color: ' + (checked ? activeColor : inactiveColor ) : '' }}\"\n  bind:tap=\"onClick\"\n>\n  <view class=\"van-switch__node node-class\">\n    <van-loading wx:if=\"{{ loading }}\" color=\"{{ loadingColor }}\" custom-class=\"van-switch__loading\" />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/switch/index.wxss",
    "content": "@import '../common/index.wxss';.van-switch{position:relative;display:inline-block;box-sizing:initial;width:2em;width:var(--switch-width,2em);height:1em;height:var(--switch-height,1em);background-color:#fff;background-color:var(--switch-background-color,#fff);border:1px solid rgba(0,0,0,.1);border:var(--switch-border,1px solid rgba(0,0,0,.1));border-radius:1em;border-radius:var(--switch-node-size,1em);transition:background-color .3s;transition:background-color var(--switch-transition-duration,.3s)}.van-switch__node{position:absolute;top:0;left:0;border-radius:100%;z-index:1;z-index:var(--switch-node-z-index,1);width:1em;width:var(--switch-node-size,1em);height:1em;height:var(--switch-node-size,1em);background-color:#fff;background-color:var(--switch-node-background-color,#fff);box-shadow:0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05);box-shadow:var(--switch-node-box-shadow,0 3px 1px 0 rgba(0,0,0,.05),0 2px 2px 0 rgba(0,0,0,.1),0 3px 3px 0 rgba(0,0,0,.05));transition:-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:transform .3s cubic-bezier(.3,1.05,.4,1.05),-webkit-transform .3s cubic-bezier(.3,1.05,.4,1.05);transition:-webkit-transform var(--switch-transition-duration,.3s) cubic-bezier(.3,1.05,.4,1.05);transition:transform var(--switch-transition-duration,.3s) cubic-bezier(.3,1.05,.4,1.05);transition:transform var(--switch-transition-duration,.3s) cubic-bezier(.3,1.05,.4,1.05),-webkit-transform var(--switch-transition-duration,.3s) cubic-bezier(.3,1.05,.4,1.05)}.van-switch__loading{position:absolute!important;top:25%;left:25%;width:50%;height:50%}.van-switch--on{background-color:#1989fa;background-color:var(--switch-on-background-color,#1989fa)}.van-switch--on .van-switch__node{-webkit-transform:translateX(1em);transform:translateX(1em);-webkit-transform:translateX(calc(var(--switch-width, 2em) - var(--switch-node-size, 1em)));transform:translateX(calc(var(--switch-width, 2em) - var(--switch-node-size, 1em)))}.van-switch--disabled{opacity:.4;opacity:var(--switch-disabled-opacity,.4)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tab/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tab/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'tabs',\n        type: 'ancestor',\n        linked(target) {\n            this.parent = target;\n        },\n        unlinked() {\n            this.parent = null;\n        }\n    },\n    props: {\n        dot: Boolean,\n        info: null,\n        title: String,\n        disabled: Boolean,\n        titleStyle: String,\n        name: {\n            type: [Number, String],\n            value: '',\n        }\n    },\n    data: {\n        active: false\n    },\n    watch: {\n        title: 'update',\n        disabled: 'update',\n        dot: 'update',\n        info: 'update',\n        titleStyle: 'update'\n    },\n    methods: {\n        getComputedName() {\n            if (this.data.name !== '') {\n                return this.data.name;\n            }\n            return this.index;\n        },\n        updateRender(active, parent) {\n            const { data: parentData } = parent;\n            this.inited = this.inited || active;\n            this.setData({\n                active,\n                shouldRender: this.inited || !parentData.lazyRender,\n                shouldShow: active || parentData.animated\n            });\n        },\n        update() {\n            if (this.parent) {\n                this.parent.updateTabs();\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tab/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tab/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('tab__pane', { active, inactive: !active }) }}\"\n  style=\"{{ shouldShow ? '' : 'display: none;' }}\"\n>\n  <slot wx:if=\"{{ shouldRender }}\" />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tab/index.wxss",
    "content": "@import '../common/index.wxss';:host{-webkit-flex-shrink:0;flex-shrink:0;width:100%}.van-tab__pane,:host{box-sizing:border-box}.van-tab__pane{overflow-y:auto}.van-tab__pane--active{height:auto}.van-tab__pane--inactive{height:0;overflow:visible}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    relation: {\n        name: 'tabbar-item',\n        type: 'descendant',\n        linked(target) {\n            this.children.push(target);\n            target.parent = this;\n            target.updateFromParent();\n        },\n        unlinked(target) {\n            this.children = this.children.filter((item) => item !== target);\n            this.updateChildren();\n        }\n    },\n    props: {\n        active: {\n            type: null,\n            observer: 'updateChildren'\n        },\n        activeColor: {\n            type: String,\n            observer: 'updateChildren'\n        },\n        inactiveColor: {\n            type: String,\n            observer: 'updateChildren'\n        },\n        fixed: {\n            type: Boolean,\n            value: true\n        },\n        border: {\n            type: Boolean,\n            value: true\n        },\n        zIndex: {\n            type: Number,\n            value: 1\n        },\n        safeAreaInsetBottom: {\n            type: Boolean,\n            value: true\n        }\n    },\n    beforeCreate() {\n        this.children = [];\n    },\n    methods: {\n        updateChildren() {\n            const { children } = this;\n            if (!Array.isArray(children) || !children.length) {\n                return Promise.resolve();\n            }\n            return Promise.all(children.map((child) => child.updateFromParent()));\n        },\n        onChange(child) {\n            const index = this.children.indexOf(child);\n            const active = child.data.name || index;\n            if (active !== this.data.active) {\n                this.$emit('change', active);\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ border ? 'van-hairline--top-bottom' : '' }} {{ utils.bem('tabbar', { fixed, safe: safeAreaInsetBottom }) }}\"\n  style=\"{{ zIndex ? 'z-index: ' + zIndex : '' }}\"\n>\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar/index.wxss",
    "content": "@import '../common/index.wxss';.van-tabbar{display:-webkit-flex;display:flex;width:100%;height:50px;height:var(--tabbar-height,50px);background-color:#fff;background-color:var(--tabbar-background-color,#fff)}.van-tabbar--fixed{position:fixed;bottom:0;left:0}.van-tabbar--safe{padding-bottom:env(safe-area-inset-bottom)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar-item/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar-item/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        info: null,\n        name: null,\n        icon: String,\n        dot: Boolean\n    },\n    relation: {\n        name: 'tabbar',\n        type: 'ancestor'\n    },\n    data: {\n        active: false\n    },\n    methods: {\n        onClick() {\n            if (this.parent) {\n                this.parent.onChange(this);\n            }\n            this.$emit('click');\n        },\n        updateFromParent() {\n            const { parent } = this;\n            if (!parent) {\n                return;\n            }\n            const index = parent.children.indexOf(this);\n            const parentData = parent.data;\n            const { data } = this;\n            const active = (data.name || index) === parentData.active;\n            const patch = {};\n            if (active !== data.active) {\n                patch.active = active;\n            }\n            if (parentData.activeColor !== data.activeColor) {\n                patch.activeColor = parentData.activeColor;\n            }\n            if (parentData.inactiveColor !== data.inactiveColor) {\n                patch.inactiveColor = parentData.inactiveColor;\n            }\n            return Object.keys(patch).length > 0\n                ? this.set(patch)\n                : Promise.resolve();\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar-item/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-info\": \"../info/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar-item/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"{{ utils.bem('tabbar-item', { active }) }} custom-class\"\n  style=\"color: {{ active ? activeColor : inactiveColor }}\"\n  bind:tap=\"onClick\"\n>\n  <view class=\"van-tabbar-item__icon\">\n    <van-icon\n      wx:if=\"{{ icon }}\"\n      name=\"{{ icon }}\"\n      custom-class=\"van-tabbar-item__icon__inner\"\n    />\n    <block wx:else>\n      <slot\n        wx:if=\"{{ active }}\"\n        name=\"icon-active\"\n      />\n      <slot wx:else name=\"icon\" />\n    </block>\n    <van-info\n      dot=\"{{ dot }}\"\n      info=\"{{ info }}\"\n      custom-class=\"van-tabbar-item__info\"\n    />\n  </view>\n  <view class=\"van-tabbar-item__text\">\n    <slot />\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabbar-item/index.wxss",
    "content": "@import '../common/index.wxss';:host{-webkit-flex:1;flex:1}.van-tabbar-item{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;height:100%;color:#646566;color:var(--tabbar-item-text-color,#646566);font-size:12px;font-size:var(--tabbar-item-font-size,12px);line-height:1;line-height:var(--tabbar-item-line-height,1)}.van-tabbar-item__icon{position:relative;margin-bottom:5px;margin-bottom:var(--tabbar-item-margin-bottom,5px);font-size:18px;font-size:var(--tabbar-item-icon-size,18px)}.van-tabbar-item__icon__inner{display:block;min-width:1em}.van-tabbar-item--active{color:#1989fa;color:var(--tabbar-item-active-color,#1989fa)}.van-tabbar-item__info{margin-top:2px}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { touch } from '../mixins/touch';\nimport { isDef, addUnit } from '../common/utils';\nVantComponent({\n    mixins: [touch],\n    classes: ['nav-class', 'tab-class', 'tab-active-class', 'line-class'],\n    relation: {\n        name: 'tab',\n        type: 'descendant',\n        linked(target) {\n            target.index = this.children.length;\n            this.children.push(target);\n            this.updateTabs();\n        },\n        unlinked(target) {\n            this.children = this.children\n                .filter((child) => child !== target)\n                .map((child, index) => {\n                child.index = index;\n                return child;\n            });\n            this.updateTabs();\n        }\n    },\n    props: {\n        color: {\n            type: String,\n            observer: 'setLine'\n        },\n        sticky: Boolean,\n        animated: {\n            type: Boolean,\n            observer() {\n                this.setTrack();\n                this.children.forEach((child) => child.updateRender());\n            }\n        },\n        swipeable: Boolean,\n        lineWidth: {\n            type: [String, Number],\n            value: -1,\n            observer: 'setLine'\n        },\n        lineHeight: {\n            type: [String, Number],\n            value: -1,\n            observer: 'setLine'\n        },\n        titleActiveColor: String,\n        titleInactiveColor: String,\n        active: {\n            type: [String, Number],\n            value: 0,\n            observer(name) {\n                if (name !== this.getCurrentName()) {\n                    this.setCurrentIndexByName(name);\n                }\n            }\n        },\n        type: {\n            type: String,\n            value: 'line'\n        },\n        border: {\n            type: Boolean,\n            value: true\n        },\n        ellipsis: {\n            type: Boolean,\n            value: true\n        },\n        duration: {\n            type: Number,\n            value: 0.3\n        },\n        zIndex: {\n            type: Number,\n            value: 1\n        },\n        swipeThreshold: {\n            type: Number,\n            value: 4,\n            observer(value) {\n                this.setData({\n                    scrollable: this.children.length > value || !this.data.ellipsis\n                });\n            }\n        },\n        offsetTop: {\n            type: Number,\n            value: 0\n        },\n        lazyRender: {\n            type: Boolean,\n            value: true\n        },\n    },\n    data: {\n        tabs: [],\n        lineStyle: '',\n        scrollLeft: 0,\n        scrollable: false,\n        trackStyle: '',\n        currentIndex: null,\n        container: null\n    },\n    beforeCreate() {\n        this.children = [];\n    },\n    mounted() {\n        this.setData({\n            container: () => this.createSelectorQuery().select('.van-tabs')\n        });\n        this.setLine(true);\n        this.setTrack();\n        this.scrollIntoView();\n    },\n    methods: {\n        updateTabs() {\n            const { children = [], data } = this;\n            this.setData({\n                tabs: children.map((child) => child.data),\n                scrollable: this.children.length > data.swipeThreshold || !data.ellipsis\n            });\n            this.setCurrentIndexByName(this.getCurrentName() || data.active);\n        },\n        trigger(eventName) {\n            const { currentIndex } = this.data;\n            const child = this.children[currentIndex];\n            if (!isDef(child)) {\n                return;\n            }\n            this.$emit(eventName, {\n                index: currentIndex,\n                name: child.getComputedName(),\n                title: child.data.title\n            });\n        },\n        onTap(event) {\n            const { index } = event.currentTarget.dataset;\n            const child = this.children[index];\n            if (child.data.disabled) {\n                this.trigger('disabled');\n            }\n            else {\n                this.setCurrentIndex(index);\n                wx.nextTick(() => {\n                    this.trigger('click');\n                });\n            }\n        },\n        // correct the index of active tab\n        setCurrentIndexByName(name) {\n            const { children = [] } = this;\n            const matched = children.filter((child) => child.getComputedName() === name);\n            if (matched.length) {\n                this.setCurrentIndex(matched[0].index);\n            }\n        },\n        setCurrentIndex(currentIndex) {\n            const { data, children = [] } = this;\n            if (!isDef(currentIndex) ||\n                currentIndex >= children.length ||\n                currentIndex < 0) {\n                return;\n            }\n            children.forEach((item, index) => {\n                const active = index === currentIndex;\n                if (active !== item.data.active || !item.inited) {\n                    item.updateRender(active, this);\n                }\n            });\n            if (currentIndex === data.currentIndex) {\n                return;\n            }\n            const shouldEmitChange = data.currentIndex !== null;\n            this.setData({ currentIndex });\n            wx.nextTick(() => {\n                this.setLine();\n                this.setTrack();\n                this.scrollIntoView();\n                this.trigger('input');\n                if (shouldEmitChange) {\n                    this.trigger('change');\n                }\n            });\n        },\n        getCurrentName() {\n            const activeTab = this.children[this.data.currentIndex];\n            if (activeTab) {\n                return activeTab.getComputedName();\n            }\n        },\n        setLine(skipTransition) {\n            if (this.data.type !== 'line') {\n                return;\n            }\n            const { color, duration, currentIndex, lineWidth, lineHeight } = this.data;\n            this.getRect('.van-tab', true).then((rects = []) => {\n                const rect = rects[currentIndex];\n                if (rect == null) {\n                    return;\n                }\n                const width = lineWidth !== -1 ? lineWidth : rect.width / 2;\n                const height = lineHeight !== -1\n                    ? `height: ${addUnit(lineHeight)}; border-radius: ${addUnit(lineHeight)};`\n                    : '';\n                let left = rects\n                    .slice(0, currentIndex)\n                    .reduce((prev, curr) => prev + curr.width, 0);\n                left += (rect.width - width) / 2;\n                const transition = skipTransition\n                    ? ''\n                    : `transition-duration: ${duration}s; -webkit-transition-duration: ${duration}s;`;\n                this.setData({\n                    lineStyle: `\n            ${height}\n            width: ${addUnit(width)};\n            background-color: ${color};\n            -webkit-transform: translateX(${left}px);\n            transform: translateX(${left}px);\n            ${transition}\n          `\n                });\n            });\n        },\n        setTrack() {\n            const { animated, duration, currentIndex } = this.data;\n            if (!animated) {\n                return;\n            }\n            this.setData({\n                trackStyle: `\n          transform: translate3d(${-100 * currentIndex}%, 0, 0);\n          -webkit-transition-duration: ${duration}s;\n          transition-duration: ${duration}s;\n        `\n            });\n        },\n        // scroll active tab into view\n        scrollIntoView() {\n            const { currentIndex, scrollable } = this.data;\n            if (!scrollable) {\n                return;\n            }\n            Promise.all([\n                this.getRect('.van-tab', true),\n                this.getRect('.van-tabs__nav')\n            ]).then(([tabRects, navRect]) => {\n                const tabRect = tabRects[currentIndex];\n                const offsetLeft = tabRects\n                    .slice(0, currentIndex)\n                    .reduce((prev, curr) => prev + curr.width, 0);\n                this.setData({\n                    scrollLeft: offsetLeft - (navRect.width - tabRect.width) / 2\n                });\n            });\n        },\n        onTouchScroll(event) {\n            this.$emit('scroll', event.detail);\n        },\n        onTouchStart(event) {\n            if (!this.data.swipeable)\n                return;\n            this.touchStart(event);\n        },\n        onTouchMove(event) {\n            if (!this.data.swipeable)\n                return;\n            this.touchMove(event);\n        },\n        // watch swipe touch end\n        onTouchEnd() {\n            if (!this.data.swipeable)\n                return;\n            const { tabs, currentIndex } = this.data;\n            const { direction, deltaX, offsetX } = this;\n            const minSwipeDistance = 50;\n            if (direction === 'horizontal' && offsetX >= minSwipeDistance) {\n                if (deltaX > 0 && currentIndex !== 0) {\n                    this.setCurrentIndex(currentIndex - 1);\n                }\n                else if (deltaX < 0 && currentIndex !== tabs.length - 1) {\n                    this.setCurrentIndex(currentIndex + 1);\n                }\n            }\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-info\": \"../info/index\",\n    \"van-sticky\": \"../sticky/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"getters\" />\n\n<view class=\"custom-class {{ utils.bem('tabs', [type]) }}\">\n  <van-sticky\n    disabled=\"{{ !sticky }}\"\n    z-index=\"{{ zIndex }}\"\n    offset-top=\"{{ offsetTop }}\"\n    container=\"{{ container }}\"\n    bind:scroll=\"onTouchScroll\"\n  >\n    <view class=\"{{ utils.bem('tabs__wrap', { scrollable }) }} {{ type === 'line' && border ? 'van-hairline--top-bottom' : '' }}\">\n      <slot name=\"nav-left\" />\n\n      <scroll-view\n        scroll-x=\"{{ scrollable }}\"\n        scroll-with-animation\n        scroll-left=\"{{ scrollLeft }}\"\n        class=\"{{ utils.bem('tabs__scroll', [type]) }}\"\n        style=\"{{ color ? 'border-color: ' + color : '' }}\"\n      >\n        <view class=\"{{ utils.bem('tabs__nav', [type]) }} nav-class\">\n          <view wx:if=\"{{ type === 'line' }}\" class=\"van-tabs__line\" style=\"{{ lineStyle }}\" />\n          <view\n            wx:for=\"{{ tabs }}\"\n            wx:key=\"index\"\n            data-index=\"{{ index }}\"\n            class=\"{{ getters.tabClass(index === currentIndex, ellipsis) }} {{ utils.bem('tab', { active: index === currentIndex, disabled: item.disabled, complete: !ellipsis }) }}\"\n            style=\"{{ getters.tabStyle(index === currentIndex, ellipsis, color, type, item.disabled, titleActiveColor, titleInactiveColor, swipeThreshold, scrollable) }}\"\n            bind:tap=\"onTap\"\n          >\n            <view class=\"{{ ellipsis ? 'van-ellipsis' : '' }}\" style=\"{{ item.titleStyle }}\">\n              {{ item.title }}\n              <van-info\n                wx:if=\"{{ item.info !== null || item.dot }}\"\n                info=\"{{ item.info }}\"\n                dot=\"{{ item.dot }}\"\n                custom-class=\"van-tab__title__info\"\n              />\n            </view>\n          </view>\n        </view>\n      </scroll-view>\n\n      <slot name=\"nav-right\" />\n    </view>\n  </van-sticky>\n\n  <view\n    class=\"van-tabs__content\"\n    bind:touchstart=\"onTouchStart\"\n    bind:touchmove=\"onTouchMove\"\n    bind:touchend=\"onTouchEnd\"\n    bind:touchcancel=\"onTouchEnd\"\n  >\n    <view class=\"{{ utils.bem('tabs__track', [{ animated }]) }} van-tabs__track\" style=\"{{ trackStyle }}\">\n      <slot />\n    </view>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.wxs",
    "content": "/* eslint-disable */\nfunction tabClass(active, ellipsis) {\n  var classes = ['tab-class'];\n\n  if (active) {\n    classes.push('tab-active-class');\n  }\n\n  if (ellipsis) {\n    classes.push('van-ellipsis');\n  }\n\n  return classes.join(' ');\n}\n\nfunction tabStyle(\n  active,\n  ellipsis,\n  color,\n  type,\n  disabled,\n  activeColor,\n  inactiveColor,\n  swipeThreshold,\n  scrollable\n) {\n  var styles = [];\n  var isCard = type === 'card';\n  // card theme color\n  if (color && isCard) {\n    styles.push('border-color:' + color);\n\n    if (!disabled) {\n      if (active) {\n        styles.push('background-color:' + color);\n      } else {\n        styles.push('color:' + color);\n      }\n    }\n  }\n\n  var titleColor = active ? activeColor : inactiveColor;\n  if (titleColor) {\n    styles.push('color:' + titleColor);\n  }\n\n  if (scrollable && ellipsis) {\n    styles.push('flex-basis:' + 88 / swipeThreshold + '%');\n  }\n\n  return styles.join(';');\n}\n\nmodule.exports.tabClass = tabClass;\nmodule.exports.tabStyle = tabStyle;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tabs/index.wxss",
    "content": "@import '../common/index.wxss';.van-tabs{position:relative;-webkit-tap-highlight-color:transparent}.van-tabs__wrap{display:-webkit-flex;display:flex;overflow:hidden}.van-tabs__wrap--scrollable .van-tab{-webkit-flex:0 0 22%;flex:0 0 22%}.van-tabs__scroll{background-color:#fff;background-color:var(--tabs-nav-background-color,#fff)}.van-tabs__scroll--line{box-sizing:initial;height:calc(100% + 15px)}.van-tabs__scroll--card{margin:0 16px;margin:0 var(--padding-md,16px)}.van-tabs__nav{position:relative;display:-webkit-flex;display:flex;-webkit-user-select:none;user-select:none}.van-tabs__nav--card{box-sizing:border-box;height:30px;height:var(--tabs-card-height,30px);border:1px solid #ee0a24;border:var(--border-width-base,1px) solid var(--tabs-default-color,#ee0a24);border-radius:2px;border-radius:var(--border-radius-sm,2px)}.van-tabs__nav--card .van-tab{color:#ee0a24;color:var(--tabs-default-color,#ee0a24);line-height:28px;line-height:calc(var(--tabs-card-height, 30px) - 2*var(--border-width-base, 1px));border-right:1px solid #ee0a24;border-right:var(--border-width-base,1px) solid var(--tabs-default-color,#ee0a24)}.van-tabs__nav--card .van-tab:last-child{border-right:none}.van-tabs__nav--card .van-tab.van-tab--active{color:#fff;color:var(--white,#fff);background-color:#ee0a24;background-color:var(--tabs-default-color,#ee0a24)}.van-tabs__nav--card .van-tab--disabled{color:#c8c9cc;color:var(--tab-disabled-text-color,#c8c9cc)}.van-tabs__line{position:absolute;bottom:0;left:0;z-index:1;height:3px;height:var(--tabs-bottom-bar-height,3px);border-radius:3px;border-radius:var(--tabs-bottom-bar-height,3px);background-color:#ee0a24;background-color:var(--tabs-bottom-bar-color,#ee0a24)}.van-tabs__track{position:relative;width:100%;height:100%}.van-tabs__track--animated{display:-webkit-flex;display:flex;transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-tabs__content{overflow:hidden}.van-tabs--line .van-tabs__wrap{height:44px;height:var(--tabs-line-height,44px)}.van-tabs--card .van-tabs__wrap{height:30px;height:var(--tabs-card-height,30px)}.van-tab{position:relative;-webkit-flex:1;flex:1;box-sizing:border-box;min-width:0;padding:0 5px;text-align:center;cursor:pointer;color:#646566;color:var(--tab-text-color,#646566);font-size:14px;font-size:var(--tab-font-size,14px);line-height:44px;line-height:var(--tabs-line-height,44px)}.van-tab--active{font-weight:500;font-weight:var(--font-weight-bold,500);color:#323233;color:var(--tab-active-text-color,#323233)}.van-tab--disabled{color:#c8c9cc;color:var(--tab-disabled-text-color,#c8c9cc)}.van-tab--complete{-webkit-flex:1 0 auto!important;flex:1 0 auto!important}.van-tab__title__info{position:relative!important;top:-1px!important;display:inline-block;-webkit-transform:translateX(0)!important;transform:translateX(0)!important}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tag/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tag/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        size: String,\n        mark: Boolean,\n        color: String,\n        plain: Boolean,\n        round: Boolean,\n        textColor: String,\n        type: {\n            type: String,\n            value: 'default'\n        },\n        closeable: Boolean\n    },\n    methods: {\n        onClose() {\n            this.$emit('close');\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tag/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tag/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view\n  class=\"custom-class {{ utils.bem('tag', [type, size, { mark, plain, round }]) }} {{ plain ? 'van-hairline--surround' : '' }}\"\n  style=\"{{ color && !plain ? 'background-color: ' + color + ';' : '' }}{{ textColor || (color && plain) ? 'color: ' + (textColor || color) : '' }}\"\n>\n  <slot />\n  <van-icon\n    wx:if=\"{{ closeable }}\"\n    name=\"cross\"\n    custom-class=\"van-tag__close\"\n    bind:click=\"onClose\"\n  />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tag/index.wxss",
    "content": "@import '../common/index.wxss';.van-tag{display:-webkit-inline-flex;display:inline-flex;-webkit-align-items:center;align-items:center;line-height:normal;padding:.2em .5em;padding:var(--tag-padding,.2em .5em);color:#fff;color:var(--tag-text-color,#fff);font-size:10px;font-size:var(--tag-font-size,10px);border-radius:.2em;border-radius:var(--tag-border-radius,.2em)}.van-tag:after{border-color:currentColor;border-radius:.2em * 2;border-radius:var(--tag-border-radius,.2em) * 2}.van-tag--default{background-color:#969799;background-color:var(--tag-default-color,#969799)}.van-tag--default.van-tag--plain{color:#969799;color:var(--tag-default-color,#969799)}.van-tag--danger{background-color:#ee0a24;background-color:var(--tag-dander-color,#ee0a24)}.van-tag--danger.van-tag--plain{color:#ee0a24;color:var(--tag-dander-color,#ee0a24)}.van-tag--primary{background-color:#1989fa;background-color:var(--tag-primary-color,#1989fa)}.van-tag--primary.van-tag--plain{color:#1989fa;color:var(--tag-primary-color,#1989fa)}.van-tag--success{background-color:#07c160;background-color:var(--tag-success-color,#07c160)}.van-tag--success.van-tag--plain{color:#07c160;color:var(--tag-success-color,#07c160)}.van-tag--warning{background-color:#ff976a;background-color:var(--tag-warning-color,#ff976a)}.van-tag--warning.van-tag--plain{color:#ff976a;color:var(--tag-warning-color,#ff976a)}.van-tag--plain{background-color:#fff;background-color:var(--tag-plain-background-color,#fff)}.van-tag--mark{padding-right:.7em}.van-tag--mark,.van-tag--mark:after{border-radius:0 999px 999px 0;border-radius:0 var(--tag-round-border-radius,999px) var(--tag-round-border-radius,999px) 0}.van-tag--round,.van-tag--round:after{border-radius:999px;border-radius:var(--tag-round-border-radius,999px)}.van-tag--medium{font-size:12px;font-size:var(--tag-medium-font-size,12px)}.van-tag--large{font-size:14px;font-size:var(--tag-large-font-size,14px)}.van-tag__close{margin-left:2px}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/index.js",
    "content": "import { VantComponent } from '../common/component';\nVantComponent({\n    props: {\n        show: Boolean,\n        mask: Boolean,\n        message: String,\n        forbidClick: Boolean,\n        zIndex: {\n            type: Number,\n            value: 1000\n        },\n        type: {\n            type: String,\n            value: 'text'\n        },\n        loadingType: {\n            type: String,\n            value: 'circular'\n        },\n        position: {\n            type: String,\n            value: 'middle'\n        }\n    },\n    methods: {\n        // for prevent touchmove\n        noop() { }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-loading\": \"../loading/index\",\n    \"van-overlay\": \"../overlay/index\",\n    \"van-transition\": \"../transition/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/index.wxml",
    "content": "<van-overlay\n  wx:if=\"{{ mask || forbidClick }}\"\n  show=\"{{ show }}\"\n  z-index=\"{{ zIndex }}\"\n  custom-style=\"{{ mask ? '' : 'background-color: transparent;' }}\"\n/>\n<van-transition\n  show=\"{{ show }}\"\n  custom-style=\"z-index: {{ zIndex }}\"\n  custom-class=\"van-toast__container\"\n>\n  <view\n    class=\"van-toast van-toast--{{ type === 'text' ? 'text' : 'icon' }} van-toast--{{ position }}\"\n    catch:touchmove=\"noop\"\n  >\n    <!-- text only -->\n    <text wx:if=\"{{ type === 'text' }}\">{{ message }}</text>\n\n    <!-- with icon -->\n    <block wx:else>\n      <van-loading\n        wx:if=\"{{ type === 'loading' }}\"\n        color=\"white\"\n        type=\"{{ loadingType }}\"\n        custom-class=\"van-toast__loading\"\n      />\n      <van-icon wx:else class=\"van-toast__icon\" name=\"{{ type }}\" />\n      <text wx:if=\"{{ message }}\" class=\"van-toast__text\">{{ message }}</text>\n    </block>\n\n    <slot />\n  </view>\n</van-transition>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/index.wxss",
    "content": "@import '../common/index.wxss';.van-toast{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:initial;color:#fff;color:var(--toast-text-color,#fff);font-size:14px;font-size:var(--toast-font-size,14px);line-height:20px;line-height:var(--toast-line-height,20px);white-space:pre-wrap;word-wrap:break-word;background-color:rgba(50,50,51,.88);background-color:var(--toast-background-color,rgba(50,50,51,.88));border-radius:4px;border-radius:var(--toast-border-radius,4px)}.van-toast__container{position:fixed;top:50%;left:50%;width:-webkit-fit-content;width:fit-content;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);max-width:70%;max-width:var(--toast-max-width,70%)}.van-toast--text{min-width:96px;min-width:var(--toast-text-min-width,96px);padding:8px 12px;padding:var(--toast-text-padding,8px 12px)}.van-toast--icon{width:90px;width:var(--toast-default-width,90px);min-height:90px;min-height:var(--toast-default-min-height,90px);padding:16px;padding:var(--toast-default-padding,16px)}.van-toast--icon .van-toast__icon{font-size:48px;font-size:var(--toast-icon-size,48px)}.van-toast--icon .van-toast__text{padding-top:8px}.van-toast__loading{margin:10px 0}.van-toast--top{-webkit-transform:translateY(-30vh);transform:translateY(-30vh)}.van-toast--bottom{-webkit-transform:translateY(30vh);transform:translateY(30vh)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/toast.d.ts",
    "content": "/// <reference types=\"miniprogram-api-typings\" />\ndeclare type ToastMessage = string | number;\ninterface ToastOptions {\n    show?: boolean;\n    type?: string;\n    mask?: boolean;\n    zIndex?: number;\n    context?: WechatMiniprogram.Component.TrivialInstance | WechatMiniprogram.Page.TrivialInstance;\n    position?: string;\n    duration?: number;\n    selector?: string;\n    forbidClick?: boolean;\n    loadingType?: string;\n    message?: ToastMessage;\n    onClose?: () => void;\n}\ndeclare function Toast(toastOptions: ToastOptions | ToastMessage): WechatMiniprogram.Component.TrivialInstance;\ndeclare namespace Toast {\n    var loading: (options: string | number | ToastOptions) => WechatMiniprogram.Component.Instance<Record<string, any>, Record<string, any>, Record<string, any>>;\n    var success: (options: string | number | ToastOptions) => WechatMiniprogram.Component.Instance<Record<string, any>, Record<string, any>, Record<string, any>>;\n    var fail: (options: string | number | ToastOptions) => WechatMiniprogram.Component.Instance<Record<string, any>, Record<string, any>, Record<string, any>>;\n    var clear: () => void;\n    var setDefaultOptions: (options: ToastOptions) => void;\n    var resetDefaultOptions: () => void;\n}\nexport default Toast;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/toast/toast.js",
    "content": "import { isObj } from '../common/utils';\nconst defaultOptions = {\n    type: 'text',\n    mask: false,\n    message: '',\n    show: true,\n    zIndex: 1000,\n    duration: 2000,\n    position: 'middle',\n    forbidClick: false,\n    loadingType: 'circular',\n    selector: '#van-toast'\n};\nlet queue = [];\nlet currentOptions = Object.assign({}, defaultOptions);\nfunction parseOptions(message) {\n    return isObj(message) ? message : { message };\n}\nfunction getContext() {\n    const pages = getCurrentPages();\n    return pages[pages.length - 1];\n}\nfunction Toast(toastOptions) {\n    const options = Object.assign(Object.assign({}, currentOptions), parseOptions(toastOptions));\n    const context = options.context || getContext();\n    const toast = context.selectComponent(options.selector);\n    if (!toast) {\n        console.warn('未找到 van-toast 节点，请确认 selector 及 context 是否正确');\n        return;\n    }\n    delete options.context;\n    delete options.selector;\n    toast.clear = () => {\n        toast.setData({ show: false });\n        if (options.onClose) {\n            options.onClose();\n        }\n    };\n    queue.push(toast);\n    toast.setData(options);\n    clearTimeout(toast.timer);\n    if (options.duration > 0) {\n        toast.timer = setTimeout(() => {\n            toast.clear();\n            queue = queue.filter(item => item !== toast);\n        }, options.duration);\n    }\n    return toast;\n}\nconst createMethod = (type) => (options) => Toast(Object.assign({ type }, parseOptions(options)));\nToast.loading = createMethod('loading');\nToast.success = createMethod('success');\nToast.fail = createMethod('fail');\nToast.clear = () => {\n    queue.forEach(toast => {\n        toast.clear();\n    });\n    queue = [];\n};\nToast.setDefaultOptions = (options) => {\n    Object.assign(currentOptions, options);\n};\nToast.resetDefaultOptions = () => {\n    currentOptions = Object.assign({}, defaultOptions);\n};\nexport default Toast;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/transition/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/transition/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { transition } from '../mixins/transition';\nVantComponent({\n    classes: [\n        'enter-class',\n        'enter-active-class',\n        'enter-to-class',\n        'leave-class',\n        'leave-active-class',\n        'leave-to-class'\n    ],\n    mixins: [transition(true)]\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/transition/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/transition/index.wxml",
    "content": "<view\n  wx:if=\"{{ inited }}\"\n  class=\"van-transition custom-class {{ classes }}\"\n  style=\"-webkit-transition-duration:{{ currentDuration }}ms; transition-duration:{{ currentDuration }}ms; {{ display ? '' : 'display: none;' }} {{ customStyle }}\"\n  bind:transitionend=\"onTransitionEnd\"\n>\n  <slot />\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/transition/index.wxss",
    "content": "@import '../common/index.wxss';.van-transition{transition-timing-function:ease}.van-fade-enter-active,.van-fade-leave-active{transition-property:opacity}.van-fade-enter,.van-fade-leave-to{opacity:0}.van-fade-down-enter-active,.van-fade-down-leave-active,.van-fade-left-enter-active,.van-fade-left-leave-active,.van-fade-right-enter-active,.van-fade-right-leave-active,.van-fade-up-enter-active,.van-fade-up-leave-active{transition-property:opacity,-webkit-transform;transition-property:opacity,transform;transition-property:opacity,transform,-webkit-transform}.van-fade-up-enter,.van-fade-up-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0);opacity:0}.van-fade-down-enter,.van-fade-down-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0);opacity:0}.van-fade-left-enter,.van-fade-left-leave-to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.van-fade-right-enter,.van-fade-right-leave-to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.van-slide-down-enter-active,.van-slide-down-leave-active,.van-slide-left-enter-active,.van-slide-left-leave-active,.van-slide-right-enter-active,.van-slide-right-leave-active,.van-slide-up-enter-active,.van-slide-up-leave-active{transition-property:-webkit-transform;transition-property:transform;transition-property:transform,-webkit-transform}.van-slide-up-enter,.van-slide-up-leave-to{-webkit-transform:translate3d(0,100%,0);transform:translate3d(0,100%,0)}.van-slide-down-enter,.van-slide-down-leave-to{-webkit-transform:translate3d(0,-100%,0);transform:translate3d(0,-100%,0)}.van-slide-left-enter,.van-slide-left-leave-to{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0)}.van-slide-right-enter,.van-slide-right-leave-to{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    classes: [\n        'main-item-class',\n        'content-item-class',\n        'main-active-class',\n        'content-active-class',\n        'main-disabled-class',\n        'content-disabled-class'\n    ],\n    props: {\n        items: {\n            type: Array,\n            observer: 'updateSubItems'\n        },\n        activeId: null,\n        mainActiveIndex: {\n            type: Number,\n            value: 0,\n            observer: 'updateSubItems'\n        },\n        height: {\n            type: [Number, String],\n            value: 300,\n            observer: 'updateHeight'\n        },\n        max: {\n            type: Number,\n            value: Infinity\n        }\n    },\n    data: {\n        subItems: []\n    },\n    created() {\n        this.updateHeight();\n    },\n    methods: {\n        // 当一个子项被选择时\n        onSelectItem(event) {\n            const { item } = event.currentTarget.dataset;\n            const isArray = Array.isArray(this.data.activeId);\n            // 判断有没有超出右侧选择的最大数\n            const isOverMax = isArray && this.data.activeId.length >= this.data.max;\n            // 判断该项有没有被选中, 如果有被选中，则忽视是否超出的条件\n            const isSelected = isArray\n                ? this.data.activeId.indexOf(item.id) > -1\n                : this.data.activeId === item.id;\n            if (!item.disabled && (!isOverMax || isSelected)) {\n                this.$emit('click-item', item);\n            }\n        },\n        // 当一个导航被点击时\n        onClickNav(event) {\n            const index = event.detail;\n            const item = this.data.items[index];\n            if (!item.disabled) {\n                this.$emit('click-nav', { index });\n            }\n        },\n        // 更新子项列表\n        updateSubItems() {\n            const { items, mainActiveIndex } = this.data;\n            const { children = [] } = items[mainActiveIndex] || {};\n            return this.set({ subItems: children });\n        },\n        updateHeight() {\n            this.setData({\n                innerHeight: addUnit(this.data.height)\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\",\n    \"van-sidebar\": \"../sidebar/index\",\n    \"van-sidebar-item\": \"../sidebar-item/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n<wxs src=\"./index.wxs\" module=\"wxs\" />\n\n<view\n  class=\"van-tree-select\"\n  style=\"height: {{ innerHeight }}\"\n>\n  <scroll-view scroll-y class=\"van-tree-select__nav\">\n    <van-sidebar active-key=\"{{ mainActiveIndex }}\" bind:change=\"onClickNav\" custom-class=\"van-tree-select__nav__inner\">\n      <van-sidebar-item\n        wx:for=\"{{ items }}\"\n        wx:key=\"index\"\n        custom-class=\"main-item-class\"\n        active-class=\"main-active-class\"\n        disabled-class=\"main-disabled-class\"\n        title=\"{{ item.text }}\"\n        disabled=\"{{ item.disabled }}\"\n      />\n    </van-sidebar>\n  </scroll-view>\n  <scroll-view scroll-y class=\"van-tree-select__content\">\n    <slot name=\"content\" />\n    <view\n      wx:for=\"{{ subItems }}\"\n      wx:key=\"id\"\n      class=\"van-ellipsis content-item-class {{ utils.bem('tree-select__item', { active: wxs.isActive(activeId, item.id), disabled: item.disabled }) }} {{ wxs.isActive(activeId, item.id) ? 'content-active-class' : '' }} {{ item.disabled ? 'content-disabled-class' : '' }}\"\n      data-item=\"{{ item }}\"\n      bind:tap=\"onSelectItem\"\n    >\n      {{ item.text }}\n      <van-icon\n        wx:if=\"{{ wxs.isActive(activeId, item.id) }}\"\n        name=\"checked\"\n        size=\"16px\"\n        class=\"van-tree-select__selected\"\n      />\n    </view>\n  </scroll-view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.wxs",
    "content": "/* eslint-disable */\nvar array = require('../wxs/array.wxs');\n\nfunction isActive (activeList, itemId) {\n  if (array.isArray(activeList)) {\n    return activeList.indexOf(itemId) > -1;\n  }\n\n  return activeList === itemId;\n}\n\nmodule.exports.isActive = isActive;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/tree-select/index.wxss",
    "content": "@import '../common/index.wxss';.van-tree-select{position:relative;display:-webkit-flex;display:flex;-webkit-user-select:none;user-select:none;font-size:14px;font-size:var(--tree-select-font-size,14px)}.van-tree-select__nav{-webkit-flex:1;flex:1;background-color:#fafafa;background-color:var(--tree-select-nav-background-color,#fafafa);--sidebar-padding:12px 8px 12px 12px}.van-tree-select__nav__inner{width:100%!important;height:100%}.van-tree-select__content{-webkit-flex:2;flex:2;background-color:#fff;background-color:var(--tree-select-content-background-color,#fff)}.van-tree-select__item{position:relative;font-weight:700;padding:0 32px 0 16px;padding:0 32px 0 var(--padding-md,16px);line-height:44px;line-height:var(--tree-select-item-height,44px)}.van-tree-select__item--active{color:#ee0a24;color:var(--tree-select-item-active-color,#ee0a24)}.van-tree-select__item--disabled{color:#c8c9cc;color:var(--tree-select-item-disabled-color,#c8c9cc)}.van-tree-select__selected{position:absolute;top:50%;-webkit-transform:translateY(-50%);transform:translateY(-50%);right:16px;right:var(--padding-md,16px)}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/index.d.ts",
    "content": "export {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/index.js",
    "content": "import { VantComponent } from '../common/component';\nimport { isImageFile } from './utils';\nimport { addUnit } from '../common/utils';\nVantComponent({\n    props: {\n        disabled: Boolean,\n        multiple: Boolean,\n        uploadText: String,\n        useSlot: Boolean,\n        useBeforeRead: Boolean,\n        previewSize: {\n            type: null,\n            value: 90,\n            observer: 'setComputedPreviewSize'\n        },\n        name: {\n            type: [Number, String],\n            value: ''\n        },\n        accept: {\n            type: String,\n            value: 'image'\n        },\n        fileList: {\n            type: Array,\n            value: [],\n            observer: 'formatFileList'\n        },\n        maxSize: {\n            type: Number,\n            value: Number.MAX_VALUE\n        },\n        maxCount: {\n            type: Number,\n            value: 100\n        },\n        deletable: {\n            type: Boolean,\n            value: true\n        },\n        previewImage: {\n            type: Boolean,\n            value: true\n        },\n        previewFullImage: {\n            type: Boolean,\n            value: true\n        },\n        imageFit: {\n            type: String,\n            value: 'scaleToFill'\n        }\n    },\n    data: {\n        lists: [],\n        computedPreviewSize: '',\n        isInCount: true\n    },\n    methods: {\n        formatFileList() {\n            const { fileList = [], maxCount } = this.data;\n            const lists = fileList.map(item => (Object.assign(Object.assign({}, item), { isImage: typeof item.isImage === 'undefined' ? isImageFile(item) : item.isImage })));\n            this.setData({ lists, isInCount: lists.length < maxCount });\n        },\n        setComputedPreviewSize(val) {\n            this.setData({\n                computedPreviewSize: addUnit(val)\n            });\n        },\n        startUpload() {\n            if (this.data.disabled)\n                return;\n            const { name = '', capture = ['album', 'camera'], maxCount = 100, multiple = false, maxSize, accept, lists, useBeforeRead = false // 是否定义了 beforeRead\n             } = this.data;\n            let chooseFile = null;\n            const newMaxCount = maxCount - lists.length;\n            // 设置为只选择图片的时候使用 chooseImage 来实现\n            if (accept === 'image') {\n                chooseFile = new Promise((resolve, reject) => {\n                    wx.chooseImage({\n                        count: multiple ? (newMaxCount > 9 ? 9 : newMaxCount) : 1,\n                        sourceType: capture,\n                        success: resolve,\n                        fail: reject\n                    });\n                });\n            }\n            else {\n                chooseFile = new Promise((resolve, reject) => {\n                    wx.chooseMessageFile({\n                        count: multiple ? newMaxCount : 1,\n                        type: 'file',\n                        success: resolve,\n                        fail: reject\n                    });\n                });\n            }\n            chooseFile.then((res) => {\n                const file = multiple ? res.tempFiles : res.tempFiles[0];\n                // 检查文件大小\n                if (file instanceof Array) {\n                    const sizeEnable = file.every(item => item.size <= maxSize);\n                    if (!sizeEnable) {\n                        this.$emit('oversize', { name });\n                        return;\n                    }\n                }\n                else if (file.size > maxSize) {\n                    this.$emit('oversize', { name });\n                    return;\n                }\n                // 触发上传之前的钩子函数\n                if (useBeforeRead) {\n                    this.$emit('before-read', {\n                        file,\n                        name,\n                        callback: (result) => {\n                            if (result) {\n                                // 开始上传\n                                this.$emit('after-read', { file, name });\n                            }\n                        }\n                    });\n                }\n                else {\n                    this.$emit('after-read', { file, name });\n                }\n            });\n        },\n        deleteItem(event) {\n            const { index } = event.currentTarget.dataset;\n            this.$emit('delete', { index, name: this.data.name });\n        },\n        doPreviewImage(event) {\n            if (!this.data.previewFullImage)\n                return;\n            const curUrl = event.currentTarget.dataset.url;\n            const images = this.data.lists\n                .filter(item => item.isImage)\n                .map(item => item.url || item.path);\n            this.$emit('click-preview', { url: curUrl, name: this.data.name });\n            wx.previewImage({\n                urls: images,\n                current: curUrl,\n                fail() {\n                    wx.showToast({ title: '预览图片失败', icon: 'none' });\n                }\n            });\n        }\n    }\n});\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/index.wxml",
    "content": "<wxs src=\"../wxs/utils.wxs\" module=\"utils\" />\n\n<view class=\"van-uploader\">\n  <view class=\"van-uploader__wrapper\">\n    <!-- 预览样式 -->\n    <view\n      wx:if=\"{{ previewImage }}\"\n      wx:for=\"{{ lists  }}\"\n      wx:key=\"index\"\n      class=\"van-uploader__preview\"\n    >\n      <image\n        wx:if=\"{{ item.isImage }}\"\n        mode=\"{{ imageFit }}\"\n        src=\"{{ item.url || item.path }}\"\n        alt=\"{{ item.name || ('图片' + index) }}\"\n        class=\"van-uploader__preview-image\"\n        style=\"width: {{ computedPreviewSize }}; height: {{ computedPreviewSize }};\"\n        data-url=\"{{ item.url || item.path }}\"\n        bind:tap=\"doPreviewImage\"\n      />\n      <view\n        wx:else\n        class=\"van-uploader__file\"\n        style=\"width: {{ computedPreviewSize }}; height: {{ computedPreviewSize }};\"\n      >\n        <van-icon name=\"description\" class=\"van-uploader__file-icon\" />\n        <view class=\"van-uploader__file-name van-ellipsis\">{{ item.name || item.url || item.path }}</view>\n      </view>\n      <van-icon\n        wx:if=\"{{ deletable }}\"\n        name=\"clear\"\n        class=\"van-uploader__preview-delete\"\n        data-index=\"{{ index }}\"\n        bind:tap=\"deleteItem\"\n      />\n    </view>\n\n    <!-- 上传样式 -->\n    <block wx:if=\"{{ isInCount }}\">\n      <view wx:if=\"{{ useSlot }}\" class=\"van-uploader__slot\" bind:tap=\"startUpload\">\n        <slot />\n      </view>\n\n      <!-- 默认上传样式 -->\n      <view\n        wx:else\n        class=\"van-uploader__upload\"\n        style=\"width: {{ computedPreviewSize }}; height: {{ computedPreviewSize }};\"\n        bind:tap=\"startUpload\"\n      >\n        <van-icon name=\"plus\" class=\"van-uploader__upload-icon\" />\n        <text wx:if=\"{{ uploadText }}\" class=\"van-uploader__upload-text\">{{ uploadText }}</text>\n      </view>\n    </block>\n  </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/index.wxss",
    "content": "@import '../common/index.wxss';.van-uploader{position:relative;display:inline-block}.van-uploader__wrapper{display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap}.van-uploader__upload{position:relative;display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;box-sizing:border-box;width:80px;height:80px;margin:0 8px 8px 0;background-color:#fff;border:1px dashed #ebedf0;border-radius:4px}.van-uploader__upload-icon{display:inline-block;width:24px;height:24px;color:#969799;font-size:24px}.van-uploader__upload-text{margin-top:8px;color:#969799;font-size:12px}.van-uploader__preview{position:relative;margin:0 8px 8px 0}.van-uploader__preview-image{display:block;width:80px;height:80px;border-radius:4px}.van-uploader__preview-delete{position:absolute;top:-8px;right:-8px;color:#969799;font-size:18px;background-color:#fff;border-radius:100%}.van-uploader__file{display:-webkit-flex;display:flex;-webkit-flex-direction:column;flex-direction:column;-webkit-align-items:center;align-items:center;-webkit-justify-content:center;justify-content:center;width:80px;height:80px;background-color:#f7f8fa;border-radius:4px}.van-uploader__file-icon{display:inline-block;width:20px;height:20px;color:#646566;font-size:20px}.van-uploader__file-name{box-sizing:border-box;width:100%;margin-top:8px;padding:0 5px;color:#646566;font-size:12px;text-align:center}"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/utils.d.ts",
    "content": "interface File {\n    path: string;\n    url: string;\n    size: number;\n    name: string;\n    type: string;\n    time: number;\n    image: boolean;\n}\nexport declare function isImageUrl(url: string): boolean;\nexport declare function isImageFile(item: File): boolean;\nexport {};\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/uploader/utils.js",
    "content": "const IMAGE_EXT = ['jpeg', 'jpg', 'gif', 'png', 'svg'];\nexport function isImageUrl(url) {\n    return IMAGE_EXT.some(ext => url.indexOf(`.${ext}`) !== -1);\n}\nexport function isImageFile(item) {\n    if (item.type) {\n        return item.type.indexOf('image') === 0;\n    }\n    if (item.path) {\n        return isImageUrl(item.path);\n    }\n    if (item.url) {\n        return isImageUrl(item.url);\n    }\n    return false;\n}\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/wxs/array.wxs",
    "content": "function isArray(array) {\n  return array && array.constructor === 'Array';\n}\n\nmodule.exports.isArray = isArray;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/wxs/bem.wxs",
    "content": "var array = require('./array.wxs');\nvar object = require('./object.wxs');\nvar PREFIX = 'van-';\n\nfunction join(name, mods) {\n  name = PREFIX + name;\n  mods = mods.map(function(mod) {\n    return name + '--' + mod;\n  });\n  mods.unshift(name);\n  return mods.join(' ');\n}\n\nfunction traversing(mods, conf) {\n  if (!conf) {\n    return;\n  }\n\n  if (typeof conf === 'string' || typeof conf === 'number') {\n    mods.push(conf);\n  } else if (array.isArray(conf)) {\n    conf.forEach(function(item) {\n      traversing(mods, item);\n    });\n  } else if (typeof conf === 'object') {\n    object.keys(conf).forEach(function(key) {\n      conf[key] && mods.push(key);\n    });\n  }\n}\n\nfunction bem(name, conf) {\n  var mods = [];\n  traversing(mods, conf);\n  return join(name, mods);\n}\n\nmodule.exports.bem = bem;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/wxs/memoize.wxs",
    "content": "/**\n * Simple memoize\n * wxs doesn't support fn.apply, so this memoize only support up to 2 args\n */\n\nfunction isPrimitive(value) {\n  var type = typeof value;\n  return (\n    type === 'boolean' ||\n    type === 'number' ||\n    type === 'string' ||\n    type === 'undefined' ||\n    value === null\n  );\n}\n\n// mock simple fn.call in wxs\nfunction call(fn, args) {\n  if (args.length === 2) {\n    return fn(args[0], args[1]);\n  }\n\n  if (args.length === 1) {\n    return fn(args[0]);\n  }\n\n  return fn();\n}\n\nfunction serializer(args) {\n  if (args.length === 1 && isPrimitive(args[0])) {\n    return args[0];\n  }\n  var obj = {};\n  for (var i = 0; i < args.length; i++) {\n    obj['key' + i] = args[i];\n  }\n  return JSON.stringify(obj);\n}\n\nfunction memoize(fn) {\n  var cache = {};\n\n  return function() {\n    var key = serializer(arguments);\n    if (cache[key] === undefined) {\n      cache[key] = call(fn, arguments);\n    }\n\n    return cache[key];\n  };\n}\n\nmodule.exports.memoize = memoize;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/wxs/object.wxs",
    "content": "/* eslint-disable */\nvar REGEXP = getRegExp('{|}|\"', 'g');\n\nfunction keys(obj) {\n  return JSON.stringify(obj)\n    .replace(REGEXP, '')\n    .split(',')\n    .map(function(item) {\n      return item.split(':')[0];\n    });\n}\n\nmodule.exports.keys = keys;\n"
  },
  {
    "path": "litemall-wx/lib/vant-weapp/wxs/utils.wxs",
    "content": "var bem = require('./bem.wxs').bem;\nvar memoize = require('./memoize.wxs').memoize;\n\nmodule.exports = {\n  bem: memoize(bem),\n  memoize: memoize\n};\n"
  },
  {
    "path": "litemall-wx/lib/wxParse/html2json.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\nvar __placeImgeUrlHttps = \"https\";\nvar __emojisReg = '';\nvar __emojisBaseSrc = '';\nvar __emojis = {};\nvar wxDiscode = require('wxDiscode.js');\nvar HTMLParser = require('htmlparser.js');\n// Empty Elements - HTML 5\nvar empty = makeMap(\"area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr\");\n// Block Elements - HTML 5\nvar block = makeMap(\"br,a,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video\");\n\n// Inline Elements - HTML 5\nvar inline = makeMap(\"abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var\");\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar closeSelf = makeMap(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr\");\n\n// Attributes that have their values filled in disabled=\"disabled\"\nvar fillAttrs = makeMap(\"checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected\");\n\n// Special Elements (can contain anything)\nvar special = makeMap(\"wxxxcode-style,script,style,view,scroll-view,block\");\nfunction makeMap(str) {\n    var obj = {}, items = str.split(\",\");\n    for (var i = 0; i < items.length; i++)\n        obj[items[i]] = true;\n    return obj;\n}\n\nfunction q(v) {\n    return '\"' + v + '\"';\n}\n\nfunction removeDOCTYPE(html) {\n    return html\n        .replace(/<\\?xml.*\\?>\\n/, '')\n        .replace(/<!doctype.*\\>\\n/, '')\n        .replace(/<!DOCTYPE.*\\>\\n/, '');\n}\n\n\nfunction html2json(html, bindName) {\n    //处理字符串\n    html = removeDOCTYPE(html);\n    html = wxDiscode.strDiscode(html);\n    //生成node节点\n    var bufArray = [];\n    var results = {\n        node: bindName,\n        nodes: [],\n        images:[],\n        imageUrls:[]\n    };\n    HTMLParser(html, {\n        start: function (tag, attrs, unary) {\n            //debug(tag, attrs, unary);\n            // node for this element\n            var node = {\n                node: 'element',\n                tag: tag,\n            };\n\n            if (block[tag]) {\n                node.tagType = \"block\";\n            } else if (inline[tag]) {\n                node.tagType = \"inline\";\n            } else if (closeSelf[tag]) {\n                node.tagType = \"closeSelf\";\n            }\n\n            if (attrs.length !== 0) {\n                node.attr = attrs.reduce(function (pre, attr) {\n                    var name = attr.name;\n                    var value = attr.value;\n                    if (name == 'class') {\n                        // console.dir(value);\n                        //  value = value.join(\"\")\n                        node.classStr = value;\n                    }\n                    // has multi attibutes\n                    // make it array of attribute\n                    if (name == 'style') {\n                        // console.dir(value);\n                        //  value = value.join(\"\")\n                        node.styleStr = value;\n                    }\n                    if (value.match(/ /)) {\n                        value = value.split(' ');\n                    }\n                    \n\n                    // if attr already exists\n                    // merge it\n                    if (pre[name]) {\n                        if (Array.isArray(pre[name])) {\n                            // already array, push to last\n                            pre[name].push(value);\n                        } else {\n                            // single value, make it array\n                            pre[name] = [pre[name], value];\n                        }\n                    } else {\n                        // not exist, put it\n                        pre[name] = value;\n                    }\n\n                    return pre;\n                }, {});\n            }\n\n            //对img添加额外数据\n            if (node.tag === 'img') {\n                node.imgIndex = results.images.length;\n                var imgUrl = node.attr.src;\n                imgUrl = wxDiscode.urlToHttpUrl(imgUrl, __placeImgeUrlHttps);\n                node.attr.src = imgUrl;\n                node.from = bindName;\n                results.images.push(node);\n                results.imageUrls.push(imgUrl);\n            }\n\n            if (unary) {\n                // if this tag dosen't have end tag\n                // like <img src=\"hoge.png\"/>\n                // add to parents\n                var parent = bufArray[0] || results;\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            } else {\n                bufArray.unshift(node);\n            }\n        },\n        end: function (tag) {\n            //debug(tag);\n            // merge into parent tag\n            var node = bufArray.shift();\n            if (node.tag !== tag) console.error('invalid state: mismatch end tag');\n\n            if (bufArray.length === 0) {\n                results.nodes.push(node);\n            } else {\n                var parent = bufArray[0];\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            }\n        },\n        chars: function (text) {\n            //debug(text);\n            var node = {\n                node: 'text',\n                text: text,\n                textArray:transEmojiStr(text)\n            };\n            \n            if (bufArray.length === 0) {\n                results.nodes.push(node);\n            } else {\n                var parent = bufArray[0];\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            }\n        },\n        comment: function (text) {\n            //debug(text);\n            var node = {\n                node: 'comment',\n                text: text,\n            };\n            var parent = bufArray[0];\n            if (parent.nodes === undefined) {\n                parent.nodes = [];\n            }\n            parent.nodes.push(node);\n        },\n    });\n    return results;\n};\n\nfunction transEmojiStr(str){\n  // var eReg = new RegExp(\"[\"+__reg+' '+\"]\");\n//   str = str.replace(/\\[([^\\[\\]]+)\\]/g,':$1:')\n  \n  var emojiObjs = [];\n  //如果正则表达式为空\n  if(__emojisReg.length == 0 || !__emojis){\n      var emojiObj = {}\n      emojiObj.node = \"text\";\n      emojiObj.text = str;\n      array = [emojiObj];\n      return array;\n  }\n  //这个地方需要调整\n  str = str.replace(/\\[([^\\[\\]]+)\\]/g,':$1:')\n  var eReg = new RegExp(\"[:]\");\n  var array = str.split(eReg);\n  for(var i = 0; i < array.length; i++){\n    var ele = array[i];\n    var emojiObj = {};\n    if(__emojis[ele]){\n      emojiObj.node = \"element\";\n      emojiObj.tag = \"emoji\";\n      emojiObj.text = __emojis[ele];\n      emojiObj.baseSrc= __emojisBaseSrc;\n    }else{\n      emojiObj.node = \"text\";\n      emojiObj.text = ele;\n    }\n    emojiObjs.push(emojiObj);\n  }\n  \n  return emojiObjs;\n}\n\nfunction emojisInit(reg='',baseSrc=\"/wxParse/emojis/\",emojis){\n    __emojisReg = reg;\n    __emojisBaseSrc=baseSrc;\n    __emojis=emojis;\n}\n\nmodule.exports = {\n    html2json: html2json,\n    emojisInit:emojisInit\n};\n\n"
  },
  {
    "path": "litemall-wx/lib/wxParse/htmlparser.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n// Regular Expressions for parsing tags and attributes\nvar startTag = /^<([-A-Za-z0-9_]+)((?:\\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)>/,\n\tendTag = /^<\\/([-A-Za-z0-9_]+)[^>]*>/,\n\tattr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n\n// Empty Elements - HTML 5\nvar empty = makeMap(\"area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr\");\n\n// Block Elements - HTML 5\nvar block = makeMap(\"a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video\");\n\n// Inline Elements - HTML 5\nvar inline = makeMap(\"abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var\");\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar closeSelf = makeMap(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr\");\n\n// Attributes that have their values filled in disabled=\"disabled\"\nvar fillAttrs = makeMap(\"checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected\");\n\n// Special Elements (can contain anything)\nvar special = makeMap(\"wxxxcode-style,script,style,view,scroll-view,block\");\n\nfunction HTMLParser(html, handler) {\n\tvar index, chars, match, stack = [], last = html;\n\tstack.last = function () {\n\t\treturn this[this.length - 1];\n\t};\n\n\twhile (html) {\n\t\tchars = true;\n\n\t\t// Make sure we're not in a script or style element\n\t\tif (!stack.last() || !special[stack.last()]) {\n\n\t\t\t// Comment\n\t\t\tif (html.indexOf(\"<!--\") == 0) {\n\t\t\t\tindex = html.indexOf(\"-->\");\n\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tif (handler.comment)\n\t\t\t\t\t\thandler.comment(html.substring(4, index));\n\t\t\t\t\thtml = html.substring(index + 3);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\n\t\t\t\t// end tag\n\t\t\t} else if (html.indexOf(\"</\") == 0) {\n\t\t\t\tmatch = html.match(endTag);\n\n\t\t\t\tif (match) {\n\t\t\t\t\thtml = html.substring(match[0].length);\n\t\t\t\t\tmatch[0].replace(endTag, parseEndTag);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\n\t\t\t\t// start tag\n\t\t\t} else if (html.indexOf(\"<\") == 0) {\n\t\t\t\tmatch = html.match(startTag);\n\n\t\t\t\tif (match) {\n\t\t\t\t\thtml = html.substring(match[0].length);\n\t\t\t\t\tmatch[0].replace(startTag, parseStartTag);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (chars) {\n\t\t\t\tindex = html.indexOf(\"<\");\n\n\t\t\t\tvar text = index < 0 ? html : html.substring(0, index);\n\t\t\t\thtml = index < 0 ? \"\" : html.substring(index);\n\n\t\t\t\tif (handler.chars)\n\t\t\t\t\thandler.chars(text);\n\t\t\t}\n\n\t\t} else {\n\n\t\t\thtml = html.replace(new RegExp(\"([\\\\s\\\\S]*?)<\\/\" + stack.last() + \"[^>]*>\"), function (all, text) {\n\t\t\t\ttext = text.replace(/<!--([\\s\\S]*?)-->|<!\\[CDATA\\[([\\s\\S]*?)]]>/g, \"$1$2\");\n\t\t\t\tif (handler.chars)\n\t\t\t\t\thandler.chars(text);\n\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\n\t\t\tparseEndTag(\"\", stack.last());\n\t\t}\n\n\t\tif (html == last)\n\t\t\tthrow \"Parse Error: \" + html;\n\t\tlast = html;\n\t}\n\n\t// Clean up any remaining tags\n\tparseEndTag();\n\n\tfunction parseStartTag(tag, tagName, rest, unary) {\n\t\ttagName = tagName.toLowerCase();\n\n\t\tif (block[tagName]) {\n\t\t\twhile (stack.last() && inline[stack.last()]) {\n\t\t\t\tparseEndTag(\"\", stack.last());\n\t\t\t}\n\t\t}\n\n\t\tif (closeSelf[tagName] && stack.last() == tagName) {\n\t\t\tparseEndTag(\"\", tagName);\n\t\t}\n\n\t\tunary = empty[tagName] || !!unary;\n\n\t\tif (!unary)\n\t\t\tstack.push(tagName);\n\n\t\tif (handler.start) {\n\t\t\tvar attrs = [];\n\n\t\t\trest.replace(attr, function (match, name) {\n\t\t\t\tvar value = arguments[2] ? arguments[2] :\n\t\t\t\t\targuments[3] ? arguments[3] :\n\t\t\t\t\t\targuments[4] ? arguments[4] :\n\t\t\t\t\t\t\tfillAttrs[name] ? name : \"\";\n\n\t\t\t\tattrs.push({\n\t\t\t\t\tname: name,\n\t\t\t\t\tvalue: value,\n\t\t\t\t\tescaped: value.replace(/(^|[^\\\\])\"/g, '$1\\\\\\\"') //\"\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (handler.start) {\n\t\t\t\thandler.start(tagName, attrs, unary);\n\t\t\t}\n\n\t\t}\n\t}\n\n\tfunction parseEndTag(tag, tagName) {\n\t\t// If no tag name is provided, clean shop\n\t\tif (!tagName)\n\t\t\tvar pos = 0;\n\n\t\t// Find the closest opened tag of the same type\n\t\telse\n\t\t\tfor (var pos = stack.length - 1; pos >= 0; pos--)\n\t\t\t\tif (stack[pos] == tagName)\n\t\t\t\t\tbreak;\n\n\t\tif (pos >= 0) {\n\t\t\t// Close all the open elements, up the stack\n\t\t\tfor (var i = stack.length - 1; i >= pos; i--)\n\t\t\t\tif (handler.end)\n\t\t\t\t\thandler.end(stack[i]);\n\n\t\t\t// Remove the open elements from the stack\n\t\t\tstack.length = pos;\n\t\t}\n\t}\n};\n\nfunction makeMap(str) {\n\tvar obj = {}, items = str.split(\",\");\n\tfor (var i = 0; i < items.length; i++)\n\t\tobj[items[i]] = true;\n\treturn obj;\n}\n\nmodule.exports = HTMLParser;\n"
  },
  {
    "path": "litemall-wx/lib/wxParse/showdown.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\nfunction getDefaultOpts(simple) {\n  'use strict';\n\n  var defaultOptions = {\n    omitExtraWLInCodeBlocks: {\n      defaultValue: false,\n      describe: 'Omit the default extra whiteline added to code blocks',\n      type: 'boolean'\n    },\n    noHeaderId: {\n      defaultValue: false,\n      describe: 'Turn on/off generated header id',\n      type: 'boolean'\n    },\n    prefixHeaderId: {\n      defaultValue: false,\n      describe: 'Specify a prefix to generated header ids',\n      type: 'string'\n    },\n    headerLevelStart: {\n      defaultValue: false,\n      describe: 'The header blocks level start',\n      type: 'integer'\n    },\n    parseImgDimensions: {\n      defaultValue: false,\n      describe: 'Turn on/off image dimension parsing',\n      type: 'boolean'\n    },\n    simplifiedAutoLink: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM autolink style',\n      type: 'boolean'\n    },\n    literalMidWordUnderscores: {\n      defaultValue: false,\n      describe: 'Parse midword underscores as literal underscores',\n      type: 'boolean'\n    },\n    strikethrough: {\n      defaultValue: false,\n      describe: 'Turn on/off strikethrough support',\n      type: 'boolean'\n    },\n    tables: {\n      defaultValue: false,\n      describe: 'Turn on/off tables support',\n      type: 'boolean'\n    },\n    tablesHeaderId: {\n      defaultValue: false,\n      describe: 'Add an id to table headers',\n      type: 'boolean'\n    },\n    ghCodeBlocks: {\n      defaultValue: true,\n      describe: 'Turn on/off GFM fenced code blocks support',\n      type: 'boolean'\n    },\n    tasklists: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM tasklist support',\n      type: 'boolean'\n    },\n    smoothLivePreview: {\n      defaultValue: false,\n      describe: 'Prevents weird effects in live previews due to incomplete input',\n      type: 'boolean'\n    },\n    smartIndentationFix: {\n      defaultValue: false,\n      description: 'Tries to smartly fix identation in es6 strings',\n      type: 'boolean'\n    }\n  };\n  if (simple === false) {\n    return JSON.parse(JSON.stringify(defaultOptions));\n  }\n  var ret = {};\n  for (var opt in defaultOptions) {\n    if (defaultOptions.hasOwnProperty(opt)) {\n      ret[opt] = defaultOptions[opt].defaultValue;\n    }\n  }\n  return ret;\n}\n\n/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n    parsers = {},\n    extensions = {},\n    globalOptions = getDefaultOpts(true),\n    flavor = {\n      github: {\n        omitExtraWLInCodeBlocks:   true,\n        prefixHeaderId:            'user-content-',\n        simplifiedAutoLink:        true,\n        literalMidWordUnderscores: true,\n        strikethrough:             true,\n        tables:                    true,\n        tablesHeaderId:            true,\n        ghCodeBlocks:              true,\n        tasklists:                 true\n      },\n      vanilla: getDefaultOpts(true)\n    };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n  'use strict';\n  globalOptions[key] = value;\n  return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n  'use strict';\n  return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n  'use strict';\n  return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n  'use strict';\n  globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n  'use strict';\n  if (flavor.hasOwnProperty(name)) {\n    var preset = flavor[name];\n    for (var option in preset) {\n      if (preset.hasOwnProperty(option)) {\n        globalOptions[option] = preset[option];\n      }\n    }\n  }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n  'use strict';\n  return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name)       - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n  'use strict';\n  if (showdown.helper.isString(name)) {\n    if (typeof func !== 'undefined') {\n      parsers[name] = func;\n    } else {\n      if (parsers.hasOwnProperty(name)) {\n        return parsers[name];\n      } else {\n        throw Error('SubParser named ' + name + ' not registered!');\n      }\n    }\n  }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n  'use strict';\n\n  if (!showdown.helper.isString(name)) {\n    throw Error('Extension \\'name\\' must be a string');\n  }\n\n  name = showdown.helper.stdExtName(name);\n\n  // Getter\n  if (showdown.helper.isUndefined(ext)) {\n    if (!extensions.hasOwnProperty(name)) {\n      throw Error('Extension named ' + name + ' is not registered!');\n    }\n    return extensions[name];\n\n    // Setter\n  } else {\n    // Expand extension if it's wrapped in a function\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    // Ensure extension is an array\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExtension = validate(ext, name);\n\n    if (validExtension.valid) {\n      extensions[name] = ext;\n    } else {\n      throw Error(validExtension.error);\n    }\n  }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n  'use strict';\n  return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n  'use strict';\n  delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n  'use strict';\n  extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate(extension, name) {\n  'use strict';\n\n  var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n    ret = {\n      valid: true,\n      error: ''\n    };\n\n  if (!showdown.helper.isArray(extension)) {\n    extension = [extension];\n  }\n\n  for (var i = 0; i < extension.length; ++i) {\n    var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n        ext = extension[i];\n    if (typeof ext !== 'object') {\n      ret.valid = false;\n      ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n      return ret;\n    }\n\n    if (!showdown.helper.isString(ext.type)) {\n      ret.valid = false;\n      ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n      return ret;\n    }\n\n    var type = ext.type = ext.type.toLowerCase();\n\n    // normalize extension type\n    if (type === 'language') {\n      type = ext.type = 'lang';\n    }\n\n    if (type === 'html') {\n      type = ext.type = 'output';\n    }\n\n    if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n      ret.valid = false;\n      ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n      return ret;\n    }\n\n    if (type === 'listener') {\n      if (showdown.helper.isUndefined(ext.listeners)) {\n        ret.valid = false;\n        ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n        return ret;\n      }\n    } else {\n      if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n        ret.valid = false;\n        ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n        return ret;\n      }\n    }\n\n    if (ext.listeners) {\n      if (typeof ext.listeners !== 'object') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n        return ret;\n      }\n      for (var ln in ext.listeners) {\n        if (ext.listeners.hasOwnProperty(ln)) {\n          if (typeof ext.listeners[ln] !== 'function') {\n            ret.valid = false;\n            ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n              ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n            return ret;\n          }\n        }\n      }\n    }\n\n    if (ext.filter) {\n      if (typeof ext.filter !== 'function') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n        return ret;\n      }\n    } else if (ext.regex) {\n      if (showdown.helper.isString(ext.regex)) {\n        ext.regex = new RegExp(ext.regex, 'g');\n      }\n      if (!ext.regex instanceof RegExp) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n        return ret;\n      }\n      if (showdown.helper.isUndefined(ext.replace)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n        return ret;\n      }\n    }\n  }\n  return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n  'use strict';\n\n  var validateExtension = validate(ext, null);\n  if (!validateExtension.valid) {\n    console.warn(validateExtension.error);\n    return false;\n  }\n  return true;\n};\n\n/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n  showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function isString(a) {\n  'use strict';\n  return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function isFunction(a) {\n  'use strict';\n  var getType = {};\n  return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * ForEach helper function\n * @static\n * @param {*} obj\n * @param {function} callback\n */\nshowdown.helper.forEach = function forEach(obj, callback) {\n  'use strict';\n  if (typeof obj.forEach === 'function') {\n    obj.forEach(callback);\n  } else {\n    for (var i = 0; i < obj.length; i++) {\n      callback(obj[i], i, obj);\n    }\n  }\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function isArray(a) {\n  'use strict';\n  return a.constructor === Array;\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function isUndefined(value) {\n  'use strict';\n  return typeof value === 'undefined';\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n  'use strict';\n  return s.replace(/[_-]||\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback(wholeMatch, m1) {\n  'use strict';\n  var charCodeToEscape = m1.charCodeAt(0);\n  return '~E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) {\n  'use strict';\n  // First we have to escape the escape characters so that\n  // we can build a character class out of them\n  var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n  if (afterBackslash) {\n    regexString = '\\\\\\\\' + regexString;\n  }\n\n  var regex = new RegExp(regexString, 'g');\n  text = text.replace(regex, escapeCharactersCallback);\n\n  return text;\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n  'use strict';\n  var f = flags || '',\n    g = f.indexOf('g') > -1,\n    x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n    l = new RegExp(left, f.replace(/g/g, '')),\n    pos = [],\n    t, s, m, start, end;\n\n  do {\n    t = 0;\n    while ((m = x.exec(str))) {\n      if (l.test(m[0])) {\n        if (!(t++)) {\n          s = x.lastIndex;\n          start = s - m[0].length;\n        }\n      } else if (t) {\n        if (!--t) {\n          end = m.index + m[0].length;\n          var obj = {\n            left: {start: start, end: s},\n            match: {start: s, end: m.index},\n            right: {start: m.index, end: end},\n            wholeMatch: {start: start, end: end}\n          };\n          pos.push(obj);\n          if (!g) {\n            return pos;\n          }\n        }\n      }\n    }\n  } while (t && (x.lastIndex = s));\n\n  return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n  'use strict';\n\n  var matchPos = rgxFindMatchPos (str, left, right, flags),\n    results = [];\n\n  for (var i = 0; i < matchPos.length; ++i) {\n    results.push([\n      str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n      str.slice(matchPos[i].match.start, matchPos[i].match.end),\n      str.slice(matchPos[i].left.start, matchPos[i].left.end),\n      str.slice(matchPos[i].right.start, matchPos[i].right.end)\n    ]);\n  }\n  return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n  'use strict';\n\n  if (!showdown.helper.isFunction(replacement)) {\n    var repStr = replacement;\n    replacement = function () {\n      return repStr;\n    };\n  }\n\n  var matchPos = rgxFindMatchPos(str, left, right, flags),\n      finalStr = str,\n      lng = matchPos.length;\n\n  if (lng > 0) {\n    var bits = [];\n    if (matchPos[0].wholeMatch.start !== 0) {\n      bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n    }\n    for (var i = 0; i < lng; ++i) {\n      bits.push(\n        replacement(\n          str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n          str.slice(matchPos[i].match.start, matchPos[i].match.end),\n          str.slice(matchPos[i].left.start, matchPos[i].left.end),\n          str.slice(matchPos[i].right.start, matchPos[i].right.end)\n        )\n      );\n      if (i < lng - 1) {\n        bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n      }\n    }\n    if (matchPos[lng - 1].wholeMatch.end < str.length) {\n      bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n    }\n    finalStr = bits.join('');\n  }\n  return finalStr;\n};\n\n/**\n * POLYFILLS\n */\nif (showdown.helper.isUndefined(console)) {\n  console = {\n    warn: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    log: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    error: function (msg) {\n      'use strict';\n      throw msg;\n    }\n  };\n}\n\n/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n  'use strict';\n\n  var\n      /**\n       * Options used by this converter\n       * @private\n       * @type {{}}\n       */\n      options = {},\n\n      /**\n       * Language extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      langExtensions = [],\n\n      /**\n       * Output modifiers extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      outputModifiers = [],\n\n      /**\n       * Event listeners\n       * @private\n       * @type {{}}\n       */\n      listeners = {};\n\n  _constructor();\n\n  /**\n   * Converter constructor\n   * @private\n   */\n  function _constructor() {\n    converterOptions = converterOptions || {};\n\n    for (var gOpt in globalOptions) {\n      if (globalOptions.hasOwnProperty(gOpt)) {\n        options[gOpt] = globalOptions[gOpt];\n      }\n    }\n\n    // Merge options\n    if (typeof converterOptions === 'object') {\n      for (var opt in converterOptions) {\n        if (converterOptions.hasOwnProperty(opt)) {\n          options[opt] = converterOptions[opt];\n        }\n      }\n    } else {\n      throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n      ' was passed instead.');\n    }\n\n    if (options.extensions) {\n      showdown.helper.forEach(options.extensions, _parseExtension);\n    }\n  }\n\n  /**\n   * Parse extension\n   * @param {*} ext\n   * @param {string} [name='']\n   * @private\n   */\n  function _parseExtension(ext, name) {\n\n    name = name || null;\n    // If it's a string, the extension was previously loaded\n    if (showdown.helper.isString(ext)) {\n      ext = showdown.helper.stdExtName(ext);\n      name = ext;\n\n      // LEGACY_SUPPORT CODE\n      if (showdown.extensions[ext]) {\n        console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n          'Please inform the developer that the extension should be updated!');\n        legacyExtensionLoading(showdown.extensions[ext], ext);\n        return;\n      // END LEGACY SUPPORT CODE\n\n      } else if (!showdown.helper.isUndefined(extensions[ext])) {\n        ext = extensions[ext];\n\n      } else {\n        throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n      }\n    }\n\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExt = validate(ext, name);\n    if (!validExt.valid) {\n      throw Error(validExt.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n      }\n      if (ext[i].hasOwnProperty(listeners)) {\n        for (var ln in ext[i].listeners) {\n          if (ext[i].listeners.hasOwnProperty(ln)) {\n            listen(ln, ext[i].listeners[ln]);\n          }\n        }\n      }\n    }\n\n  }\n\n  /**\n   * LEGACY_SUPPORT\n   * @param {*} ext\n   * @param {string} name\n   */\n  function legacyExtensionLoading(ext, name) {\n    if (typeof ext === 'function') {\n      ext = ext(new showdown.Converter());\n    }\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n    var valid = validate(ext, name);\n\n    if (!valid.valid) {\n      throw Error(valid.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n        default:// should never reach here\n          throw Error('Extension loader error: Type unrecognized!!!');\n      }\n    }\n  }\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   */\n  function listen(name, callback) {\n    if (!showdown.helper.isString(name)) {\n      throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n    }\n\n    if (typeof callback !== 'function') {\n      throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n    }\n\n    if (!listeners.hasOwnProperty(name)) {\n      listeners[name] = [];\n    }\n    listeners[name].push(callback);\n  }\n\n  function rTrimInputText(text) {\n    var rsp = text.match(/^\\s*/)[0].length,\n        rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n    return text.replace(rgx, '');\n  }\n\n  /**\n   * Dispatch an event\n   * @private\n   * @param {string} evtName Event name\n   * @param {string} text Text\n   * @param {{}} options Converter Options\n   * @param {{}} globals\n   * @returns {string}\n   */\n  this._dispatch = function dispatch (evtName, text, options, globals) {\n    if (listeners.hasOwnProperty(evtName)) {\n      for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n        var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n        if (nText && typeof nText !== 'undefined') {\n          text = nText;\n        }\n      }\n    }\n    return text;\n  };\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   * @returns {showdown.Converter}\n   */\n  this.listen = function (name, callback) {\n    listen(name, callback);\n    return this;\n  };\n\n  /**\n   * Converts a markdown string into HTML\n   * @param {string} text\n   * @returns {*}\n   */\n  this.makeHtml = function (text) {\n    //check if text is not falsy\n    if (!text) {\n      return text;\n    }\n\n    var globals = {\n      gHtmlBlocks:     [],\n      gHtmlMdBlocks:   [],\n      gHtmlSpans:      [],\n      gUrls:           {},\n      gTitles:         {},\n      gDimensions:     {},\n      gListLevel:      0,\n      hashLinkCounts:  {},\n      langExtensions:  langExtensions,\n      outputModifiers: outputModifiers,\n      converter:       this,\n      ghCodeBlocks:    []\n    };\n\n    // attacklab: Replace ~ with ~T\n    // This lets us use tilde as an escape char to avoid md5 hashes\n    // The choice of character is arbitrary; anything that isn't\n    // magic in Markdown will work.\n    text = text.replace(/~/g, '~T');\n\n    // attacklab: Replace $ with ~D\n    // RegExp interprets $ as a special character\n    // when it's in a replacement string\n    text = text.replace(/\\$/g, '~D');\n\n    // Standardize line endings\n    text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n    text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n    if (options.smartIndentationFix) {\n      text = rTrimInputText(text);\n    }\n\n    // Make sure text begins and ends with a couple of newlines:\n    //text = '\\n\\n' + text + '\\n\\n';\n    text = text;\n    // detab\n    text = showdown.subParser('detab')(text, options, globals);\n\n    // stripBlankLines\n    text = showdown.subParser('stripBlankLines')(text, options, globals);\n\n    //run languageExtensions\n    showdown.helper.forEach(langExtensions, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // run the sub parsers\n    text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n    text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n    text = showdown.subParser('blockGamut')(text, options, globals);\n    text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n    // attacklab: Restore dollar signs\n    text = text.replace(/~D/g, '$$');\n\n    // attacklab: Restore tildes\n    text = text.replace(/~T/g, '~');\n\n    // Run output modifiers\n    showdown.helper.forEach(outputModifiers, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n    return text;\n  };\n\n  /**\n   * Set an option of this Converter instance\n   * @param {string} key\n   * @param {*} value\n   */\n  this.setOption = function (key, value) {\n    options[key] = value;\n  };\n\n  /**\n   * Get the option of this Converter instance\n   * @param {string} key\n   * @returns {*}\n   */\n  this.getOption = function (key) {\n    return options[key];\n  };\n\n  /**\n   * Get the options of this Converter instance\n   * @returns {{}}\n   */\n  this.getOptions = function () {\n    return options;\n  };\n\n  /**\n   * Add extension to THIS converter\n   * @param {{}} extension\n   * @param {string} [name=null]\n   */\n  this.addExtension = function (extension, name) {\n    name = name || null;\n    _parseExtension(extension, name);\n  };\n\n  /**\n   * Use a global registered extension with THIS converter\n   * @param {string} extensionName Name of the previously registered extension\n   */\n  this.useExtension = function (extensionName) {\n    _parseExtension(extensionName);\n  };\n\n  /**\n   * Set the flavor THIS converter should use\n   * @param {string} name\n   */\n  this.setFlavor = function (name) {\n    if (flavor.hasOwnProperty(name)) {\n      var preset = flavor[name];\n      for (var option in preset) {\n        if (preset.hasOwnProperty(option)) {\n          options[option] = preset[option];\n        }\n      }\n    }\n  };\n\n  /**\n   * Remove an extension from THIS converter.\n   * Note: This is a costly operation. It's better to initialize a new converter\n   * and specify the extensions you wish to use\n   * @param {Array} extension\n   */\n  this.removeExtension = function (extension) {\n    if (!showdown.helper.isArray(extension)) {\n      extension = [extension];\n    }\n    for (var a = 0; a < extension.length; ++a) {\n      var ext = extension[a];\n      for (var i = 0; i < langExtensions.length; ++i) {\n        if (langExtensions[i] === ext) {\n          langExtensions[i].splice(i, 1);\n        }\n      }\n      for (var ii = 0; ii < outputModifiers.length; ++i) {\n        if (outputModifiers[ii] === ext) {\n          outputModifiers[ii].splice(i, 1);\n        }\n      }\n    }\n  };\n\n  /**\n   * Get all extension of THIS converter\n   * @returns {{language: Array, output: Array}}\n   */\n  this.getAllExtensions = function () {\n    return {\n      language: langExtensions,\n      output: outputModifiers\n    };\n  };\n};\n\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n  var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\n    if (showdown.helper.isUndefined(m7)) {\n      m7 = '';\n    }\n    wholeMatch = m1;\n    var linkText = m2,\n        linkId = m3.toLowerCase(),\n        url = m4,\n        title = m7;\n\n    if (!url) {\n      if (!linkId) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n        url = globals.gUrls[linkId];\n        if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n          title = globals.gTitles[linkId];\n        }\n      } else {\n        if (wholeMatch.search(/\\(\\s*\\)$/m) > -1) {\n          // Special case for explicit empty url\n          url = '';\n        } else {\n          return wholeMatch;\n        }\n      }\n    }\n\n    url = showdown.helper.escapeCharacters(url, '*_', false);\n    var result = '<a href=\"' + url + '\"';\n\n    if (title !== '' && title !== null) {\n      title = title.replace(/\"/g, '&quot;');\n      title = showdown.helper.escapeCharacters(title, '*_', false);\n      result += ' title=\"' + title + '\"';\n    }\n\n    result += '>' + linkText + '</a>';\n\n    return result;\n  };\n\n  // First, handle reference-style links: [link text] [id]\n  /*\n   text = text.replace(/\n   (\t\t\t\t\t\t\t// wrap whole match in $1\n   \\[\n   (\n   (?:\n   \\[[^\\]]*\\]\t\t// allow brackets nested one level\n   |\n   [^\\[]\t\t\t// or anything else\n   )*\n   )\n   \\]\n\n   [ ]?\t\t\t\t\t// one optional space\n   (?:\\n[ ]*)?\t\t\t\t// one optional newline followed by spaces\n\n   \\[\n   (.*?)\t\t\t\t\t// id = $3\n   \\]\n   )()()()()\t\t\t\t\t// pad remaining backreferences\n   /g,_DoAnchors_callback);\n   */\n  text = text.replace(/(\\[((?:\\[[^\\]]*]|[^\\[\\]])*)][ ]?(?:\\n[ ]*)?\\[(.*?)])()()()()/g, writeAnchorTag);\n\n  //\n  // Next, inline-style links: [link text](url \"optional title\")\n  //\n\n  /*\n   text = text.replace(/\n   (\t\t\t\t\t\t// wrap whole match in $1\n   \\[\n   (\n   (?:\n   \\[[^\\]]*\\]\t// allow brackets nested one level\n   |\n   [^\\[\\]]\t\t\t// or anything else\n   )\n   )\n   \\]\n   \\(\t\t\t\t\t\t// literal paren\n   [ \\t]*\n   ()\t\t\t\t\t\t// no id, so leave $3 empty\n   <?(.*?)>?\t\t\t\t// href = $4\n   [ \\t]*\n   (\t\t\t\t\t\t// $5\n   (['\"])\t\t\t\t// quote char = $6\n   (.*?)\t\t\t\t// Title = $7\n   \\6\t\t\t\t\t// matching quote\n   [ \\t]*\t\t\t\t// ignore any spaces/tabs between closing quote and )\n   )?\t\t\t\t\t\t// title is optional\n   \\)\n   )\n   /g,writeAnchorTag);\n   */\n  text = text.replace(/(\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]\\([ \\t]*()<?(.*?(?:\\(.*?\\).*?)?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,\n                      writeAnchorTag);\n\n  //\n  // Last, handle reference-style shortcuts: [link text]\n  // These must come last in case you've also got [link test][1]\n  // or [link test](/foo)\n  //\n\n  /*\n   text = text.replace(/\n   (                // wrap whole match in $1\n   \\[\n   ([^\\[\\]]+)       // link text = $2; can't contain '[' or ']'\n   \\]\n   )()()()()()      // pad rest of backreferences\n   /g, writeAnchorTag);\n   */\n  text = text.replace(/(\\[([^\\[\\]]+)])()()()()()/g, writeAnchorTag);\n\n  text = globals.converter._dispatch('anchors.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n  var simpleURLRegex  = /\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+)(?=\\s|$)(?![\"<>])/gi,\n      delimUrlRegex   = /<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)>/gi,\n      simpleMailRegex = /(?:^|[ \\n\\t])([A-Za-z0-9!#$%&'*+-/=?^_`\\{|}~\\.]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)(?:$|[ \\n\\t])/gi,\n      delimMailRegex  = /<(?:mailto:)?([-.\\w]+@[-a-z0-9]+(\\.[-a-z0-9]+)*\\.[a-z]+)>/gi;\n\n  text = text.replace(delimUrlRegex, replaceLink);\n  text = text.replace(delimMailRegex, replaceMail);\n  // simpleURLRegex  = /\\b(((https?|ftp|dict):\\/\\/|www\\.)[-.+~:?#@!$&'()*,;=[\\]\\w]+)\\b/gi,\n  // Email addresses: <address@domain.foo>\n\n  if (options.simplifiedAutoLink) {\n    text = text.replace(simpleURLRegex, replaceLink);\n    text = text.replace(simpleMailRegex, replaceMail);\n  }\n\n  function replaceLink(wm, link) {\n    var lnkTxt = link;\n    if (/^www\\./i.test(link)) {\n      link = link.replace(/^www\\./i, 'http://www.');\n    }\n    return '<a href=\"' + link + '\">' + lnkTxt + '</a>';\n  }\n\n  function replaceMail(wholeMatch, m1) {\n    var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\n    return showdown.subParser('encodeEmailAddress')(unescapedStr);\n  }\n\n  text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n  return text;\n});\n\n/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n  // we parse blockquotes first so that we can have headings and hrs\n  // inside blockquotes\n  text = showdown.subParser('blockQuotes')(text, options, globals);\n  text = showdown.subParser('headers')(text, options, globals);\n\n  // Do Horizontal Rules:\n  var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n  text = text.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \\t]*$/gm, key);\n\n  text = showdown.subParser('lists')(text, options, globals);\n  text = showdown.subParser('codeBlocks')(text, options, globals);\n  text = showdown.subParser('tables')(text, options, globals);\n\n  // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n  // was to escape raw HTML in the original Markdown source. This time,\n  // we're escaping the markup we've just created, so that we don't wrap\n  // <p> tags around block-level tags.\n  text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n  text = showdown.subParser('paragraphs')(text, options, globals);\n\n  text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n  return text;\n});\n\nshowdown.subParser('blockQuotes', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n  /*\n   text = text.replace(/\n   (\t\t\t\t\t\t\t\t// Wrap whole match in $1\n   (\n   ^[ \\t]*>[ \\t]?\t\t\t// '>' at the start of a line\n   .+\\n\t\t\t\t\t// rest of the first line\n   (.+\\n)*\t\t\t\t\t// subsequent consecutive lines\n   \\n*\t\t\t\t\t\t// blanks\n   )+\n   )\n   /gm, function(){...});\n   */\n\n  text = text.replace(/((^[ \\t]{0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm, function (wholeMatch, m1) {\n    var bq = m1;\n\n    // attacklab: hack around Konqueror 3.5.4 bug:\n    // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n    bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, '~0'); // trim one level of quoting\n\n    // attacklab: clean up hack\n    bq = bq.replace(/~0/g, '');\n\n    bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n    bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n    bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n    bq = bq.replace(/(^|\\n)/g, '$1  ');\n    // These leading spaces screw with <pre> content, so we need to fix that:\n    bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n      var pre = m1;\n      // attacklab: hack around Konqueror 3.5.4 bug:\n      pre = pre.replace(/^  /mg, '~0');\n      pre = pre.replace(/~0/g, '');\n      return pre;\n    });\n\n    return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n  });\n\n  text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n  return text;\n});\n\n/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n  /*\n   text = text.replace(text,\n   /(?:\\n\\n|^)\n   (\t\t\t\t\t\t\t\t// $1 = the code block -- one or more lines, starting with a space/tab\n   (?:\n   (?:[ ]{4}|\\t)\t\t\t// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width\n   .*\\n+\n   )+\n   )\n   (\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))\t// attacklab: g_tab_width\n   /g,function(){...});\n   */\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '~0';\n\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    var codeblock = m1,\n        nextChar = m2,\n        end = '\\n';\n\n    codeblock = showdown.subParser('outdent')(codeblock);\n    codeblock = showdown.subParser('encodeCode')(codeblock);\n    codeblock = showdown.subParser('detab')(codeblock);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n    if (options.omitExtraWLInCodeBlocks) {\n      end = '';\n    }\n\n    codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n    return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n  return text;\n});\n\n/**\n *\n *   *  Backtick quotes are used for <code></code> spans.\n *\n *   *  You can use multiple backticks as the delimiters if you want to\n *     include literal backticks in the code span. So, this input:\n *\n *         Just type ``foo `bar` baz`` at the prompt.\n *\n *       Will translate to:\n *\n *         <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n *    There's no arbitrary limit to the number of backticks you\n *    can use as delimters. If you need three consecutive backticks\n *    in your code, use four for delimiters, etc.\n *\n *  *  You can use spaces to get literal backticks at the edges:\n *\n *         ... type `` `bar` `` ...\n *\n *       Turns to:\n *\n *         ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n  /*\n   text = text.replace(/\n   (^|[^\\\\])\t\t\t\t\t// Character before opening ` can't be a backslash\n   (`+)\t\t\t\t\t\t// $2 = Opening run of `\n   (\t\t\t\t\t\t\t// $3 = The code block\n   [^\\r]*?\n   [^`]\t\t\t\t\t// attacklab: work around lack of lookbehind\n   )\n   \\2\t\t\t\t\t\t\t// Matching closer\n   (?!`)\n   /gm, function(){...});\n   */\n\n  if (typeof(text) === 'undefined') {\n    text = '';\n  }\n  text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n    function (wholeMatch, m1, m2, m3) {\n      var c = m3;\n      c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n      c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n      c = showdown.subParser('encodeCode')(c);\n      return m1 + '<code>' + c + '</code>';\n    }\n  );\n\n  text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n  return text;\n});\n\n/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text) {\n  'use strict';\n\n  // expand first n-1 tabs\n  text = text.replace(/\\t(?=\\t)/g, '    '); // g_tab_width\n\n  // replace the nth with two sentinels\n  text = text.replace(/\\t/g, '~A~B');\n\n  // use the sentinel to anchor our regex so it doesn't explode\n  text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) {\n    var leadingText = m1,\n        numSpaces = 4 - leadingText.length % 4;  // g_tab_width\n\n    // there *must* be a better way to do this:\n    for (var i = 0; i < numSpaces; i++) {\n      leadingText += ' ';\n    }\n\n    return leadingText;\n  });\n\n  // clean up sentinels\n  text = text.replace(/~A/g, '    ');  // g_tab_width\n  text = text.replace(/~B/g, '');\n\n  return text;\n\n});\n\n/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text) {\n  'use strict';\n  // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n  // http://bumppo.net/projects/amputator/\n  text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n  // Encode naked <'s\n  text = text.replace(/<(?![a-z\\/?\\$!])/gi, '&lt;');\n\n  return text;\n});\n\n/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n *    text = escapeCharacters(text,\"\\\\\",true);\n *    text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox.  This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text) {\n  'use strict';\n  text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n  text = text.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback);\n  return text;\n});\n\n/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text) {\n  'use strict';\n\n  // Encode all ampersands; HTML entities are not\n  // entities within a Markdown code span.\n  text = text.replace(/&/g, '&amp;');\n\n  // Do the angle bracket song and dance:\n  text = text.replace(/</g, '&lt;');\n  text = text.replace(/>/g, '&gt;');\n\n  // Now, escape characters that are magic in Markdown:\n  text = showdown.helper.escapeCharacters(text, '*_{}[]\\\\', false);\n\n  // jj the line above breaks this:\n  //---\n  //* Item\n  //   1. Subitem\n  //            special char: *\n  // ---\n\n  return text;\n});\n\n/**\n *  Input: an email address, e.g. \"foo@example.com\"\n *\n *  Output: the email address as a mailto link, with each character\n *    of the address encoded as either a decimal or hex entity, in\n *    the hopes of foiling most address harvesting spam bots. E.g.:\n *\n *    <a href=\"&#x6D;&#97;&#105;&#108;&#x74;&#111;:&#102;&#111;&#111;&#64;&#101;\n *       x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;\">&#102;&#111;&#111;\n *       &#64;&#101;x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;</a>\n *\n *  Based on a filter by Matthew Wickline, posted to the BBEdit-Talk\n *  mailing list: <http://tinyurl.com/yu7ue>\n *\n */\nshowdown.subParser('encodeEmailAddress', function (addr) {\n  'use strict';\n\n  var encode = [\n    function (ch) {\n      return '&#' + ch.charCodeAt(0) + ';';\n    },\n    function (ch) {\n      return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n    },\n    function (ch) {\n      return ch;\n    }\n  ];\n\n  addr = 'mailto:' + addr;\n\n  addr = addr.replace(/./g, function (ch) {\n    if (ch === '@') {\n      // this *must* be encoded. I insist.\n      ch = encode[Math.floor(Math.random() * 2)](ch);\n    } else if (ch !== ':') {\n      // leave ':' alone (to spot mailto: later)\n      var r = Math.random();\n      // roughly 10% raw, 45% hex, 45% dec\n      ch = (\n        r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n      );\n    }\n    return ch;\n  });\n\n  addr = '<a href=\"' + addr + '\">' + addr + '</a>';\n  addr = addr.replace(/\">.+:/g, '\">'); // strip the mailto: from the visible part\n\n  return addr;\n});\n\n/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) {\n  'use strict';\n\n  // Build a regex to find HTML tags and comments.  See Friedl's\n  // \"Mastering Regular Expressions\", 2nd Ed., pp. 200-201.\n  var regex = /(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|<!(--.*?--\\s*)+>)/gi;\n\n  text = text.replace(regex, function (wholeMatch) {\n    var tag = wholeMatch.replace(/(.)<\\/?code>(?=.)/g, '$1`');\n    tag = showdown.helper.escapeCharacters(tag, '\\\\`*_', false);\n    return tag;\n  });\n\n  return text;\n});\n\n/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n *     def hello_world(x)\n *       puts \"Hello, #{x}\"\n *     end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n  'use strict';\n\n  // early exit if option is not enabled\n  if (!options.ghCodeBlocks) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n  text += '~0';\n\n  text = text.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g, function (wholeMatch, language, codeblock) {\n    var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n    // First parse the github code block\n    codeblock = showdown.subParser('encodeCode')(codeblock);\n    codeblock = showdown.subParser('detab')(codeblock);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n    codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n    codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n    // Since GHCodeblocks can be false positives, we need to\n    // store the primitive text and the parsed text in a global var,\n    // and then return a token\n    return '\\n\\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n\nshowdown.subParser('hashBlock', function (text, options, globals) {\n  'use strict';\n  text = text.replace(/(^\\n+|\\n+$)/g, '');\n  return '\\n\\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n});\n\nshowdown.subParser('hashElement', function (text, options, globals) {\n  'use strict';\n\n  return function (wholeMatch, m1) {\n    var blockText = m1;\n\n    // Undo double lines\n    blockText = blockText.replace(/\\n\\n/g, '\\n');\n    blockText = blockText.replace(/^\\n/, '');\n\n    // strip trailing blank lines\n    blockText = blockText.replace(/\\n+$/g, '');\n\n    // Replace the element text with a marker (\"~KxK\" where x is its key)\n    blockText = '\\n\\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n    return blockText;\n  };\n});\n\nshowdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n  'use strict';\n\n  var blockTags = [\n      'pre',\n      'div',\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'table',\n      'dl',\n      'ol',\n      'ul',\n      'script',\n      'noscript',\n      'form',\n      'fieldset',\n      'iframe',\n      'math',\n      'style',\n      'section',\n      'header',\n      'footer',\n      'nav',\n      'article',\n      'aside',\n      'address',\n      'audio',\n      'canvas',\n      'figure',\n      'hgroup',\n      'output',\n      'video',\n      'p'\n    ],\n    repFunc = function (wholeMatch, match, left, right) {\n      var txt = wholeMatch;\n      // check if this html element is marked as markdown\n      // if so, it's contents should be parsed as markdown\n      if (left.search(/\\bmarkdown\\b/) !== -1) {\n        txt = left + globals.converter.makeHtml(match) + right;\n      }\n      return '\\n\\n~K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n    };\n\n  for (var i = 0; i < blockTags.length; ++i) {\n    text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\\\t){0,3}<' + blockTags[i] + '\\\\b[^>]*>', '</' + blockTags[i] + '>', 'gim');\n  }\n\n  // HR SPECIAL CASE\n  text = text.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // Special case for standalone HTML comments:\n  text = text.replace(/(<!--[\\s\\S]*?-->)/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n  text = text.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n  return text;\n});\n\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, config, globals) {\n  'use strict';\n\n  var matches = showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');\n\n  for (var i = 0; i < matches.length; ++i) {\n    text = text.replace(matches[i][0], '~L' + (globals.gHtmlSpans.push(matches[i][0]) - 1) + 'L');\n  }\n  return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, config, globals) {\n  'use strict';\n\n  for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n    text = text.replace('~L' + i + 'L', globals.gHtmlSpans[i]);\n  }\n\n  return text;\n});\n\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, config, globals) {\n  'use strict';\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match) + right;\n    return '\\n\\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\\\t){0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^(?: |\\\\t){0,3}</code>\\\\s*</pre>', 'gim');\n  return text;\n});\n\nshowdown.subParser('headers', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('headers.before', text, options, globals);\n\n  var prefixHeader = options.prefixHeaderId,\n      headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n  // Set text-style headers:\n  //\tHeader 1\n  //\t========\n  //\n  //\tHeader 2\n  //\t--------\n  //\n      setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n      setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n  text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  text = text.replace(setextRegexH2, function (matchFound, m1) {\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart + 1,\n      hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  // atx-style headers:\n  //  # Header 1\n  //  ## Header 2\n  //  ## Header 2 with closing hashes ##\n  //  ...\n  //  ###### Header 6\n  //\n  text = text.replace(/^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm, function (wholeMatch, m1, m2) {\n    var span = showdown.subParser('spanGamut')(m2, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n        hLevel = headerLevelStart - 1 + m1.length,\n        header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n    return showdown.subParser('hashBlock')(header, options, globals);\n  });\n\n  function headerId(m) {\n    var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\n\n    if (globals.hashLinkCounts[escapedId]) {\n      title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\n    } else {\n      title = escapedId;\n      globals.hashLinkCounts[escapedId] = 1;\n    }\n\n    // Prefix id to prevent causing inadvertent pre-existing style matches.\n    if (prefixHeader === true) {\n      prefixHeader = 'section';\n    }\n\n    if (showdown.helper.isString(prefixHeader)) {\n      return prefixHeader + title;\n    }\n    return title;\n  }\n\n  text = globals.converter._dispatch('headers.after', text, options, globals);\n  return text;\n});\n\n/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('images.before', text, options, globals);\n\n  var inlineRegExp    = /!\\[(.*?)]\\s?\\([ \\t]*()<?(\\S+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(['\"])(.*?)\\6[ \\t]*)?\\)/g,\n      referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[(.*?)]()()()()()/g;\n\n  function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n    var gUrls   = globals.gUrls,\n        gTitles = globals.gTitles,\n        gDims   = globals.gDimensions;\n\n    linkId = linkId.toLowerCase();\n\n    if (!title) {\n      title = '';\n    }\n\n    if (url === '' || url === null) {\n      if (linkId === '' || linkId === null) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(gUrls[linkId])) {\n        url = gUrls[linkId];\n        if (!showdown.helper.isUndefined(gTitles[linkId])) {\n          title = gTitles[linkId];\n        }\n        if (!showdown.helper.isUndefined(gDims[linkId])) {\n          width = gDims[linkId].width;\n          height = gDims[linkId].height;\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    altText = altText.replace(/\"/g, '&quot;');\n    altText = showdown.helper.escapeCharacters(altText, '*_', false);\n    url = showdown.helper.escapeCharacters(url, '*_', false);\n    var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n    if (title) {\n      title = title.replace(/\"/g, '&quot;');\n      title = showdown.helper.escapeCharacters(title, '*_', false);\n      result += ' title=\"' + title + '\"';\n    }\n\n    if (width && height) {\n      width  = (width === '*') ? 'auto' : width;\n      height = (height === '*') ? 'auto' : height;\n\n      result += ' width=\"' + width + '\"';\n      result += ' height=\"' + height + '\"';\n    }\n\n    result += ' />';\n    return result;\n  }\n\n  // First, handle reference-style labeled images: ![alt text][id]\n  text = text.replace(referenceRegExp, writeImageTag);\n\n  // Next, handle inline images:  ![alt text](url =<width>x<height> \"optional title\")\n  text = text.replace(inlineRegExp, writeImageTag);\n\n  text = globals.converter._dispatch('images.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('italicsAndBold', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n  if (options.literalMidWordUnderscores) {\n    //underscores\n    // Since we are consuming a \\s character, we need to add it\n    text = text.replace(/(^|\\s|>|\\b)__(?=\\S)([\\s\\S]+?)__(?=\\b|<|\\s|$)/gm, '$1<strong>$2</strong>');\n    text = text.replace(/(^|\\s|>|\\b)_(?=\\S)([\\s\\S]+?)_(?=\\b|<|\\s|$)/gm, '$1<em>$2</em>');\n    //asterisks\n    text = text.replace(/(\\*\\*)(?=\\S)([^\\r]*?\\S[*]*)\\1/g, '<strong>$2</strong>');\n    text = text.replace(/(\\*)(?=\\S)([^\\r]*?\\S)\\1/g, '<em>$2</em>');\n\n  } else {\n    // <strong> must go first:\n    text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g, '<strong>$2</strong>');\n    text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g, '<em>$2</em>');\n  }\n\n  text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n  return text;\n});\n\n/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('lists.before', text, options, globals);\n  /**\n   * Process the contents of a single ordered or unordered list, splitting it\n   * into individual list items.\n   * @param {string} listStr\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function processListItems (listStr, trimTrailing) {\n    // The $g_list_level global keeps track of when we're inside a list.\n    // Each time we enter a list, we increment it; when we leave a list,\n    // we decrement. If it's zero, we're not in a list anymore.\n    //\n    // We do this because when we're not inside a list, we want to treat\n    // something like this:\n    //\n    //    I recommend upgrading to version\n    //    8. Oops, now this line is treated\n    //    as a sub-list.\n    //\n    // As a single paragraph, despite the fact that the second line starts\n    // with a digit-period-space sequence.\n    //\n    // Whereas when we're inside a list (or sub-list), that line will be\n    // treated as the start of a sub-list. What a kludge, huh? This is\n    // an aspect of Markdown's syntax that's hard to parse perfectly\n    // without resorting to mind-reading. Perhaps the solution is to\n    // change the syntax rules such that sub-lists must start with a\n    // starting cardinal number; e.g. \"1.\" or \"a.\".\n    globals.gListLevel++;\n\n    // trim trailing blank lines:\n    listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n    // attacklab: add sentinel to emulate \\z\n    listStr += '~0';\n\n    var rgx = /(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,\n        isParagraphed = (/\\n[ \\t]*\\n(?!~0)/.test(listStr));\n\n    listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n      checked = (checked && checked.trim() !== '');\n      var item = showdown.subParser('outdent')(m4, options, globals),\n          bulletStyle = '';\n\n      // Support for github tasklists\n      if (taskbtn && options.tasklists) {\n        bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n        item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n          var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n          if (checked) {\n            otp += ' checked';\n          }\n          otp += '>';\n          return otp;\n        });\n      }\n      // m1 - Leading line or\n      // Has a double return (multi paragraph) or\n      // Has sublist\n      if (m1 || (item.search(/\\n{2,}/) > -1)) {\n        item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n        item = showdown.subParser('blockGamut')(item, options, globals);\n      } else {\n        // Recursion for sub-lists:\n        item = showdown.subParser('lists')(item, options, globals);\n        item = item.replace(/\\n$/, ''); // chomp(item)\n        if (isParagraphed) {\n          item = showdown.subParser('paragraphs')(item, options, globals);\n        } else {\n          item = showdown.subParser('spanGamut')(item, options, globals);\n        }\n      }\n      item =  '\\n<li' + bulletStyle + '>' + item + '</li>\\n';\n      return item;\n    });\n\n    // attacklab: strip sentinel\n    listStr = listStr.replace(/~0/g, '');\n\n    globals.gListLevel--;\n\n    if (trimTrailing) {\n      listStr = listStr.replace(/\\s+$/, '');\n    }\n\n    return listStr;\n  }\n\n  /**\n   * Check and parse consecutive lists (better fix for issue #142)\n   * @param {string} list\n   * @param {string} listType\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function parseConsecutiveLists(list, listType, trimTrailing) {\n    // check if we caught 2 or more consecutive lists by mistake\n    // we use the counterRgx, meaning if listType is UL we look for UL and vice versa\n    var counterRxg = (listType === 'ul') ? /^ {0,2}\\d+\\.[ \\t]/gm : /^ {0,2}[*+-][ \\t]/gm,\n      subLists = [],\n      result = '';\n\n    if (list.search(counterRxg) !== -1) {\n      (function parseCL(txt) {\n        var pos = txt.search(counterRxg);\n        if (pos !== -1) {\n          // slice\n          result += '\\n\\n<' + listType + '>' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n\\n';\n\n          // invert counterType and listType\n          listType = (listType === 'ul') ? 'ol' : 'ul';\n          counterRxg = (listType === 'ul') ? /^ {0,2}\\d+\\.[ \\t]/gm : /^ {0,2}[*+-][ \\t]/gm;\n\n          //recurse\n          parseCL(txt.slice(pos));\n        } else {\n          result += '\\n\\n<' + listType + '>' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n\\n';\n        }\n      })(list);\n      for (var i = 0; i < subLists.length; ++i) {\n\n      }\n    } else {\n      result = '\\n\\n<' + listType + '>' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n\\n';\n    }\n\n    return result;\n  }\n\n  // attacklab: add sentinel to hack around khtml/safari bug:\n  // http://bugs.webkit.org/show_bug.cgi?id=11231\n  text += '~0';\n\n  // Re-usable pattern to match any entire ul or ol list:\n  var wholeList = /^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n\n  if (globals.gListLevel) {\n    text = text.replace(wholeList, function (wholeMatch, list, m2) {\n      var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n      return parseConsecutiveLists(list, listType, true);\n    });\n  } else {\n    wholeList = /(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n    //wholeList = /(\\n\\n|^\\n?)( {0,3}([*+-]|\\d+\\.)[ \\t]+[\\s\\S]+?)(?=(~0)|(\\n\\n(?!\\t| {2,}| {0,3}([*+-]|\\d+\\.)[ \\t])))/g;\n    text = text.replace(wholeList, function (wholeMatch, m1, list, m3) {\n\n      var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n      return parseConsecutiveLists(list, listType);\n    });\n  }\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  text = globals.converter._dispatch('lists.after', text, options, globals);\n  return text;\n});\n\n/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text) {\n  'use strict';\n\n  // attacklab: hack around Konqueror 3.5.4 bug:\n  // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n  text = text.replace(/^(\\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width\n\n  // attacklab: clean up hack\n  text = text.replace(/~0/g, '');\n\n  return text;\n});\n\n/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n\n  var grafs = text.split(/\\n{2,}/g),\n      grafsOut = [],\n      end = grafs.length; // Wrap <p> tags\n\n  for (var i = 0; i < end; i++) {\n    var str = grafs[i];\n    // if this is an HTML marker, copy it\n    if (str.search(/~(K|G)(\\d+)\\1/g) >= 0) {\n      grafsOut.push(str);\n    } else {\n      str = showdown.subParser('spanGamut')(str, options, globals);\n      str = str.replace(/^([ \\t]*)/g, '<p>');\n      str += '</p>';\n      grafsOut.push(str);\n    }\n  }\n\n  /** Unhashify HTML blocks */\n  end = grafsOut.length;\n  for (i = 0; i < end; i++) {\n    var blockText = '',\n        grafsOutIt = grafsOut[i],\n        codeFlag = false;\n    // if this is a marker for an html block...\n    while (grafsOutIt.search(/~(K|G)(\\d+)\\1/) >= 0) {\n      var delim = RegExp.$1,\n          num   = RegExp.$2;\n\n      if (delim === 'K') {\n        blockText = globals.gHtmlBlocks[num];\n      } else {\n        // we need to check if ghBlock is a false positive\n        if (codeFlag) {\n          // use encoded version of all text\n          blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text);\n        } else {\n          blockText = globals.ghCodeBlocks[num].codeblock;\n        }\n      }\n      blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n      grafsOutIt = grafsOutIt.replace(/(\\n\\n)?~(K|G)\\d+\\2(\\n\\n)?/, blockText);\n      // Check if grafsOutIt is a pre->code\n      if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n        codeFlag = true;\n      }\n    }\n    grafsOut[i] = grafsOutIt;\n  }\n  text = grafsOut.join('\\n\\n');\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n  return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n\n/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n  'use strict';\n\n  if (ext.filter) {\n    text = ext.filter(text, globals.converter, options);\n\n  } else if (ext.regex) {\n    // TODO remove this when old extension loading mechanism is deprecated\n    var re = ext.regex;\n    if (!re instanceof RegExp) {\n      re = new RegExp(re, 'g');\n    }\n    text = text.replace(re, ext.replace);\n  }\n\n  return text;\n});\n\n/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n  text = showdown.subParser('codeSpans')(text, options, globals);\n  text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n  text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n  // Process anchor and image tags. Images must come first,\n  // because ![foo][f] looks like an anchor.\n  text = showdown.subParser('images')(text, options, globals);\n  text = showdown.subParser('anchors')(text, options, globals);\n\n  // Make links out of things like `<http://example.com/>`\n  // Must come after _DoAnchors(), because you can use < and >\n  // delimiters in inline links like [this](<url>).\n  text = showdown.subParser('autoLinks')(text, options, globals);\n  text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n  text = showdown.subParser('italicsAndBold')(text, options, globals);\n  text = showdown.subParser('strikethrough')(text, options, globals);\n\n  // Do hard breaks:\n  text = text.replace(/  +\\n/g, ' <br />\\n');\n\n  text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('strikethrough', function (text, options, globals) {\n  'use strict';\n\n  if (options.strikethrough) {\n    text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n    text = text.replace(/(?:~T){2}([\\s\\S]+?)(?:~T){2}/g, '<del>$1</del>');\n    text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n  }\n\n  return text;\n});\n\n/**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\nshowdown.subParser('stripBlankLines', function (text) {\n  'use strict';\n  return text.replace(/^[ \\t]+$/mg, '');\n});\n\n/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n *\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1  attacklab: g_tab_width - 1\n * [ \\t]*\n * \\n?                  // maybe *one* newline\n * [ \\t]*\n * <?(\\S+?)>?          // url = $2\n * [ \\t]*\n * \\n?                // maybe one newline\n * [ \\t]*\n * (?:\n * (\\n*)              // any lines skipped = $3 attacklab: lookbehind removed\n * [\"(]\n * (.+?)              // title = $4\n * [\")]\n * [ \\t]*\n * )?                 // title is optional\n * (?:\\n+|$)\n * /gm,\n * function(){...});\n *\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n  'use strict';\n\n  var regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(\\S+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=~0))/gm;\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '~0';\n\n  text = text.replace(regex, function (wholeMatch, linkId, url, width, height, blankLines, title) {\n    linkId = linkId.toLowerCase();\n    globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url);  // Link IDs are case-insensitive\n\n    if (blankLines) {\n      // Oops, found blank lines, so it's not a title.\n      // Put back the parenthetical statement we stole.\n      return blankLines + title;\n\n    } else {\n      if (title) {\n        globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n      }\n      if (options.parseImgDimensions && width && height) {\n        globals.gDimensions[linkId] = {\n          width:  width,\n          height: height\n        };\n      }\n    }\n    // Completely remove the definition from the text\n    return '';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  return text;\n});\n\nshowdown.subParser('tables', function (text, options, globals) {\n  'use strict';\n\n  if (!options.tables) {\n    return text;\n  }\n\n  var tableRgx = /^[ \\t]{0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n\n  function parseStyles(sLine) {\n    if (/^:[ \\t]*--*$/.test(sLine)) {\n      return ' style=\"text-align:left;\"';\n    } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n      return ' style=\"text-align:right;\"';\n    } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n      return ' style=\"text-align:center;\"';\n    } else {\n      return '';\n    }\n  }\n\n  function parseHeaders(header, style) {\n    var id = '';\n    header = header.trim();\n    if (options.tableHeaderId) {\n      id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n    }\n    header = showdown.subParser('spanGamut')(header, options, globals);\n\n    return '<th' + id + style + '>' + header + '</th>\\n';\n  }\n\n  function parseCells(cell, style) {\n    var subText = showdown.subParser('spanGamut')(cell, options, globals);\n    return '<td' + style + '>' + subText + '</td>\\n';\n  }\n\n  function buildTable(headers, cells) {\n    var tb = '<table>\\n<thead>\\n<tr>\\n',\n        tblLgn = headers.length;\n\n    for (var i = 0; i < tblLgn; ++i) {\n      tb += headers[i];\n    }\n    tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n    for (i = 0; i < cells.length; ++i) {\n      tb += '<tr>\\n';\n      for (var ii = 0; ii < tblLgn; ++ii) {\n        tb += cells[i][ii];\n      }\n      tb += '</tr>\\n';\n    }\n    tb += '</tbody>\\n</table>\\n';\n    return tb;\n  }\n\n  text = globals.converter._dispatch('tables.before', text, options, globals);\n\n  text = text.replace(tableRgx, function (rawTable) {\n\n    var i, tableLines = rawTable.split('\\n');\n\n    // strip wrong first and last column if wrapped tables are used\n    for (i = 0; i < tableLines.length; ++i) {\n      if (/^[ \\t]{0,3}\\|/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/^[ \\t]{0,3}\\|/, '');\n      }\n      if (/\\|[ \\t]*$/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n      }\n    }\n\n    var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n        rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n        rawCells = [],\n        headers = [],\n        styles = [],\n        cells = [];\n\n    tableLines.shift();\n    tableLines.shift();\n\n    for (i = 0; i < tableLines.length; ++i) {\n      if (tableLines[i].trim() === '') {\n        continue;\n      }\n      rawCells.push(\n        tableLines[i]\n          .split('|')\n          .map(function (s) {\n            return s.trim();\n          })\n      );\n    }\n\n    if (rawHeaders.length < rawStyles.length) {\n      return rawTable;\n    }\n\n    for (i = 0; i < rawStyles.length; ++i) {\n      styles.push(parseStyles(rawStyles[i]));\n    }\n\n    for (i = 0; i < rawHeaders.length; ++i) {\n      if (showdown.helper.isUndefined(styles[i])) {\n        styles[i] = '';\n      }\n      headers.push(parseHeaders(rawHeaders[i], styles[i]));\n    }\n\n    for (i = 0; i < rawCells.length; ++i) {\n      var row = [];\n      for (var ii = 0; ii < headers.length; ++ii) {\n        if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n        }\n        row.push(parseCells(rawCells[i][ii], styles[ii]));\n      }\n      cells.push(row);\n    }\n\n    return buildTable(headers, cells);\n  });\n\n  text = globals.converter._dispatch('tables.after', text, options, globals);\n\n  return text;\n});\n\n/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text) {\n  'use strict';\n\n  text = text.replace(/~E(\\d+)E/g, function (wholeMatch, m1) {\n    var charCodeToReplace = parseInt(m1);\n    return String.fromCharCode(charCodeToReplace);\n  });\n  return text;\n});\nmodule.exports = showdown;\n"
  },
  {
    "path": "litemall-wx/lib/wxParse/wxDiscode.js",
    "content": "// HTML 支持的数学符号\nfunction strNumDiscode(str){\n    str = str.replace(/&forall;/g, '∀');\n    str = str.replace(/&part;/g, '∂');\n    str = str.replace(/&exists;/g, '∃');\n    str = str.replace(/&empty;/g, '∅');\n    str = str.replace(/&nabla;/g, '∇');\n    str = str.replace(/&isin;/g, '∈');\n    str = str.replace(/&notin;/g, '∉');\n    str = str.replace(/&ni;/g, '∋');\n    str = str.replace(/&prod;/g, '∏');\n    str = str.replace(/&sum;/g, '∑');\n    str = str.replace(/&minus;/g, '−');\n    str = str.replace(/&lowast;/g, '∗');\n    str = str.replace(/&radic;/g, '√');\n    str = str.replace(/&prop;/g, '∝');\n    str = str.replace(/&infin;/g, '∞');\n    str = str.replace(/&ang;/g, '∠');\n    str = str.replace(/&and;/g, '∧');\n    str = str.replace(/&or;/g, '∨');\n    str = str.replace(/&cap;/g, '∩');\n    str = str.replace(/&cap;/g, '∪');\n    str = str.replace(/&int;/g, '∫');\n    str = str.replace(/&there4;/g, '∴');\n    str = str.replace(/&sim;/g, '∼');\n    str = str.replace(/&cong;/g, '≅');\n    str = str.replace(/&asymp;/g, '≈');\n    str = str.replace(/&ne;/g, '≠');\n    str = str.replace(/&le;/g, '≤');\n    str = str.replace(/&ge;/g, '≥');\n    str = str.replace(/&sub;/g, '⊂');\n    str = str.replace(/&sup;/g, '⊃');\n    str = str.replace(/&nsub;/g, '⊄');\n    str = str.replace(/&sube;/g, '⊆');\n    str = str.replace(/&supe;/g, '⊇');\n    str = str.replace(/&oplus;/g, '⊕');\n    str = str.replace(/&otimes;/g, '⊗');\n    str = str.replace(/&perp;/g, '⊥');\n    str = str.replace(/&sdot;/g, '⋅');\n    return str;\n}\n\n//HTML 支持的希腊字母\nfunction strGreeceDiscode(str){\n    str = str.replace(/&Alpha;/g, 'Α');\n    str = str.replace(/&Beta;/g, 'Β');\n    str = str.replace(/&Gamma;/g, 'Γ');\n    str = str.replace(/&Delta;/g, 'Δ');\n    str = str.replace(/&Epsilon;/g, 'Ε');\n    str = str.replace(/&Zeta;/g, 'Ζ');\n    str = str.replace(/&Eta;/g, 'Η');\n    str = str.replace(/&Theta;/g, 'Θ');\n    str = str.replace(/&Iota;/g, 'Ι');\n    str = str.replace(/&Kappa;/g, 'Κ');\n    str = str.replace(/&Lambda;/g, 'Λ');\n    str = str.replace(/&Mu;/g, 'Μ');\n    str = str.replace(/&Nu;/g, 'Ν');\n    str = str.replace(/&Xi;/g, 'Ν');\n    str = str.replace(/&Omicron;/g, 'Ο');\n    str = str.replace(/&Pi;/g, 'Π');\n    str = str.replace(/&Rho;/g, 'Ρ');\n    str = str.replace(/&Sigma;/g, 'Σ');\n    str = str.replace(/&Tau;/g, 'Τ');\n    str = str.replace(/&Upsilon;/g, 'Υ');\n    str = str.replace(/&Phi;/g, 'Φ');\n    str = str.replace(/&Chi;/g, 'Χ');\n    str = str.replace(/&Psi;/g, 'Ψ');\n    str = str.replace(/&Omega;/g, 'Ω');\n\n    str = str.replace(/&alpha;/g, 'α');\n    str = str.replace(/&beta;/g, 'β');\n    str = str.replace(/&gamma;/g, 'γ');\n    str = str.replace(/&delta;/g, 'δ');\n    str = str.replace(/&epsilon;/g, 'ε');\n    str = str.replace(/&zeta;/g, 'ζ');\n    str = str.replace(/&eta;/g, 'η');\n    str = str.replace(/&theta;/g, 'θ');\n    str = str.replace(/&iota;/g, 'ι');\n    str = str.replace(/&kappa;/g, 'κ');\n    str = str.replace(/&lambda;/g, 'λ');\n    str = str.replace(/&mu;/g, 'μ');\n    str = str.replace(/&nu;/g, 'ν');\n    str = str.replace(/&xi;/g, 'ξ');\n    str = str.replace(/&omicron;/g, 'ο');\n    str = str.replace(/&pi;/g, 'π');\n    str = str.replace(/&rho;/g, 'ρ');\n    str = str.replace(/&sigmaf;/g, 'ς');\n    str = str.replace(/&sigma;/g, 'σ');\n    str = str.replace(/&tau;/g, 'τ');\n    str = str.replace(/&upsilon;/g, 'υ');\n    str = str.replace(/&phi;/g, 'φ');\n    str = str.replace(/&chi;/g, 'χ');\n    str = str.replace(/&psi;/g, 'ψ');\n    str = str.replace(/&omega;/g, 'ω');\n    str = str.replace(/&thetasym;/g, 'ϑ');\n    str = str.replace(/&upsih;/g, 'ϒ');\n    str = str.replace(/&piv;/g, 'ϖ');\n    str = str.replace(/&middot;/g, '·');\n    return str;\n}\n\n// \n\nfunction strcharacterDiscode(str){\n    // 加入常用解析\n    str = str.replace(/&nbsp;/g, ' ');\n    str = str.replace(/&quot;/g, '\"');\n    str = str.replace(/&amp;/g, '&');\n    // str = str.replace(/&lt;/g, '‹');\n    // str = str.replace(/&gt;/g, '›');\n\n    str = str.replace(/&lt;/g, '<');\n    str = str.replace(/&gt;/g, '>');\n\n    return str;\n}\n\n// HTML 支持的其他实体\nfunction strOtherDiscode(str){\n    str = str.replace(/&OElig;/g, 'Œ');\n    str = str.replace(/&oelig;/g, 'œ');\n    str = str.replace(/&Scaron;/g, 'Š');\n    str = str.replace(/&scaron;/g, 'š');\n    str = str.replace(/&Yuml;/g, 'Ÿ');\n    str = str.replace(/&fnof;/g, 'ƒ');\n    str = str.replace(/&circ;/g, 'ˆ');\n    str = str.replace(/&tilde;/g, '˜');\n    str = str.replace(/&ensp;/g, '');\n    str = str.replace(/&emsp;/g, '');\n    str = str.replace(/&thinsp;/g, '');\n    str = str.replace(/&zwnj;/g, '');\n    str = str.replace(/&zwj;/g, '');\n    str = str.replace(/&lrm;/g, '');\n    str = str.replace(/&rlm;/g, '');\n    str = str.replace(/&ndash;/g, '–');\n    str = str.replace(/&mdash;/g, '—');\n    str = str.replace(/&lsquo;/g, '‘');\n    str = str.replace(/&rsquo;/g, '’');\n    str = str.replace(/&sbquo;/g, '‚');\n    str = str.replace(/&ldquo;/g, '“');\n    str = str.replace(/&rdquo;/g, '”');\n    str = str.replace(/&bdquo;/g, '„');\n    str = str.replace(/&dagger;/g, '†');\n    str = str.replace(/&Dagger;/g, '‡');\n    str = str.replace(/&bull;/g, '•');\n    str = str.replace(/&hellip;/g, '…');\n    str = str.replace(/&permil;/g, '‰');\n    str = str.replace(/&prime;/g, '′');\n    str = str.replace(/&Prime;/g, '″');\n    str = str.replace(/&lsaquo;/g, '‹');\n    str = str.replace(/&rsaquo;/g, '›');\n    str = str.replace(/&oline;/g, '‾');\n    str = str.replace(/&euro;/g, '€');\n    str = str.replace(/&trade;/g, '™');\n\n    str = str.replace(/&larr;/g, '←');\n    str = str.replace(/&uarr;/g, '↑');\n    str = str.replace(/&rarr;/g, '→');\n    str = str.replace(/&darr;/g, '↓');\n    str = str.replace(/&harr;/g, '↔');\n    str = str.replace(/&crarr;/g, '↵');\n    str = str.replace(/&lceil;/g, '⌈');\n    str = str.replace(/&rceil;/g, '⌉');\n\n    str = str.replace(/&lfloor;/g, '⌊');\n    str = str.replace(/&rfloor;/g, '⌋');\n    str = str.replace(/&loz;/g, '◊');\n    str = str.replace(/&spades;/g, '♠');\n    str = str.replace(/&clubs;/g, '♣');\n    str = str.replace(/&hearts;/g, '♥');\n\n    str = str.replace(/&diams;/g, '♦');\n\n    return str;\n}\n\nfunction strMoreDiscode(str){\n    str = str.replace(/\\r\\n/g,\"\");  \n    str = str.replace(/\\n/g,\"\");\n\n    str = str.replace(/code/g,\"wxxxcode-style\");\n    return str;\n}\n\nfunction strDiscode(str){\n    str = strNumDiscode(str);\n    str = strGreeceDiscode(str);\n    str = strcharacterDiscode(str);\n    str = strOtherDiscode(str);\n    str = strMoreDiscode(str);\n    return str;\n}\nfunction urlToHttpUrl(url,rep){\n    \n    var patt1 = new RegExp(\"^//\");\n    var result = patt1.test(url);\n    if(result){\n        url = rep+\":\"+url;\n    }\n    return  url;\n}\n\nmodule.exports = {\n    strDiscode:strDiscode,\n    urlToHttpUrl:urlToHttpUrl\n}"
  },
  {
    "path": "litemall-wx/lib/wxParse/wxParse.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\n/**\n * utils函数引入\n **/\nimport showdown from 'showdown.js';\nimport HtmlToJson from 'html2json.js';\n/**\n * 配置及公有属性\n **/\n/**\n * 主函数入口区\n **/\nfunction wxParse(bindName = 'wxParseData', type='html', data='<div class=\"color:red;\">数据不能为空</div>', target,imagePadding) {\n  var that = target;\n  var transData = {};//存放转化后的数据\n  if (type == 'html') {\n    transData = HtmlToJson.html2json(data, bindName);\n    // console.log(JSON.stringify(transData, ' ', ' '));\n  } else if (type == 'md' || type == 'markdown') {\n    var converter = new showdown.Converter();\n    var html = converter.makeHtml(data);\n    transData = HtmlToJson.html2json(html, bindName);\n    // console.log(JSON.stringify(transData, ' ', ' '));\n  }\n  transData.view = {};\n  transData.view.imagePadding = 0;\n  if(typeof(imagePadding) != 'undefined'){\n    transData.view.imagePadding = imagePadding\n  }\n  var bindData = {};\n  bindData[bindName] = transData;\n  that.setData(bindData)\n  that.wxParseImgLoad = wxParseImgLoad;\n  that.wxParseImgTap = wxParseImgTap;\n}\n// 图片点击事件\nfunction wxParseImgTap(e) {\n  var that = this;\n  var nowImgUrl = e.target.dataset.src;\n  var tagFrom = e.target.dataset.from;\n  if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {\n    wx.previewImage({\n      current: nowImgUrl, // 当前显示图片的http链接\n      urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表\n    })\n  }\n}\n\n/**\n * 图片视觉宽高计算函数区 \n **/\nfunction wxParseImgLoad(e) {\n  var that = this;\n  var tagFrom = e.target.dataset.from;\n  var idx = e.target.dataset.idx;\n  if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {\n    calMoreImageInfo(e, idx, that, tagFrom)\n  } \n}\n// 假循环获取计算图片视觉最佳宽高\nfunction calMoreImageInfo(e, idx, that, bindName) {\n  var temData = that.data[bindName];\n  if (temData.images.length == 0) {\n    return;\n  }\n  var temImages = temData.images;\n  //因为无法获取view宽度 需要自定义padding进行计算，稍后处理\n  var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName); \n  temImages[idx].width = recal.imageWidth;\n  temImages[idx].height = recal.imageheight; \n  temData.images = temImages;\n  var bindData = {};\n  bindData[bindName] = temData;\n  that.setData(bindData);\n}\n\n// 计算视觉优先的图片宽高\nfunction wxAutoImageCal(originalWidth, originalHeight,that,bindName) {\n  //获取图片的原始长宽\n  var windowWidth = 0, windowHeight = 0;\n  var autoWidth = 0, autoHeight = 0;\n  var results = {};\n  wx.getSystemInfo({\n    success: function (res) {\n      var padding = that.data[bindName].view.imagePadding;\n      windowWidth = res.windowWidth-2*padding;\n      windowHeight = res.windowHeight;\n      //判断按照那种方式进行缩放\n      // console.log(\"windowWidth\" + windowWidth);\n      if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候\n        autoWidth = windowWidth;\n        // console.log(\"autoWidth\" + autoWidth);\n        autoHeight = (autoWidth * originalHeight) / originalWidth;\n        // console.log(\"autoHeight\" + autoHeight);\n        results.imageWidth = autoWidth;\n        results.imageheight = autoHeight;\n      } else {//否则展示原来的数据\n        results.imageWidth = originalWidth;\n        results.imageheight = originalHeight;\n      }\n    }\n  })\n  return results;\n}\n\nfunction wxParseTemArray(temArrayName,bindNameReg,total,that){\n  var array = [];\n  var temData = that.data;\n  var obj = null;\n  for(var i = 0; i < total; i++){\n    var simArr = temData[bindNameReg+i].nodes;\n    array.push(simArr);\n  }\n\n  temArrayName = temArrayName || 'wxParseTemArray';\n  obj = JSON.parse('{\"'+ temArrayName +'\":\"\"}');\n  obj[temArrayName] = array;\n  that.setData(obj);\n}\n\n/**\n * 配置emojis\n * \n */\n\nfunction emojisInit(reg='',baseSrc=\"/wxParse/emojis/\",emojis){\n   HtmlToJson.emojisInit(reg,baseSrc,emojis);\n}\n\nmodule.exports = {\n  wxParse: wxParse,\n  wxParseTemArray:wxParseTemArray,\n  emojisInit:emojisInit\n}\n\n\n"
  },
  {
    "path": "litemall-wx/lib/wxParse/wxParse.wxml",
    "content": "\n<!--**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */-->\n\n <!--基础元素-->\n<template name=\"wxParseVideo\">\n    <!--增加video标签支持，并循环添加-->\n    <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n        <video class=\"{{item.classStr}} wxParse-{{item.tag}}-video\" src=\"{{item.attr.src}}\"></video>\n    </view>\n</template>\n\n<template name=\"wxParseImg\">\n    <image class=\"{{item.classStr}} wxParse-{{item.tag}}\" data-from=\"{{item.from}}\" data-src=\"{{item.attr.src}}\"  data-idx=\"{{item.imgIndex}}\"  src=\"{{item.attr.src}}\" mode=\"aspectFit\" bindload=\"wxParseImgLoad\" bindtap=\"wxParseImgTap\" style=\"width:{{item.width}}px;height:{{item.height}}px;{{item.attr.style}}\"   />\n</template>\n\n<template name=\"WxEmojiView\">\n  <view class=\"WxEmojiView wxParse-inline\" style=\"{{item.styleStr}}\">\n    <block wx:for=\"{{item.textArray}}\" wx:key=\"key\">\n      <block class=\"{{item.text == '\\\\n' ? 'wxParse-hide':''}}\" wx:if=\"{{item.node == 'text'}}\">{{item.text}}</block>\n      <block wx:elif=\"{{item.node == 'element'}}\">\n        <image class=\"wxEmoji\" src=\"{{item.baseSrc}}{{item.text}}\" />\n      </block>\n    </block>\n  </view>\n</template>\n\n<!--入口模版-->\n\n<template name=\"wxParse\">\n    <block wx:for=\"{{wxParseData}}\" wx:key=\"key\">\n        <template is=\"wxParse0\" data=\"{{item}}\"/>\n    </block>\n</template>\n\n\n<!--循环模版-->\n<template name=\"wxParse0\">\n    <!--<template is=\"wxParse1\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse1\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse1\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-c=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse1\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        <block wx:elif=\"{{item.tag == 'table'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n\n\n<!--循环模版-->\n<template name=\"wxParse1\">\n    <!--<template is=\"wxParse2\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse2\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse2\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse2\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse2\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse2\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n\n<!--循环模版-->\n<template name=\"wxParse2\">\n    <!--<template is=\"wxParse3\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse3\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse3\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse3\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse3\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse3\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse3\">\n    <!--<template is=\"wxParse4\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse4\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse4\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse4\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse4\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse4\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse4\">\n    <!--<template is=\"wxParse5\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse5\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse5\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse5\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse5\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse5\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse5\">\n    <!--<template is=\"wxParse6\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse6\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse6\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse6\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse6\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse6\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse6\">\n    <!--<template is=\"wxParse7\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse7\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse7\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse7\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse7\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse7\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n<!--循环模版-->\n<template name=\"wxParse7\">\n    <!--<template is=\"wxParse8\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse8\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse8\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse8\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse8\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse8\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse8\">\n    <!--<template is=\"wxParse9\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse9\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse9\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse9\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse9\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse9\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse9\">\n    <!--<template is=\"wxParse10\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse10\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse10\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse10\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse10\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse10\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse10\">\n    <!--<template is=\"wxParse11\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse11\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse11\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse11\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse11\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse11\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse11\">\n    <!--<template is=\"wxParse12\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse12\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                            <template is=\"wxParse12\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">\n                    <template is=\"wxParse12\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                    <template is=\"wxParse12\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"key\">       \n                <template is=\"wxParse12\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>"
  },
  {
    "path": "litemall-wx/lib/wxParse/wxParse.wxss",
    "content": "\n/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\n.wxParse{\n    margin: 0 5px;\n    font-family: Helvetica,sans-serif;\n    font-size: 28rpx;\n    color: #666;\n    line-height: 1.8;\n}\nview{\n    word-break:break-all; overflow:auto;\n}\n.wxParse-inline{\n    display: inline;\n    margin: 0;\n    padding: 0;\n}\n/*//标题 */\n.wxParse-div{margin: 0;padding: 0;}\n.wxParse-h1{ font-size:2em; margin: .67em 0 }\n.wxParse-h2{ font-size:1.5em; margin: .75em 0 }\n.wxParse-h3{ font-size:1.17em; margin: .83em 0 }\n.wxParse-h4{ margin: 1.12em 0}\n.wxParse-h5 { font-size:.83em; margin: 1.5em 0 }\n.wxParse-h6{ font-size:.75em; margin: 1.67em 0 }\n\n.wxParse-h1 {\n  font-size: 18px;\n  font-weight: 400;\n  margin-bottom: .9em;\n}\n.wxParse-h2 {\n  font-size: 16px;\n  font-weight: 400;\n  margin-bottom: .34em;\n}\n.wxParse-h3 {\n  font-weight: 400;\n  font-size: 15px;\n  margin-bottom: .34em;\n}\n.wxParse-h4 {\n  font-weight: 400;\n  font-size: 14px;\n  margin-bottom: .24em;\n}\n.wxParse-h5 {\n  font-weight: 400;\n  font-size: 13px;\n  margin-bottom: .14em;\n}\n.wxParse-h6 {\n  font-weight: 400;\n  font-size: 12px;\n  margin-bottom: .04em;\n}\n\n.wxParse-h1, .wxParse-h2, .wxParse-h3, .wxParse-h4, .wxParse-h5, .wxParse-h6, .wxParse-b, .wxParse-strong  { font-weight: bolder }\n\n.wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address{font-style:italic}\n.wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp{font-family:monospace}\n.wxParse-pre{white-space:pre}\n.wxParse-big{font-size:1.17em}\n.wxParse-small,.wxParse-sub,.wxParse-sup{font-size:.83em}\n.wxParse-sub{vertical-align:sub}\n.wxParse-sup{vertical-align:super}\n.wxParse-s,.wxParse-strike,.wxParse-del{text-decoration:line-through}\n/*wxparse-自定义个性化的css样式*/\n/*增加video的css样式*/\n.wxParse-strong,wxParse-s{display: inline}\n.wxParse-a{\n    color: deepskyblue;\n    word-break:break-all;\n    overflow:auto;\n}\n\n.wxParse-video{\n    text-align: center;\n    margin: 10px 0;\n}\n\n.wxParse-video-video{\n    width:100%;\n}\n\n.wxParse-img{\n    background-color: #efefef;\n    overflow: hidden;\n    width:40px;\n    height: 40px;\n}\n\n.wxParse-blockquote {\n    margin: 0;\n    padding:10px 0 10px 5px;\n    font-family:Courier, Calibri,\"宋体\";\n    background:#f5f5f5;\n    border-left: 3px solid #dbdbdb;\n}\n\n.wxParse-code,.wxParse-wxxxcode-style{\n    display: inline;\n    background:#f5f5f5;\n}\n.wxParse-ul{\n    margin: 20rpx 10rpx;\n}\n\n.wxParse-li,.wxParse-li-inner{\n    display: flex;\n    align-items: baseline;\n    margin: 10rpx 0;\n}\n.wxParse-li-text{\n    \n    align-items: center;\n    line-height: 20px;\n}\n\n.wxParse-li-circle{\n    display: inline-flex;\n    width: 5px;\n    height: 5px;\n    background-color: #333;\n    margin-right: 5px;\n}\n\n.wxParse-li-square{\n    display: inline-flex;\n    width: 10rpx;\n    height: 10rpx;\n    background-color: #333;\n    margin-right: 5px;\n}\n.wxParse-li-ring{\n    display: inline-flex;\n    width: 10rpx;\n    height: 10rpx;\n    border: 2rpx solid #333;\n    border-radius: 50%;\n    background-color: #fff;\n    margin-right: 5px;\n}\n\n/*.wxParse-table{\n    width: 100%;\n    height: 400px;\n}\n.wxParse-thead,.wxParse-tfoot,.wxParse-tr{\n    display: flex;\n    flex-direction: row;\n}\n.wxParse-th,.wxParse-td{\n    display: flex;\n    width: 580px;\n    overflow: auto;\n}*/\n\n.wxParse-u {\n  text-decoration: underline;\n}\n.wxParse-hide{\n    display: none;\n}\n.WxEmojiView{\n    align-items: center;\n}\n.wxEmoji{\n    width: 16px;\n    height:16px;\n}\n.wxParse-tr{\n\tdisplay: flex;\n\tborder-right:1px solid #e0e0e0;\n\tborder-bottom:1px solid #e0e0e0;\n}\n.wxParse-th,\n.wxParse-td{\n\tflex:1;\n\tpadding:5px;\n\tfont-size:28rpx;\n\tborder-left:1px solid #e0e0e0;\n\tword-break: break-all;\n}\n.wxParse-td:last{\n\tborder-top:1px solid #e0e0e0;\n}\n.wxParse-th{\n\tbackground:#f0f0f0;\n\tborder-top:1px solid #e0e0e0;\n}\n\n"
  },
  {
    "path": "litemall-wx/pages/about/about.js",
    "content": "const util = require('../../utils/util.js');\nconst api = require('../../config/api.js');\n\n//获取应用实例\nconst app = getApp();\n\nPage({\n\n  /**\n   * 页面的初始数据\n   */\n  data: {\n    name: 'litemall',\n    address: 'https://github.com/linlinjava/litemall',\n    latitude: '31.201900',\n    longitude: '121.587839',\n    phone: '021-xxxx-xxxx',\n    qq: '705144434'\n  },\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function (options) {\n    this.getAbout()\n  },\n  getAbout: function () {\n    let that = this;\n    util.request(api.AboutUrl).then(function (res) {\n      if (res.errno === 0) {\n        that.setData({\n          name: res.data.name,\n          address: res.data.address,\n          phone: res.data.phone,\n          qq: res.data.qq,\n          latitude: res.data.latitude,\n          longitude: res.data.longitude\n        });\n      }\n    });\n  },\n  showLocation: function (e) {\n    var that = this\n    wx.openLocation({\n      latitude: parseFloat(that.data.latitude),\n      longitude: parseFloat(that.data.longitude),\n      name: that.data.name,\n      address: that.data.address,\n    })\n  },\n  callPhone: function (e) {\n    var that = this\n    wx.makePhoneCall({\n      phoneNumber: that.data.phone,\n    })\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/about/about.json",
    "content": "{}"
  },
  {
    "path": "litemall-wx/pages/about/about.wxml",
    "content": "<view class=\"container\">\n\n  <view class=\"label\">项目名称:</view>\n  <view class=\"about-item\">\n    <view class=\"item-left\">\n      <text>{{name}}</text> \n    </view>\n  </view>\n\n  <view class=\"label\">项目地址:</view>\n  <view class=\"about-item\">\n    <view class=\"item-left\">\n      <text>{{address}}</text> \n    </view>\n    <view class=\"item-right\" bindtap=\"showLocation\">\n      <van-icon class=\"right-icon\" name=\"location-o\" />    \n    </view>\n  </view>\n\n  <view class=\"label\">电话号码:</view>\n  <view class=\"about-item\">\n    <view class=\"item-left\">\n      <text>{{phone}}</text> \n    </view>\n    <view class=\"item-right\" bindtap=\"callPhone\">\n      <van-icon class=\"right-icon\" name=\"phone-o\" />\n    </view>\n  </view>\n\n  <view class=\"label\">QQ交流群: </view>\n  <view class=\"about-item\">\n    <view class=\"item-left\">\n      <text>{{qq}}</text> \n    </view>\n    <view class=\"item-right\">\n      <van-icon class=\"right-icon\" name=\"friends-o\" />\n    </view>\n  </view>\n\n</view>"
  },
  {
    "path": "litemall-wx/pages/about/about.wxss",
    "content": "/* about.wxss */\n\n.label {\n  font-size: 26rpx;\n  margin-left: 20rpx;\n  padding: 10rpx 0;\n} \n\n\n.about-item{\n  background: white;\n  border-top: solid #f2f2f2 0.5rpx;\n  border-bottom: solid #f2f2f2 0.5rpx;\n  width: 100%;\n  height: 100rpx;\n  display: flex;\n  flex-direction: row;\n  justify-content: space-between;\n}\n\n.item-left{\n  font-size: 38rpx;\n  margin-left: 40rpx;\n  margin-top: auto;\n  margin-bottom: auto;\n}\n\n.item-right{\n  margin-right: 15rpx;\n  margin-top: auto;\n  margin-bottom: auto;\n}\n.right-icon{\n  width: 40rpx;\n  height: 40rpx;\n}"
  },
  {
    "path": "litemall-wx/pages/auth/accountLogin/accountLogin.js",
    "content": "var api = require('../../../config/api.js');\nvar util = require('../../../utils/util.js');\nvar user = require('../../../utils/user.js');\n\nvar app = getApp();\nPage({\n  data: {\n    username: '',\n    password: '',\n    code: '',\n    loginErrorCount: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    // 页面渲染完成\n\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  accountLogin: function() {\n    var that = this;\n\n    if (this.data.password.length < 1 || this.data.username.length < 1) {\n      wx.showModal({\n        title: '错误信息',\n        content: '请输入用户名和密码',\n        showCancel: false\n      });\n      return false;\n    }\n\n    wx.request({\n      url: api.AuthLoginByAccount,\n      data: {\n        username: that.data.username,\n        password: that.data.password\n      },\n      method: 'POST',\n      header: {\n        'content-type': 'application/json'\n      },\n      success: function(res) {\n        if (res.data.errno == 0) {\n          that.setData({\n            loginErrorCount: 0\n          });\n          app.globalData.hasLogin = true;\n          wx.setStorageSync('userInfo', res.data.data.userInfo);\n          wx.setStorage({\n            key: \"token\",\n            data: res.data.data.token,\n            success: function() {\n              wx.switchTab({\n                url: '/pages/ucenter/index/index'\n              });\n            }\n          });\n        } else {\n          that.setData({\n            loginErrorCount: that.data.loginErrorCount + 1\n          });\n          app.globalData.hasLogin = false;\n          util.showErrorToast('账户登录失败');\n        }\n      }\n    });\n  },\n  bindUsernameInput: function(e) {\n\n    this.setData({\n      username: e.detail.value\n    });\n  },\n  bindPasswordInput: function(e) {\n\n    this.setData({\n      password: e.detail.value\n    });\n  },\n  bindCodeInput: function(e) {\n\n    this.setData({\n      code: e.detail.value\n    });\n  },\n  clearInput: function(e) {\n    switch (e.currentTarget.id) {\n      case 'clear-username':\n        this.setData({\n          username: ''\n        });\n        break;\n      case 'clear-password':\n        this.setData({\n          password: ''\n        });\n        break;\n      case 'clear-code':\n        this.setData({\n          code: ''\n        });\n        break;\n    }\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/auth/accountLogin/accountLogin.json",
    "content": "{\n  \"navigationBarTitleText\": \"账号登录\"\n}"
  },
  {
    "path": "litemall-wx/pages/auth/accountLogin/accountLogin.wxml",
    "content": "<view class=\"container\">\n    <view class=\"form-box\">\n\n    \t<view class=\"form-item\">\n    \t\t<input class=\"username\" value=\"{{username}}\" bindinput=\"bindUsernameInput\" placeholder=\"账号\"/>\n        <van-icon name=\"close\" wx:if=\"{{ username.length > 0 }}\" id=\"clear-username\" class=\"clear\" catchtap=\"clearInput\"/>\n    \t</view>\n\n    \t<view class=\"form-item\">\n    \t\t<input class=\"password\" value=\"{{password}}\" password bindinput=\"bindPasswordInput\" placeholder=\"密码\"/>\n        <van-icon class=\"clear\" id=\"clear-password\" wx:if=\"{{ password.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>      \n    \t</view>\n\n\t\t <!-- <view class=\"form-item-code\" wx-if=\"{{loginErrorCount >= 3}}\">\n\t\t\t<view class=\"form-item code-item\">\n\t\t\t\t<input class=\"code\" value=\"{{code}}\" bindinput=\"bindCodeInput\" placeholder=\"验证码\"/>\n        <van-icon class=\"clear\" id=\"clear-code\" wx:if=\"{{ code.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>        \n\t\t\t</view>\n\t\t\t<image class=\"code-img\" src=\"captcha.png\"></image>\n\t\t</view>  -->\n\n    <button type=\"primary\" class=\"login-btn\" bindtap=\"accountLogin\">账号登录</button>\n\n     <view class=\"form-item-text\">\n      <navigator url=\"/pages/auth/register/register\" class=\"register\">注册账号</navigator>\n\t\t\t<navigator url=\"/pages/auth/reset/reset\" class=\"reset\">忘记密码</navigator>\n    </view> \n    </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/auth/accountLogin/accountLogin.wxss",
    "content": ".form-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 0 40rpx;\n  margin-top: 200rpx;\n  background: #fff;\n}\n\n.form-item {\n  position: relative;\n  background: #fff;\n  height: 96rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.form-item .username, .form-item .password, .form-item .code {\n  position: absolute;\n  top: 26rpx;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 44rpx;\n  background: #fff;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.form-item-code {\n  margin-top: 32rpx;\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n}\n\n.form-item-code .form-item {\n  float: left;\n  width: 350rpx;\n}\n\n.form-item-code .code-img {\n  float: right;\n  margin-top: 4rpx;\n  height: 88rpx;\n  width: 236rpx;\n}\n\n.form-item .clear {\n  position: absolute;\n  top: 32rpx;\n  right: 18rpx;\n  z-index: 2;\n  display: block;\n  background: #fff;\n}\n\n.login-btn {\n  margin: 60rpx 0 40rpx 0;\n  height: 96rpx;\n  line-height: 96rpx;\n  font-size: 30rpx;\n  border-radius: 6rpx;\n  width: 90%;\n  color: #fff;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: flex;\n  bottom: 0;\n  left: 0;\n  padding: 0;\n  margin-left: 5%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n\n.form-item-text {\n  height: 35rpx;\n  width: 100%;\n}\n\n.form-item-text .register {\n  display: block;\n  height: 34rpx;\n  float: left;\n  font-size: 28rpx;\n}\n\n.form-item-text .reset {\n  display: block;\n  height: 34rpx;\n  float: right;\n  font-size: 28rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/auth/login/login.js",
    "content": "var api = require('../../../config/api.js');\nvar util = require('../../../utils/util.js');\nvar user = require('../../../utils/user.js');\n\nvar app = getApp();\nPage({\n  data: {\n    canIUseGetUserProfile: false,\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    // 页面渲染完成\n    if (wx.getUserProfile) {\n      this.setData({\n        canIUseGetUserProfile: true\n      })\n    }\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  wxLogin: function(e) {\n    if (this.data.canIUseGetUserProfile) {\n      wx.getUserProfile({\n        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写\n        success: (res) => {\n          this.doLogin(res.userInfo)\n        },\n        fail: () => {\n          util.showErrorToast('微信登录失败');\n        }\n      })\n    }\n    else {\n      if (e.detail.userInfo == undefined) {\n        app.globalData.hasLogin = false;\n        util.showErrorToast('微信登录失败');\n        return;\n      }\n      this.doLogin(e.detail.userInfo)\n    }\n  },\n  doLogin: function(userInfo) {\n    user.checkLogin().catch(() => {\n      user.loginByWeixin(userInfo).then(res => {\n        app.globalData.hasLogin = true;\n        wx.navigateBack({\n          delta: 1\n        })\n      }).catch((err) => {\n        app.globalData.hasLogin = false;\n        util.showErrorToast('微信登录失败');\n      });\n\n    });\n  },\n  accountLogin: function() {\n    wx.navigateTo({\n      url: \"/pages/auth/accountLogin/accountLogin\"\n    });\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/auth/login/login.json",
    "content": "{\n  \"navigationBarTitleText\": \"登录\"\n}"
  },
  {
    "path": "litemall-wx/pages/auth/login/login.wxml",
    "content": "<view class=\"container\">\n  <view class=\"login-box\">\n    <button wx:if=\"{{canIUseGetUserProfile}}\" type=\"primary\" class=\"wx-login-btn\" bindtap=\"wxLogin\">微信直接登录</button>  \n    <button wx:else type=\"primary\" open-type=\"getUserProfile\" class=\"wx-login-btn\" open-type=\"getUserInfo\" bindgetuserinfo=\"wxLogin\">微信直接登录</button>\n    <button type=\"primary\" class=\"account-login-btn\" bindtap=\"accountLogin\">账号登录</button>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/auth/login/login.wxss",
    "content": ".login-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 0 40rpx;\n  margin-top: 200rpx;\n  background: #fff;\n}\n\n.wx-login-btn {\n  margin: 60rpx 0 40rpx 0;\n  height: 96rpx;\n  line-height: 96rpx;\n  font-size: 30rpx;\n  border-radius: 6rpx;\n  width: 90%;\n  color: #fff;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: flex;\n  bottom: 0;\n  left: 0;\n  padding: 0;\n  margin-left: 5%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n}\n\n.account-login-btn {\n  width: 90%;\n  margin: 0 auto;\n  color: #fff;\n  font-size: 30rpx;\n  height: 96rpx;\n  line-height: 96rpx;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: flex;\n  bottom: 0;\n  left: 0;\n  border-radius: 0;\n  padding: 0;\n  margin-left: 5%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n"
  },
  {
    "path": "litemall-wx/pages/auth/register/register.js",
    "content": "var api = require('../../../config/api.js');\nvar check = require('../../../utils/check.js');\n\nvar app = getApp();\nPage({\n  data: {\n    username: '',\n    password: '',\n    confirmPassword: '',\n    mobile: '',\n    code: ''\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    // 页面渲染完成\n\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  sendCode: function() {\n    let that = this;\n\n    if (this.data.mobile.length == 0) {\n      wx.showModal({\n        title: '错误信息',\n        content: '手机号不能为空',\n        showCancel: false\n      });\n      return false;\n    }\n\n    wx.request({\n      url: api.AuthRegisterCaptcha,\n      data: {\n        mobile: that.data.mobile\n      },\n      method: 'POST',\n      header: {\n        'content-type': 'application/json'\n      },\n      success: function(res) {\n        if (res.data.errno == 0) {\n          wx.showModal({\n            title: '发送成功',\n            content: '验证码已发送',\n            showCancel: false\n          });\n        } else {\n          wx.showModal({\n            title: '错误信息',\n            content: res.data.errmsg,\n            showCancel: false\n          });\n        }\n      }\n    });\n  },\n  requestRegister: function(wxCode) {\n    let that = this;\n    wx.request({\n      url: api.AuthRegister,\n      data: {\n        username: that.data.username,\n        password: that.data.password,\n        mobile: that.data.mobile,\n        code: that.data.code,\n        wxCode: wxCode\n      },\n      method: 'POST',\n      header: {\n        'content-type': 'application/json'\n      },\n      success: function(res) {\n        if (res.data.errno == 0) {\n          app.globalData.hasLogin = true;\n          wx.setStorageSync('userInfo', res.data.data.userInfo);\n          wx.setStorage({\n            key: \"token\",\n            data: res.data.data.token,\n            success: function() {\n              wx.switchTab({\n                url: '/pages/ucenter/index/index'\n              });\n            }\n          });\n        } else {\n          wx.showModal({\n            title: '错误信息',\n            content: res.data.errmsg,\n            showCancel: false\n          });\n        }\n      }\n    });\n  },\n  startRegister: function() {\n    var that = this;\n\n    if (this.data.password.length < 6 || this.data.username.length < 6) {\n      wx.showModal({\n        title: '错误信息',\n        content: '用户名和密码不得少于6位',\n        showCancel: false\n      });\n      return false;\n    }\n\n    if (this.data.password != this.data.confirmPassword) {\n      wx.showModal({\n        title: '错误信息',\n        content: '确认密码不一致',\n        showCancel: false\n      });\n      return false;\n    }\n\n    if (this.data.mobile.length == 0 || this.data.code.length == 0) {\n      wx.showModal({\n        title: '错误信息',\n        content: '手机号和验证码不能为空',\n        showCancel: false\n      });\n      return false;\n    }\n\n    wx.login({\n      success: function(res) {\n        if (!res.code) {\n          wx.showModal({\n            title: '错误信息',\n            content: '注册失败',\n            showCancel: false\n          });\n        }\n\n        that.requestRegister(res.code);\n      }\n    });\n  },\n  bindUsernameInput: function(e) {\n\n    this.setData({\n      username: e.detail.value\n    });\n  },\n  bindPasswordInput: function(e) {\n\n    this.setData({\n      password: e.detail.value\n    });\n  },\n  bindConfirmPasswordInput: function(e) {\n\n    this.setData({\n      confirmPassword: e.detail.value\n    });\n  },\n  bindMobileInput: function(e) {\n\n    this.setData({\n      mobile: e.detail.value\n    });\n  },\n  bindCodeInput: function(e) {\n\n    this.setData({\n      code: e.detail.value\n    });\n  },\n  clearInput: function(e) {\n    switch (e.currentTarget.id) {\n      case 'clear-username':\n        this.setData({\n          username: ''\n        });\n        break;\n      case 'clear-password':\n        this.setData({\n          password: ''\n        });\n        break;\n      case 'clear-confirm-password':\n        this.setData({\n          confirmPassword: ''\n        });\n        break;\n      case 'clear-mobile':\n        this.setData({\n          mobile: ''\n        });\n        break;\n      case 'clear-code':\n        this.setData({\n          code: ''\n        });\n        break;\n    }\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/auth/register/register.json",
    "content": "{\n  \"navigationBarTitleText\": \"注册\"\n}"
  },
  {
    "path": "litemall-wx/pages/auth/register/register.wxml",
    "content": "<view class=\"container\">\n  <view class=\"form-box\">\n\n    <view class=\"form-item\">\n      <input class=\"username\" value=\"{{username}}\" bindinput=\"bindUsernameInput\" placeholder=\"用户名\" auto-focus/>\n      <van-icon  wx:if=\"{{ username.length > 0 }}\" id=\"clear-username\" class=\"clear\" name=\"close\" catchtap=\"clearInput\"/>      \n    </view>\n\n    <view class=\"form-item\">\n      <input class=\"password\" value=\"{{password}}\" password bindinput=\"bindPasswordInput\" placeholder=\"密码\" />\n      <van-icon class=\"clear\" id=\"clear-password\" wx:if=\"{{ password.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>      \n    </view>\n\n    <view class=\"form-item\">\n      <input class=\"password\" value=\"{{confirmPassword}}\" password bindinput=\"bindConfirmPasswordInput\" placeholder=\"确认密码\" />\n      <van-icon class=\"clear\" id=\"clear-confirm-password\" wx:if=\"{{ confirmPassword.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>\n    </view>\n\n    <view class=\"form-item\">\n      <input class=\"mobile\" value=\"{{mobile}}\" bindinput=\"bindMobileInput\" placeholder=\"手机号\" />\n      <van-icon class=\"clear\" id=\"clear-mobile\" wx:if=\"{{ mobile.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>      \n    </view>\n\n    <view class=\"form-item-code\">\n      <view class=\"form-item code-item\">\n        <input class=\"code\" value=\"{{code}}\" bindinput=\"bindCodeInput\" placeholder=\"验证码\" />\n        <van-icon class=\"clear\" id=\"clear-code\" wx:if=\"{{ code.length > 0 }}\" name=\"close\" catchtap=\"clearInput\"/>      \n      </view>\n      <view class=\"code-btn\" bindtap=\"sendCode\">获取验证码</view>\n    </view>\n\n    <button type=\"primary\" class=\"register-btn\" bindtap=\"startRegister\">注册</button>\n\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/auth/register/register.wxss",
    "content": ".form-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 0 40rpx;\n  margin-top: 96rpx;\n  background: #fff;\n}\n\n.form-item {\n  position: relative;\n  background: #fff;\n  height: 96rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.form-item .username, .form-item .password, .form-item .mobile, .form-item .code {\n  position: absolute;\n  top: 26rpx;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 44rpx;\n  background: #fff;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.form-item-code {\n  margin-top: 32rpx;\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n}\n\n.form-item-code .form-item {\n  float: left;\n  width: 350rpx;\n}\n\n.form-item-code .code-btn {\n  float: right;\n  padding: 20rpx 40rpx;\n  border: 1px solid #d9d9d9;\n  border-radius: 10rpx;\n  color: #fff;\n  background: green;\n}\n\n.form-item .clear {\n  position: absolute;\n  top: 32rpx;\n  right: 18rpx;\n  z-index: 2;\n  display: block;\n  background: #fff;\n}\n\n.register-btn {\n  margin: 60rpx 0 40rpx 0;\n  height: 96rpx;\n  line-height: 96rpx;\n  color: #fff;\n  font-size: 30rpx;\n  width: 100%;\n  border-radius: 6rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/auth/reset/reset.js",
    "content": "var api = require('../../../config/api.js');\nvar check = require('../../../utils/check.js');\n\nvar app = getApp();\nPage({\n  data: {\n    mobile: '',\n    code: '',\n    password: '',\n    confirmPassword: ''\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    // 页面渲染完成\n\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n\n  sendCode: function() {\n    let that = this;\n    wx.request({\n      url: api.AuthRegisterCaptcha,\n      data: {\n        mobile: that.data.mobile\n      },\n      method: 'POST',\n      header: {\n        'content-type': 'application/json'\n      },\n      success: function(res) {\n        if (res.data.errno == 0) {\n          wx.showModal({\n            title: '发送成功',\n            content: '验证码已发送',\n            showCancel: false\n          });\n        } else {\n          wx.showModal({\n            title: '错误信息',\n            content: res.data.errmsg,\n            showCancel: false\n          });\n        }\n      }\n    });\n  },\n  startReset: function() {\n    var that = this;\n\n    if (this.data.mobile.length == 0 || this.data.code.length == 0) {\n      wx.showModal({\n        title: '错误信息',\n        content: '手机号和验证码不能为空',\n        showCancel: false\n      });\n      return false;\n    }\n\n    if (this.data.password.length < 3) {\n      wx.showModal({\n        title: '错误信息',\n        content: '用户名和密码不得少于3位',\n        showCancel: false\n      });\n      return false;\n    }\n\n    if (this.data.password != this.data.confirmPassword) {\n      wx.showModal({\n        title: '错误信息',\n        content: '确认密码不一致',\n        showCancel: false\n      });\n      return false;\n    }\n\n    wx.request({\n      url: api.AuthReset,\n      data: {\n        mobile: that.data.mobile,\n        code: that.data.code,\n        password: that.data.password\n      },\n      method: 'POST',\n      header: {\n        'content-type': 'application/json'\n      },\n      success: function(res) {\n        if (res.data.errno == 0) {\n          wx.navigateBack();\n        } else {\n          wx.showModal({\n            title: '密码重置失败',\n            content: res.data.errmsg,\n            showCancel: false\n          });\n        }\n      }\n    });\n  },\n  bindPasswordInput: function(e) {\n\n    this.setData({\n      password: e.detail.value\n    });\n  },\n  bindConfirmPasswordInput: function(e) {\n\n    this.setData({\n      confirmPassword: e.detail.value\n    });\n  },\n  bindMobileInput: function(e) {\n\n    this.setData({\n      mobile: e.detail.value\n    });\n  },\n  bindCodeInput: function(e) {\n\n    this.setData({\n      code: e.detail.value\n    });\n  },\n  clearInput: function(e) {\n    switch (e.currentTarget.id) {\n      case 'clear-password':\n        this.setData({\n          password: ''\n        });\n        break;\n      case 'clear-confirm-password':\n        this.setData({\n          confirmPassword: ''\n        });\n        break;\n      case 'clear-mobile':\n        this.setData({\n          mobile: ''\n        });\n        break;\n      case 'clear-code':\n        this.setData({\n          code: ''\n        });\n        break;\n    }\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/auth/reset/reset.json",
    "content": "{\n  \"navigationBarTitleText\": \"密码重置\"\n}"
  },
  {
    "path": "litemall-wx/pages/auth/reset/reset.wxml",
    "content": "<view class=\"container\">\n  <view class=\"form-box\">\n\n    <view class=\"form-item\">\n      <input class=\"mobile\" value=\"{{mobile}}\" bindinput=\"bindMobileInput\" placeholder=\"手机号\" />\n      <van-icon  wx:if=\"{{ mobile.length > 0 }}\" id=\"clear-mobile\" class=\"clear\" catchtap=\"clearInput\" name=\"close\" />      \n    </view>\n\n    <view class=\"form-item-code\">\n      <view class=\"form-item code-item\">\n        <input class=\"code\" value=\"{{code}}\" bindinput=\"bindCodeInput\" placeholder=\"验证码\" />\n        <van-icon  wx:if=\"{{ code.length > 0 }}\" id=\"clear-code\" class=\"clear\" catchtap=\"clearInput\" name=\"close\" />      \n      </view>\n      <view class=\"code-btn\" bindtap=\"sendCode\">获取验证码</view>\n    </view>\n\n    <view class=\"form-item\">\n      <input class=\"password\" value=\"{{password}}\" password bindinput=\"bindPasswordInput\" placeholder=\"密码\" />\n      <van-icon  wx:if=\"{{ password.length > 0 }}\" id=\"clear-password\" class=\"clear\" catchtap=\"clearInput\" name=\"close\" />      \n    </view>\n\n    <view class=\"form-item\">\n      <input class=\"password\" value=\"{{confirmPassword}}\" password bindinput=\"bindConfirmPasswordInput\" placeholder=\"确认密码\" />\n      <van-icon  wx:if=\"{{ confirmPassword.length > 0 }}\" id=\"clear-confirm-password\" class=\"clear\" catchtap=\"clearInput\" name=\"close\" />\n    </view>\n\n    <button type=\"default\" class=\"reset-btn\" bindtap=\"startReset\">密码重置</button>\n\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/auth/reset/reset.wxss",
    "content": ".form-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 0 40rpx;\n  margin-top: 96rpx;\n  background: #fff;\n}\n\n.form-item {\n  position: relative;\n  background: #fff;\n  height: 96rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.form-item .mobile, .form-item .password, .form-item .code {\n  position: absolute;\n  top: 26rpx;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 44rpx;\n  background: #fff;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.form-item-code {\n  margin-top: 32rpx;\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n}\n\n.form-item-code .form-item {\n  float: left;\n  width: 350rpx;\n}\n\n.form-item-code .code-btn {\n  float: right;\n  padding: 20rpx 40rpx;\n  border: 1px solid #d9d9d9;\n  border-radius: 10rpx;\n}\n\n.form-item .clear {\n  position: absolute;\n  top: 32rpx;\n  right: 18rpx;\n  z-index: 2;\n  display: block;\n  background: #fff;\n}\n\n.reset-btn {\n  margin: 60rpx 0 40rpx 0;\n  height: 96rpx;\n  line-height: 96rpx;\n  color: #fff;\n  font-size: 30rpx;\n  width: 100%;\n  background: #b4282d;\n  border-radius: 6rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/brand/brand.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\nPage({\n  data: {\n    brandList: [],\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getBrandList();\n  },\n  getBrandList: function() {\n    wx.showLoading({\n      title: '加载中...',\n    });\n    let that = this;\n    util.request(api.BrandList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          brandList: that.data.brandList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n      }\n      wx.hideLoading();\n    });\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n    } else {\n      return false;\n    }\n\n    this.getBrandList();\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/brand/brand.json",
    "content": "{\n  \"navigationBarTitleText\": \"品牌商直供\"\n}"
  },
  {
    "path": "litemall-wx/pages/brand/brand.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-list\">\n    <navigator url=\"../brandDetail/brandDetail?id={{item.id}}\" class=\"item\" wx:for=\"{{brandList}}\" wx:key=\"id\">\n      <view class=\"img-bg\">\n        <image src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n      </view>\n      <view class=\"txt-box\">\n        <view class=\"line\">\n          <text class=\"name\">{{item.name}}</text>\n          <text class=\"s\">|</text>\n          <text class=\"price\">{{item.floorPrice}}元起</text>\n        </view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/brand/brand.wxss",
    "content": ".brand-list .item {\n  display: block;\n  width: 750rpx;\n  height: 416rpx;\n  position: relative;\n  margin-bottom: 4rpx;\n}\n\n.brand-list .item .img-bg {\n  position: absolute;\n  left: 0;\n  top: 0;\n  z-index: 0;\n  width: 750rpx;\n  height: 417rpx;\n  overflow: hidden;\n}\n\n.brand-list .item .img-bg image {\n  width: 750rpx;\n  height: 416rpx;\n}\n\n.brand-list .item .txt-box {\n  position: absolute;\n  left: 0;\n  top: 0;\n  display: table;\n  z-index: 0;\n  width: 750rpx;\n  height: 417rpx;\n}\n\n.brand-list .item .line {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: center;\n  height: 63rpx;\n  line-height: 63rpx;\n}\n\n.brand-list .item .line text {\n  font-size: 35rpx;\n  font-weight: 700;\n  text-shadow: 1rpx 1rpx rgba(0, 0, 0, 0.32);\n  color: #fff;\n}\n\n.brand-list .item .line .s {\n  padding: 0 10rpx;\n  font-size: 40rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/brandDetail/brandDetail.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\n\nvar app = getApp();\n\nPage({\n  data: {\n    id: 0,\n    brand: {},\n    goodsList: [],\n    page: 1,\n    limit: 10\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    that.setData({\n      id: parseInt(options.id)\n    });\n    this.getBrand();\n  },\n  getBrand: function() {\n    let that = this;\n    util.request(api.BrandDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          brand: res.data\n        });\n\n        that.getGoodsList();\n      }\n    });\n  },\n  getGoodsList() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        brandId: that.data.id,\n        page: that.data.page,\n        limit: that.data.limit\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list\n          });\n        }\n      });\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/brandDetail/brandDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"品牌商详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/brandDetail/brandDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{brand.picUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{brand.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n    <view class=\"desc\">\n      {{brand.desc}}\n    </view>\n  </view>\n\n  <view class=\"cate-item\">\n    <view class=\"b\">\n      <block wx:for=\"{{goodsList}}\" wx:key=\"id\" wx:for-index=\"iindex\" wx:for-item=\"iitem\">\n        <navigator class=\"item {{iindex % 2 == 0 ? 'item-b' : ''}}\" url=\"../goods/goods?id={{iitem.id}}\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </block>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/brandDetail/brandDetail.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 290rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 290rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 290rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 37.5rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.brand-info .desc {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 41.5rpx 31.25rpx;\n  font-size: 30rpx;\n  color: #666;\n  line-height: 41.5rpx;\n  text-align: center;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  border-top: 1rpx solid #f4f4f4;\n  margin-top: 20rpx;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 375rpx;\n  padding-bottom: 33.333rpx;\n  border-bottom: 1rpx solid #f4f4f4;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  border-right: 1rpx solid #f4f4f4;\n}\n\n.cate-item .item .img {\n  margin-top: 10rpx;\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  padding: 0 20rpx;\n  overflow: hidden;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/cart/cart.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar user = require('../../utils/user.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    cartGoods: [],\n    cartTotal: {\n      \"goodsCount\": 0,\n      \"goodsAmount\": 0.00,\n      \"checkedGoodsCount\": 0,\n      \"checkedGoodsAmount\": 0.00\n    },\n    isEditCart: false,\n    checkedAllStatus: true,\n    editCartList: [],\n    hasLogin: false\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCartList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  onShow: function() {\n    // 页面显示\n    if (app.globalData.hasLogin) {\n      this.getCartList();\n    }\n\n    this.setData({\n      hasLogin: app.globalData.hasLogin\n    });\n\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  goLogin() {\n    wx.navigateTo({\n      url: \"/pages/auth/login/login\"\n    });\n  },\n  getCartList: function() {\n    let that = this;\n    util.request(api.CartList).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          cartGoods: res.data.cartList,\n          cartTotal: res.data.cartTotal\n        });\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      }\n    });\n  },\n  isCheckedAll: function() {\n    //判断购物车商品已全选\n    return this.data.cartGoods.every(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n  doCheckedAll: function() {\n    let checkedAll = this.isCheckedAll()\n    this.setData({\n      checkedAllStatus: this.isCheckedAll()\n    });\n  },\n  checkedItem: function(event) {\n    let itemIndex = event.target.dataset.itemIndex;\n    let that = this;\n\n    let productIds = [];\n    productIds.push(that.data.cartGoods[itemIndex].productId);\n    if (!this.data.isEditCart) {\n      util.request(api.CartChecked, {\n        productIds: productIds,\n        isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1\n      }, 'POST').then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            cartGoods: res.data.cartList,\n            cartTotal: res.data.cartTotal\n          });\n        }\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      });\n    } else {\n      //编辑状态\n      let tmpCartData = this.data.cartGoods.map(function(element, index, array) {\n        if (index == itemIndex) {\n          element.checked = !element.checked;\n        }\n\n        return element;\n      });\n\n      that.setData({\n        cartGoods: tmpCartData,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n  },\n  getCheckedGoodsCount: function() {\n    let checkedGoodsCount = 0;\n    this.data.cartGoods.forEach(function(v) {\n      if (v.checked === true) {\n        checkedGoodsCount += v.number;\n      }\n    });\n    console.log(checkedGoodsCount);\n    return checkedGoodsCount;\n  },\n  checkedAll: function() {\n    let that = this;\n\n    if (!this.data.isEditCart) {\n      var productIds = this.data.cartGoods.map(function(v) {\n        return v.productId;\n      });\n      util.request(api.CartChecked, {\n        productIds: productIds,\n        isChecked: that.isCheckedAll() ? 0 : 1\n      }, 'POST').then(function(res) {\n        if (res.errno === 0) {\n          console.log(res.data);\n          that.setData({\n            cartGoods: res.data.cartList,\n            cartTotal: res.data.cartTotal\n          });\n        }\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      });\n    } else {\n      //编辑状态\n      let checkedAllStatus = that.isCheckedAll();\n      let tmpCartData = this.data.cartGoods.map(function(v) {\n        v.checked = !checkedAllStatus;\n        return v;\n      });\n\n      that.setData({\n        cartGoods: tmpCartData,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n\n  },\n  editCart: function() {\n    var that = this;\n    if (this.data.isEditCart) {\n      this.getCartList();\n      this.setData({\n        isEditCart: !this.data.isEditCart\n      });\n    } else {\n      //编辑状态\n      let tmpCartList = this.data.cartGoods.map(function(v) {\n        v.checked = false;\n        return v;\n      });\n      this.setData({\n        editCartList: this.data.cartGoods,\n        cartGoods: tmpCartList,\n        isEditCart: !this.data.isEditCart,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n\n  },\n  updateCart: function(productId, goodsId, number, id) {\n    let that = this;\n\n    util.request(api.CartUpdate, {\n      productId: productId,\n      goodsId: goodsId,\n      number: number,\n      id: id\n    }, 'POST').then(function(res) {\n      that.setData({\n        checkedAllStatus: that.isCheckedAll()\n      });\n    });\n\n  },\n  cutNumber: function(event) {\n\n    let itemIndex = event.target.dataset.itemIndex;\n    let cartItem = this.data.cartGoods[itemIndex];\n    let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;\n    cartItem.number = number;\n    this.setData({\n      cartGoods: this.data.cartGoods\n    });\n    this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id);\n  },\n  addNumber: function(event) {\n    let itemIndex = event.target.dataset.itemIndex;\n    let cartItem = this.data.cartGoods[itemIndex];\n    let number = cartItem.number + 1;\n    cartItem.number = number;\n    this.setData({\n      cartGoods: this.data.cartGoods\n    });\n    this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id);\n\n  },\n  checkoutOrder: function() {\n    //获取已选择的商品\n    let that = this;\n\n    var checkedGoods = this.data.cartGoods.filter(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n\n    if (checkedGoods.length <= 0) {\n      return false;\n    }\n\n    // storage中设置了cartId，则是购物车购买\n    try {\n      wx.setStorageSync('cartId', 0);\n      wx.navigateTo({\n        url: '/pages/checkout/checkout'\n      })\n    } catch (e) {}\n\n  },\n  deleteCart: function() {\n    //获取已选择的商品\n    let that = this;\n\n    let productIds = this.data.cartGoods.filter(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n\n    if (productIds.length <= 0) {\n      return false;\n    }\n\n    productIds = productIds.map(function(element, index, array) {\n      if (element.checked == true) {\n        return element.productId;\n      }\n    });\n\n\n    util.request(api.CartDelete, {\n      productIds: productIds\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        let cartList = res.data.cartList.map(v => {\n          v.checked = false;\n          return v;\n        });\n\n        that.setData({\n          cartGoods: cartList,\n          cartTotal: res.data.cartTotal\n        });\n      }\n\n      that.setData({\n        checkedAllStatus: that.isCheckedAll()\n      });\n    });\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/cart/cart.json",
    "content": "{\n  \"enablePullDownRefresh\": true,\n  \"navigationBarTitleText\": \"购物车\"\n}"
  },
  {
    "path": "litemall-wx/pages/cart/cart.wxml",
    "content": "<view class=\"container\">\n  <view class=\"no-login\" wx:if=\"{{!hasLogin}}\">\n    <view class=\"c\">\n      <text>还没有登录</text>\n      <button style=\"background-color:#A9A9A9\" bindtap=\"goLogin\">去登录</button>\n    </view>\n  </view>\n  <view class='login' wx:else>\n    <view class=\"service-policy\">\n      <view class=\"item\">30天无忧退货</view>\n      <view class=\"item\">48小时快速退款</view>\n      <view class=\"item\">满88元免邮费</view>\n    </view>\n    <view class=\"no-cart\" wx:if=\"{{cartGoods.length <= 0}}\">\n      <view class=\"c\">\n        <text>空空如也~</text>\n        <text>去添加点什么吧</text>\n      </view>\n    </view>\n    <view class=\"cart-view\" wx:else>\n      <view class=\"list\">\n        <view class=\"group-item\">\n          <view class=\"goods\">\n            <view class=\"item {{isEditCart ? 'edit' : ''}}\" wx:for=\"{{cartGoods}}\" wx:key=\"id\">\n              <van-checkbox value=\"{{ item.checked }}\" bind:change=\"checkedItem\" data-item-index=\"{{index}}\"></van-checkbox>\n              <view class=\"cart-goods\">\n                <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n                <view class=\"info\">\n                  <view class=\"t\">\n                    <text class=\"name\">{{item.goodsName}}</text>\n                    <text class=\"num\">x{{item.number}}</text>\n                  </view>\n                  <view class=\"attr\">{{ isEditCart ? '已选择:' : ''}}{{item.specifications||''}}</view>\n                  <view class=\"b\">\n                    <text class=\"price\">￥{{item.price}}</text>\n                    <view class=\"selnum\">\n                      <view class=\"cut\" bindtap=\"cutNumber\" data-item-index=\"{{index}}\">-</view>\n                      <input value=\"{{item.number}}\" class=\"number\" disabled=\"true\" type=\"number\" />\n                      <view class=\"add\" bindtap=\"addNumber\" data-item-index=\"{{index}}\">+</view>\n                    </view>\n                  </view>\n                </view>\n              </view>\n            </view>\n          </view>\n        </view>\n\n      </view>\n      <view class=\"cart-bottom\">\n        <van-checkbox value=\"{{ checkedAllStatus }}\" bind:change=\"checkedAll\">全选（{{cartTotal.checkedGoodsCount}}）</van-checkbox>\n        <view class=\"total\">{{!isEditCart ? '￥'+cartTotal.checkedGoodsAmount : ''}}</view>\n        <view class='action_btn_area'>\n          <view class=\"{{!isEditCart ? 'edit' : 'sure'}}\" bindtap=\"editCart\">{{!isEditCart ? '编辑' : '完成'}}</view>\n          <view class=\"delete\" bindtap=\"deleteCart\" wx:if=\"{{isEditCart}}\">删除({{cartTotal.checkedGoodsCount}})</view>\n          <view class=\"checkout\" bindtap=\"checkoutOrder\" wx:if=\"{{!isEditCart}}\">下单</view>\n          <!-- </view>  -->\n        </view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/cart/cart.wxss",
    "content": "page {\n  height: 100%;\n  min-height: 100%;\n  background: #f4f4f4;\n}\n\n.container {\n  background: #f4f4f4;\n  width: 100%;\n  height: auto;\n  min-height: 100%;\n  overflow: hidden;\n}\n\n.service-policy {\n  width: 750rpx;\n  height: 73rpx;\n  background: #f4f4f4;\n  padding: 0 31.25rpx;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.service-policy .item {\n  background-size: 10rpx;\n  padding-left: 15rpx;\n  display: flex;\n  align-items: center;\n  font-size: 25rpx;\n  color: #666;\n}\n\n.no-login {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-login .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-login .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 59rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 35rpx;\n  color: #999;\n}\n\n.no-login button {\n  width: 90%;\n  margin: 0 auto;\n  color: #fff;\n  font-size: 30rpx;\n  height: 96rpx;\n  line-height: 96rpx;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  position: flex;\n  bottom: 0;\n  left: 0;\n  border-radius: 0;\n  padding: 0;\n  margin-left: 5%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n\n.no-cart {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-cart .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-cart .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.cart-view {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.cart-view .list {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n  margin-bottom: 120rpx;\n}\n\n.cart-view .group-item {\n  height: auto;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 18rpx;\n}\n\n.cart-view .item {\n  height: 164rpx;\n  width: 100%;\n  overflow: hidden;\n}\n\n.cart-view .item .van-checkbox {\n  float: left;\n  margin: 65rpx 18rpx 65rpx 18rpx;\n}\n\n.cart-view .item .van-checkbox .van-icon {\n  color: #fff;\n}\n\n.cart-view .item .cart-goods {\n  float: left;\n  height: 164rpx;\n  width: 672rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.cart-view .item .img {\n  float: left;\n  height: 125rpx;\n  width: 125rpx;\n  background: #f4f4f4;\n  margin: 19.5rpx 18rpx 19.5rpx 0;\n}\n\n.cart-view .item .info {\n  float: left;\n  height: 125rpx;\n  width: 503rpx;\n  margin: 19.5rpx 26rpx 19.5rpx 0;\n}\n\n.cart-view .item .t {\n  margin: 8rpx 0;\n  height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .name {\n  height: 28rpx;\n  max-width: 310rpx;\n  line-height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .num {\n  height: 28rpx;\n  line-height: 28rpx;\n  float: right;\n}\n\n.cart-view .item .attr {\n  margin-bottom: 17rpx;\n  height: 24rpx;\n  line-height: 24rpx;\n  font-size: 22rpx;\n  color: #666;\n  overflow: hidden;\n}\n\n.cart-view .item .b {\n  height: 28rpx;\n  line-height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .price {\n  float: left;\n}\n\n.cart-view .item.edit .t {\n  display: none;\n}\n\n.cart-view .item.edit .attr {\n  text-align: right;\n  padding-right: 25rpx;\n  background-size: 12rpx 20rpx;\n  margin-bottom: 24rpx;\n  height: 39rpx;\n  line-height: 39rpx;\n  font-size: 24rpx;\n  color: #999;\n  overflow: hidden;\n}\n\n.cart-view .item.edit .b {\n  display: flex;\n  height: 52rpx;\n  overflow: hidden;\n}\n\n.cart-view .item.edit .price {\n  line-height: 52rpx;\n  height: 52rpx;\n  flex: 1;\n}\n\n.cart-view .item .selnum {\n  display: none;\n}\n\n.cart-view .item.edit .selnum {\n  width: 235rpx;\n  height: 52rpx;\n  border: 1rpx solid #ccc;\n  display: flex;\n}\n\n.selnum .cut {\n  width: 70rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 50rpx;\n}\n\n.selnum .number {\n  flex: 1;\n  height: 100%;\n  text-align: center;\n  line-height: 68.75rpx;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #ccc;\n  float: left;\n}\n\n.selnum .add {\n  width: 80rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 50rpx;\n}\n\n.cart-view .group-item .header {\n  width: 100%;\n  height: 94rpx;\n  line-height: 94rpx;\n  padding: 0 26rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.cart-view .promotion .icon {\n  display: inline-block;\n  height: 24rpx;\n  width: 15rpx;\n}\n\n.cart-view .promotion {\n  margin-top: 25.5rpx;\n  float: left;\n  height: 43rpx;\n  width: 480rpx;\n  /*margin-right: 84rpx;*/\n  line-height: 43rpx;\n  font-size: 0;\n}\n\n.cart-view .promotion .tag {\n  border: 1px solid #f48f18;\n  height: 37rpx;\n  line-height: 31rpx;\n  padding: 0 9rpx;\n  margin-right: 10rpx;\n  color: #f48f18;\n  font-size: 24.5rpx;\n}\n\n.cart-view .promotion .txt {\n  height: 43rpx;\n  line-height: 43rpx;\n  padding-right: 10rpx;\n  color: #333;\n  font-size: 29rpx;\n  overflow: hidden;\n}\n\n.cart-view .get {\n  margin-top: 18rpx;\n  float: right;\n  height: 58rpx;\n  padding-left: 14rpx;\n  border-left: 1px solid #d9d9d9;\n  line-height: 58rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.cart-bottom {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  height: 100rpx;\n  width: 100%;\n  background: #fff;\n  display: flex;\n}\n\n.cart-bottom .van-checkbox {\n  float: left;\n  margin: 33rpx 18rpx 33rpx 26rpx;\n    font-size: 29rpx;\n}\n\n.cart-bottom .van-checkbox .van-icon {\n  color: #fff;\n}\n\n.cart-bottom .total {\n  height: 34rpx;\n  flex: 1;\n  margin: 33rpx 10rpx;\n  font-size: 29rpx;\n}\n\n.cart-bottom .delete {\n  text-align: center;\n  width: 180rpx;\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-left: -5rpx;\n  padding-right: 25rpx;\n  font-size: 25rpx;\n  color: #f4f4f4;\n  /* text-align: center; */\n  border-top-left-radius: 0rpx;\n  border-bottom-left-radius: 0rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #ae8b9c 100%);\n}\n\n.cart-bottom .checkout {\n  height: 100rpx;\n  width: 210rpx;\n  text-align: center;\n  line-height: 100rpx;\n  font-size: 29rpx;\n  background: #b4282d;\n  color: #fff;\n}\n\n.action_btn_area {\n  /* border: 1px solid #333; */\n  position: absolute;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  right: 0;\n  top: 0;\n  width: 380rpx;\n  height: 100rpx;\n}\n\n.action_btn_area .edit {\n  width: 140rpx;\n  /* border: 1px solid #000; */\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-right: 5rpx;\n  text-align: center;\n  /* padding-left: 25rpx; */\n  font-size: 25rpx;\n  color: #f4f4f4;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  /* background-image: linear-gradient(to right, #ff7701 100%); */\n  background-image: linear-gradient(to right, #ab956d 0%, #ab956d 100%);\n}\n\n.action_btn_area .checkout {\n  width: 140rpx;\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-left: 5rpx;\n  /* padding-right: 25rpx; */\n  font-size: 25rpx;\n  color: #f4f4f4;\n  text-align: center;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n\n.action_btn_area .delete {\n  width: 140rpx;\n  /* border: 1px solid #000; */\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-right: 5rpx;\n  text-align: center;\n  padding-left: -5rpx;\n  font-size: 25rpx;\n  color: #f4f4f4;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n\n.action_btn_area .sure {\n  text-align: center;\n  width: 140rpx;\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-right: 10rpx;\n  padding-left: -5rpx;\n  font-size: 25rpx;\n  color: #f4f4f4;\n  /* text-align: center; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #ab956d 0%, #ab956d 100%);\n  /* background-image: linear-gradient(to right, #ff7701 0%, #fe4800 100%); */\n}\n\n.auth_btn {\n  position: fixed;\n  top: 55vh;\n  left: 10vw;\n  width: 80vw;\n  height: 96rpx;\n  line-height: 96rpx;\n  font-size: 25rpx;\n  color: #f4f4f4;\n  /* text-align: center; */\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #8baaaa 0%, #9a9ba1 100%);\n}\n"
  },
  {
    "path": "litemall-wx/pages/catalog/catalog.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    categoryList: [],\n    currentCategory: {},\n    currentSubCategoryList: {},\n    scrollLeft: 0,\n    scrollTop: 0,\n    goodsCount: 0,\n    scrollHeight: 0\n  },\n  onLoad: function(options) {\n    this.getCatalog();\n  },\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCatalog();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  getCatalog: function() {\n    //CatalogList\n    let that = this;\n    wx.showLoading({\n      title: '加载中...',\n    });\n    util.request(api.CatalogList).then(function(res) {\n      that.setData({\n        categoryList: res.data.categoryList,\n        currentCategory: res.data.currentCategory,\n        currentSubCategoryList: res.data.currentSubCategory\n      });\n      wx.hideLoading();\n    });\n    util.request(api.GoodsCount).then(function(res) {\n      that.setData({\n        goodsCount: res.data\n      });\n    });\n\n  },\n  getCurrentCategory: function(id) {\n    let that = this;\n    util.request(api.CatalogCurrent, {\n        id: id\n      })\n      .then(function(res) {\n        that.setData({\n          currentCategory: res.data.currentCategory,\n          currentSubCategoryList: res.data.currentSubCategory\n        });\n      });\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  switchCate: function(event) {\n    var that = this;\n    var currentTarget = event.currentTarget;\n    if (this.data.currentCategory.id == event.currentTarget.dataset.id) {\n      return false;\n    }\n\n    this.getCurrentCategory(event.currentTarget.dataset.id);\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/catalog/catalog.json",
    "content": "{\n  \"navigationBarTitleText\": \"分类\"\n}"
  },
  {
    "path": "litemall-wx/pages/catalog/catalog.wxml",
    "content": "<view class=\"container\">\n  <view class=\"search\">\n    <navigator url=\"/pages/search/search\" class=\"input\">\n      <van-icon name=\"search\"/>\n      <text class=\"txt\">商品搜索, 共{{goodsCount}}款好物</text>\n    </navigator>\n  </view>\n  <view class=\"catalog\">\n    <scroll-view class=\"nav\" scroll-y=\"true\">\n      <view class=\"item {{ currentCategory.id == item.id ? 'active' : ''}}\" wx:for=\"{{categoryList}}\" wx:key=\"id\" data-id=\"{{item.id}}\" data-index=\"{{index}}\" bindtap=\"switchCate\">{{item.name}}</view>\n    </scroll-view>\n    <scroll-view class=\"cate\" scroll-y=\"true\">\n      <navigator url=\"url\" class=\"banner\">\n        <image class=\"image\" src=\"{{currentCategory.picUrl}}\"></image>\n        <view class=\"txt\">{{currentCategory.frontName}}</view>\n      </navigator>\n      <view class=\"hd\">\n        <text class=\"line\"></text>\n        <text class=\"txt\">{{currentCategory.name}}分类</text>\n        <text class=\"line\"></text>\n      </view>\n      <view class=\"bd\">\n        <navigator url=\"/pages/category/category?id={{item.id}}\" class=\"item {{(index+1) % 3 == 0 ? 'last' : ''}}\" wx:key=\"id\" wx:for=\"{{currentSubCategoryList}}\">\n          <image class=\"icon\" src=\"{{item.picUrl}}\"></image>\n          <text class=\"txt\">{{item.name}}</text>\n        </navigator>\n      </view>\n    </scroll-view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/catalog/catalog.wxss",
    "content": "page {\n  height: 100%;\n}\n\n.container {\n  background: #f9f9f9;\n  height: 100%;\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n}\n\n.search {\n  height: 88rpx;\n  width: 100%;\n  padding: 0 30rpx;\n  background: #fff;\n  display: flex;\n  align-items: center;\n}\n\n.search .input {\n  width: 690rpx;\n  height: 56rpx;\n  background: #ededed;\n  border-radius: 8rpx;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.search .van-icon-search {\n  line-height: 56rpx;\n}\n\n.search .txt {\n  height: 42rpx;\n  line-height: 42rpx;\n  color: #666;\n  padding-left: 10rpx;\n  font-size: 30rpx;\n}\n\n.catalog {\n  flex: 1;\n  width: 100%;\n  background: #fff;\n  display: flex;\n  border-top: 1px solid #fafafa;\n}\n\n.catalog .nav {\n  width: 162rpx;\n  height: 100%;\n}\n\n.catalog .nav .item {\n  text-align: center;\n  line-height: 90rpx;\n  width: 162rpx;\n  height: 90rpx;\n  color: #333;\n  font-size: 28rpx;\n  border-left: 6rpx solid #fff;\n}\n\n.catalog .nav .item.active {\n  color: #ab956d;\n  font-size: 36rpx;\n  border-left: 6rpx solid #ab956d;\n}\n\n.catalog .cate {\n  border-left: 1px solid #fafafa;\n  flex: 1;\n  height: 100%;\n  padding: 0 30rpx 0 30rpx;\n}\n\n.banner {\n  display: block;\n  height: 222rpx;\n  width: 100%;\n  position: relative;\n}\n\n.banner .image {\n  position: absolute;\n  top: 30rpx;\n  left: 0;\n  border-radius: 4rpx;\n  height: 192rpx;\n  width: 100%;\n}\n\n.banner .txt {\n  position: absolute;\n  top: 30rpx;\n  text-align: center;\n  color: #fff;\n  font-size: 28rpx;\n  left: 0;\n  height: 192rpx;\n  line-height: 192rpx;\n  width: 100%;\n}\n\n.catalog .hd {\n  height: 108rpx;\n  width: 100%;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.catalog .hd .txt {\n  font-size: 24rpx;\n  text-align: center;\n  color: #333;\n  padding: 0 10rpx;\n  width: auto;\n}\n\n.catalog .hd .line {\n  width: 40rpx;\n  height: 1px;\n  background: #d9d9d9;\n}\n\n.catalog .bd {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.catalog .bd .item {\n  display: block;\n  float: left;\n  height: 216rpx;\n  width: 144rpx;\n  margin-right: 34rpx;\n}\n\n.catalog .bd .item.last {\n  margin-right: 0;\n}\n\n.catalog .bd .item .icon {\n  height: 144rpx;\n  width: 144rpx;\n}\n\n.catalog .bd .item .txt {\n  display: block;\n  text-align: center;\n  font-size: 24rpx;\n  color: #333;\n  height: 72rpx;\n  width: 144rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/category/category.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    navList: [],\n    goodsList: [],\n    id: 0,\n    currentCategory: {},\n    scrollLeft: 0,\n    scrollTop: 0,\n    scrollHeight: 0,\n    page: 1,\n    limit: 10,\n    pages:1, //总页数\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    if (options.id) {\n      that.setData({\n        id: parseInt(options.id)\n      });\n    }\n\n    wx.getSystemInfo({\n      success: function(res) {\n        that.setData({\n          scrollHeight: res.windowHeight\n        });\n      }\n    });\n\n\n    this.getCategoryInfo();\n\n  },\n  getCategoryInfo: function() {\n    let that = this;\n    util.request(api.GoodsCategory, {\n        id: this.data.id\n      })\n      .then(function(res) {\n\n        if (res.errno == 0) {\n          that.setData({\n            navList: res.data.brotherCategory,\n            currentCategory: res.data.currentCategory\n          });\n\n          wx.setNavigationBarTitle({\n            title: res.data.parentCategory.name\n          })\n\n          // 当id是L1分类id时，这里需要重新设置成L1分类的一个子分类的id\n          if (res.data.parentCategory.id == that.data.id) {\n            that.setData({\n              id: res.data.currentCategory.id\n            });\n          }\n\n          //nav位置\n          let currentIndex = 0;\n          let navListCount = that.data.navList.length;\n          for (let i = 0; i < navListCount; i++) {\n            currentIndex += 1;\n            if (that.data.navList[i].id == that.data.id) {\n              break;\n            }\n          }\n          if (currentIndex > navListCount / 2 && navListCount > 5) {\n            that.setData({\n              scrollLeft: currentIndex * 60\n            });\n          }\n          that.getGoodsList();\n\n        } else {\n          //显示错误信息\n        }\n\n      });\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  //触底开始下一页\n  onReachBottom: function () {\n    var that=this;\n\n    var pagenum = that.data.page + 1; //获取当前页数并+1\n    if(pagenum <=that.data.pages){\n      that.setData({\n        page: pagenum, //更新当前页数\n      })\n      that.getGoodsList();//重新调用请求获取下一页数据\n    }else{\n      util.showErrorToast(\"已经是最后一页了\");\n    }\n  },\n\n  getGoodsList: function() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        categoryId: that.data.id,\n        page: that.data.page,\n        limit: that.data.limit\n      })\n      .then(function(res) {\n        var arr1 = that.data.goodsList; //从data获取当前datalist数组\n        var arr2 = res.data.list; //从此次请求返回的数据中获取新数组\n        arr1 = arr1.concat(arr2); //合并数组\n        that.setData({\n          goodsList: arr1,\n          pages: res.data.pages //得到总页数\n        });\n      });\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  switchCate: function(event) {\n    if (this.data.id == event.currentTarget.dataset.id) {\n      return false;\n    }\n    var that = this;\n    var clientX = event.detail.x;\n    var currentTarget = event.currentTarget;\n    if (clientX < 60) {\n      that.setData({\n        scrollLeft: currentTarget.offsetLeft - 60\n      });\n    } else if (clientX > 330) {\n      that.setData({\n        scrollLeft: currentTarget.offsetLeft\n      });\n    }\n    this.setData({\n      id: event.currentTarget.dataset.id,\n      page:1, //从第一页开始查\n      goodsList:[]\n    });\n\n    this.getCategoryInfo();\n  }\n})\n"
  },
  {
    "path": "litemall-wx/pages/category/category.json",
    "content": "{}"
  },
  {
    "path": "litemall-wx/pages/category/category.wxml",
    "content": "<view class=\"container\">\n  <view class=\"cate-nav\">\n    <scroll-view scroll-x=\"true\" class=\"cate-nav-body\" style=\"width: 750rpx;\" scroll-left=\"{{scrollLeft}}\">\n      <view wx:for=\"{{navList}}\" class=\"item {{ id == item.id ? 'active' : ''}}\" wx:key=\"id\" data-id=\"{{item.id}}\" data-index=\"{{index}}\" bindtap=\"switchCate\">\n        <view class=\"name\">{{item.name}}</view>\n      </view>\n    </scroll-view>\n  </view>\n  <scroll-view scroll-y=\"true\" scroll-top=\"{{scrollTop}}\" style=\"height:{{scrollHeight}}px;\">\n\n    <view class=\"cate-item\">\n      <view class=\"h\">\n        <text class=\"name\">{{currentCategory.name}}</text>\n        <text class=\"desc\">{{currentCategory.desc}}</text>\n      </view>\n      <view class=\"b\">\n        <navigator class=\"item {{(iindex + 1) % 2 == 0 ? 'item-b' : ''}}\" url=\"/pages/goods/goods?id={{iitem.id}}\" wx:for=\"{{goodsList}}\" wx:key=\"id\" wx:for-item=\"iitem\" wx:for-index=\"iindex\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </view>\n    </view>\n  </scroll-view>\n</view>\n"
  },
  {
    "path": "litemall-wx/pages/category/category.wxss",
    "content": ".container {\n  background: #f9f9f9;\n}\n\n.cate-nav {\n  position: fixed;\n  left: 0;\n  top: 0;\n  z-index: 1000;\n}\n\n.cate-nav-body {\n  height: 84rpx;\n  white-space: nowrap;\n  background: #fff;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n  overflow: hidden;\n}\n\n.cate-nav .item {\n  display: inline-block;\n  height: 84rpx;\n  min-width: 130rpx;\n  padding: 0 15rpx;\n}\n\n.cate-nav .item .name {\n  display: block;\n  height: 84rpx;\n  padding: 0 20rpx;\n  line-height: 84rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: auto;\n}\n\n.cate-nav .item.active .name {\n  color: #ab956d;\n  border-bottom: 2px solid #ab956d;\n}\n\n.cate-item {\n  margin-top: 94rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .h {\n  height: 145rpx;\n  width: 750rpx;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.cate-item .h .name {\n  display: block;\n  height: 35rpx;\n  margin-bottom: 18rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .h .desc {\n  display: block;\n  height: 24rpx;\n  font-size: 24rpx;\n  color: #999;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  padding: 0 6.25rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 365rpx;\n  margin-bottom: 6.25rpx;\n  padding-bottom: 33.333rpx;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  margin-left: 6.25rpx;\n}\n\n.cate-item .item .img {\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  overflow: hidden;\n  padding: 0 20rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #ab956d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/checkout/checkout.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    checkedGoodsList: [],\n    checkedAddress: {},\n    availableCouponLength: 0, // 可用的优惠券数量\n    goodsTotalPrice: 0.00, //商品总价\n    freightPrice: 0.00, //快递费\n    couponPrice: 0.00, //优惠券的价格\n    grouponPrice: 0.00, //团购优惠价格\n    orderTotalPrice: 0.00, //订单总价\n    actualPrice: 0.00, //实际需要支付的总价\n    cartId: 0,\n    addressId: 0,\n    couponId: 0,\n    userCouponId: 0,\n    message: '',\n    grouponLinkId: 0, //参与的团购\n    grouponRulesId: 0 //团购规则ID\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n\n  //获取checkou信息\n  getCheckoutInfo: function() {\n    let that = this;\n    util.request(api.CartCheckout, {\n      cartId: that.data.cartId,\n      addressId: that.data.addressId,\n      couponId: that.data.couponId,\n      userCouponId: that.data.userCouponId,\n      grouponRulesId: that.data.grouponRulesId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          checkedGoodsList: res.data.checkedGoodsList,\n          checkedAddress: res.data.checkedAddress,\n          availableCouponLength: res.data.availableCouponLength,\n          actualPrice: res.data.actualPrice,\n          couponPrice: res.data.couponPrice,\n          grouponPrice: res.data.grouponPrice,\n          freightPrice: res.data.freightPrice,\n          goodsTotalPrice: res.data.goodsTotalPrice,\n          orderTotalPrice: res.data.orderTotalPrice,\n          addressId: res.data.addressId,\n          couponId: res.data.couponId,\n          userCouponId: res.data.userCouponId,\n          grouponRulesId: res.data.grouponRulesId,\n        });\n      }\n      wx.hideLoading();\n    });\n  },\n  selectAddress() {\n    wx.navigateTo({\n      url: '/pages/ucenter/address/address',\n    })\n  },\n  selectCoupon() {\n    wx.navigateTo({\n      url: '/pages/ucenter/couponSelect/couponSelect',\n    })\n  },\n  bindMessageInput: function(e) {\n    this.setData({\n      message: e.detail.value\n    });\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n    wx.showLoading({\n      title: '加载中...',\n    });\n    try {\n      var cartId = wx.getStorageSync('cartId');\n      if (cartId === \"\") {\n        cartId = 0;\n      }\n      var addressId = wx.getStorageSync('addressId');\n      if (addressId === \"\") {\n        addressId = 0;\n      }\n      var couponId = wx.getStorageSync('couponId');\n      if (couponId === \"\") {\n        couponId = 0;\n      }\n      var userCouponId = wx.getStorageSync('userCouponId');\n      if (userCouponId === \"\") {\n        userCouponId = 0;\n      }\n      var grouponRulesId = wx.getStorageSync('grouponRulesId');\n      if (grouponRulesId === \"\") {\n        grouponRulesId = 0;\n      }\n      var grouponLinkId = wx.getStorageSync('grouponLinkId');\n      if (grouponLinkId === \"\") {\n        grouponLinkId = 0;\n      }\n\n      this.setData({\n        cartId: cartId,\n        addressId: addressId,\n        couponId: couponId,\n        userCouponId: userCouponId,\n        grouponRulesId: grouponRulesId,\n        grouponLinkId: grouponLinkId\n      });\n\n    } catch (e) {\n      // Do something when catch error\n      console.log(e);\n    }\n\n    this.getCheckoutInfo();\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  submitOrder: function() {\n    if (this.data.addressId <= 0) {\n      util.showErrorToast('请选择收货地址');\n      return false;\n    }\n    util.request(api.OrderSubmit, {\n      cartId: this.data.cartId,\n      addressId: this.data.addressId,\n      couponId: this.data.couponId,\n      userCouponId: this.data.userCouponId,\n      message: this.data.message,\n      grouponRulesId: this.data.grouponRulesId,\n      grouponLinkId: this.data.grouponLinkId\n    }, 'POST').then(res => {\n      if (res.errno === 0) {\n\n        // 下单成功，重置couponId\n        try {\n          wx.setStorageSync('couponId', 0);\n        } catch (error) {\n\n        }\n\n        const orderId = res.data.orderId;\n        const grouponLinkId = res.data.grouponLinkId;\n        const payed = res.data.payed\n        if (payed) {\n          wx.redirectTo({\n            url: '/pages/payResult/payResult?status=1&orderId=' + orderId\n          });\n          return\n        }\n        util.request(api.OrderPrepay, {\n          orderId: orderId\n        }, 'POST').then(function(res) {\n          if (res.errno === 0) {\n            const payParam = res.data;\n            console.log(\"支付过程开始\");\n            wx.requestPayment({\n              'timeStamp': payParam.timeStamp,\n              'nonceStr': payParam.nonceStr,\n              'package': payParam.packageValue,\n              'signType': payParam.signType,\n              'paySign': payParam.paySign,\n              'success': function(res) {\n                console.log(\"支付过程成功\");\n                if (grouponLinkId) {\n                  setTimeout(() => {\n                    wx.redirectTo({\n                      url: '/pages/groupon/grouponDetail/grouponDetail?id=' + grouponLinkId\n                    })\n                  }, 1000);\n                } else {\n                  wx.redirectTo({\n                    url: '/pages/payResult/payResult?status=1&orderId=' + orderId\n                  });\n                }\n              },\n              'fail': function(res) {\n                console.log(\"支付过程失败\");\n                wx.redirectTo({\n                  url: '/pages/payResult/payResult?status=0&orderId=' + orderId\n                });\n              },\n              'complete': function(res) {\n                console.log(\"支付过程结束\")\n              }\n            });\n          } else {\n            wx.redirectTo({\n              url: '/pages/payResult/payResult?status=0&orderId=' + orderId\n            });\n          }\n        });\n\n      } else {\n        util.showErrorToast(res.errmsg);\n      }\n    });\n  }\n});"
  },
  {
    "path": "litemall-wx/pages/checkout/checkout.json",
    "content": "{\n  \"navigationBarTitleText\": \"填写订单\"\n}"
  },
  {
    "path": "litemall-wx/pages/checkout/checkout.wxml",
    "content": "<view class=\"container\">\n  <view class=\"address-box\">\n    <view class=\"address-item\" bindtap=\"selectAddress\" wx:if=\"{{checkedAddress.id > 0}}\">\n      <view class=\"l\">\n        <text class=\"name\">{{checkedAddress.name}}</text>\n        <text class=\"default\" wx:if=\"{{checkedAddress.isDefault}}\">默认</text>\n      </view>\n      <view class=\"m\">\n        <text class=\"mobile\">{{checkedAddress.tel}}</text>\n        <text class=\"address\">{{checkedAddress.addressDetail}}</text>\n      </view>\n      <view class=\"r\">\n        <van-icon name=\"arrow\" />\n      </view>\n    </view>\n    <view class=\"address-item address-empty\" bindtap=\"selectAddress\" wx:else>\n      <view class=\"m\">\n        还没有收货地址，去添加\n      </view>\n      <view class=\"r\">\n        <van-icon name=\"arrow\" />      \n      </view>\n    </view>\n  </view>\n\n  <view class=\"coupon-box\">\n    <view class=\"coupon-item\" bindtap=\"selectCoupon\">\n      <view class=\"l\" wx:if=\"{{couponId == 0}}\">\n        <text class=\"name\">没有可用的优惠券</text>\n        <text class=\"txt\">0张</text>\n      </view>\n      <view class=\"l\" wx:elif=\"{{couponId == -1}}\">\n        <text class=\"name\">优惠券</text>\n        <text class=\"txt\">{{availableCouponLength}}张</text>\n      </view>\n      <view class=\"l\" wx:else>\n        <text class=\"name\">优惠券</text>\n        <text class=\"txt\">-￥{{couponPrice}}元</text>\n      </view>      \n      <view class=\"r\">\n        <van-icon name=\"arrow\" />      \n      </view>\n    </view>\n  </view>\n\n  <view class=\"message-box\">\n    <input class=\"message-item\" bindinput=\"bindMessageInput\" placeholder=\"如需要，请输入留言\" value=\"{{message}}\" />\n  </view>\n\n  <view class=\"order-box\">\n    <view class=\"order-item\">\n      <view class=\"l\">\n        <text class=\"name\">商品合计</text>\n      </view>\n      <view class=\"r\">\n        <text class=\"txt\">￥{{goodsTotalPrice}}元</text>\n      </view>\n    </view>\n    <view class=\"order-item\">\n      <view class=\"l\">\n        <text class=\"name\">运费</text>\n      </view>\n      <view class=\"r\">\n        <text class=\"txt\">￥{{freightPrice}}元</text>\n      </view>\n    </view>\n    <view class=\"order-item no-border\">\n      <view class=\"l\">\n        <text class=\"name\">优惠券</text>\n      </view>\n      <view class=\"r\">\n        <text class=\"txt\">-￥{{couponPrice}}元</text>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"goods-items\">\n    <view class=\"item\" wx:for=\"{{checkedGoodsList}}\" wx:key=\"id\">\n      <view class=\"img\">\n        <image src=\"{{item.picUrl}}\"></image>\n      </view>\n      <view class=\"info\">\n        <view class=\"t\">\n          <text class=\"name\">{{item.goodsName}}</text>\n          <text class=\"number\">x{{item.number}}</text>\n        </view>\n        <view class=\"m\">{{item.specifications}}</view>\n        <view class=\"b\">￥{{item.price}}</view>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-total\">\n    <view class=\"l\">实付：￥{{actualPrice}}</view>\n    <view class=\"r\" bindtap=\"submitOrder\">去付款</view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/checkout/checkout.wxss",
    "content": "page {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.address-box {\n  width: 100%;\n  height: 166.55rpx;\n  background-size: 62.5rpx 10.5rpx;\n  margin-bottom: 20rpx;\n  padding-top: 10.5rpx;\n}\n\n.address-item {\n  display: flex;\n  height: 155.55rpx;\n  background: #fff;\n  padding: 41.6rpx 0 41.6rpx 31.25rpx;\n}\n\n.address-item.address-empty {\n  line-height: 75rpx;\n  text-align: center;\n}\n\n.address-box .l {\n  width: 125rpx;\n  height: 100%;\n}\n\n.address-box .l .name {\n  margin-left: 6.25rpx;\n  margin-top: -7.25rpx;\n  display: block;\n  width: 125rpx;\n  height: 43rpx;\n  line-height: 43rpx;\n  font-size: 30rpx;\n  color: #333;\n  margin-bottom: 5rpx;\n}\n\n.address-box .l .default {\n  margin-left: 6.25rpx;\n  display: block;\n  width: 62rpx;\n  height: 33rpx;\n  border-radius: 5rpx;\n  border: 1px solid #b4282d;\n  font-size: 20.5rpx;\n  text-align: center;\n  line-height: 29rpx;\n  color: #b4282d;\n}\n\n.address-box .m {\n  flex: 1;\n  height: 72.25rpx;\n  color: #999;\n}\n\n.address-box .mobile {\n  display: block;\n  height: 29rpx;\n  line-height: 29rpx;\n  margin-bottom: 6.25rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.address-box .address {\n  display: block;\n  height: 37.5rpx;\n  line-height: 37.5rpx;\n  font-size: 25rpx;\n  color: #666;\n}\n\n.address-box .r {\n  width: 77rpx;\n  height: 77rpx;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.address-box .r image {\n  width: 52.078rpx;\n  height: 52.078rpx;\n}\n\n.coupon-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.coupon-box .coupon-item {\n  width: 100%;\n  height: 108.3rpx;\n  overflow: hidden;\n  background: #fff;\n  display: flex;\n  padding-left: 31.25rpx;\n}\n\n.coupon-box .l {\n  flex: 1;\n  height: 43rpx;\n  line-height: 43rpx;\n  padding-top: 35rpx;\n}\n\n.coupon-box .l .name {\n  float: left;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.coupon-box .l .txt {\n  float: right;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.coupon-box .r {\n  margin-top: 15.5rpx;\n  width: 77rpx;\n  height: 77rpx;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.coupon-box .r image {\n  width: 52.078rpx;\n  height: 52.078rpx;\n}\n\n.message-box {\n  margin-top: 20rpx;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.message-box .message-item {\n  height: 52.078rpx;\n  overflow: hidden;\n  background: #fff;\n  display: flex;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  padding-top: 26rpx;\n}\n\n.order-box {\n  margin-top: 20rpx;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-box .order-item {\n  height: 104.3rpx;\n  overflow: hidden;\n  background: #fff;\n  display: flex;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  padding-top: 26rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.order-box .order-item .l {\n  float: left;\n  height: 52rpx;\n  width: 50%;\n  line-height: 52rpx;\n  overflow: hidden;\n}\n\n.order-box .order-item .r {\n  float: right;\n  text-align: right;\n  width: 50%;\n  height: 52rpx;\n  line-height: 52rpx;\n  overflow: hidden;\n}\n\n.order-box .order-item.no-border {\n  border-bottom: none;\n}\n\n.goods-items {\n  margin-top: 20rpx;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding-left: 31.25rpx;\n  margin-bottom: 120rpx;\n}\n\n.goods-items .item {\n  height: 192rpx;\n  padding-right: 31.25rpx;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.goods-items .item.no-border {\n  border-bottom: none;\n}\n\n.goods-items .item:last-child {\n  border-bottom: none;\n}\n\n.goods-items .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background-color: #f4f4f4;\n  margin-right: 20rpx;\n}\n\n.goods-items .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.goods-items .info {\n  flex: 1;\n  height: 145.83rpx;\n  padding-top: 5rpx;\n}\n\n.goods-items .t {\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10rpx;\n  overflow: hidden;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.goods-items .t .name {\n  display: block;\n  float: left;\n}\n\n.goods-items .t .number {\n  display: block;\n  float: right;\n  text-align: right;\n}\n\n.goods-items .m {\n  height: 29rpx;\n  overflow: hidden;\n  line-height: 29rpx;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n  color: #666;\n}\n\n.goods-items .b {\n  height: 41rpx;\n  overflow: hidden;\n  line-height: 41rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-total {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  height: 100rpx;\n  width: 100%;\n  display: flex;\n}\n\n.order-total .l {\n  flex: 1;\n  height: 100rpx;\n  line-height: 100rpx;\n  color: #b4282d;\n  background: #fff;\n  font-size: 33rpx;\n  padding-left: 31.25rpx;\n  border-top: 1rpx solid rgba(0, 0, 0, 0.2);\n  border-bottom: 1rpx solid rgba(0, 0, 0, 0.2);\n}\n\n.order-total .r {\n  width: 233rpx;\n  height: 100rpx;\n  background: #b4282d;\n  border: 1px solid #b4282d;\n  line-height: 100rpx;\n  text-align: center;\n  color: #fff;\n  font-size: 30rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/comment/comment.js",
    "content": "var app = getApp();\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    comments: [],\n    allCommentList: [],\n    picCommentList: [],\n    type: 0,\n    valueId: 0,\n    showType: 0,\n    allCount: 0,\n    hasPicCount: 0,\n    allPage: 1,\n    picPage: 1,\n    limit: 20\n  },\n  getCommentCount: function() {\n    let that = this;\n    util.request(api.CommentCount, {\n      valueId: that.data.valueId,\n      type: that.data.type\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          allCount: res.data.allCount,\n          hasPicCount: res.data.hasPicCount\n        });\n      }\n    });\n  },\n  getCommentList: function() {\n    let that = this;\n    util.request(api.CommentList, {\n      valueId: that.data.valueId,\n      type: that.data.type,\n      limit: that.data.limit,\n      page: (that.data.showType == 0 ? that.data.allPage : that.data.picPage),\n      showType: that.data.showType\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        if (that.data.showType == 0) {\n          that.setData({\n            allCommentList: that.data.allCommentList.concat(res.data.list),\n            allPage: res.data.page,\n            comments: that.data.allCommentList.concat(res.data.list)\n          });\n        } else {\n          that.setData({\n            picCommentList: that.data.picCommentList.concat(res.data.list),\n            picPage: res.data.page,\n            comments: that.data.picCommentList.concat(res.data.list)\n          });\n        }\n      }\n    });\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      type: options.type,\n      valueId: options.valueId\n    });\n    this.getCommentCount();\n    this.getCommentList();\n  },\n  onPullDownRefresh() {\n    this.setData({\n      allCommentList: [],\n      allPage: 1,\n      picCommentList: [],\n      picPage: 1,\n      comments: []\n    });\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCommentCount();\n    this.getCommentList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  switchTab: function() {\n    let that = this;\n    if (that.data.showType == 0) {\n      that.setData({\n        allCommentList: [],\n        allPage: 1,\n        comments: [],\n        showType: 1\n      });\n    } else {\n      that.setData({\n        picCommentList: [],\n        picPage: 1,\n        comments: [],\n        showType: 0\n      });\n    }\n    this.getCommentList();\n  },\n  onReachBottom: function() {\n    if (this.data.showType == 0) {\n\n      if (this.data.allCount / this.data.limit < this.data.allPage) {\n        return false;\n      }\n\n      this.setData({\n        'allPage': this.data.allPage + 1\n      });\n    } else {\n      if (this.data.hasPicCount / this.data.limit < this.data.picPage) {\n        return false;\n      }\n\n      this.setData({\n        'picPage': this.data.picPage + 1\n      });\n    }\n\n    this.getCommentList();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/comment/comment.json",
    "content": "{\n  \"enablePullDownRefresh\": true,\n  \"navigationBarTitleText\": \"评价\"\n}"
  },
  {
    "path": "litemall-wx/pages/comment/comment.wxml",
    "content": "<view class=\"comments\">\n  <view class=\"h\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\">\n      <view class=\"txt\">全部({{allCount}})</view>\n    </view>\n    <view class=\"item {{ showType == 0 ? '' : 'active'}}\" bindtap=\"switchTab\">\n      <view class=\"txt\">有图({{hasPicCount}})</view>\n    </view>\n  </view>\n  <view class=\"b\">\n    <view class=\"item\" wx:for=\"{{comments}}\" wx:key=\"id\">\n      <view class=\"info\">\n        <view class=\"user\">\n          <image src=\"{{item.userInfo.avatarUrl}}\"></image>\n          <text>{{item.userInfo.nickname}}</text>\n        </view>\n        <view class=\"time\">{{item.addTime}}</view>\n      </view>\n      <view class=\"comment\">{{item.content}}</view>\n      <view class=\"imgs\" wx:if=\"{{item.picList.length > 0}}\">\n        <image class=\"img\" wx:for=\"{{item.picList}}\" wx:key=\"*this\" wx:for-item=\"pitem\" src=\"{{pitem}}\"></image>\n      </view>\n      <view class=\"customer-service\" wx:if=\"{{item.adminContent}}\">\n        <text class=\"u\">商家回复：</text>\n        <text class=\"c\">{{item.adminContent}}</text>\n      </view>\n    </view>\n\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/comment/comment.wxss",
    "content": ".comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin: 20rpx 0;\n}\n\n.comments .h {\n  position: fixed;\n  left: 0;\n  top: 0;\n  z-index: 1000;\n  width: 100%;\n  display: flex;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.comments .h .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.comments .h .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.comments .h .item.active .txt {\n  color: #ab2b2b;\n  border-bottom: 4rpx solid #ab2b2b;\n}\n\n.comments .b {\n  margin-top: 85rpx;\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .b.no-h {\n  margin-top: 0;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n  border-bottom: 1px solid #d9d9d9;\n  padding-bottom: 25rpx;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user image {\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user text {\n  display: inline-block;\n  width: auto;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .comment {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  font-size: 29rpx;\n  margin-bottom: 16rpx;\n}\n\n.comments .imgs {\n  width: 720rpx;\n  height: 150rpx;\n  margin-bottom: 25rpx;\n}\n\n.comments .imgs .img {\n  height: 150rpx;\n  width: 150rpx;\n  margin-right: 28rpx;\n}\n\n.comments .spec {\n  width: 720rpx;\n  height: 25rpx;\n  font-size: 24rpx;\n  color: #999;\n}\n\n.comments .spec .item {\n  color: #7f7f7f;\n  font-size: 25rpx;\n}\n\n.comments .customer-service {\n  width: 690rpx;\n  height: auto;\n  overflow: hidden;\n  margin-top: 23rpx;\n  background: rgba(0, 0, 0, 0.03);\n  padding: 21rpx;\n}\n\n.comments .customer-service .u {\n  font-size: 24rpx;\n  color: #333;\n  line-height: 37.5rpx;\n}\n\n.comments .customer-service .c {\n  font-size: 24rpx;\n  color: #999;\n  line-height: 37.5rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/commentPost/commentPost.js",
    "content": "// 上传组件 基于https://github.com/Tencent/weui-wxss/tree/master/src/example/uploader\nvar app = getApp();\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nPage({\n  data: {\n    ogid: 0,\n    orderGoods: {},\n    content: '',\n    stars: [0, 1, 2, 3, 4],\n    star: 5,\n    starText: '十分满意',\n    hasPicture: false,\n    picUrls: [],\n    files: []\n  },\n  chooseImage: function(e) {\n    if (this.data.files.length >= 5) {\n      util.showErrorToast('只能上传五张图片')\n      return false;\n    }\n\n    var that = this;\n    wx.chooseImage({\n      count: 1,\n      sizeType: ['original', 'compressed'],\n      sourceType: ['album', 'camera'],\n      success: function(res) {\n        that.setData({\n          files: that.data.files.concat(res.tempFilePaths)\n        });\n        that.upload(res);\n      }\n    })\n  },\n  upload: function(res) {\n    var that = this;\n    const uploadTask = wx.uploadFile({\n      url: api.StorageUpload,\n      filePath: res.tempFilePaths[0],\n      name: 'file',\n      success: function(res) {\n        var _res = JSON.parse(res.data);\n        if (_res.errno === 0) {\n          var url = _res.data.url\n          that.data.picUrls.push(url)\n          that.setData({\n            hasPicture: true,\n            picUrls: that.data.picUrls\n          })\n        }\n      },\n      fail: function(e) {\n        wx.showModal({\n          title: '错误',\n          content: '上传失败',\n          showCancel: false\n        })\n      },\n    })\n\n    uploadTask.onProgressUpdate((res) => {\n      console.log('上传进度', res.progress)\n      console.log('已经上传的数据长度', res.totalBytesSent)\n      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)\n    })\n\n  },\n  previewImage: function(e) {\n    wx.previewImage({\n      current: e.currentTarget.id, // 当前显示图片的http链接\n      urls: this.data.files // 需要预览的图片http链接列表\n    })\n  },\n  selectRater: function(e) {\n    var star = e.currentTarget.dataset.star + 1;\n    var starText;\n    if (star == 1) {\n      starText = '很差';\n    } else if (star == 2) {\n      starText = '不太满意';\n    } else if (star == 3) {\n      starText = '满意';\n    } else if (star == 4) {\n      starText = '比较满意';\n    } else {\n      starText = '十分满意'\n    }\n    this.setData({\n      star: star,\n      starText: starText\n    })\n\n  },\n  onLoad: function(options) {\n    var that = this;\n    that.setData({\n      ogid: options.ogid\n    });\n    this.getOrderGoods();\n  },\n  getOrderGoods: function() {\n    let that = this;\n    util.request(api.OrderGoods, {\n      ogid: that.data.ogid\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          orderGoods: res.data,\n        });\n      }\n    });\n  },\n  onClose: function() {\n    wx.navigateBack();\n  },\n  onPost: function() {\n    let that = this;\n\n    if (!this.data.content) {\n      util.showErrorToast('请填写评论')\n      return false;\n    }\n\n    util.request(api.OrderComment, {\n      orderGoodsId: that.data.orderGoods.id,\n      content: that.data.content,\n      star: that.data.star,\n      hasPicture: that.data.hasPicture,\n      picUrls: that.data.picUrls\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '评论成功',\n          complete: function() {\n            wx.switchTab({\n              url: '/pages/ucenter/index/index'\n            })\n          }\n        })\n      }\n    });\n  },\n  bindInputValue(event) {\n\n    let value = event.detail.value;\n\n    //判断是否超过140个字符\n    if (value && value.length > 140) {\n      return false;\n    }\n\n    this.setData({\n      content: event.detail.value,\n    })\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/commentPost/commentPost.json",
    "content": "{\n  \"navigationBarTitleText\": \"评价\"\n}"
  },
  {
    "path": "litemall-wx/pages/commentPost/commentPost.wxml",
    "content": "<view class=\"container\">\n  <view class=\"post-comment\">\n    <view class=\"goods\">\n      <view class=\"img\">\n        <image src=\"{{orderGoods.picUrl}}\"></image>\n      </view>\n      <view class=\"info\">\n        <view class=\"t\">\n          <text class=\"name\">{{orderGoods.goodsName}} x{{orderGoods.number}}</text>\n        </view>\n        <view class=\"attr\">{{orderGoods.goodsSpecificationValues}}</view>\n      </view>\n    </view>\n    <view class=\"rater\">\n      <text class=\"rater-title\">评分</text>\n      <block wx:for=\"{{stars}}\" wx:key=\"*this\" wx:for-item=\"item\">\n        <van-icon name=\"star\" bindtap=\"selectRater\" color=\"#ab956d\" data-star=\"{{item}}\" wx:if=\"{{item < star}}\"/>\n        <van-icon name=\"star-o\" bindtap=\"selectRater\" data-star=\"{{item}}\" wx:else/>\n      </block>\n      <text class=\"rater-desc\">{{starText}}</text>\n    </view>\n    <view class=\"input-box\">\n      <textarea class=\"content\" focus=\"true\" bindinput=\"bindInputValue\" maxlength=\"140\" placeholder=\"留言经过筛选后，对所有人可见\" />\n      <text class=\"count\">{{140 - content.length}}</text>\n    </view>\n\n    <view class=\"weui-uploader\">\n      <view class=\"weui-uploader__hd\">\n        <view class=\"weui-uploader__title\">图片上传</view>\n        <view class=\"weui-uploader__info\">{{picUrls.length}}/{{files.length}}</view>\n      </view>\n      <view class=\"weui-uploader__bd\">\n        <view class=\"weui-uploader__files\" id=\"uploaderFiles\">\n          <block wx:for=\"{{files}}\" wx:key=\"*this\">\n            <view class=\"weui-uploader__file\" bindtap=\"previewImage\" id=\"{{item}}\">\n              <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n            </view>\n            <!-- <view class=\"weui-uploader__file weui-uploader__file_status\" bindtap=\"previewImage\" id=\"{{item}}\">\n              <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n              <view class=\"weui-uploader__file-content\">50%</view>\n            </view> -->\n          </block>\n          <view class=\"weui-uploader__input-box\">\n            <view class=\"weui-uploader__input\" bindtap=\"chooseImage\"></view>\n          </view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"btns\">\n      <view class=\"close\" bindtap=\"onClose\">取消</view>\n      <view class=\"post\" bindtap=\"onPost\">发表</view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/commentPost/commentPost.wxss",
    "content": "page, .container {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.post-comment {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 30rpx;\n  background: #fff;\n}\n\n.post-comment .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.post-comment .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.post-comment .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.post-comment .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.post-comment .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.post-comment .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.post-comment .goods .status {\n  width: 105rpx;\n  color: #b4282d;\n  font-size: 25rpx;\n}\n\n.post-comment .rater {\n  display: flex;\n  flex-direction: row;\n  height: 55rpx;\n}\n\n.post-comment .rater .rater-title {\n  font-size: 29rpx;\n  padding-right: 10rpx;\n}\n\n.post-comment .rater image {\n  padding-left: 5rpx;\n  height: 50rpx;\n  width: 50rpx;\n}\n\n.post-comment .rater .rater-desc {\n  font-size: 29rpx;\n  padding-left: 10rpx;\n}\n\n.post-comment .input-box {\n  height: 337.5rpx;\n  width: 690rpx;\n  position: relative;\n  background: #fff;\n}\n\n.post-comment .input-box .content {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  background: #fff;\n  font-size: 29rpx;\n  border: 5px solid #f4f4f4;\n  height: 300rpx;\n  width: 650rpx;\n  padding: 20rpx;\n}\n\n.post-comment .input-box .count {\n  position: absolute;\n  bottom: 20rpx;\n  right: 20rpx;\n  display: block;\n  height: 30rpx;\n  width: 50rpx;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.post-comment .btns {\n  height: 108rpx;\n}\n\n.post-comment .close {\n  float: left;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: left;\n  color: #666;\n  padding: 0 30rpx;\n}\n\n.post-comment .post {\n  float: right;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: right;\n  padding: 0 30rpx;\n}\n\n.weui-uploader {\n  margin-top: 50rpx;\n}\n\n.weui-uploader__hd {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: flex;\n  padding-bottom: 10px;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  align-items: center;\n}\n\n.weui-uploader__title {\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n  flex: 1;\n}\n\n.weui-uploader__info {\n  color: #b2b2b2;\n}\n\n.weui-uploader__bd {\n  margin-bottom: -4px;\n  margin-right: -9px;\n  overflow: hidden;\n}\n\n.weui-uploader__file {\n  float: left;\n  margin-right: 9px;\n  margin-bottom: 9px;\n}\n\n.weui-uploader__img {\n  display: block;\n  width: 79px;\n  height: 79px;\n}\n\n.weui-uploader__file_status {\n  position: relative;\n}\n\n.weui-uploader__file_status:before {\n  content: \" \";\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.weui-uploader__file-content {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  color: #fff;\n}\n\n.weui-uploader__input-box {\n  float: left;\n  position: relative;\n  margin-right: 9px;\n  margin-bottom: 9px;\n  width: 77px;\n  height: 77px;\n  border: 1px solid #d9d9d9;\n}\n\n.weui-uploader__input-box:after, .weui-uploader__input-box:before {\n  content: \" \";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  background-color: #d9d9d9;\n}\n\n.weui-uploader__input-box:before {\n  width: 2px;\n  height: 39.5px;\n}\n\n.weui-uploader__input-box:after {\n  width: 39.5px;\n  height: 2px;\n}\n\n.weui-uploader__input-box:active {\n  border-color: #999;\n}\n\n.weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before {\n  background-color: #999;\n}\n\n.weui-uploader__input {\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n"
  },
  {
    "path": "litemall-wx/pages/coupon/coupon.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    couponList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function (options) {\n    this.getCouponList();\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function () {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh: function () {\n\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom: function () {\n\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function () {\n\n  },\n  getCouponList: function () {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      couponList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.CouponList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function (res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          couponList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  getCoupon(e) {\n    if (!app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n      return;\n    }\n\n    let couponId = e.currentTarget.dataset.index\n    util.request(api.CouponReceive, {\n      couponId: couponId\n    }, 'POST').then(res => {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: \"领取成功\"\n        })\n      }\n      else {\n        util.showErrorToast(res.errmsg);\n      }\n    })\n  },\n  nextPage: function (event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getCouponList();\n\n  },\n  prevPage: function (event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getCouponList();\n  }\n})\n"
  },
  {
    "path": "litemall-wx/pages/coupon/coupon.json",
    "content": "{\n  \"navigationBarTitleText\": \"优惠券专区\"\n}"
  },
  {
    "path": "litemall-wx/pages/coupon/coupon.wxml",
    "content": "<view class=\"container\">\n  <scroll-view class=\"coupon-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n\n    <view class=\"item\" wx:for=\"{{couponList}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\" bindtap=\"getCoupon\" data-index=\"{{item.id}}\">\n      <view class=\"tag\">{{item.tag}}</view>\n      <view class=\"content\">\n        <view class=\"left\">\n          <view class=\"discount\">{{item.discount}}元</view>\n          <view class=\"min\"> 满{{item.min}}元使用</view>\n        </view>\n        <view class=\"right\">\n          <view class=\"name\">{{item.name}}</view>\n          <view class=\"time\" wx:if=\"{{item.days != 0}}\">有效期：{{item.days}}天</view>\n          <view class=\"time\" wx:else> 有效期：{{item.startTime}} - {{item.endTime}}</view>\n        </view>\n      </view>\n      <view class=\"condition\">\n        <text class=\"txt\">{{item.desc}}</text>\n        <image src=\"{{item.pic}}\" class=\"icon\"></image>\n      </view>\n    </view>\n\n    <view class=\"page\" wx:if=\"{{showPage}}\">\n      <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n      <view class=\"next {{ (count / limit) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/coupon/coupon.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  padding-top: 30rpx;\n}\n\n.coupon-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n}\n\n.item {\n  position: relative;\n  height: 290rpx;\n  width: 700rpx;\n  background: linear-gradient(to right, #cfa568, #e3bf79);\n  margin-bottom: 30rpx;\n  margin-left: 30rpx;\n  margin-right: 30rpx;\n  padding-top: 52rpx;\n}\n\n.tag {\n  height: 32rpx;\n  background: #a48143;\n  padding-left: 16rpx;\n  padding-right: 16rpx;\n  position: absolute;\n  left: 20rpx;\n  color: #fff;\n  top: 20rpx;\n  font-size: 20rpx;\n  text-align: center;\n  line-height: 32rpx;\n}\n\n.content {\n  margin-top: 24rpx;\n  margin-left: 40rpx;\n  display: flex;\n  margin-right: 40rpx;\n  flex-direction: row;\n}\n\n.content .left {\n  flex: 1;\n}\n\n.discount {\n  font-size: 50rpx;\n  color: #b4282d;\n}\n\n.min {\n  color: #fff;\n}\n\n.content .right {\n  width: 400rpx;\n}\n\n.name {\n  font-size: 44rpx;\n  color: #fff;\n  margin-bottom: 14rpx;\n}\n\n.time {\n  font-size: 24rpx;\n  color: #fff;\n  line-height: 30rpx;\n}\n\n.condition {\n  position: absolute;\n  width: 100%;\n  bottom: 0;\n  left: 0;\n  height: 78rpx;\n  background: rgba(0, 0, 0, 0.08);\n  padding: 24rpx 40rpx;\n  display: flex;\n  flex-direction: row;\n}\n\n.condition .txt {\n  display: block;\n  height: 30rpx;\n  flex: 1;\n  overflow: hidden;\n  font-size: 24rpx;\n  line-height: 30rpx;\n  color: #fff;\n}\n\n.condition .icon {\n  margin-left: 30rpx;\n  width: 24rpx;\n  height: 24rpx;\n}\n\n\n.page {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.page view {\n  height: 108rpx;\n  width: 50%;\n  float: left;\n  font-size: 29rpx;\n  color: #333;\n  text-align: center;\n  line-height: 108rpx;\n}\n\n.page .prev {\n  border-right: 1px solid #d9d9d9;\n}\n\n.page .disabled {\n  color: #ccc;\n}"
  },
  {
    "path": "litemall-wx/pages/goods/goods.js",
    "content": "var app = getApp();\nvar WxParse = require('../../lib/wxParse/wxParse.js');\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar user = require('../../utils/user.js');\n\nPage({\n  data: {\n    canShare: false,\n    id: 0,\n    goods: {},\n    groupon: [], //该商品支持的团购规格\n    grouponLink: {}, //参与的团购\n    attribute: [],\n    issueList: [],\n    comment: [],\n    brand: {},\n    specificationList: [],\n    productList: [],\n    relatedGoods: [],\n    cartGoodsCount: 0,\n    userHasCollect: 0,\n    number: 1,\n    tmpPicUrl: '',\n    checkedSpecText: '规格数量选择',\n    tmpSpecText: '请选择规格数量',\n    checkedSpecPrice: 0,\n    openAttr: false,\n    openShare: false,\n    collect: false,\n    shareImage: '',\n    isGroupon: false, //标识是否是一个参团购买\n    soldout: false,\n    canWrite: false, //用户是否获取了保存相册的权限\n  },\n\n  // 页面分享\n  onShareAppMessage: function() {\n    let that = this;\n    return {\n      title: that.data.goods.name,\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/index/index?goodId=' + this.data.id\n    }\n  },\n\n  shareFriendOrCircle: function() {\n    //var that = this;\n    if (this.data.openShare === false) {\n      this.setData({\n        openShare: !this.data.openShare\n      });\n    } else {\n      return false;\n    }\n  },\n  handleSetting: function(e) {\n      var that = this;\n      // console.log(e)\n      if (!e.detail.authSetting['scope.writePhotosAlbum']) {\n          wx.showModal({\n              title: '警告',\n              content: '不授权无法保存',\n              showCancel: false\n          })\n          that.setData({\n              canWrite: false\n          })\n      } else {\n          wx.showToast({\n              title: '保存成功'\n          })\n          that.setData({\n              canWrite: true\n          })\n      }\n  },\n  // 保存分享图\n  saveShare: function() {\n    let that = this;\n    wx.downloadFile({\n      url: that.data.shareImage,\n      success: function(res) {\n        console.log(res)\n        wx.saveImageToPhotosAlbum({\n          filePath: res.tempFilePath,\n          success: function(res) {\n            wx.showModal({\n              title: '生成海报成功',\n              content: '海报已成功保存到相册，可以分享到朋友圈了',\n              showCancel: false,\n              confirmText: '好的',\n              confirmColor: '#a78845',\n              success: function(res) {\n                if (res.confirm) {\n                  console.log('用户点击确定');\n                }\n              }\n            })\n          },\n          fail: function(res) {\n            console.log('fail')\n          }\n        })\n      },\n      fail: function() {\n        console.log('fail')\n      }\n    })\n  },\n\n  //从分享的团购进入\n  getGrouponInfo: function(grouponId) {\n    let that = this;\n    util.request(api.GroupOnJoin, {\n      grouponId: grouponId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          grouponLink: res.data.groupon,\n          id: res.data.goods.id\n        });\n        //获取商品详情\n        that.getGoodsInfo();\n      }\n    });\n  },\n\n  // 获取商品信息\n  getGoodsInfo: function() {\n    let that = this;\n    util.request(api.GoodsDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        let _specificationList = res.data.specificationList;\n        let _tmpPicUrl = res.data.productList[0].url;\n        //console.log(\"pic: \"+_tmpPicUrl);\n        // 如果仅仅存在一种货品，那么商品页面初始化时默认checked\n        if (_specificationList.length == 1) {\n          if (_specificationList[0].valueList.length == 1) {\n            _specificationList[0].valueList[0].checked = true\n\n            // 如果仅仅存在一种货品，那么商品价格应该和货品价格一致\n            // 这里检测一下\n            let _productPrice = res.data.productList[0].price;\n            let _goodsPrice = res.data.info.retailPrice;\n            if (_productPrice != _goodsPrice) {\n              console.error('商品数量价格和货品不一致');\n            }\n\n            that.setData({\n              checkedSpecText: _specificationList[0].valueList[0].value,\n              tmpSpecText: '已选择：' + _specificationList[0].valueList[0].value\n            });\n          }\n        }\n        res.data.info.path = \"pages/goods/goods?id=\" + that.data.id\n\n        that.setData({\n          goods: res.data.info,\n          attribute: res.data.attribute,\n          issueList: res.data.issue,\n          comment: res.data.comment,\n          brand: res.data.brand,\n          specificationList: res.data.specificationList,\n          productList: res.data.productList,\n          userHasCollect: res.data.userHasCollect,\n          shareImage: res.data.shareImage,\n          checkedSpecPrice: res.data.info.retailPrice,\n          groupon: res.data.groupon,\n          canShare: res.data.share,\n          //选择规格时，默认展示第一张图片\n          tmpPicUrl: _tmpPicUrl\n        });\n\n        \n        //如果是通过分享的团购参加团购，则团购项目应该与分享的一致并且不可更改\n        if (that.data.isGroupon) {\n          let groupons = that.data.groupon;\n          for (var i = 0; i < groupons.length; i++) {\n            if (groupons[i].id != that.data.grouponLink.rulesId) {\n              groupons.splice(i, 1);\n            }\n          }\n          groupons[0].checked = true;\n          //重设团购规格\n          that.setData({\n            groupon: groupons\n          });\n\n        }\n\n        if (res.data.userHasCollect == 1) {\n          that.setData({\n            collect: true\n          });\n        } else {\n          that.setData({\n            collect: false\n          });\n        }\n\n        WxParse.wxParse('goodsDetail', 'html', res.data.info.detail, that);\n        //获取推荐商品\n        that.getGoodsRelated();\n      }\n    });\n  },\n\n  // 获取推荐商品\n  getGoodsRelated: function() {\n    let that = this;\n    util.request(api.GoodsRelated, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          relatedGoods: res.data.list,\n        });\n      }\n    });\n  },\n\n  // 团购选择\n  clickGroupon: function(event) {\n    let that = this;\n\n    //参与团购，不可更改选择\n    if (that.data.isGroupon) {\n      return;\n    }\n\n    let specName = event.currentTarget.dataset.name;\n    let specValueId = event.currentTarget.dataset.valueId;\n\n    let _grouponList = this.data.groupon;\n    for (let i = 0; i < _grouponList.length; i++) {\n      if (_grouponList[i].id == specValueId) {\n        if (_grouponList[i].checked) {\n          _grouponList[i].checked = false;\n        } else {\n          _grouponList[i].checked = true;\n        }\n      } else {\n        _grouponList[i].checked = false;\n      }\n    }\n\n    this.setData({\n      groupon: _grouponList,\n    });\n  },\n\n  // 规格选择\n  clickSkuValue: function(event) {\n    let that = this;\n    let specName = event.currentTarget.dataset.name;\n    let specValueId = event.currentTarget.dataset.valueId;\n\n    //判断是否可以点击\n\n    //TODO 性能优化，可在wx:for中添加index，可以直接获取点击的属性名和属性值，不用循环\n    let _specificationList = this.data.specificationList;\n    for (let i = 0; i < _specificationList.length; i++) {\n      if (_specificationList[i].name === specName) {\n        for (let j = 0; j < _specificationList[i].valueList.length; j++) {\n          if (_specificationList[i].valueList[j].id == specValueId) {\n            //如果已经选中，则反选\n            if (_specificationList[i].valueList[j].checked) {\n              _specificationList[i].valueList[j].checked = false;\n            } else {\n              _specificationList[i].valueList[j].checked = true;\n            }\n          } else {\n            _specificationList[i].valueList[j].checked = false;\n          }\n        }\n      }\n    }\n    this.setData({\n      specificationList: _specificationList,\n    });\n    //重新计算spec改变后的信息\n    this.changeSpecInfo();\n\n    //重新计算哪些值不可以点击\n  },\n\n  //获取选中的团购信息\n  getCheckedGrouponValue: function() {\n    let checkedValues = {};\n    let _grouponList = this.data.groupon;\n    for (let i = 0; i < _grouponList.length; i++) {\n      if (_grouponList[i].checked) {\n        checkedValues = _grouponList[i];\n      }\n    }\n\n    return checkedValues;\n  },\n\n  //获取选中的规格信息\n  getCheckedSpecValue: function() {\n    let checkedValues = [];\n    let _specificationList = this.data.specificationList;\n    for (let i = 0; i < _specificationList.length; i++) {\n      let _checkedObj = {\n        name: _specificationList[i].name,\n        valueId: 0,\n        valueText: ''\n      };\n      for (let j = 0; j < _specificationList[i].valueList.length; j++) {\n        if (_specificationList[i].valueList[j].checked) {\n          _checkedObj.valueId = _specificationList[i].valueList[j].id;\n          _checkedObj.valueText = _specificationList[i].valueList[j].value;\n        }\n      }\n      checkedValues.push(_checkedObj);\n    }\n\n    return checkedValues;\n  },\n\n  //判断规格是否选择完整\n  isCheckedAllSpec: function() {\n    return !this.getCheckedSpecValue().some(function(v) {\n      if (v.valueId == 0) {\n        return true;\n      }\n    });\n  },\n\n  getCheckedSpecKey: function() {\n    let checkedValue = this.getCheckedSpecValue().map(function(v) {\n      return v.valueText;\n    });\n    return checkedValue;\n  },\n\n  // 规格改变时，重新计算价格及显示信息\n  changeSpecInfo: function() {\n    let checkedNameValue = this.getCheckedSpecValue();\n\n    //设置选择的信息\n    let checkedValue = checkedNameValue.filter(function(v) {\n      if (v.valueId != 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }).map(function(v) {\n      return v.valueText;\n    });\n    if (checkedValue.length > 0) {\n      this.setData({\n        tmpSpecText: checkedValue.join('　')\n      });\n    } else {\n      this.setData({\n        tmpSpecText: '请选择规格数量'\n      });\n    }\n\n    if (this.isCheckedAllSpec()) {\n      this.setData({\n        checkedSpecText: this.data.tmpSpecText\n      });\n\n      // 规格所对应的货品选择以后\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        this.setData({\n          soldout: true\n        });\n        console.error('规格所对应货品不存在');\n        return;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      //console.log(\"checkedProduct: \"+checkedProduct.url);\n      if (checkedProduct.number > 0) {\n        this.setData({\n          checkedSpecPrice: checkedProduct.price,\n          tmpPicUrl: checkedProduct.url,\n          soldout: false\n        });\n      } else {\n        this.setData({\n          checkedSpecPrice: this.data.goods.retailPrice,\n          soldout: true\n        });\n      }\n\n    } else {\n      this.setData({\n        checkedSpecText: '规格数量选择',\n        checkedSpecPrice: this.data.goods.retailPrice,\n        soldout: false\n      });\n    }\n\n  },\n\n  // 获取选中的产品（根据规格）\n  getCheckedProductItem: function(key) {\n    return this.data.productList.filter(function(v) {\n      if (v.specifications.toString() == key.toString()) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.id) {\n      this.setData({\n        id: parseInt(options.id)\n      });\n      this.getGoodsInfo();\n    }\n\n    if (options.grouponId) {\n      this.setData({\n        isGroupon: true,\n      });\n      this.getGrouponInfo(options.grouponId);\n    }\n    let that = this;\n    wx.getSetting({\n        success: function (res) {\n            console.log(res)\n            //不存在相册授权\n            if (!res.authSetting['scope.writePhotosAlbum']) {\n                wx.authorize({\n                    scope: 'scope.writePhotosAlbum',\n                    success: function () {\n                        that.setData({\n                            canWrite: true\n                        })\n                    },\n                    fail: function (err) {\n                        that.setData({\n                            canWrite: false\n                        })\n                    }\n                })\n            } else {\n                that.setData({\n                    canWrite: true\n                });\n            }\n        }\n    })\n  },\n  onShow: function() {\n    // 页面显示\n    var that = this;\n    util.request(api.CartGoodsCount).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          cartGoodsCount: res.data\n        });\n      }\n    });\n  },\n\n  //添加或是取消收藏\n  addCollectOrNot: function() {\n    let that = this;\n    util.request(api.CollectAddOrDelete, {\n        type: 0,\n        valueId: this.data.id\n      }, \"POST\")\n      .then(function(res) {\n        if (that.data.userHasCollect == 1) {\n          that.setData({\n            collect: false,\n            userHasCollect: 0\n          });\n        } else {\n          that.setData({\n            collect: true,\n            userHasCollect: 1\n          });\n        }\n\n      });\n\n  },\n\n  //立即购买（先自动加入购物车）\n  addFast: function() {\n    var that = this;\n    if (this.data.openAttr == false) {\n      //打开规格选择窗口\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    } else {\n\n      //提示选择完整规格\n      if (!this.isCheckedAllSpec()) {\n        util.showErrorToast('请选择完整规格');\n        return false;\n      }\n\n      //根据选中的规格，判断是否有对应的sku信息\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        //找不到对应的product信息，提示没有库存\n        util.showErrorToast('没有库存');\n        return false;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      //验证库存\n      if (checkedProduct.number <= 0) {\n        util.showErrorToast('没有库存');\n        return false;\n      }\n\n      //验证团购是否有效\n      let checkedGroupon = this.getCheckedGrouponValue();\n\n      //立即购买\n      util.request(api.CartFastAdd, {\n          goodsId: this.data.goods.id,\n          number: this.data.number,\n          productId: checkedProduct.id\n        }, \"POST\")\n        .then(function(res) {\n          if (res.errno == 0) {\n\n            // 如果storage中设置了cartId，则是立即购买，否则是购物车购买\n            try {\n              wx.setStorageSync('cartId', res.data);\n              wx.setStorageSync('grouponRulesId', checkedGroupon.id);\n              wx.setStorageSync('grouponLinkId', that.data.grouponLink.id);\n              wx.navigateTo({\n                url: '/pages/checkout/checkout'\n              })\n            } catch (e) {}\n\n          } else {\n            util.showErrorToast(res.errmsg);\n          }\n        });\n    }\n\n\n  },\n\n  //添加到购物车\n  addToCart: function() {\n    var that = this;\n    if (this.data.openAttr == false) {\n      //打开规格选择窗口\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    } else {\n\n      //提示选择完整规格\n      if (!this.isCheckedAllSpec()) {\n        util.showErrorToast('请选择完整规格');\n        return false;\n      }\n\n      //根据选中的规格，判断是否有对应的sku信息\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        //找不到对应的product信息，提示没有库存\n        util.showErrorToast('没有库存');\n        return false;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      //验证库存\n      if (checkedProduct.number <= 0) {\n        util.showErrorToast('没有库存');\n        return false;\n      }\n\n      //添加到购物车\n      util.request(api.CartAdd, {\n          goodsId: this.data.goods.id,\n          number: this.data.number,\n          productId: checkedProduct.id\n        }, \"POST\")\n        .then(function(res) {\n          let _res = res;\n          if (_res.errno == 0) {\n            wx.showToast({\n              title: '添加成功'\n            });\n            that.setData({\n              openAttr: !that.data.openAttr,\n              cartGoodsCount: _res.data\n            });\n            if (that.data.userHasCollect == 1) {\n              that.setData({\n                collect: true\n              });\n            } else {\n              that.setData({\n                collect: false\n              });\n            }\n          } else {\n            util.showErrorToast(_res.errmsg);\n          }\n\n        });\n    }\n\n  },\n\n  cutNumber: function() {\n    this.setData({\n      number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1\n    });\n  },\n  addNumber: function() {\n    this.setData({\n      number: this.data.number + 1\n    });\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  switchAttrPop: function() {\n    if (this.data.openAttr == false) {\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    }\n  },\n  closeAttr: function() {\n    this.setData({\n      openAttr: false,\n    });\n  },\n  closeShare: function() {\n    this.setData({\n      openShare: false,\n    });\n  },\n  openCartPage: function() {\n    wx.switchTab({\n      url: '/pages/cart/cart'\n    });\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  }\n\n})"
  },
  {
    "path": "litemall-wx/pages/goods/goods.json",
    "content": "{\n  \"navigationBarTitleText\": \"商品详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/goods/goods.wxml",
    "content": "<view class=\"container\">\n  <swiper class=\"goodsimgs\" indicator-dots=\"true\" autoplay=\"true\" interval=\"3000\" duration=\"1000\">\n    <swiper-item wx:for=\"{{goods.gallery}}\" wx:key=\"*this\">\n      <image src=\"{{item}}\" background-size=\"cover\"></image>\n    </swiper-item>\n  </swiper>\n  <!-- 分享 -->\n  <view class='goods_name'>\n    <view class='goods_name_left'>{{goods.name}}</view>\n    <view hidden=\"{{!canShare}}\" class=\"goods_name_right\" bindtap=\"shareFriendOrCircle\">分享</view>\n  </view>\n  <view class=\"share-pop-box\" hidden=\"{{!openShare}}\">\n    <view class=\"share-pop\">\n      <view class=\"close\" bindtap=\"closeShare\">\n        <van-icon class=\"icon\" name=\"cross\" />      \n      </view>\n      <view class='share-info'>\n        <button class=\"sharebtn\" open-type=\"share\" wx:if=\"{{!isGroupon}}\">\n          <image class='sharebtn_image' src='/static/images/wechat.png'></image>\n          <view class='sharebtn_text'>分享给好友</view>\n        </button>\n        <button  class=\"savesharebtn\" open-type=\"openSetting\" bindopensetting=\"handleSetting\" wx:if=\"{{(!isGroupon) && (!canWrite)}}\" >\n          <image class='sharebtn_image' src='/static/images/friend.png'></image>\n          <view class='sharebtn_text'>生成海报</view>\n        </button>\n        <button class=\"savesharebtn\" bindtap=\"saveShare\" wx:if=\"{{!isGroupon && canWrite}}\">\n          <image class='sharebtn_image' src='/static/images/friend.png'></image>\n          <view class='sharebtn_text'>生成海报</view>\n        </button>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"goods-info\">\n    <view class=\"c\">\n      <text class=\"desc\">{{goods.brief}}</text>\n      <view class=\"price\">\n        <view class=\"counterPrice\">原价：￥{{goods.counterPrice}}</view>\n        <view class=\"retailPrice\">现价：￥{{checkedSpecPrice}}</view>\n      </view>\n\n      <view class=\"brand\" wx:if=\"{{brand.name}}\">\n        <navigator url=\"../brandDetail/brandDetail?id={{brand.id}}\">\n          <text>{{brand.name}}</text>\n        </navigator>\n      </view>\n    </view>\n  </view>\n  <view class=\"section-nav section-attr\" bindtap=\"switchAttrPop\">\n    <view class=\"t\">{{checkedSpecText}}</view>\n    <van-icon class=\"i\" name=\"arrow\" />\n  </view>\n  <view class=\"comments\" wx:if=\"{{comment.count > 0}}\">\n    <view class=\"h\">\n      <navigator url=\"/pages/comment/comment?valueId={{goods.id}}&type=0\">\n        <text class=\"t\">评价({{comment.count > 999 ? '999+' : comment.count}})</text>\n        <view class=\"i\">\n          查看全部\n          <van-icon name=\"arrow\" />\n        </view>\n      </navigator>\n    </view>\n    <view class=\"b\">\n      <view class=\"item\" wx:for=\"{{comment.data}}\" wx:key=\"id\">\n        <view class=\"info\">\n          <view class=\"user\">\n            <image src=\"{{item.avatar}}\"></image>\n            <text>{{item.nickname}}</text>\n          </view>\n          <view class=\"time\">{{item.addTime}}</view>\n        </view>\n        <view class=\"content\">\n          {{item.content}}\n        </view>\n        <view class=\"imgs\" wx:if=\"{{item.picList.length > 0}}\">\n          <image class=\"img\" wx:for=\"{{item.picList}}\" wx:key=\"*this\" wx:for-item=\"iitem\" src=\"{{iitem}} \"></image>\n        </view>\n        <view class=\"customer-service\" wx:if=\"{{item.adminContent}}\">\n          <text class=\"u\">商家回复：</text>\n          <text class=\"c\">{{item.adminContent}}</text>\n        </view>\n      </view>\n    </view>\n  </view>\n  <view class=\"goods-attr\">\n    <view class=\"t\">商品参数</view>\n    <view class=\"l\">\n      <view class=\"item\" wx:for=\"{{attribute}}\" wx:key=\"name\">\n        <text class=\"left\">{{item.attribute}}</text>\n        <text class=\"right\">{{item.value}}</text>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"detail\">\n    <import src=\"/lib/wxParse/wxParse.wxml\" />\n    <template is=\"wxParse\" data=\"{{wxParseData:goodsDetail.nodes}}\" />\n  </view>\n\n  <view class=\"common-problem\">\n    <view class=\"h\">\n      <view class=\"line\"></view>\n      <text class=\"title\">常见问题</text>\n    </view>\n    <view class=\"b\">\n      <view class=\"item\" wx:for=\"{{issueList}}\" wx:key=\"id\">\n        <view class=\"question-box\">\n          <text class=\"spot\"></text>\n          <text class=\"question\">{{item.question}}</text>\n        </view>\n        <view class=\"answer\">\n          {{item.answer}}\n        </view>\n      </view>\n    </view>\n  </view>\n\n  <!-- 大家都在看 -->\n  <view class=\"related-goods\" wx:if=\"{{relatedGoods.length > 0}}\">\n    <view class=\"h\">\n      <view class=\"line\"></view>\n      <text class=\"title\">大家都在看</text>\n    </view>\n    <view class=\"b\">\n      <view class=\"item\" wx:for=\"{{relatedGoods}}\" wx:key=\"id\">\n        <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n          <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{item.name}}</text>\n          <text class=\"price\">￥{{item.retailPrice}}</text>\n        </navigator>\n      </view>\n    </view>\n  </view>\n</view>\n<!-- 规格选择界面 -->\n<view class=\"attr-pop-box\" hidden=\"{{!openAttr}}\">\n  <view class=\"attr-pop\">\n    <view class=\"close\" bindtap=\"closeAttr\">\n      <van-icon  class=\"icon\" name=\"cross\" />      \n    </view>\n    <view class=\"img-info\">\n      <image class=\"img\" src=\"{{tmpPicUrl}}\"></image>\n      <view class=\"info\">\n        <view class=\"c\">\n          <view class=\"p\">价格：￥{{checkedSpecPrice}}</view>\n          <view class=\"a\">{{tmpSpecText}}</view>\n        </view>\n      </view>\n    </view>\n\n    <!-- 规格列表 -->\n    <view class=\"spec-con\">\n      <view class=\"spec-item\" wx:for=\"{{specificationList}}\" wx:key=\"name\">\n        <view class=\"name\">{{item.name}}</view>\n        <view class=\"values\">\n          <view class=\"value {{vitem.checked ? 'selected' : ''}}\" bindtap=\"clickSkuValue\" wx:for=\"{{item.valueList}}\" wx:for-item=\"vitem\" wx:key=\"id\" data-value-id=\"{{vitem.id}}\" data-name=\"{{vitem.specification}}\">{{vitem.value}}</view>\n        </view>\n      </view>\n\n      <view class=\"spec-item\" wx:if=\"{{groupon.length > 0}}\">\n        <view class=\"name\">团购立减</view>\n        <view class=\"values\">\n          <view class=\"value {{vitem.checked ? 'selected' : ''}}\" bindtap=\"clickGroupon\" wx:for=\"{{groupon}}\" wx:for-item=\"vitem\" wx:key=\"{{vitem.id}}\" data-value-id=\"{{vitem.id}}\" data-name=\"{{vitem.specification}}\">￥{{vitem.discount}} ({{vitem.discountMember}}人)</view>\n        </view>\n      </view>\n\n      <!-- 数量 -->\n      <view class=\"number-item\">\n        <view class=\"name\">数量</view>\n        <view class=\"selnum\">\n          <view class=\"cut\" bindtap=\"cutNumber\">-</view>\n          <input value=\"{{number}}\" class=\"number\" disabled=\"true\" type=\"number\" />\n          <view class=\"add\" bindtap=\"addNumber\">+</view>\n        </view>\n      </view>\n\n    </view>\n  </view>\n</view>\n\n<!-- 底部按钮 -->\n<view class=\"bottom-btn\">\n<view class=\"l\">\n  <button show-message-card send-message-title=\"{{ goods.name }}\" send-message-path=\"{{ goods.path }}\"\n\t\t\t\tsend-message-img=\"{{ goods.picUrl }}\" open-type=\"contact\"  class=\"l-contact\">\n\t\t\t\t<van-icon class=\"icon\" name=\"/static/images/customer.png\" />\n\t\t\t</button>\n</view>\n  <view class=\"l l-collect\" bindtap=\"addCollectOrNot\" wx:if=\"{{!isGroupon}}\">\n    <van-icon class=\"icon\" name=\"star\" color=\"#ab956d\" wx:if=\"{{collect}}\"/>\n    <van-icon class=\"icon\" name=\"star-o\" wx:else/>\n  </view>\n  <view class=\"l l-cart\" wx:if=\"{{!isGroupon}}\">\n    <view class=\"box\">\n      <text class=\"cart-count\">{{cartGoodsCount}}</text>\n      <van-icon bindtap=\"openCartPage\" class=\"icon\" name=\"cart-o\" />\n    </view>\n  </view>\n  <view class=\"r\" bindtap=\"addToCart\" wx:if=\"{{!soldout}}\" wx:if=\"{{!isGroupon}}\">加入购物车</view>\n  <view class=\"c\" bindtap=\"addFast\" wx:if=\"{{!soldout}}\">{{isGroupon?'参加团购':'立即购买'}}</view>\n  <view class=\"n\" wx:if=\"{{soldout}}\">商品已售空</view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/goods/goods.wxss",
    "content": ".container {\n  margin-bottom: 100rpx;\n}\n\n.goodsimgs {\n  width: 750rpx;\n  height: 750rpx;\n}\n\n.goodsimgs image {\n  width: 750rpx;\n  height: 750rpx;\n}\n\n.commodity_screen {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  background: #000;\n  opacity: 0.2;\n  overflow: hidden;\n  z-index: 1000;\n  color: #fff;\n}\n\n.commodity_attr_box {\n  width: 100%;\n  overflow: hidden;\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  z-index: 2000;\n  background: #fff;\n  padding-top: 20rpx;\n}\n\n.goods-info {\n  width: 750rpx;\n  height: 306rpx;\n  overflow: hidden;\n  background: #fff;\n}\n\n.goods-info .c {\n  display: block;\n  width: 718.75rpx;\n  height: 100%;\n  margin-left: 31.25rpx;\n  padding: 38rpx 31.25rpx 38rpx 0;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.goods-info .c text {\n  display: block;\n  width: 687.5rpx;\n  text-align: left;\n}\n\n.goods_name {\n  height: 86rpx;\n  line-height: 86rpx;\n  border-bottom: 1px solid #fafafa;\n}\n\n.goods_name_left {\n  float: left;\n  height: 86rpx;\n  font-weight: 550;\n  line-height: 86rpx;\n  margin-left: 35rpx;\n  font-size: 38rpx;\n  letter-spacing: 1rpx;\n}\n\n.goods_name_right {\n  float: right;\n  font-weight: 550;\n  margin-top: 28rpx;\n  width: 140rpx;\n  height: 80rpx;\n  line-height: 82rpx;\n  padding: 0;\n  margin: 0;\n  margin-right: 0rpx;\n  text-align: center;\n  font-size: 25rpx;\n  color: #f4f4f4;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 0rpx;\n  border-bottom-right-radius: 0rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #f3d10e 0%, #f48f18 100%)\n}\n\n.goods-info .desc {\n  height: 43rpx;\n  margin-bottom: 41rpx;\n  font-size: 24rpx;\n  line-height: 36rpx;\n  color: #999;\n}\n\n.goods-info .price {\n  height: 70rpx;\n  align-content: center;\n}\n\n.goods-info .counterPrice {\n  float: left;\n  padding-left: 0rpx;\n  text-decoration: line-through;\n  font-size: 30rpx;\n  color: #999;\n}\n\n.goods-info .retailPrice {\n  padding-left: 5%;\n  font-size: 30rpx;\n  color: #a78845;\n}\n\n.goods-info .brand {\n  margin-top: 23rpx;\n  min-height: 40rpx;\n  text-align: left;\n}\n\n.goods-info .brand text {\n  display: inline-block;\n  width: auto;\n  padding: 2px 30rpx 2px 10.5rpx;\n  line-height: 35.5rpx;\n  border: 1px solid #f48f18;\n  font-size: 25rpx;\n  color: #f48f18;\n  border-radius: 4rpx;\n  background-size: 10.75rpx 18.75rpx;\n}\n\n.section-nav {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.section-nav .t {\n  float: left;\n  width: 600rpx;\n  height: 108rpx;\n  line-height: 108rpx;\n  font-size: 29rpx;\n  color: #333;\n  margin-left: 31.25rpx;\n}\n\n.section-nav .i {\n  float: right;\n  width: 52rpx;\n  height: 52rpx;\n  margin-right: 16rpx;\n  margin-top: 28rpx;\n}\n\n.section-act .t {\n  float: left;\n  display: flex;\n  align-items: center;\n  width: 600rpx;\n  height: 108rpx;\n  overflow: hidden;\n  line-height: 108rpx;\n  font-size: 29rpx;\n  color: #999;\n  margin-left: 31.25rpx;\n}\n\n.section-act .label {\n  color: #999;\n}\n\n.section-act .tag {\n  display: flex;\n  align-items: center;\n  padding: 0 10rpx;\n  border-radius: 3px;\n  height: 37rpx;\n  width: auto;\n  color: #f48f18;\n  overflow: hidden;\n  border: 1px solid #f48f18;\n  font-size: 25rpx;\n  margin: 0 10rpx;\n}\n\n.section-act .text {\n  display: flex;\n  align-items: center;\n  height: 37rpx;\n  width: auto;\n  overflow: hidden;\n  color: #f48f18;\n  font-size: 29rpx;\n}\n\n.comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin: 20rpx 0;\n}\n\n.comments .h {\n  height: 102.5rpx;\n  line-height: 100.5rpx;\n  width: 718.75rpx;\n  padding-right: 16rpx;\n}\n\n.comments .h .t {\n  display: block;\n  float: left;\n  width: 50%;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.comments .h .i {\n  display: block;\n  float: right;\n  width: 164rpx;\n  height: 100.5rpx;\n  line-height: 100.5rpx;\n  background-size: 52rpx;\n}\n\n.comments .b {\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n  border-top: 1px solid #d9d9d9;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user image {\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user text {\n  display: inline-block;\n  width: auto;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .content {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  font-size: 29rpx;\n  margin-bottom: 24rpx;\n}\n\n.comments .imgs {\n  width: 720rpx;\n  height: auto;\n  margin-bottom: 25rpx;\n}\n\n.comments .imgs .img {\n  height: 150rpx;\n  width: 150rpx;\n  margin-right: 28rpx;\n}\n\n.comments .spec {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 30rpx;\n  font-size: 24rpx;\n  color: #999;\n  margin-bottom: 30rpx;\n}\n\n.comments .customer-service {\n  width: 690rpx;\n  height: auto;\n  overflow: hidden;\n  margin-top: 23rpx;\n  margin-bottom: 23rpx;\n  background: rgba(0, 0, 0, 0.03);\n  padding: 21rpx;\n}\n\n.comments .customer-service .u {\n  font-size: 24rpx;\n  color: #333;\n  line-height: 37.5rpx;\n}\n\n.comments .customer-service .c {\n  font-size: 24rpx;\n  color: #999;\n  line-height: 37.5rpx;\n}\n\n.goods-attr {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0 31.25rpx 25rpx 31.25rpx;\n  background: #fff;\n}\n\n.goods-attr .t {\n  width: 687.5rpx;\n  height: 104rpx;\n  line-height: 104rpx;\n  font-size: 38.5rpx;\n}\n\n.goods-attr .item {\n  width: 687.5rpx;\n  height: 68rpx;\n  padding: 11rpx 20rpx;\n  margin-bottom: 11rpx;\n  background: #f7f7f7;\n  font-size: 38.5rpx;\n}\n\n.goods-attr .left {\n  float: left;\n  font-size: 25rpx;\n  width: 134rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  overflow: hidden;\n  color: #999;\n}\n\n.goods-attr .right {\n  float: left;\n  font-size: 36.5rpx;\n  margin-left: 20rpx;\n  width: 480rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  overflow: hidden;\n  color: #333;\n}\n\n.detail {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.detail image {\n  width: 750rpx;\n  display: block;\n}\n\n.common-problem {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.common-problem .h {\n  position: relative;\n  height: 145.5rpx;\n  width: 750rpx;\n  padding: 56.25rpx 0;\n  background: #fff;\n  text-align: center;\n}\n\n.common-problem .h .line {\n  display: inline-block;\n  position: absolute;\n  top: 72rpx;\n  left: 0;\n  z-index: 2;\n  height: 1px;\n  margin-left: 225rpx;\n  width: 300rpx;\n  background: #ccc;\n}\n\n.common-problem .h .title {\n  display: inline-block;\n  position: absolute;\n  top: 56.125rpx;\n  left: 0;\n  z-index: 3;\n  height: 33rpx;\n  margin-left: 285rpx;\n  width: 180rpx;\n  background: #fff;\n}\n\n.common-problem .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0rpx 30rpx;\n  background: #fff;\n}\n\n.common-problem .item {\n  height: auto;\n  overflow: hidden;\n  padding-bottom: 25rpx;\n}\n\n.common-problem .question-box .spot {\n  float: left;\n  display: block;\n  height: 8rpx;\n  width: 8rpx;\n  background: #b4282d;\n  border-radius: 50%;\n  margin-top: 11rpx;\n}\n\n.common-problem .question-box .question {\n  float: left;\n  line-height: 30rpx;\n  padding-left: 8rpx;\n  display: block;\n  font-size: 26rpx;\n  padding-bottom: 15rpx;\n  color: #303030;\n}\n\n.common-problem .answer {\n  line-height: 36rpx;\n  padding-left: 16rpx;\n  font-size: 26rpx;\n  color: #787878;\n}\n\n.related-goods {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding-bottom: 80rpx;\n}\n\n.related-goods .h {\n  position: relative;\n  height: 145.5rpx;\n  width: 750rpx;\n  padding: 56.25rpx 0;\n  background: #fff;\n  text-align: center;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.related-goods .h .line {\n  display: inline-block;\n  position: absolute;\n  top: 72rpx;\n  left: 0;\n  z-index: 2;\n  height: 1px;\n  margin-left: 225rpx;\n  width: 300rpx;\n  background: #ccc;\n}\n\n.related-goods .h .title {\n  display: inline-block;\n  position: absolute;\n  top: 56.125rpx;\n  left: 0;\n  z-index: 3;\n  height: 33rpx;\n  margin-left: 285rpx;\n  width: 180rpx;\n  background: #fff;\n}\n\n.related-goods .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.related-goods .b .item {\n  float: left;\n  background: #fff;\n  width: 375rpx;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n  padding: 15rpx 31.25rpx;\n  border-right: 1px solid #f4f4f4;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.related-goods .item .img {\n  width: 311.45rpx;\n  height: 311.45rpx;\n}\n\n.related-goods .item .name {\n  display: block;\n  width: 311.45rpx;\n  height: 35rpx;\n  margin: 11.5rpx 0 15rpx 0;\n  text-align: center;\n  overflow: hidden;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.related-goods .item .price {\n  display: block;\n  width: 311.45rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.bottom-btn {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  z-index: 10;\n  width: 750rpx;\n  height: 100rpx;\n  display: flex;\n  background: #fff;\n}\n\n.bottom-btn .l {\n  float: left;\n  height: 100rpx;\n  width: 90rpx;\n  border: 1px solid #f4f4f4;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.bottom-btn .l .l-contact {\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-wrap: wrap;\n  line-height: 1;\n  background: #fff;\n  border-radius: 0;\n  height: 55rpx;\n}\n \n.bottom-btn .l .l-contact:after {\n  border: none;\n  border-radius: 0;\n}\n\n.bottom-btn .l.l-collect {\n  border-right: none;\n  border-left: none;\n  text-align: center;\n}\n\n.bottom-btn .l.l-collect .icon {\n  font-size: 44rpx;\n}\n\n.bottom-btn .l.l-kefu {\n  position: relative;\n  height: 54rpx;\n  width: 63rpx;\n}\n\n.bottom-btn .l.l-cart .box {\n  position: relative;\n  height: 60rpx;\n  width: 60rpx;\n}\n\n.bottom-btn .l.l-cart .cart-count {\n  height: 28rpx;\n  width: 28rpx;\n  z-index: 10;\n  position: absolute;\n  top: 0;\n  right: 0;\n  background: #b4282d;\n  text-align: center;\n  font-size: 18rpx;\n  color: #fff;\n  line-height: 28rpx;\n  border-radius: 50%;\n}\n\n.bottom-btn .l.l-cart .icon {\n  position: absolute;\n  top: 10rpx;\n  left: 0;\n  font-size: 44rpx;\n}\n\n.bottom-btn .c {\n  float: left;\n  background: #b4282d;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: #fff;\n}\n\n.bottom-btn .r {\n  border: 1px solid #f48f18;\n  background: #f48f18;\n  float: left;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: #fff;\n}\n\n.bottom-btn .n {\n  float: left;\n  background: #d5d8d8e7;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: rgb(37, 36, 36);\n}\n@import \"../../lib/wxParse/wxParse.wxss\";\n\n.attr-pop-box {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  background: rgba(0, 0, 0, 0.5);\n  z-index: 8;\n  bottom: 0;\n  /* display: none; */\n}\n\n.attr-pop {\n  width: 100%;\n  height: auto;\n  max-height: 780rpx;\n  padding: 31.25rpx;\n  background: #fff;\n  position: fixed;\n  z-index: 9;\n  bottom: 100rpx;\n}\n\n.attr-pop .close {\n  position: absolute;\n  width: 48rpx;\n  height: 48rpx;\n  right: 31.25rpx;\n  overflow: hidden;\n  top: 31.25rpx;\n}\n\n.attr-pop .close .icon {\n  width: 48rpx;\n  height: 48rpx;\n}\n\n.attr-pop .img-info {\n  width: 687.5rpx;\n  height: 177rpx;\n  overflow: hidden;\n  margin-bottom: 41.5rpx;\n}\n\n.attr-pop .img {\n  float: left;\n  height: 177rpx;\n  width: 177rpx;\n  background: #f4f4f4;\n  margin-right: 31.25rpx;\n}\n\n.attr-pop .info {\n  float: left;\n  height: 177rpx;\n  display: flex;\n  align-items: center;\n}\n\n.attr-pop .p {\n  font-size: 33rpx;\n  color: #333;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10rpx;\n}\n\n.attr-pop .a {\n  font-size: 29rpx;\n  color: #333;\n  height: 40rpx;\n  line-height: 40rpx;\n}\n\n.spec-con {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.spec-con .name {\n  margin-bottom: 6rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.spec-con .values {\n  height: auto;\n  margin-bottom: 10rpx;\n  font-size: 0;\n}\n\n.spec-con .value {\n  display: inline-block;\n  height: 62rpx;\n  padding: 0 35rpx;\n  line-height: 56rpx;\n  text-align: center;\n  margin-right: 25rpx;\n  margin-bottom: 16.5rpx;\n  border: 1px solid #333;\n  font-size: 25rpx;\n  color: #333;\n}\n\n.spec-con .value.disable {\n  border: 1px solid #ccc;\n  color: #ccc;\n}\n\n.spec-con .value.selected {\n  border: 1px solid #b4282d;\n  color: #b4282d;\n}\n\n.number-item .selnum {\n  width: 322rpx;\n  height: 71rpx;\n  border: 1px solid #ccc;\n  display: flex;\n}\n\n.number-item .cut {\n  width: 93.75rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 65rpx;\n}\n\n.number-item .number {\n  flex: 1;\n  height: 100%;\n  text-align: center;\n  line-height: 68.75rpx;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #ccc;\n  float: left;\n}\n\n.number-item .add {\n  width: 93.75rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 65rpx;\n}\n\n.share-pop-box {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  background: rgba(0, 0, 0, 0.5);\n  z-index: 8;\n  bottom: 0;\n  /* display: none; */\n}\n\n.share-pop {\n  width: 100%;\n  height: auto;\n  max-height: 780rpx;\n  padding: 31.25rpx;\n  background: #fff;\n  position: fixed;\n  z-index: 9;\n  bottom: 100rpx;\n}\n\n.share-pop .close {\n  position: absolute;\n  width: 48rpx;\n  height: 48rpx;\n  right: 31.25rpx;\n  top: 31.25rpx;\n}\n\n.share-pop .close .icon {\n  width: 48rpx;\n  height: 48rpx;\n}\n\n.share-pop .share-info {\n  width: 100%;\n  height: 225rpx;\n  overflow: hidden;\n  margin-bottom: 41.5rpx;\n}\n\n.sharebtn {\n  top: 75rpx;\n  background: none !important;\n  font-size: 32rpx;\n  color: #fff !important;\n  border-radius: 0%;\n  width: 175rpx;\n  height: 150rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-wrap: wrap;\n  float: left;\n  background: #fff;\n  border-bottom: 0px solid #fafafa;\n  margin-left: 15%;\n}\n\n.sharebtn::after {\n  border: none;\n  border-radius: 0%;\n}\n\n.savesharebtn {\n  top: 75rpx;\n  background: none !important;\n  font-size: 32rpx;\n  color: #fff !important;\n  border-radius: 0%;\n  width: 175rpx;\n  height: 150rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-wrap: wrap;\n  float: right;\n  background: #fff;\n  border-bottom: 0px solid #fafafa;\n  margin-right: 15%;\n}\n\n.savesharebtn::after {\n  border: none;\n  border-radius: 0%;\n}\n\n.sharebtn_image {\n  /* border: 1px solid #757575; */\n  width: 128rpx;\n  height: 128rpx;\n  margin-top: 0rpx;\n}\n\n.sharebtn_text {\n  /* border: 1px solid #757575; */\n  width: 150rpx;\n  margin-bottom: 2rpx;\n  height: 20rpx;\n  line-height: 20rpx;\n  font-size: 20rpx;\n  color: #555;\n}\n\n.separate {\n  background: #e0e3da;\n  width: 100%;\n  height: 6rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponDetail/grouponDetail.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    id: 0,\n    groupon: {},\n    joiners: [],\n    orderInfo: {},\n    orderGoods: [],\n    rules: {},\n    active: 0,\n    steps: [],\n    activeIcon: '',\n    activeColor: ''\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      id: options.id\n    });\n    this.getOrderDetail();\n  },\n\n  // 页面分享\n  onShareAppMessage: function() {\n    let that = this;\n    return {\n      title: '邀请团购',\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/index/index?grouponId=' + this.data.id\n    }\n  },\n  getOrderDetail: function() {\n    let that = this;\n    util.request(api.GroupOnDetail, {\n      grouponId: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        let _steps = [{\n            text: '已开团'\n          },\n          {\n            text: '开团中'\n          },\n          {\n            text: '开团成功'\n          }\n        ]\n        let _active = res.data.groupon.status\n        let _activeIcon = 'success'\n        let _activeColor = '#07c160'\n        if (res.data.groupon.status === 3) {\n          _steps = [{\n              text: '已开团'\n            },\n            {\n              text: '开团中'\n            },\n            {\n              text: '开团失败'\n            }\n          ]\n          _active = 2\n          _activeIcon = 'fail'\n          _activeColor = '#EE0A24'\n        }\n        that.setData({\n          joiners: res.data.joiners,\n          groupon: res.data.groupon,\n          orderInfo: res.data.orderInfo,\n          orderGoods: res.data.orderGoods,\n          rules: res.data.rules,\n          active: _active,\n          steps: _steps,\n          activeIcon: _activeIcon,\n          activeColor: _activeColor\n        });\n      }\n    });\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n});"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponDetail/grouponDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"团购详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponDetail/grouponDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"progress\">\n    <view class=\"item-a\">\n      <van-steps steps=\"{{ steps }}\" active=\"{{ active }}\" active-icon=\"{{ activeIcon }}\"\n  active-color=\"{{ activeColor }}\" />\n    </view>\n    <view class=\"item-c\" wx:if=\"{{groupon.status === 1}}\">\n      <view class=\"l\">\n        开团还缺\n        <van-tag type=\"danger\">{{rules.discountMember - joiners.length}}</van-tag>\n        人\n      </view>\n      <view class=\"r\">\n        <button class=\"btn active\" open-type=\"share\">邀请参团</button>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"menu-list-pro\">\n    <view class=\"h\">\n      <view class=\"label\">参与团购 ( {{joiners.length}}人)</view>\n      <view class=\"status\">查看全部</view>\n    </view>\n    <view class=\"menu-list-item\" wx:for-items=\"{{joiners}}\" wx:key=\"id\" data-id=\"{{item.id}}\">\n      <image class=\"icon\" src=\"{{item.avatar}}\"></image>\n      <text class=\"txt\">{{item.nickname}}</text>\n    </view>\n  </view>\n\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      <view class=\"label\">商品信息</view>\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.goodsSpecificationValues}}</view>\n          <view class=\"price\">￥{{item.retailPrice}}</view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"order-bottom\">\n      <view class=\"total\">\n        <view class=\"t\">\n          <text class=\"label\">商品合计：</text>\n          <text class=\"txt\">￥{{orderInfo.goodsPrice}}</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">商品运费：</text>\n          <text class=\"txt\">￥{{orderInfo.freightPrice}}</text>\n        </view>\n      </view>\n      <view class=\"pay-fee\">\n        <text class=\"label\">商品实付：</text>\n        <text class=\"txt\">￥{{orderInfo.actualPrice}}</text>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponDetail/grouponDetail.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.progress {\n  padding-top: 25rpx;\n  background: #fff;\n  height: auto;\n  overflow: hidden;\n}\n\n.item-a {\n  padding: 0 21.25rpx;\n}\n\n.item-c {\n  margin-left: 31.25rpx;\n  height: 103rpx;\n  line-height: 103rpx;\n}\n\n.item-c .l {\n  float: left;\n}\n\n.item-c .r {\n  height: 103rpx;\n  float: right;\n  display: flex;\n  align-items: center;\n  padding-right: 16rpx;\n}\n\n.item-c .btn {\n  float: right;\n  line-height: 66rpx;\n  font-size: 30rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n  height: 66rpx;\n}\n\n.item-c .btn.active {\n  background: #a78845;\n  color: #fff;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .btn {\n  height: 50rpx;\n  line-height: 50rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  display: block;\n  float: right;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n}\n\n.order-goods .item .btn.active {\n  background: #b4282d;\n  color: #fff;\n}\n\n.order-bottom {\n  margin-top: 20rpx;\n  padding-left: 31.25rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-bottom .address {\n  height: 128rpx;\n  padding-top: 25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .address .t {\n  height: 35rpx;\n  line-height: 35rpx;\n  margin-bottom: 7.5rpx;\n}\n\n.order-bottom .address .name {\n  display: inline-block;\n  height: 35rpx;\n  width: 140rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .mobile {\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .b {\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total {\n  height: 106rpx;\n  padding-top: 20rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .total .t {\n  height: 30rpx;\n  line-height: 30rpx;\n  margin-bottom: 7.5rpx;\n}\n\n.order-bottom .total .t .label {\n  width: 150rpx;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total .t .txt {\n  float: right;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n  padding-right: 31.25rpx;\n}\n\n.order-bottom .pay-fee {\n  height: 81rpx;\n  line-height: 81rpx;\n}\n\n.order-bottom .pay-fee .label {\n  width: 140rpx;\n}\n\n.order-bottom .pay-fee .txt {\n  float: right;\n  padding-right: 31.25rpx;\n}\n\n.menu-list-pro {\n  margin-top: 20rpx;\n  overflow-x: scroll;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  height: 260rpx;\n  width: 100%;\n  overflow: hidden;\n  border-bottom: 1rpx #cfc9ca;\n  background-color: #fff;\n}\n\n.menu-list-pro .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.menu-list-pro .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.menu-list-pro .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #a78845;\n}\n\n.menu-list-pro  .menu-list-item {\n  display: block;\n  float: left;\n  height: 110rpx;\n  width: 80rpx;\n  margin-top: 30rpx;\n  margin-bottom: 30rpx;\n  margin-left: 40rpx;\n}\n\n.menu-list-pro .icon {\n  height: 80rpx;\n  width: 80rpx;\n  border-radius: 12rpx;\n  box-shadow: 0px 4rpx 4rpx 0px #cfc9ca;\n}\n\n.menu-list-pro .txt {\n  display: block;\n  float: left;\n  width: 80rpx;\n  margin-top: 5rpx;\n  font-size: 22rpx;\n  color: #a78845;\n}\n"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponList/grouponList.js",
    "content": "// pages/groupon/grouponList/grouponList.js\nvar util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar app = getApp();\n\nPage({\n\n  /**\n   * 页面的初始数据\n   */\n  data: {\n    grouponList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function(options) {\n    this.getGrouponList();\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function() {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh: function() {\n\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom: function() {\n\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function() {\n\n  },\n  getGrouponList: function() {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      grouponList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.GroupOnList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          grouponList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  nextPage: function(event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getGrouponList();\n\n  },\n  prevPage: function(event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getGrouponList();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponList/grouponList.json",
    "content": "{\n  \"navigationBarTitleText\": \"团购专区\"\n}"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponList/grouponList.wxml",
    "content": "<view class=\"container\">\n  <scroll-view class=\"groupon-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n\n    <view class=\"item\" wx:for=\"{{grouponList}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n      <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n        <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n        <view class=\"right\">\n          <view class=\"text\">\n            <view class=\"header\">\n              <text class=\"name\">{{item.name}}</text>\n              <van-tag type=\"primary\">{{item.grouponMember}}人成团</van-tag>\n            </view>\n            <view class=\"expire\">\n              <van-tag round type=\"warning\">有效期至 {{item.expireTime}}</van-tag>\n            </view>            \n            <text class=\"desc\">{{item.brief}}</text>\n            <view class=\"price\">\n              <view class=\"counterPrice\">现价：￥{{item.retailPrice}}</view>\n              <view class=\"retailPrice\">团购价：￥{{item.grouponPrice}}</view>\n            </view>\n          </view>\n        </view>\n      </navigator>\n    </view>\n\n    <view class=\"page\" wx:if=\"{{showPage}}\">\n      <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n      <view class=\"next {{ (count / limit) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/groupon/grouponList/grouponList.wxss",
    "content": "page, .container {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.groupon-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.groupon-list .item {\n  height: 244rpx;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.groupon-list .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 220rpx;\n  height: 220rpx;\n}\n\n.groupon-list .right {\n  float: left;\n  height: 244rpx;\n  width: 476rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.groupon-list .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 244rpx;\n  width: 476rpx;\n}\n\n.groupon-list .name {\n  float: left;\n  display: block;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 30rpx;\n}\n\n.groupon-list .desc {\n  width: 476rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.groupon-list .price {\n  width: 476rpx;\n  display: flex;\n  color: #ab956d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.groupon-list .counterPrice {\n  text-decoration: line-through;\n  font-size: 28rpx;\n  color: #999;\n}\n\n.groupon-list .retailPrice {\n  margin-left: 30rpx;\n  font-size: 28rpx;\n  color: #a78845;\n}\n\n.page {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.page view {\n  height: 108rpx;\n  width: 50%;\n  float: left;\n  font-size: 29rpx;\n  color: #333;\n  text-align: center;\n  line-height: 108rpx;\n}\n\n.page .prev {\n  border-right: 1px solid #d9d9d9;\n}\n\n.page .disabled {\n  color: #ccc;\n}\n"
  },
  {
    "path": "litemall-wx/pages/groupon/myGroupon/myGroupon.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderList: [],\n    showType: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getOrderList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getOrderList() {\n    let that = this;\n    util.request(api.GroupOnMy, {\n      showType: that.data.showType\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          orderList: res.data.list\n        });\n      }\n    });\n  },\n  switchTab: function(event) {\n    let showType = event.currentTarget.dataset.index;\n    this.setData({\n      showType: showType\n    });\n    this.getOrderList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getOrderList();\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/groupon/myGroupon/myGroupon.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的团购\"\n}"
  },
  {
    "path": "litemall-wx/pages/groupon/myGroupon/myGroupon.wxml",
    "content": "<view class=\"container\">\n  <view class=\"orders-switch\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='0'>\n      <view class=\"txt\">发起的团购</view>\n    </view>\n    <view class=\"item {{ showType == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">参加的团购</view>\n    </view>\n  </view>\n  <view class=\"no-order\" wx:if=\"{{orderList.length <= 0}}\">\n    <view class=\"c\">\n      <text>尚未参加任何团购</text>\n    </view>\n  </view>\n\n  <view class=\"orders\">\n    <navigator url=\"../grouponDetail/grouponDetail?id={{item.id}}\" class=\"order\" open-type=\"navigate\" wx:for=\"{{orderList}}\" wx:key=\"id\">\n      <view class=\"h\">\n        <van-tag type=\"primary\" wx:if=\"{{item.groupon.status === 1}}\">开团中</van-tag>\n        <van-tag type=\"success\" wx:if=\"{{item.groupon.status === 2}}\">开团成功</van-tag>\n        <van-tag type=\"danger\" wx:if=\"{{item.groupon.status === 3}}\">开团失败</van-tag>\n        <van-tag round type=\"warning\" wx:if=\"{{!item.isCreator}}\">{{item.creator}}发起</van-tag>\n      </view>\n      <view class=\"h\">\n        <view class=\"l\">订单编号：{{item.orderSn}}</view>\n        <view class=\"r\">{{item.orderStatusText}}</view>\n      </view>\n      <view class=\"j\">\n        <view class=\"l\">团购立减：￥{{item.rules.discount}}</view>\n        <view class=\"r\">参与时间：{{item.groupon.addTime}}</view>\n      </view>\n      <view class=\"i\">\n        <view class=\"l\">团购要求：{{item.rules.discountMember}}人</view>\n        <view class=\"r\">当前参团：{{item.joinerCount}}人</view>\n      </view>\n      <view class=\"goods\" wx:for=\"{{item.goodsList}}\" wx:key=\"id\" wx:for-item=\"gitem\">\n        <view class=\"img\">\n          <image src=\"{{gitem.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <text class=\"name\">{{gitem.goodsName}}</text>\n          <text class=\"number\">共{{gitem.number}}件商品</text>\n        </view>\n        <view class=\"status\"></view>\n      </view>\n      <view class=\"b\">\n        <view class=\"l\">实付：￥{{item.actualPrice}}</view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/groupon/myGroupon/myGroupon.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.orders-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid #a78845;\n}\n\n.orders-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.orders-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 100%;\n}\n\n.orders-switch .item.active .txt {\n  color: #a78845;\n  border-bottom: 4rpx solid #a78845;\n}\n\n.no-order {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-order .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-order .c image {\n  margin: 0 auto;\n  display: block;\n  text-align: center;\n  width: 258rpx;\n  height: 258rpx;\n}\n\n.no-order .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.orders {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.order {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order .h {\n  height: 83.3rpx;\n  line-height: 83.3rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order .h .l {\n  float: left;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .h .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .i {\n  height: 56rpx;\n  line-height: 56rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order .i .l {\n  float: left;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .i .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .j {\n  height: 56rpx;\n  line-height: 56rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n}\n\n.order .j .l {\n  float: left;\n  font-size: 26rpx;\n  color: #a78845;\n}\n\n.order .j .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.order .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.order .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.order .goods .status {\n  width: 105rpx;\n  color: #a78845;\n  font-size: 25rpx;\n}\n\n.order .b {\n  height: 103rpx;\n  line-height: 103rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .b .l {\n  float: left;\n}\n\n.order .b .r {\n  float: right;\n}\n\n.order .b .btn {\n  margin-top: 19rpx;\n  height: 64.5rpx;\n  line-height: 64.5rpx;\n  text-align: center;\n  padding: 0 20rpx;\n  border-radius: 5rpx;\n  font-size: 28rpx;\n  color: #fff;\n  background: #a78845;\n}\n"
  },
  {
    "path": "litemall-wx/pages/help/help.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp()\n\nPage({\n\n  /**\n   * 页面的初始数据\n   */\n  data: {\n    issueList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    showPage: false\n  },\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function (options) {\n    this.getIssue();\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function () {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh: function () {\n\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom: function () {\n\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function () {\n\n  },\n  nextPage: function (event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getIssue();\n\n  },\n  getIssue: function () {\n\n    let that = this;\n    that.setData({\n      showPage: false,\n      issueList: []\n    });\n\n    util.request(api.IssueList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function (res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          issueList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n    });\n\n  },\n  prevPage: function (event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getIssue();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/help/help.json",
    "content": "{\n  \"navigationBarTitleText\": \"帮助中心\"\n}"
  },
  {
    "path": "litemall-wx/pages/help/help.wxml",
    "content": "<view class=\"container\">\n\n  <view class=\"common-problem\">\n    <view class=\"item\" wx:for=\"{{issueList}}\" wx:key=\"id\">\n      <view class=\"question-box\">\n        <text class=\"spot\"></text>\n        <text class=\"question\">{{item.question}}</text>\n      </view>\n      <view class=\"answer\">\n        {{item.answer}}\n      </view>\n    </view>\n  </view>\n\n  <view class=\"page\" wx:if=\"{{showPage}}\">\n    <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n    <view class=\"next {{ (count / limit) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n  </view>\n\n</view>"
  },
  {
    "path": "litemall-wx/pages/help/help.wxss",
    "content": ".common-problem {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0rpx 30rpx;\n  background: #fff;\n}\n\n.item {\n  height: auto;\n  overflow: hidden;\n  padding-bottom: 25rpx;\n}\n\n.question-box .spot {\n  float: left;\n  display: block;\n  height: 10rpx;\n  width: 10rpx;\n  background: #b4282d;\n  border-radius: 50%;\n  margin-top: 11rpx;\n}\n\n.question-box .question {\n  float: left;\n  line-height: 30rpx;\n  padding-left: 8rpx;\n  display: block;\n  font-size: 26rpx;\n  padding-bottom: 15rpx;\n  color: #303030;\n  width: 680rpx;\n\n}\n\n.answer {\n  line-height: 36rpx;\n  padding-left: 16rpx;\n  font-size: 26rpx;\n  color: #787878;\n  display: block;\n\n}\n\n\n.page{\n    width: 750rpx;\n    height: 108rpx;\n    background: #fff;\n    margin-bottom: 20rpx;\n}\n\n.page view{\n    height: 108rpx;\n    width: 50%;\n    float: left;\n    font-size: 29rpx;\n    color: #333;\n    text-align: center;\n    line-height: 108rpx;\n}\n\n.page .prev{\n    border-right: 1px solid #D9D9D9;\n}\n\n.page .disabled{\n    color: #ccc;\n}"
  },
  {
    "path": "litemall-wx/pages/hotGoods/hotGoods.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    bannerInfo: {\n      'imgUrl': '/static/images/hot.png',\n      'name': '大家都在买的'\n    },\n    categoryFilter: false,\n    filterCategory: [],\n    goodsList: [],\n    categoryId: 0,\n    currentSortType: 'default',\n    currentSort: 'add_time',\n    currentSortOrder: 'desc',\n    page: 1,\n    limit: 10\n  },\n  getCategoryList: function() {\n    var that = this;\n\n    util.request(api.GoodsFilter, {\n        isHot: 1\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            filterCategory: res.data.filterCategoryList,\n          });\n        }\n      });\n  },\n  getGoodsList: function() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        isHot: true,\n        page: that.data.page,\n        limit: that.data.limit,\n        order: that.data.currentSortOrder,\n        sort: that.data.currentSort,\n        categoryId: that.data.categoryId\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list,\n            filterCategory: res.data.filterCategoryList\n          });\n        }\n      });\n\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getGoodsList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0,\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    this.setData({\n      'categoryFilter': false,\n      'categoryId': this.data.filterCategory[currentIndex].id\n    });\n    this.getGoodsList();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/hotGoods/hotGoods.json",
    "content": "{\n  \"navigationBarTitleText\": \"人气推荐\"\n}"
  },
  {
    "path": "litemall-wx/pages/hotGoods/hotGoods.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{bannerInfo.imgUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{bannerInfo.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n  </view>\n  <view class=\"sort\">\n    <view class=\"sort-box\">\n      <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n        <text class=\"txt\">综合</text>\n      </view>\n      <view class=\"item {{currentSortType == 'price' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n        <text class=\"txt\">价格</text>\n        <van-icon name=\"arrow-up\" wx:if=\"{{ currentSortType == 'price' && currentSortOrder == 'asc' }}\" />\n        <van-icon name=\"arrow-down\" wx:elif=\"{{ currentSortType == 'price' && currentSortOrder == 'desc'}}\" />\n      </view>\n      <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"categoryFilter\">\n        <text class=\"txt\">分类</text>\n      </view>\n    </view>\n    <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n      <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n    </view>\n  </view>\n  <view class=\"cate-item\">\n    <view class=\"b\">\n      <block wx:for=\"{{goodsList}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n        <navigator class=\"item {{iindex % 2 == 0 ? 'item-b' : '' }}\" url=\"../goods/goods?id={{iitem.id}}\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </block>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/hotGoods/hotGoods.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 278rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 40rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.sort {\n  position: relative;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #b4282d;\n}\n\n.sort-box .item .van-icon {\n  margin-left: 6rpx;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n}\n\n.sort-box-category .item.active {\n  color: #b4282d;\n  border: 1px solid #b4282d;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  border-top: 1rpx solid #f4f4f4;\n  margin-top: 20rpx;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 375rpx;\n  padding-bottom: 33.333rpx;\n  border-bottom: 1rpx solid #f4f4f4;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  border-right: 1rpx solid #f4f4f4;\n}\n\n.cate-item .item .img {\n  margin-top: 10rpx;\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  padding: 0 20rpx;\n  overflow: hidden;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/index/index.js",
    "content": "const util = require('../../utils/util.js');\nconst api = require('../../config/api.js');\nconst user = require('../../utils/user.js');\n\n//获取应用实例\nconst app = getApp();\n\nPage({\n  data: {\n    newGoods: [],\n    hotGoods: [],\n    topics: [],\n    brands: [],\n    groupons: [],\n    floorGoods: [],\n    banner: [],\n    channel: [],\n    coupon: [],\n    goodsCount: 0\n  },\n\n  onShareAppMessage: function() {\n    return {\n      title: 'litemall小程序商场',\n      desc: '开源微信小程序商城',\n      path: '/pages/index/index'\n    }\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getIndexData();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getIndexData: function() {\n    let that = this;\n    util.request(api.IndexUrl).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          newGoods: res.data.newGoodsList,\n          hotGoods: res.data.hotGoodsList,\n          topics: res.data.topicList,\n          brands: res.data.brandList,\n          floorGoods: res.data.floorGoodsList,\n          banner: res.data.banner,\n          groupons: res.data.grouponList,\n          channel: res.data.channel,\n          coupon: res.data.couponList\n        });\n      }\n    });\n    util.request(api.GoodsCount).then(function (res) {\n      that.setData({\n        goodsCount: res.data\n      });\n    });\n  },\n  onLoad: function(options) {\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.scene) {\n      //这个scene的值存在则证明首页的开启来源于朋友圈分享的图,同时可以通过获取到的goodId的值跳转导航到对应的详情页\n      var scene = decodeURIComponent(options.scene);\n      console.log(\"scene:\" + scene);\n\n      let info_arr = [];\n      info_arr = scene.split(',');\n      let _type = info_arr[0];\n      let id = info_arr[1];\n\n      if (_type == 'goods') {\n        wx.navigateTo({\n          url: '../goods/goods?id=' + id\n        });\n      } else if (_type == 'groupon') {\n        wx.navigateTo({\n          url: '../goods/goods?grouponId=' + id\n        });\n      } else {\n        wx.navigateTo({\n          url: '../index/index'\n        });\n      }\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.grouponId) {\n      //这个pageId的值存在则证明首页的开启来源于用户点击来首页,同时可以通过获取到的pageId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../goods/goods?grouponId=' + options.grouponId\n      });\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.goodId) {\n      //这个goodId的值存在则证明首页的开启来源于分享,同时可以通过获取到的goodId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../goods/goods?id=' + options.goodId\n      });\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.orderId) {\n      //这个orderId的值存在则证明首页的开启来源于订单模版通知,同时可以通过获取到的pageId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../ucenter/orderDetail/orderDetail?id=' + options.orderId\n      });\n    }\n\n    this.getIndexData();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  getCoupon(e) {\n    let couponId = e.currentTarget.dataset.index\n    util.request(api.CouponReceive, {\n      couponId: couponId\n    }, 'POST').then(res => {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: \"领取成功\"\n        })\n      }\n      else{\n        util.showErrorToast(res.errmsg);\n      }\n    })\n  },\n})"
  },
  {
    "path": "litemall-wx/pages/index/index.json",
    "content": "{\n  \"navigationBarTitleText\": \"首页\",\n  \"enablePullDownRefresh\": true\n}"
  },
  {
    "path": "litemall-wx/pages/index/index.wxml",
    "content": "<!-- index.wxml -->\n<view class=\"container\">\n    <view class=\"search\">\n        <navigator url=\"/pages/search/search\" class=\"input\">\n            <van-icon name=\"search\" />\n            <text class=\"txt\">商品搜索, 共{{goodsCount}}款好物</text>\n        </navigator>\n    </view>\n    <swiper class=\"banner\" indicator-dots=\"true\" autoplay=\"true\" interval=\"3000\" duration=\"1000\">\n        <swiper-item wx:for=\"{{banner}}\" wx:key=\"id\">\n            <block wx:if=\"{{item.link>0}}\">\n                <navigator url=\"/pages/goods/goods?id={{item.link}}\">\n                    <image src=\"{{item.url}}\" background-size=\"cover\"></image>\n                </navigator>\n            </block>\n            <block wx:else>\n                <image src=\"{{item.url}}\" background-size=\"cover\"></image>\n            </block>\n        </swiper-item>\n    </swiper>\n    <view class=\"m-menu\">\n        <navigator class=\"item\" url=\"/pages/category/category?id={{item.id}}\" wx:for=\"{{channel}}\" wx:key=\"id\">\n            <image src=\"{{item.iconUrl}}\" background-size=\"cover\"></image>\n            <text>{{item.name}}</text>\n        </navigator>\n    </view>\n    <view class=\"a-section a-coupon\" wx:if=\"{{coupon.length > 0}}\">\n        <view class=\"h\">\n            <view class=\"title\">\n                <view>\n                    <navigator url=\"/pages/coupon/coupon\">\n                        <text class=\"txt\">优惠券</text>\n                    </navigator>\n                </view>\n            </view>\n        </view>\n        <view wx:if=\"{{coupon.length>0}}\" class=\"b\">\n            <view class=\"coupon_item\" wx:for=\"{{coupon}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\" bindtap=\"getCoupon\" data-index=\"{{item.id}}\">\n                <view class=\"coupon_price\">\n                    <view>\n                        <!-- <view class=\"tag\"></view> -->\n                        <view class=\"price\">{{item.discount}}元</view>\n                        <view class=\"p\">满{{item.min}}元使用</view>\n                    </view>\n                </view>\n                <view class=\"coupon_msg\">\n                    <view class=\"coupon_condition\">\n                        <view class=\"coupon_tag\">\n                            <view class=\"coupon_tag_text\">{{item.tag}}</view>\n                        </view>\n                        <view class=\"text\">{{item.name}}</view>\n                    </view>\n                    <view class=\"coupon_instruction\">{{item.desc}}</view>\n                    <view class=\"coupon_date\" wx:if=\"{{item.days != 0}}\">{{item.days}}天</view>\n                    <view class=\"coupon_date\" wx:else>{{item.startTime}} - {{item.endTime}}</view>\n                </view>\n            </view>\n        </view>\n    </view>\n    <view class=\"a-section a-groupon\" wx:if=\"{{groupons.length > 0}}\">\n        <view class=\"h\">\n            <view class=\"title\">\n                <view>\n                    <navigator url=\"/pages/groupon/grouponList/grouponList\">\n                        <text class=\"txt\">团购专区</text>\n                    </navigator>\n                </view>\n            </view>\n        </view>\n        <view class=\"b\">\n            <view class=\"item\" wx:for=\"{{groupons}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n                <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n                    <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n                    <view class=\"right\">\n                        <view class=\"text\">\n                            <view class=\"header\">\n                                <text class=\"name\">{{item.name}}</text>\n                                <van-tag type=\"primary\">{{item.grouponMember}}人成团</van-tag>\n                            </view>\n                            <view class=\"expire\">\n                                <van-tag round type=\"warning\">有效期至 {{item.expireTime}}</van-tag>\n                            </view>\n                            <text class=\"desc\">{{item.brief}}</text>\n                            <view class=\"price\">\n                                <view class=\"counterPrice\">现价：￥{{item.retailPrice}}</view>\n                                <view class=\"retailPrice\">团购价：￥{{item.grouponPrice}}</view>\n                            </view>\n                        </view>\n                    </view>\n                </navigator>\n            </view>\n        </view>\n    </view>\n    <view class=\"a-section a-brand\">\n        <view class=\"h\">\n            <navigator url=\"../brand/brand\">\n                <text class=\"txt\">品牌制造商直供</text>\n            </navigator>\n        </view>\n        <view class=\"b\">\n            <view class=\"item item-1\" wx:for=\"{{brands}}\" wx:key=\"id\">\n                <navigator url=\"/pages/brandDetail/brandDetail?id={{item.id}}\">\n                    <view class=\"wrap\">\n                        <image class=\"img\" src=\"{{item.picUrl}}\" mode=\"aspectFill\"></image>\n                        <view class=\"mt\">\n                            <text class=\"brand\">{{item.name}}</text>\n                            <text class=\"price\">{{item.floorPrice}}</text>\n                            <text class=\"unit\">元起</text>\n                        </view>\n                    </view>\n                </navigator>\n            </view>\n        </view>\n    </view>\n    <view class=\"a-section a-new\" wx:if=\"{{newGoods.length > 0}}\">\n        <view class=\"h\">\n            <view>\n                <navigator url=\"../newGoods/newGoods\">\n                    <text class=\"txt\">周一周四 · 新品首发</text>\n                </navigator>\n            </view>\n        </view>\n        <view class=\"b\">\n            <view class=\"item\" wx:for=\"{{newGoods}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n                <navigator url=\"../goods/goods?id={{item.id}}\">\n                    <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n                    <text class=\"name\">{{item.name}}</text>\n                    <text class=\"price\">￥{{item.retailPrice}}</text>\n                </navigator>\n            </view>\n        </view>\n    </view>\n    <view class=\"a-section a-popular\" wx:if=\"{{hotGoods.length > 0}}\">\n        <view class=\"h\">\n            <view>\n                <navigator url=\"../hotGoods/hotGoods\">\n                    <text class=\"txt\">人气推荐</text>\n                </navigator>\n            </view>\n        </view>\n        <view class=\"b\">\n            <view class=\"item\" wx:for=\"{{hotGoods}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n                <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n                    <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n                    <view class=\"right\">\n                        <view class=\"text\">\n                            <text class=\"name\">{{item.name}}</text>\n                            <text class=\"desc\">{{item.brief}}</text>\n                            <text class=\"price\">￥{{item.retailPrice}}</text>\n                        </view>\n                    </view>\n                </navigator>\n            </view>\n        </view>\n    </view>\n    <view class=\"a-section a-topic\" wx:if=\"topics.length > 0\" hidden=\"{{topics.length <= 0}}\">\n        <view class=\"h\">\n            <view>\n                <navigator url=\"/pages/topic/topic\">\n                    <text class=\"txt\">专题精选</text>\n                </navigator>\n            </view>\n        </view>\n        <view class=\"b\">\n            <scroll-view scroll-x class=\"list\">\n                <view class=\"item\" wx:for=\"{{topics}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n                    <navigator url=\"../topicDetail/topicDetail?id={{item.id}}\">\n                        <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n                        <view class=\"np\">\n                            <text class=\"name\">{{item.title}}</text>\n                            <text class=\"price\">￥{{item.price}}元起</text>\n                        </view>\n                        <text class=\"desc\">{{item.subtitle}}</text>\n                    </navigator>\n                </view>\n            </scroll-view>\n        </view>\n    </view>\n    <view class=\"good-grid\" wx:for=\"{{floorGoods}}\" wx:key=\"id\">\n        <view class=\"h\" wx:if=\"{{item.goodsList.length>0}}\">\n            <text>{{item.name}}</text>\n        </view>\n        <view class=\"b\">\n            <block wx:for=\"{{item.goodsList}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n                <view class=\"item {{iindex % 2 == 0 ? '' : 'item-b'}}\">\n                    <navigator url=\"../goods/goods?id={{iitem.id}}\" class=\"a\">\n                        <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n                        <text class=\"name\">{{iitem.name}}</text>\n                        <text class=\"price\">￥{{iitem.retailPrice}}</text>\n                    </navigator>\n                </view>\n            </block>\n        </view>\n        <navigator url=\"/pages/category/category?id={{item.id}}\" class=\"t\" wx:if=\"{{item.goodsList.length>0}}\">\n            <view class=\"txt\">{{'更多'+item.name+'好物 >'}}</view>\n        </navigator>\n    </view>\n</view>\n"
  },
  {
    "path": "litemall-wx/pages/index/index.wxss",
    "content": ".banner {\n  width: 750rpx;\n  height: 417rpx;\n}\n\n.banner image {\n  width: 100%;\n  height: 417rpx;\n}\n\n.m-menu {\n  background: #fff;\n  display: flex;\n  align-items: center;\n  flex-wrap: wrap;\n  padding-bottom: 0rpx;\n  padding-top: 25rpx;\n}\n\n.m-menu .item {\n  width: 150rpx;\n  height: 126rpx;\n}\n\n.m-menu image {\n  display: block;\n  width: 58rpx;\n  height: 58rpx;\n  margin: 0 auto;\n  margin-bottom: 12rpx;\n}\n\n.m-menu text {\n  display: block;\n  font-size: 24rpx;\n  text-align: center;\n  margin: 0 auto;\n  line-height: 1;\n  color: #333;\n}\n\n.a-section {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  color: #333;\n  margin-top: 20rpx;\n}\n\n.a-section .h {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: center;\n  height: 130rpx;\n}\n\n.a-section .h .txt {\n  padding-right: 30rpx;\n  background-size: 16.656rpx 27rpx;\n  display: inline-block;\n  height: 36rpx;\n  font-size: 33rpx;\n  line-height: 36rpx;\n}\n\n.a-brand .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  position: relative;\n}\n\n.a-brand .wrap {\n  position: relative;\n}\n\n.a-brand .img {\n  position: absolute;\n  left: 0;\n  top: 0;\n}\n\n.a-brand .mt {\n  position: absolute;\n  z-index: 2;\n  padding: 27rpx 31rpx;\n  left: 0;\n  top: 0;\n}\n\n.a-brand .mt .brand {\n  display: block;\n  font-size: 33rpx;\n  height: 43rpx;\n  color: #fff;\n}\n\n.a-brand .mt .price, .a-brand .mt .unit {\n  font-size: 25rpx;\n  color: #fff;\n}\n\n.a-brand .item-1 {\n  float: left;\n  width: 375rpx;\n  height: 252rpx;\n  overflow: hidden;\n  border-top: 1rpx solid #fff;\n  margin-left: 1rpx;\n}\n\n.a-brand .item-1:nth-child(2n+1) {\n  margin-left: 0;\n  width: 374rpx;\n}\n\n.a-brand .item-1 .img {\n  width: 375rpx;\n  height: 253rpx;\n}\n\n.a-coupon {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.a-groupon {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.a-groupon .b .item {\n  border-top: 1px solid #d9d9d9;\n  margin: 0 20rpx;\n  height: 244rpx;\n  width: 710rpx;\n}\n\n.a-groupon .b .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 220rpx;\n  height: 220rpx;\n}\n\n.a-groupon .b .right {\n  float: left;\n  height: 244rpx;\n  width: 476rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.a-groupon .b .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 244rpx;\n  width: 476rpx;\n}\n\n.a-groupon .b .name {\n    float: left;\n    display: block;\n    color: #333;\n    line-height: 50rpx;\n    font-size: 30rpx;\n    overflow: hidden;\n    text-overflow: ellipsis;\n}\n\n.a-groupon .b .desc {\n  width: 476rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.a-groupon .b .price {\n  width: 476rpx;\n  display: flex;\n  color: #ab956d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.a-groupon .b .counterPrice {\n  text-decoration: line-through;\n  font-size: 28rpx;\n  color: #999;\n}\n\n.a-groupon .b .retailPrice {\n  margin-left: 30rpx;\n  font-size: 28rpx;\n  color: #a78845;\n}\n\n.a-new .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0 31rpx 45rpx 31rpx;\n}\n\n.a-new .b .item {\n  float: left;\n  width: 302rpx;\n  margin-top: 10rpx;\n  margin-left: 21rpx;\n  margin-right: 21rpx;\n}\n\n.a-new .b .item-b {\n  margin-left: 42rpx;\n}\n\n.a-new .b .img {\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.a-new .b .name {\n  text-align: center;\n  display: block;\n  width: 302rpx;\n  height: 35rpx;\n  margin-bottom: 14rpx;\n  overflow: hidden;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.a-new .b .price {\n  display: block;\n  text-align: center;\n  line-height: 30rpx;\n  font-size: 30rpx;\n  color: #ab956d;\n}\n\n.a-popular {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.a-popular .b .item {\n  border-top: 1px solid #d9d9d9;\n  margin: 0 20rpx;\n  height: 264rpx;\n  width: 710rpx;\n}\n\n.a-popular .b .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 240rpx;\n  height: 240rpx;\n}\n\n.a-popular .b .right {\n  float: left;\n  height: 264rpx;\n  width: 456rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.a-popular .b .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 264rpx;\n  width: 456rpx;\n}\n\n.a-popular .b .name {\n  width: 456rpx;\n  display: block;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 30rpx;\n}\n\n.a-popular .b .desc {\n  width: 456rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.a-popular .b .price {\n  width: 456rpx;\n  display: block;\n  color: #ab956d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.a-topic .b {\n  height: 533rpx;\n  width: 750rpx;\n  padding: 0 0 48rpx 0;\n}\n\n.a-topic .b .list {\n  height: 533rpx;\n  width: 750rpx;\n  white-space: nowrap;\n}\n\n.a-topic .b .item {\n  display: inline-block;\n  height: 533rpx;\n  width: 680.5rpx;\n  margin-left: 30rpx;\n  overflow: hidden;\n}\n\n.a-topic .b .item:last-child {\n  margin-right: 30rpx;\n}\n\n.a-topic .b .img {\n  height: 387.5rpx;\n  width: 680.5rpx;\n  margin-bottom: 30rpx;\n}\n\n.a-topic .b .np {\n  height: 35rpx;\n  margin-bottom: 13.5rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.a-topic .b .np .price {\n  margin-left: 20.8rpx;\n  color: #ab956d;\n}\n\n.a-topic .b .desc {\n  display: block;\n  height: 30rpx;\n  color: #999;\n  font-size: 24rpx;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.good-grid {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.good-grid .h {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: center;\n  height: 130rpx;\n  font-size: 33rpx;\n  color: #333;\n}\n\n.good-grid .b {\n  width: 750rpx;\n  padding: 0 6.25rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.good-grid .b .item {\n  float: left;\n  background: #fff;\n  width: 365rpx;\n  margin-bottom: 6.25rpx;\n  height: 452rpx;\n  overflow: hidden;\n  text-align: center;\n}\n\n.good-grid .b .item .a {\n  height: 452rpx;\n  width: 100%;\n}\n\n.good-grid .b .item-b {\n  margin-left: 6.25rpx;\n}\n\n.good-grid .item .img {\n  margin-top: 20rpx;\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.good-grid .item .name {\n  display: block;\n  width: 365.625rpx;\n  padding: 0 20rpx;\n  overflow: hidden;\n  height: 35rpx;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.good-grid .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #ab956d;\n}\n\n.good-grid .t {\n  height: 100rpx;\n  background: #fff;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n.search {\n  height: 88rpx;\n  width: 100%;\n  padding: 0 30rpx;\n  background: #fff;\n  display: flex;\n  align-items: center;\n}\n\n.search .van-icon-search {\n  line-height: 59rpx;\n}\n\n.search .input {\n  width: 690rpx;\n  height: 56rpx;\n  background: #ededed;\n  border-radius: 8rpx;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.search .txt {\n  height: 42rpx;\n  line-height: 42rpx;\n  color: #666;\n  padding-left: 10rpx;\n  font-size: 30rpx;\n}\n\n/* 优惠券 */\n.coupon_item {\n    position: relative;\n    /* background: linear-gradient(to right, #cfa568, #e3bf79); */\n    background: linear-gradient(136deg,#fdda96 0,#e3ad61 100%);\n    margin: 0 .5rem;\n    margin-bottom: .75rem;\n    display: flex;\n    border-radius: .3rem;\n}\n.coupon_item view {\n    color: #fff;\n}\n\n.coupon_price {\n    display: flex;\n    position: relative;\n    width: 6rem;\n    font-size: .7rem;\n    text-align: center;\n    -webkit-justify-content: center;\n    -ms-flex-pack: center;\n    justify-content: center;\n    -webkit-align-items: center;\n    -ms-flex-align: center;\n    align-items: center;\n    border-radius: .2rem;\n    -webkit-box-shadow: 0 0.1rem 0.4rem 0 rgb(0 0 0 / 5%);\n    box-shadow: 0 0.1rem 0.4rem 0 rgb(0 0 0 / 5%);\n    background: linear-gradient(136deg,#ff8787 0,#fb3636 100%);\n}\n.coupon_price .price{\n    line-height: 1;\n    font-size: 1.8rem;\n}\n.coupon_price .p{\n    margin-top: .25rem;\n    font-size: .6rem;\n    line-height: 1;\n}\n.coupon_msg{\n    flex: 1;\n    overflow: hidden;\n    padding: .3rem 0 0 .35rem;\n}\n.coupon_condition{\n    min-height: 1.8rem;\n    line-height: .95rem;\n    font-size: .6rem;\n    padding-right: .6rem;\n    text-overflow: ellipsis;\n    overflow: hidden;\n    display: -webkit-box;\n    display: -webkit-inline-box;\n    -webkit-line-clamp: 2;\n    -webkit-box-orient: vertical;\n}\n.coupon_condition .text{\n    font-size: 0.8rem;\n    vertical-align: middle;\n    display: inline;\n    user-select: none;\n    white-space: pre-wrap;\n}\n.coupon_tag{\n    display: inline-block;\n    height: .7rem;\n    color: #fff;\n    line-height: .7rem;\n    text-align: center;\n    padding: 0 .25rem;\n    border-radius: .35rem;\n    margin-right: .25rem;\n    border-color: #fe5b5b;\n    background-color: #fe5b5b;\n}\n.coupon_tag_text{\n    font-size: .5rem;\n}\n.coupon_instruction{\n    min-width: 7.5rem;\n    height: .95rem;\n    line-height: .95rem;\n    padding-right: .6rem;\n    text-overflow: ellipsis;\n    overflow: hidden;\n}\n.coupon_date{\n    font-size: .65rem;\n    /* line-height: .5rem; */\n    padding: .5rem 0;\n    padding-right: .5rem;\n    width: 100%;\n}\n"
  },
  {
    "path": "litemall-wx/pages/newGoods/newGoods.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    bannerInfo: {\n      'imgUrl': '/static/images/new.png',\n      'name': '大家都在买的'\n    },\n    categoryFilter: false,\n    filterCategory: [],\n    goodsList: [],\n    categoryId: 0,\n    currentSortType: 'default',\n    currentSort: 'add_time',\n    currentSortOrder: 'desc',\n    page: 1,\n    limit: 10\n  },\n  getGoodsList: function() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        isNew: true,\n        page: that.data.page,\n        limit: that.data.limit,\n        order: that.data.currentSortOrder,\n        sort: that.data.currentSort,\n        categoryId: that.data.categoryId\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list,\n            filterCategory: res.data.filterCategoryList\n          });\n        }\n      });\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getGoodsList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    this.setData({\n      'categoryFilter': false,\n      'categoryId': this.data.filterCategory[currentIndex].id\n    });\n    this.getGoodsList();\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/newGoods/newGoods.json",
    "content": "{\n  \"navigationBarTitleText\": \"新品首发\"\n}"
  },
  {
    "path": "litemall-wx/pages/newGoods/newGoods.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{bannerInfo.imgUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{bannerInfo.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n  </view>\n  <view class=\"sort\">\n    <view class=\"sort-box\">\n      <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n        <text class=\"txt\">综合</text>\n      </view>\n      <view class=\"item {{currentSortType == 'price' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n        <text class=\"txt\">价格</text>\n        <van-icon name=\"arrow-up\" wx:if=\"{{ currentSortType == 'price' && currentSortOrder == 'asc' }}\" />\n        <van-icon name=\"arrow-down\" wx:elif=\"{{ currentSortType == 'price' && currentSortOrder == 'desc'}}\" />\n      </view>\n      <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"categoryFilter\">\n        <text class=\"txt\">分类</text>\n      </view>\n    </view>\n    <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n      <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n    </view>\n  </view>\n  <view class=\"cate-item\">\n    <view class=\"b\">\n      <block wx:for=\"{{goodsList}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n        <navigator class=\"item {{iindex % 2 == 0 ? 'item-b' : '' }}\" url=\"../goods/goods?id={{iitem.id}}\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </block>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/newGoods/newGoods.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 278rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 40rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.sort {\n  position: relative;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #b4282d;\n}\n\n.sort-box .item .van-icon {\n  margin-left: 6rpx;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n}\n\n.sort-box-category .item.active {\n  color: #b4282d;\n  border: 1px solid #b4282d;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  border-top: 1rpx solid #f4f4f4;\n  margin-top: 20rpx;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 375rpx;\n  padding-bottom: 33.333rpx;\n  border-bottom: 1rpx solid #f4f4f4;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  border-right: 1rpx solid #f4f4f4;\n}\n\n.cate-item .item .img {\n  margin-top: 10rpx;\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  padding: 0 20rpx;\n  overflow: hidden;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/payResult/payResult.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\nPage({\n  data: {\n    status: false,\n    orderId: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.orderId,\n      status: options.status === '1' ? true : false\n    })\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  payOrder() {\n    let that = this;\n    util.request(api.OrderPrepay, {\n      orderId: that.data.orderId\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        const payParam = res.data;\n        console.log(\"支付过程开始\")\n        wx.requestPayment({\n          'timeStamp': payParam.timeStamp,\n          'nonceStr': payParam.nonceStr,\n          'package': payParam.packageValue,\n          'signType': payParam.signType,\n          'paySign': payParam.paySign,\n          'success': function(res) {\n            console.log(\"支付过程成功\")\n            that.setData({\n              status: true\n            });\n          },\n          'fail': function(res) {\n            console.log(\"支付过程失败\")\n            util.showErrorToast('支付失败');\n          },\n          'complete': function(res) {\n            console.log(\"支付过程结束\")\n          }\n        });\n      }\n    });\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/payResult/payResult.json",
    "content": "{\n  \"navigationBarTitleText\": \"付款结果\",\n  \"navigationBarBackgroundColor\": \"#fafafa\"\n}"
  },
  {
    "path": "litemall-wx/pages/payResult/payResult.wxml",
    "content": "<view class=\"container\">\n  <view class=\"pay-result\">\n    <view class=\"success\" wx:if=\"{{status}}\">\n      <view class=\"msg\">付款成功</view>\n      <view class=\"btns\">\n        <navigator class=\"btn\" url=\"/pages/ucenter/order/order\" open-type=\"redirect\">查看订单</navigator>\n        <navigator class=\"btn\" url=\"/pages/index/index\" open-type=\"switchTab\">继续逛</navigator>\n      </view>\n    </view>\n    <view class=\"error\" wx:if=\"{{!status}}\">\n      <view class=\"msg\">付款失败</view>\n      <view class=\"tips\">\n        <view class=\"p\">请在\n          <text class=\"time\">半小时</text> 内完成付款</view>\n        <view class=\"p\">否则订单将会被系统取消</view>\n      </view>\n      <view class=\"btns\">\n        <navigator class=\"btn\" url=\"/pages/ucenter/order/order\" open-type=\"redirect\">查看订单</navigator>\n        <view class=\"btn\" bindtap='payOrder'>重新付款</view>\n      </view>\n    </view>\n  </view>\n\n</view>"
  },
  {
    "path": "litemall-wx/pages/payResult/payResult.wxss",
    "content": "page {\n  min-height: 100%;\n  width: 100%;\n  background: #fff;\n}\n\n.container {\n  height: 100%;\n  background: #fff;\n}\n\n.pay-result {\n  background: #fff;\n}\n\n.pay-result .msg {\n  text-align: center;\n  margin: 100rpx auto;\n  color: #2bab25;\n  font-size: 36rpx;\n}\n\n.pay-result .btns {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.pay-result .btn {\n  text-align: center;\n  height: 80rpx;\n  margin: 0 20rpx;\n  width: 200rpx;\n  line-height: 78rpx;\n  border: 1px solid #868686;\n  color: #000;\n  border-radius: 5rpx;\n}\n\n.pay-result .error .msg {\n  color: #b4282d;\n  margin-bottom: 60rpx;\n}\n\n.pay-result .error .tips {\n  color: #7f7f7f;\n  margin-bottom: 70rpx;\n}\n\n.pay-result .error .tips .p {\n  font-size: 24rpx;\n  line-height: 42rpx;\n  text-align: center;\n}\n\n.pay-result .error .tips .p {\n  line-height: 42rpx;\n  text-align: center;\n}\n"
  },
  {
    "path": "litemall-wx/pages/search/search.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp()\nPage({\n  data: {\n    keywrod: '',\n    searchStatus: false,\n    goodsList: [],\n    helpKeyword: [],\n    historyKeyword: [],\n    categoryFilter: false,\n    currentSort: 'name',\n    currentSortType: 'default',\n    currentSortOrder: 'desc',\n    filterCategory: [],\n    defaultKeyword: {},\n    hotKeyword: [],\n    page: 1,\n    limit: 20,\n    categoryId: 0\n  },\n  //事件处理函数\n  closeSearch: function() {\n    wx.navigateBack()\n  },\n  clearKeyword: function() {\n    this.setData({\n      keyword: '',\n      searchStatus: false\n    });\n  },\n  onLoad: function() {\n\n    this.getSearchKeyword();\n  },\n\n  getSearchKeyword() {\n    let that = this;\n    util.request(api.SearchIndex).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          historyKeyword: res.data.historyKeywordList,\n          defaultKeyword: res.data.defaultKeyword,\n          hotKeyword: res.data.hotKeywordList\n        });\n      }\n    });\n  },\n\n  inputChange: function(e) {\n    this.setData({\n      keyword: e.detail.value,\n      searchStatus: false\n    });\n\n    if (e.detail.value) {\n      this.getHelpKeyword();\n    }\n  },\n  getHelpKeyword: function() {\n    let that = this;\n    util.request(api.SearchHelper, {\n      keyword: that.data.keyword\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          helpKeyword: res.data\n        });\n      }\n    });\n  },\n  inputFocus: function() {\n    this.setData({\n      searchStatus: false,\n      goodsList: []\n    });\n\n    if (this.data.keyword) {\n      this.getHelpKeyword();\n    }\n  },\n  clearHistory: function() {\n    this.setData({\n      historyKeyword: []\n    })\n\n    util.request(api.SearchClearHistory, {}, 'POST')\n      .then(function(res) {\n        console.log('清除成功');\n      });\n  },\n  getGoodsList: function() {\n    let that = this;\n    util.request(api.GoodsList, {\n      keyword: that.data.keyword,\n      page: that.data.page,\n      limit: that.data.limit,\n      sort: that.data.currentSort,\n      order: that.data.currentSortOrder,\n      categoryId: that.data.categoryId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          searchStatus: true,\n          categoryFilter: false,\n          goodsList: res.data.list,\n          filterCategory: res.data.filterCategoryList\n        });\n      }\n\n      //重新获取关键词\n      that.getSearchKeyword();\n    });\n  },\n  onKeywordTap: function(event) {\n\n    this.getSearchResult(event.target.dataset.keyword);\n\n  },\n  getSearchResult(keyword) {\n    if (keyword === '') {\n      keyword = this.data.defaultKeyword.keyword;\n    }\n    this.setData({\n      keyword: keyword,\n      page: 1,\n      categoryId: 0,\n      goodsList: []\n    });\n\n    this.getGoodsList();\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'name',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0,\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    let filterCategory = this.data.filterCategory;\n    let currentCategory = null;\n    for (let key in filterCategory) {\n      if (key == currentIndex) {\n        filterCategory[key].selected = true;\n        currentCategory = filterCategory[key];\n      } else {\n        filterCategory[key].selected = false;\n      }\n    }\n    this.setData({\n      filterCategory: filterCategory,\n      categoryFilter: false,\n      categoryId: currentCategory.id,\n      page: 1,\n      goodsList: []\n    });\n    this.getGoodsList();\n  },\n  onKeywordConfirm(event) {\n    this.getSearchResult(event.detail.value);\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/search/search.json",
    "content": "{\n  \"navigationBarTitleText\": \"搜索\"\n}"
  },
  {
    "path": "litemall-wx/pages/search/search.wxml",
    "content": "<scroll-view class=\"container\" style=\"height: 100%;\">\n  <view class=\"search-header\">\n    <view class=\"input-box\">\n      <van-icon name=\"search\"/>\n      <input name=\"input\" class=\"keywrod\" focus=\"true\" value=\"{{keyword}}\" confirm-type=\"search\" bindinput=\"inputChange\" bindfocus=\"inputFocus\" bindconfirm=\"onKeywordConfirm\" placeholder=\"{{defaultKeyword.keyword}}\" />\n      <van-icon class=\"del\" wx:if=\"{{keyword}}\" bindtap=\"clearKeyword\" name=\"cross\" />\n    </view>\n    <view class=\"right\" bindtap=\"closeSearch\">取消</view>\n  </view>\n  <view class=\"no-search\" wx:if=\"{{ !searchStatus}}\">\n    <view class=\"search-keywords search-history\" wx:if=\"{{!keyword  && historyKeyword.length}}\">\n      <view class=\"h\">\n        <text class=\"title\">历史记录</text>\n        <van-icon bindtap=\"clearHistory\" name=\"delete\" class=\"icon\"/>\n      </view>\n      <view class=\"b\">\n        <view class=\"item\" bindtap=\"onKeywordTap\" data-keyword=\"{{item.keyword}}\" wx:for=\"{{historyKeyword}}\" wx:key=\"keyword\" hover-class=\"navigator-hover\">{{item.keyword}}</view>\n      </view>\n    </view>\n    <view class=\"search-keywords search-hot\" wx:if=\"{{!keyword && hotKeyword.length}}\">\n      <view class=\"h\">\n        <text class=\"title\">热门搜索</text>\n      </view>\n      <view class=\"b\">\n        <view class=\"item {{item.is_hot === 1 ? 'active' : ''}}\" hover-class=\"navigator-hover\" bindtap=\"onKeywordTap\" data-keyword=\"{{item.keyword}}\" wx:for=\"{{hotKeyword}}\" wx:key=\"id\">{{item.keyword}}</view>\n      </view>\n    </view>\n    <view class=\"shelper-list\" wx:if=\"{{keyword}}\">\n      <view class=\"item\" hover-class=\"navigator-hover\" wx:for=\"{{helpKeyword}}\" wx:key=\"id\" bindtap=\"onKeywordTap\" data-keyword=\"{{item}}\">{{item}}</view>\n    </view>\n  </view>\n\n  <view class=\"search-result\" wx:if=\"{{ searchStatus && goodsList.length}}\">\n    <view class=\"sort\">\n      <view class=\"sort-box\">\n        <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n          <text class=\"txt\">综合</text>\n        </view>\n        <view class=\"item {{currentSortType == 'price' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n          <text class=\"txt\">价格</text>\n          <van-icon name=\"arrow-up\" wx:if=\"{{ currentSortType == 'price' && currentSortOrder == 'asc' }}\" />\n          <van-icon name=\"arrow-down\" wx:elif=\"{{ currentSortType == 'price' && currentSortOrder == 'desc'}}\" />\n        </view>\n        <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"categoryFilter\">\n          <text class=\"txt\">分类</text>\n        </view>\n      </view>\n      <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n        <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n      </view>\n    </view>\n    <view class=\"cate-item\">\n      <view class=\"b\">\n        <navigator class=\"item {{(iindex + 1) % 2 == 0 ? 'item-b' : ''}}\" url=\"/pages/goods/goods?id={{iitem.id}}\" wx:for=\"{{goodsList}}\" wx:key=\"id\" wx:for-item=\"iitem\" wx:for-index=\"iindex\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"search-result-empty\" wx:if=\"{{!goodsList.length && searchStatus}}\">\n    <text class=\"text\">您寻找的商品还未上架</text>\n  </view>\n</scroll-view>"
  },
  {
    "path": "litemall-wx/pages/search/search.wxss",
    "content": "page {\n  min-height: 100%;\n  background-color: #f4f4f4;\n}\n\n.container {\n  min-height: 100%;\n  background-color: #f4f4f4;\n}\n\n.search-header {\n  position: fixed;\n  top: 0;\n  width: 750rpx;\n  height: 91rpx;\n  display: flex;\n  background: #fff;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n  padding: 0 31.25rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.search-header .van-icon-search {\n  line-height: 59rpx;\n}\n\n.search-header .input-box {\n  position: relative;\n  margin-top: 16rpx;\n  float: left;\n  width: 0;\n  flex: 1;\n  height: 59rpx;\n  line-height: 59rpx;\n  padding: 0 20rpx;\n  background: #f4f4f4;\n}\n\n.search-header .icon {\n  position: absolute;\n  top: 14rpx;\n  left: 20rpx;\n  width: 31rpx;\n  height: 31rpx;\n}\n\n.search-header .del {\n  position: absolute;\n  top: 3rpx;\n  right: 10rpx;\n  width: 53rpx;\n  height: 53rpx;\n  z-index: 10;\n}\n\n.search-header .keywrod {\n  position: absolute;\n  top: 0;\n  left: 40rpx;\n  width: 506rpx;\n  height: 59rpx;\n  padding-left: 30rpx;\n}\n\n.search-header .right {\n  margin-top: 24rpx;\n  margin-left: 31rpx;\n  margin-right: 6rpx;\n  width: 58rpx;\n  height: 43rpx;\n  line-height: 43rpx;\n  float: right;\n}\n\n.no-search {\n  height: auto;\n  overflow: hidden;\n  margin-top: 91rpx;\n}\n\n.search-keywords {\n  background: #fff;\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  margin-bottom: 20rpx;\n}\n\n.search-keywords .h {\n  padding: 0 31.25rpx;\n  height: 93rpx;\n  line-height: 93rpx;\n  width: 100%;\n  color: #999;\n  font-size: 29rpx;\n}\n\n.search-keywords .title {\n  display: block;\n  width: 120rpx;\n  float: left;\n}\n\n.search-keywords .icon {\n  margin-top: 19rpx;\n  float: right;\n  display: block;\n  margin-left: 511rpx;\n  height: 55rpx;\n  width: 55rpx;\n}\n\n.search-keywords .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding-left: 31.25rpx;\n}\n\n.search-keywords .item {\n  display: inline-block;\n  width: auto;\n  height: 48rpx;\n  line-height: 48rpx;\n  padding: 0 15rpx;\n  border: 1px solid #999;\n  margin: 0 31.25rpx 31.25rpx 0;\n  font-size: 24rpx;\n  color: #333;\n}\n\n.search-keywords .item.active {\n  color: #b4282d;\n  border: 1px solid #b4282d;\n}\n\n.shelper-list {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding: 0 31.25rpx;\n}\n\n.shelper-list .item {\n  height: 93rpx;\n  width: 687.5rpx;\n  line-height: 93rpx;\n  font-size: 24rpx;\n  color: #333;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.sort {\n  position: fixed;\n  top: 91rpx;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #b4282d;\n}\n\n.sort-box .item .van-icon {\n  margin-left: 6rpx;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n}\n\n.sort-box-category .item.active {\n  color: #b4282d;\n  border: 1px solid #b4282d;\n}\n\n.cate-item {\n  margin-top: 175rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .h {\n  height: 145rpx;\n  width: 750rpx;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.cate-item .h .name {\n  display: block;\n  height: 35rpx;\n  margin-bottom: 18rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .h .desc {\n  display: block;\n  height: 24rpx;\n  font-size: 24rpx;\n  color: #999;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  padding: 0 6.25rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .list-filter {\n  height: 80rpx;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 6.25rpx;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 365rpx;\n  margin-bottom: 6.25rpx;\n  padding-bottom: 33.333rpx;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  margin-left: 6.25rpx;\n}\n\n.cate-item .item .img {\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  overflow: hidden;\n  padding: 0 20rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.search-result-empty {\n  width: 100%;\n  height: 100%;\n  padding-top: 600rpx;\n}\n\n.search-result-empty .text {\n  display: block;\n  width: 100%;\n  height: 40rpx;\n  font-size: 28rpx;\n  text-align: center;\n  color: #999;\n}\n"
  },
  {
    "path": "litemall-wx/pages/topic/topic.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp()\nPage({\n  data: {\n    topicList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getTopic();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  nextPage: function(event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getTopic();\n\n  },\n  getTopic: function() {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      topicList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.TopicList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          topicList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  prevPage: function(event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getTopic();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/topic/topic.json",
    "content": "{\n  \"navigationBarTitleText\": \"专题\"\n}"
  },
  {
    "path": "litemall-wx/pages/topic/topic.wxml",
    "content": "<view class=\"container\">\n  <scroll-view class=\"topic-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n    <navigator class=\"item\" wx:for=\"{{topicList}}\" wx:key=\"id\" url=\"../topicDetail/topicDetail?id={{item.id}}\">\n      <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n      <view class=\"info\">\n        <text class=\"title\">{{item.title}}</text>\n        <text class=\"desc\">{{item.subtitle}}</text>\n        <text class=\"price\">{{item.price}}元起</text>\n      </view>\n    </navigator>\n    <view class=\"page\" wx:if=\"{{showPage}}\">\n      <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n      <view class=\"next {{ (count / size) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/topic/topic.wxss",
    "content": "page ,.container{\n   width: 750rpx;\n    height: 100%;\n    overflow: hidden;\n    background: #f4f4f4;\n}\n.topic-list{\n    width: 750rpx;\n    height: 100%;\n    overflow: hidden;\n    background: #f4f4f4;\n}\n\n.topic-list .item{\n    width: 100%;\n    height: 625rpx;\n    overflow: hidden;\n    background: #fff;\n    margin-bottom: 20rpx;\n}\n\n.topic-list .img{\n    width: 100%;\n    height: 415rpx;\n}\n\n.topic-list .info{\n    width: 100%;\n    height: 210rpx;\n    overflow: hidden;\n}\n\n.topic-list .title{\n    display: block;\n    text-align: center;\n    width: 100%;\n    height: 33rpx;\n    line-height: 35rpx;\n    color: #333;\n    overflow: hidden;\n    font-size: 35rpx;\n    margin-top: 30rpx;\n}\n\n.topic-list .desc{\n    display: block;\n    text-align: center;\n    position: relative;\n    width: auto;\n    height: 24rpx;\n    line-height: 24rpx;\n    overflow: hidden;\n    color: #999;\n    font-size: 24rpx;\n    margin-top: 16rpx;\n    margin-bottom: 30rpx;\n}\n\n.topic-list .price{\n    display: block;\n    text-align: center;\n    width: 100%;\n    height: 27rpx;\n    line-height: 27rpx;\n    overflow: hidden;\n    color: #b4282d;\n    font-size: 27rpx;\n}\n\n\n.page{\n    width: 750rpx;\n    height: 108rpx;\n    background: #fff;\n    margin-bottom: 20rpx;\n}\n\n.page view{\n    height: 108rpx;\n    width: 50%;\n    float: left;\n    font-size: 29rpx;\n    color: #333;\n    text-align: center;\n    line-height: 108rpx;\n}\n\n.page .prev{\n    border-right: 1px solid #D9D9D9;\n}\n\n.page .disabled{\n    color: #ccc;\n}"
  },
  {
    "path": "litemall-wx/pages/topicComment/topicComment.js",
    "content": "var app = getApp();\nvar util = require('../../utils/util.js');\n\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    comments: [],\n    allCommentList: [],\n    picCommentList: [],\n    type: 0,\n    valueId: 0,\n    showType: 0,\n    allCount: 0,\n    hasPicCount: 0,\n    allPage: 1,\n    picPage: 1,\n    limit: 20\n  },\n  getCommentCount: function() {\n    let that = this;\n    util.request(api.CommentCount, {\n      valueId: that.data.valueId,\n      type: that.data.type\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          allCount: res.data.allCount,\n          hasPicCount: res.data.hasPicCount\n        });\n      }\n    });\n  },\n  getCommentList: function() {\n    let that = this;\n    util.request(api.CommentList, {\n      valueId: that.data.valueId,\n      type: that.data.type,\n      limit: that.data.limit,\n      page: (that.data.showType == 0 ? that.data.allPage : that.data.picPage),\n      showType: that.data.showType\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        if (that.data.showType == 0) {\n          that.setData({\n            allCommentList: that.data.allCommentList.concat(res.data.list),\n            allPage: res.data.page,\n            comments: that.data.allCommentList.concat(res.data.list)\n          });\n        } else {\n          that.setData({\n            picCommentList: that.data.picCommentList.concat(res.data.list),\n            picPage: res.data.page,\n            comments: that.data.picCommentList.concat(res.data.list)\n          });\n        }\n      }\n    });\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      type: options.type,\n      valueId: options.valueId\n    });\n    this.getCommentCount();\n    this.getCommentList();\n  },\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCommentCount();\n    this.getCommentList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  switchTab: function () {\n    let that = this;\n    if (that.data.showType == 0) {\n      that.setData({\n        allCommentList: [],\n        allPage: 1,\n        comments: [],\n        showType: 1\n      });\n    } else {\n      that.setData({\n        picCommentList: [],\n        picPage: 1,\n        comments: [],\n        showType: 0\n      });\n    }\n    this.getCommentList();\n  },\n  onReachBottom: function() {\n    if (this.data.showType == 0) {\n      if (this.data.allCount / this.data.limit < this.data.allPage) {\n        return false;\n      }\n      this.setData({\n        allPage: this.data.allPage + 1\n      });\n    } else {\n      if (this.data.hasPicCount / this.data.limit < this.data.picPage) {\n        return false;\n      }\n      this.setData({\n        picPage: this.data.picPage + 1\n      });\n    }\n    this.getCommentList();\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/topicComment/topicComment.json",
    "content": "{\n  \"enablePullDownRefresh\": true,\n  \"navigationBarTitleText\": \"评论\"\n}"
  },
  {
    "path": "litemall-wx/pages/topicComment/topicComment.wxml",
    "content": "<view class=\"comments\">\n  <view class=\"h\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\">\n      <view class=\"txt\">全部({{allCount}})</view>\n    </view>\n    <view class=\"item {{ showType == 0 ? '' : 'active'}}\" bindtap=\"switchTab\">\n      <view class=\"txt\">有图({{hasPicCount}})</view>\n    </view>\n  </view>\n  <view class=\"b\">\n    <view class=\"item\" wx:for=\"{{comments}}\" wx:key=\"id\">\n      <view class=\"info\">\n        <view class=\"user\">\n          <image src=\"{{item.userInfo.avatarUrl}}\"></image>\n          <text>{{item.userInfo.nickName}}</text>\n        </view>\n        <view class=\"time\">{{item.addTime}}</view>\n      </view>\n      <view class=\"comment\">{{item.content}}</view>\n      <view class=\"imgs\" wx:if=\"{{item.picList.length > 0}}\">\n        <image class=\"img\" wx:for=\"{{item.picList}}\" wx:key=\"*this\" wx:for-item=\"pitem\" src=\"{{pitem}}\"></image>\n      </view>\n    </view>\n\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/topicComment/topicComment.wxss",
    "content": ".comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin: 20rpx 0;\n}\n\n\n.comments .h {\n  position: fixed;\n  left: 0;\n  top: 0;\n  z-index: 1000;\n  width: 100%;\n  display: flex;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.comments .h .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.comments .h .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.comments .h .item.active .txt {\n  color: #ab2b2b;\n  border-bottom: 4rpx solid #ab2b2b;\n}\n\n.comments .b {\n  margin-top: 85rpx;\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .b.no-h {\n  margin-top: 0;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n  border-bottom: 1px solid #d9d9d9;\n  padding-bottom: 25rpx;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user image {\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user text {\n  display: inline-block;\n  width: auto;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .comment {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  font-size: 29rpx;\n  margin-bottom: 16rpx;\n}\n\n.comments .imgs {\n  width: 720rpx;\n  height: 150rpx;\n  margin-bottom: 25rpx;\n}\n\n.comments .imgs .img {\n  height: 150rpx;\n  width: 150rpx;\n  margin-right: 28rpx;\n}\n\n.comments .customer-service {\n  width: 690rpx;\n  height: auto;\n  overflow: hidden;\n  margin-top: 23rpx;\n  background: rgba(0, 0, 0, 0.03);\n  padding: 21rpx;\n}\n\n.comments .customer-service .u {\n  font-size: 24rpx;\n  color: #333;\n  line-height: 37.5rpx;\n}\n\n.comments .customer-service .c {\n  font-size: 24rpx;\n  color: #999;\n  line-height: 37.5rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/topicCommentPost/topicCommentPost.js",
    "content": "// 上传组件 基于https://github.com/Tencent/weui-wxss/tree/master/src/example/uploader\nvar app = getApp();\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nPage({\n  data: {\n    valueId: 0,\n    topic: {},\n    content: '',\n    stars: [0, 1, 2, 3, 4],\n    star: 5,\n    starText: '十分满意',\n    hasPicture: false,\n    picUrls: [],\n    files: []\n  },\n  chooseImage: function(e) {\n    if (this.data.files.length >= 5) {\n      util.showErrorToast('只能上传五张图片')\n      return false;\n    }\n\n    var that = this;\n    wx.chooseImage({\n      count: 1,\n      sizeType: ['original', 'compressed'],\n      sourceType: ['album', 'camera'],\n      success: function(res) {\n        that.setData({\n          files: that.data.files.concat(res.tempFilePaths)\n        });\n        that.upload(res);\n      }\n    })\n  },\n  upload: function(res) {\n    var that = this;\n    const uploadTask = wx.uploadFile({\n      url: api.StorageUpload,\n      filePath: res.tempFilePaths[0],\n      name: 'file',\n      success: function(res) {\n        var _res = JSON.parse(res.data);\n        if (_res.errno === 0) {\n          var url = _res.data.url\n          that.data.picUrls.push(url)\n          that.setData({\n            hasPicture: true,\n            picUrls: that.data.picUrls\n          })\n        }\n      },\n      fail: function(e) {\n        wx.showModal({\n          title: '错误',\n          content: '上传失败',\n          showCancel: false\n        })\n      },\n    })\n\n    uploadTask.onProgressUpdate((res) => {\n      console.log('上传进度', res.progress)\n      console.log('已经上传的数据长度', res.totalBytesSent)\n      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)\n    })\n\n  },\n  previewImage: function(e) {\n    wx.previewImage({\n      current: e.currentTarget.id, // 当前显示图片的http链接\n      urls: this.data.files // 需要预览的图片http链接列表\n    })\n  },\n  selectRater: function(e) {\n    var star = e.currentTarget.dataset.star + 1;\n    var starText;\n    if (star == 1) {\n      starText = '很差';\n    } else if (star == 2) {\n      starText = '不太满意';\n    } else if (star == 3) {\n      starText = '满意';\n    } else if (star == 4) {\n      starText = '比较满意';\n    } else {\n      starText = '十分满意'\n    }\n    this.setData({\n      star: star,\n      starText: starText\n    })\n\n  },\n  onLoad: function(options) {\n    if (parseInt(options.type) !== 1) {\n      return;\n    }\n\n    var that = this;\n    that.setData({\n      valueId: options.valueId\n    });\n    this.getTopic();\n  },\n  getTopic: function() {\n    let that = this;\n    util.request(api.TopicDetail, {\n      id: that.data.valueId\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          topic: res.data.topic\n        });\n\n      }\n    });\n  },\n  onClose: function() {\n    wx.navigateBack();\n  },\n  onPost: function() {\n    let that = this;\n\n    if (!this.data.content) {\n      util.showErrorToast('请填写评论')\n      return false;\n    }\n\n    util.request(api.CommentPost, {\n      type: 1,\n      valueId: that.data.valueId,\n      content: that.data.content,\n      star: that.data.star,\n      hasPicture: that.data.hasPicture,\n      picUrls: that.data.picUrls\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '评论成功',\n          complete: function() {\n            wx.navigateBack();\n          }\n        })\n      }\n    });\n  },\n  bindInputValue(event) {\n\n    let value = event.detail.value;\n\n    //判断是否超过140个字符\n    if (value && value.length > 140) {\n      return false;\n    }\n\n    this.setData({\n      content: event.detail.value,\n    })\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/topicCommentPost/topicCommentPost.json",
    "content": "{\n  \"navigationBarTitleText\": \"评论\"\n}"
  },
  {
    "path": "litemall-wx/pages/topicCommentPost/topicCommentPost.wxml",
    "content": "<view class=\"container\">\n  <view class=\"post-comment\">\n    <view class=\"goods\">\n      <view class=\"img\">\n        <image src=\"{{topic.picUrl}}\"></image>\n      </view>\n      <view class=\"info\">\n        <view class=\"t\">\n          <text class=\"name\">{{topic.title}}</text>\n        </view>\n        <view class=\"attr\">{{topic.subtitle}}</view>\n      </view>\n    </view>\n    <view class=\"rater\">\n      <text class=\"rater-title\">评分</text>\n      <block wx:for=\"{{stars}}\" wx:key=\"*this\" wx:for-item=\"item\">\n        <van-icon name=\"star\" bindtap=\"selectRater\" color=\"#ab956d\" data-star=\"{{item}}\" wx:if=\"{{item < star}}\"/>\n        <van-icon name=\"star-o\" bindtap=\"selectRater\" data-star=\"{{item}}\" wx:else/>\n      </block>\n      <text class=\"rater-desc\">{{starText}}</text>\n    </view>\n    <view class=\"input-box\">\n      <textarea class=\"content\" focus=\"true\" bindinput=\"bindInputValue\" maxlength=\"140\" placeholder=\"留言经过筛选后，对所有人可见\" />\n      <text class=\"count\">{{140 - content.length}}</text>\n    </view>\n\n    <view class=\"weui-uploader\">\n      <view class=\"weui-uploader__hd\">\n        <view class=\"weui-uploader__title\">图片上传</view>\n        <view class=\"weui-uploader__info\">{{picUrls.length}}/{{files.length}}</view>\n      </view>\n      <view class=\"weui-uploader__bd\">\n        <view class=\"weui-uploader__files\" id=\"uploaderFiles\">\n          <block wx:for=\"{{files}}\" wx:key=\"*this\">\n            <view class=\"weui-uploader__file\" bindtap=\"previewImage\" id=\"{{item}}\">\n              <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n            </view>\n          </block>\n          <view class=\"weui-uploader__input-box\">\n            <view class=\"weui-uploader__input\" bindtap=\"chooseImage\"></view>\n          </view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"btns\">\n      <view class=\"close\" bindtap=\"onClose\">取消</view>\n      <view class=\"post\" bindtap=\"onPost\">发表</view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/topicCommentPost/topicCommentPost.wxss",
    "content": "page, .container {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.post-comment {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 30rpx;\n  background: #fff;\n}\n\n.post-comment .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.post-comment .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.post-comment .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.post-comment .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.post-comment .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.post-comment .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.post-comment .goods .status {\n  width: 105rpx;\n  color: #b4282d;\n  font-size: 25rpx;\n}\n\n.post-comment .rater {\n  display: flex;\n  flex-direction: row;\n  height: 55rpx;\n}\n\n.post-comment .rater .rater-title {\n  font-size: 29rpx;\n  padding-right: 10rpx;\n}\n\n.post-comment .rater image {\n  padding-left: 5rpx;\n  height: 50rpx;\n  width: 50rpx;\n}\n\n.post-comment .rater .rater-desc {\n  font-size: 29rpx;\n  padding-left: 10rpx;\n}\n\n.post-comment .input-box {\n  height: 337.5rpx;\n  width: 690rpx;\n  position: relative;\n  background: #fff;\n}\n\n.post-comment .input-box .content {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  background: #fff;\n  font-size: 29rpx;\n  border: 5px solid #f4f4f4;\n  height: 300rpx;\n  width: 650rpx;\n  padding: 20rpx;\n}\n\n.post-comment .input-box .count {\n  position: absolute;\n  bottom: 20rpx;\n  right: 20rpx;\n  display: block;\n  height: 30rpx;\n  width: 50rpx;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.post-comment .btns {\n  height: 108rpx;\n}\n\n.post-comment .close {\n  float: left;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: left;\n  color: #666;\n  padding: 0 30rpx;\n}\n\n.post-comment .post {\n  float: right;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: right;\n  padding: 0 30rpx;\n}\n\n.weui-uploader {\n  margin-top: 50rpx;\n}\n\n.weui-uploader__hd {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: flex;\n  padding-bottom: 10px;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  align-items: center;\n}\n\n.weui-uploader__title {\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n  flex: 1;\n}\n\n.weui-uploader__info {\n  color: #b2b2b2;\n}\n\n.weui-uploader__bd {\n  margin-bottom: -4px;\n  margin-right: -9px;\n  overflow: hidden;\n}\n\n.weui-uploader__file {\n  float: left;\n  margin-right: 9px;\n  margin-bottom: 9px;\n}\n\n.weui-uploader__img {\n  display: block;\n  width: 79px;\n  height: 79px;\n}\n\n.weui-uploader__file_status {\n  position: relative;\n}\n\n.weui-uploader__file_status:before {\n  content: \" \";\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.weui-uploader__file-content {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  color: #fff;\n}\n\n.weui-uploader__input-box {\n  float: left;\n  position: relative;\n  margin-right: 9px;\n  margin-bottom: 9px;\n  width: 77px;\n  height: 77px;\n  border: 1px solid #d9d9d9;\n}\n\n.weui-uploader__input-box:after, .weui-uploader__input-box:before {\n  content: \" \";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  background-color: #d9d9d9;\n}\n\n.weui-uploader__input-box:before {\n  width: 2px;\n  height: 39.5px;\n}\n\n.weui-uploader__input-box:after {\n  width: 39.5px;\n  height: 2px;\n}\n\n.weui-uploader__input-box:active {\n  border-color: #999;\n}\n\n.weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before {\n  background-color: #999;\n}\n\n.weui-uploader__input {\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n"
  },
  {
    "path": "litemall-wx/pages/topicDetail/topicDetail.js",
    "content": "var app = getApp();\nvar WxParse = require('../../lib/wxParse/wxParse.js');\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    id: 0,\n    topic: {},\n    topicList: [],\n    commentCount: 0,\n    commentList: [],\n    topicGoods: [],\n    collect: false,\n    userHasCollect: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    that.setData({\n      id: options.id\n    });\n\n    util.request(api.TopicDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          topic: res.data.topic,\n          topicGoods: res.data.goods,\n          userHasCollect: res.data.userHasCollect,\n          collect: res.data.userHasCollect == 1\n        });\n\n        WxParse.wxParse('topicDetail', 'html', res.data.topic.content, that);\n      }\n    });\n\n    util.request(api.TopicRelated, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          topicList: res.data.list\n        });\n      }\n    });\n  },\n  getCommentList() {\n    let that = this;\n    util.request(api.CommentList, {\n      valueId: that.data.id,\n      type: 1,\n      showType: 0,\n      page: 1,\n      limit: 5\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          commentList: res.data.list,\n          commentCount: res.data.total\n        });\n      }\n    });\n  },\n\n  //添加或是取消收藏\n  addCollectOrNot: function() {\n    let that = this;\n    util.request(api.CollectAddOrDelete, {\n        type: 1,\n        valueId: this.data.id\n      }, \"POST\")\n      .then(function(res) {\n        if (that.data.userHasCollect == 1) {\n          that.setData({\n            collect: false,\n            userHasCollect: 0\n          });\n        } else {\n          that.setData({\n            collect: true,\n            userHasCollect: 1\n          });\n        }\n\n      });\n\n  },\n\n  postComment() {\n    if (!app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    } else {\n      wx.navigateTo({\n        url: '/pages/topicCommentPost/topicCommentPost?valueId=' + this.data.id + '&type=1',\n      })\n    }\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n    this.getCommentList();\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/topicDetail/topicDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"专题详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/topicDetail/topicDetail.wxml",
    "content": "<scroll-view class=\"container\">\n  <scroll-view class=\"content\">\n    <import src=\"../../lib/wxParse/wxParse.wxml\" />\n    <template is=\"wxParse\" data=\"{{wxParseData:topicDetail.nodes}}\" />\n  </scroll-view>\n  <scroll-view class=\"sv-goods\" wx:if=\"{{topicGoods.length > 0 }}\">\n    <view class=\"topic-goods\">\n      <view class=\"h\">\n        <text class=\"t\">专题商品</text>     \n        <van-icon class=\"i\" bindtap=\"addCollectOrNot\" name=\"star\" wx:if=\"{{collect}}\" color=\"#ab956d\"/>\n        <van-icon class=\"i\" bindtap=\"addCollectOrNot\" name=\"star-o\" wx:else/>\n      </view>\n      <view class=\"b\">\n        <view class=\"item\" wx:for=\"{{topicGoods}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n          <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n            <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n            <view class=\"right\">\n              <view class=\"text\">\n                <text class=\"name\">{{item.name}}</text>\n                <text class=\"desc\">{{item.brief}}</text>\n                <text class=\"price\">￥{{item.retailPrice}}</text>\n              </view>\n            </view>\n          </navigator>\n        </view>\n      </view>\n    </view>\n  </scroll-view>\n  <scroll-view class=\"comments\">\n    <view class=\"h\">\n      <text class=\"t\">精选留言</text>\n      <van-icon bindtap=\"postComment\" class=\"i\" name=\"comment-o\" />      \n    </view>\n    <view class=\"has-comments\" wx:if=\"{{commentList.length > 0 }}\">\n      <view class=\"b\">\n        <view class=\"item\" wx:for=\"{{commentList}}\" wx:key=\"id\">\n          <view class=\"info\">\n            <view class=\"user\">\n              <image class=\"avatar\" src=\"{{item.userInfo.avatarUrl}}\"></image>\n              <text class=\"nickname\">{{item.userInfo.nickName}}</text>\n            </view>\n            <view class=\"time\">{{item.addTime}}</view>\n          </view>\n          <view class=\"comment\">\n            {{item.content}}\n          </view>\n        </view>\n      </view>\n      <view class=\"load\" wx:if=\"{{commentCount > 5}}\">\n        <navigator url=\"/pages/topicComment/topicComment?valueId={{topic.id}}&type=1\">查看更多</navigator>\n      </view>\n    </view>\n    <view class=\"no-comments\" wx:if=\"{{commentList.length <= 0}}\">\n      <text class=\"txt\">等你来留言</text>\n    </view>\n  </scroll-view>\n  <scroll-view class=\"rec-box\">\n    <view class=\"h\">\n      <text class=\"txt\">专题推荐</text>\n    </view>\n    <view class=\"b\">\n      <navigator class=\"item\" wx:for=\"{{topicList}}\" wx:key=\"id\" url=\"../topicDetail/topicDetail?id={{item.id}}\">\n        <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n        <text class=\"title\">{{item.title}}</text>\n      </navigator>\n    </view>\n  </scroll-view>\n</scroll-view>"
  },
  {
    "path": "litemall-wx/pages/topicDetail/topicDetail.wxss",
    "content": ".content {\n  width: 100%;\n  height: auto;\n  font-size: 0;\n}\n\n.content image {\n  display: inline-block;\n  width: 100%;\n}\n\n.comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin-top: 20rpx;\n}\n\n.comments .h {\n  height: 93rpx;\n  line-height: 93rpx;\n  width: 720rpx;\n  padding-right: 30rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.comments .h .t {\n  display: block;\n  float: left;\n  width: 50%;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.comments .h .i {\n  display: block;\n  float: right;\n  width: 33rpx;\n  height: 33rpx;\n}\n\n.comments .b {\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user .avatar {\n  display: block;\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user .nickname {\n  display: block;\n  width: auto;\n  float: left;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .comment {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  margin-bottom: 30rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.comments .load {\n  width: 720rpx;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: center;\n  font-size: 38.5rpx;\n}\n\n.no-comments {\n  height: 297rpx;\n}\n\n.no-comments .txt {\n  height: 43rpx;\n  line-height: 43rpx;\n  display: block;\n  width: 100%;\n  text-align: center;\n  font-size: 29rpx;\n  color: #7f7f7f;\n  padding-top: 150rpx;\n}\n\n.sv-goods {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin-top: 20rpx;\n}\n\n.topic-goods .h {\n  height: 93rpx;\n  line-height: 93rpx;\n  width: 720rpx;\n  padding-right: 30rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.topic-goods .h .i {\n  display: block;\n  float: right;\n  width: 33rpx;\n  height: 33rpx;\n}\n\n.topic-goods .h .t {\n  display: block;\n  float: left;\n  width: 50%;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.topic-goods .b .item {\n  border-top: 1px solid #d9d9d9;\n  margin: 0 20rpx;\n  height: 244rpx;\n  width: 710rpx;\n}\n\n.topic-goods .b .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 220rpx;\n  height: 220rpx;\n}\n\n.topic-goods .b .right {\n  float: left;\n  height: 244rpx;\n  width: 476rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.topic-goods .b .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 244rpx;\n  width: 476rpx;\n}\n\n.topic-goods .b .name {\n  float: left;\n  width: 330rpx;\n  display: block;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 30rpx;\n}\n\n.topic-goods .b .desc {\n  width: 476rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.topic-goods .b .price {\n  width: 476rpx;\n  display: flex;\n  color: #b4282d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.rec-box {\n  width: 690rpx;\n  height: auto;\n  margin: 0 30rpx;\n}\n\n.rec-box .h {\n  position: relative;\n  width: 690rpx;\n  height: 96rpx;\n  /*border-bottom: 1px solid #d0d0d0;*/\n  margin-bottom: 32rpx;\n}\n\n.rec-box .h .txt {\n  display: inline-block;\n  position: absolute;\n  background: #f4f4f4;\n  top: 59rpx;\n  left: 200rpx;\n  width: 290rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  font-size: 30rpx;\n  color: #999;\n  text-align: center;\n}\n\n.rec-box .b .item {\n  width: 690rpx;\n  height: 397rpx;\n  padding: 24rpx 24rpx 30rpx 24rpx;\n  background: #fff;\n  margin-bottom: 30rpx;\n}\n\n.rec-box .b .item .img {\n  height: 278rpx;\n  width: 642rpx;\n}\n\n.rec-box .b .item .title {\n  display: block;\n  margin-top: 30rpx;\n  height: 30rpx;\n  width: 642rpx;\n  font-size: 28rpx;\n}\n@import \"../../lib/wxParse/wxParse.wxss\";\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/address/address.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    addressList: [],\n    total: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getAddressList();\n  },\n  getAddressList() {\n    let that = this;\n    util.request(api.AddressList).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          addressList: res.data.list,\n          total: res.data.total\n        });\n      }\n    });\n  },\n  addressAddOrUpdate(event) {\n    console.log(event)\n\n    //返回之前，先取出上一页对象，并设置addressId\n    var pages = getCurrentPages();\n    var prevPage = pages[pages.length - 2];\n\n    if (prevPage.route == \"pages/checkout/checkout\") {\n      try {\n        wx.setStorageSync('addressId', event.currentTarget.dataset.addressId);\n      } catch (e) {\n\n      }\n\n      let addressId = event.currentTarget.dataset.addressId;\n      if (addressId && addressId != 0) {\n        wx.navigateBack();\n      } else {\n        wx.navigateTo({\n          url: '/pages/ucenter/addressAdd/addressAdd?id=' + addressId\n        })\n      }\n\n    } else {\n      wx.navigateTo({\n        url: '/pages/ucenter/addressAdd/addressAdd?id=' + event.currentTarget.dataset.addressId\n      })\n    }\n  },\n  deleteAddress(event) {\n    console.log(event.target)\n    let that = this;\n    wx.showModal({\n      title: '',\n      content: '确定要删除地址？',\n      success: function(res) {\n        if (res.confirm) {\n          let addressId = event.target.dataset.addressId;\n          util.request(api.AddressDelete, {\n            id: addressId\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              that.getAddressList();\n              wx.removeStorage({\n                key: 'addressId',\n                success: function(res) {},\n              })\n            }\n          });\n          console.log('用户点击确定')\n        }\n      }\n    })\n    return false;\n\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/address/address.json",
    "content": "{\n  \"navigationBarTitleText\": \"地址管理\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/address/address.wxml",
    "content": "<view class=\"container\">\n  <view class=\"address-list\" wx:if=\"{{ addressList.length > 0 }}\">\n    <view class=\"item\" wx:for=\"{{addressList}}\" wx:key=\"id\" bindtap=\"addressAddOrUpdate\" data-address-id=\"{{item.id}}\">\n      <view class=\"l\">\n        <view class=\"name\">{{item.name}}</view>\n        <view class=\"default\" wx:if=\"{{item.isDefault}}\">默认</view>\n      </view>\n      <view class=\"c\">\n        <view class=\"mobile\">{{item.tel}}</view>\n        <view class=\"address\">{{item.addressDetail}}</view>\n      </view>\n      <view class=\"r\">\n        <van-icon catchtap=\"deleteAddress\" data-address-id=\"{{item.id}}\" class=\"del\" name=\"delete\"/>\n      </view>\n    </view>\n  </view>\n  <view class=\"empty-view\" wx:if=\"{{ addressList.length <= 0 }}\">\n    <text class=\"text\">收货地址还没有~~~</text>\n  </view>\n  <view class=\"add-address\" bindtap=\"addressAddOrUpdate\" data-address-id=\"0\">新建</view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/address/address.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.container {\n  height: 100%;\n  width: 100%;\n}\n\n.address-list {\n  padding-left: 31.25rpx;\n  background: #fff;\n  background-size: auto 10.5rpx;\n  margin-bottom: 90rpx;\n}\n\n.address-list .item {\n  height: 156.55rpx;\n  align-items: center;\n  display: flex;\n  border-bottom: 1rpx solid #dcd9d9;\n}\n\n.address-list .l {\n  width: 125rpx;\n  height: 80rpx;\n  overflow: hidden;\n}\n\n.address-list .name {\n  width: 125rpx;\n  height: 43rpx;\n  font-size: 29rpx;\n  color: #333;\n  margin-bottom: 5.2rpx;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  overflow: hidden;\n}\n\n.address-list .default {\n  width: 62.5rpx;\n  height: 33rpx;\n  line-height: 28rpx;\n  text-align: center;\n  font-size: 20rpx;\n  color: #b4282d;\n  border: 1rpx solid #b4282d;\n  visibility: visible;\n}\n\n.address-list .c {\n  flex: 1;\n  height: auto;\n  overflow: hidden;\n}\n\n.address-list .mobile {\n  height: 29rpx;\n  font-size: 29rpx;\n  line-height: 29rpx;\n  overflow: hidden;\n  color: #333;\n  margin-bottom: 6.25rpx;\n}\n\n.address-list .address {\n  height: 37rpx;\n  font-size: 25rpx;\n  line-height: 37rpx;\n  overflow: hidden;\n  color: #666;\n}\n\n.address-list .r {\n  width: 52rpx;\n  height: auto;\n  overflow: hidden;\n  margin-right: 16.5rpx;\n}\n\n.address-list .del {\n  display: block;\n  width: 52rpx;\n  height: 52rpx;\n}\n\n.add-address {\n  border: none;\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 90%;\n  height: 90rpx;\n  line-height: 98rpx;\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  border-radius: 0;\n  padding: 0;\n  margin: 0;\n  margin-left: 5%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  font-size: 25rpx;\n  color: #f4f4f4;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n\n.empty-view {\n  height: 100%;\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.empty-view .text {\n  width: auto;\n  font-size: 28rpx;\n  line-height: 35rpx;\n  color: #999;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/addressAdd/addressAdd.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar check = require('../../../utils/check.js');\nvar area = require('../../../utils/area.js');\n\nvar app = getApp();\nPage({\n  data: {\n    address: {\n      id: 0,\n      areaCode: 0,\n      address: '',\n      name: '',\n      tel: '',\n      isDefault: 0,\n      province: '',\n      city: '',\n      county: ''\n    },\n    addressId: 0,\n    openSelectRegion: false,\n    selectRegionList: [{\n        code: 0,\n        name: '省份'\n      },\n      {\n        code: 0,\n        name: '城市'\n      },\n      {\n        code: 0,\n        name: '区县'\n      }\n    ],\n    regionType: 1,\n    regionList: [],\n    selectRegionDone: false\n  },\n  bindinputMobile(event) {\n    let address = this.data.address;\n    address.tel = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindinputName(event) {\n    let address = this.data.address;\n    address.name = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindinputAddress(event) {\n    let address = this.data.address;\n    address.addressDetail = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindIsDefault() {\n    let address = this.data.address;\n    address.isDefault = !address.isDefault;\n    this.setData({\n      address: address\n    });\n  },\n  getAddressDetail() {\n    let that = this;\n    util.request(api.AddressDetail, {\n      id: that.data.addressId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        if (res.data) {\n          that.setData({\n            address: res.data\n          });\n        }\n      }\n    });\n  },\n  setRegionDoneStatus() {\n    let that = this;\n    let doneStatus = that.data.selectRegionList.every(item => {\n      return item.code != 0;\n    });\n\n    that.setData({\n      selectRegionDone: doneStatus\n    })\n\n  },\n  chooseRegion() {\n    let that = this;\n    this.setData({\n      openSelectRegion: !this.data.openSelectRegion\n    });\n\n    //设置区域选择数据\n    let address = this.data.address;\n    if (address.areaCode > 0) {\n      let selectRegionList = this.data.selectRegionList;\n      selectRegionList[0].code = address.areaCode.slice(0, 2) + '0000';\n      selectRegionList[0].name = address.province;\n\n      selectRegionList[1].code = address.areaCode.slice(0, 4) + '00';\n      selectRegionList[1].name = address.city;\n\n      selectRegionList[2].code = address.areaCode;\n      selectRegionList[2].name = address.county;\n\n      let regionList = area.getList('county', address.areaCode.slice(0, 4));\n      regionList = regionList.map(item => {\n        //标记已选择的\n        if (address.areaCode === item.code) {\n          item.selected = true;\n        } else {\n          item.selected = false;\n        }\n        return item;\n      })\n\n      this.setData({\n        selectRegionList: selectRegionList,\n        regionType: 3,\n        regionList: regionList\n      });\n\n    } else {\n      let selectRegionList = [{\n            code: 0,\n            name: '省份',\n          },\n          {\n            code: 0,\n            name: '城市',\n          },\n          {\n            code: 0,\n            name: '区县',\n          }\n        ];\n\n      this.setData({\n        selectRegionList: selectRegionList,\n        regionType: 1,\n        regionList: area.getList('province')\n      });\n    }\n\n    this.setRegionDoneStatus();\n\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    console.log(options)\n    if (options.id && options.id != 0) {\n      this.setData({\n        addressId: options.id\n      });\n      this.getAddressDetail();\n    }\n  },\n  onReady: function() {\n\n  },\n  selectRegionType(event) {\n    let that = this;\n    let regionTypeIndex = event.target.dataset.regionTypeIndex;\n    let selectRegionList = that.data.selectRegionList;\n\n    //判断是否可点击\n    if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].code <= 0)) {\n      return false;\n    }\n\n    let selectRegionItem = selectRegionList[regionTypeIndex];\n    let code = selectRegionItem.code;\n    let regionList;\n    if (regionTypeIndex === 0) {\n      // 点击省级，取省级\n      regionList = area.getList('province');\n    }\n    else if (regionTypeIndex === 1) {\n      // 点击市级，取市级\n      regionList = area.getList('city', code.slice(0, 2)); \n    }\n    else{\n      // 点击县级，取县级\n      regionList = area.getList('county', code.slice(0, 4)); \n    }\n\n    regionList = regionList.map(item => {\n      //标记已选择的\n      if (that.data.selectRegionList[regionTypeIndex].code == item.code) {\n        item.selected = true;\n      } else {\n        item.selected = false;\n      }\n      return item;\n    })\n\n    this.setData({\n      regionList: regionList,\n      regionType: regionTypeIndex + 1\n    })\n\n    this.setRegionDoneStatus();\n  },\n  selectRegion(event) {\n    let that = this;\n    let regionIndex = event.target.dataset.regionIndex;\n    let regionItem = this.data.regionList[regionIndex];\n    let regionType = this.data.regionType;\n    let selectRegionList = this.data.selectRegionList;\n    selectRegionList[regionType - 1] = regionItem;\n\n    if (regionType == 3) {\n      this.setData({\n        selectRegionList: selectRegionList\n      })\n\n      let regionList = that.data.regionList.map(item => {\n        //标记已选择的\n        if (that.data.selectRegionList[that.data.regionType - 1].code == item.code) {\n          item.selected = true;\n        } else {\n          item.selected = false;\n        }\n        return item;\n      })\n\n      this.setData({\n        regionList: regionList\n      })\n\n      this.setRegionDoneStatus();\n      return\n    }\n\n    //重置下级区域为空\n    selectRegionList.map((item, index) => {\n      if (index > regionType - 1) {\n        item.code = 0;\n        item.name = index == 1 ? '城市' : '区县';\n      }\n      return item;\n    });\n\n    this.setData({\n      selectRegionList: selectRegionList,\n      regionType: regionType + 1\n    })\n    \n    let code = regionItem.code;\n    let regionList = [];\n    if (regionType === 1) {\n      // 点击省级，取市级\n      regionList= area.getList('city', code.slice(0, 2))\n    }\n    else {\n      // 点击市级，取县级\n      regionList= area.getList('county', code.slice(0, 4))\n    }\n\n    this.setData({\n      regionList: regionList\n    })\n\n    this.setRegionDoneStatus();\n  },\n  doneSelectRegion() {\n    if (this.data.selectRegionDone === false) {\n      return false;\n    }\n\n    let address = this.data.address;\n    let selectRegionList = this.data.selectRegionList;\n    address.province = selectRegionList[0].name;\n    address.city = selectRegionList[1].name;\n    address.county = selectRegionList[2].name;\n    address.areaCode = selectRegionList[2].code;\n\n    this.setData({\n      address: address,\n      openSelectRegion: false\n    });\n\n  },\n  cancelSelectRegion() {\n    this.setData({\n      openSelectRegion: false,\n      regionType: this.data.regionDoneStatus ? 3 : 1\n    });\n\n  },\n  cancelAddress() {\n    wx.navigateBack();\n  },\n  saveAddress() {\n    console.log(this.data.address)\n    let address = this.data.address;\n\n    if (address.name == '') {\n      util.showErrorToast('请输入姓名');\n\n      return false;\n    }\n\n    if (address.tel == '') {\n      util.showErrorToast('请输入手机号码');\n      return false;\n    }\n\n\n    if (address.areaCode == 0) {\n      util.showErrorToast('请输入省市区');\n      return false;\n    }\n\n    if (address.addressDetail == '') {\n      util.showErrorToast('请输入详细地址');\n      return false;\n    }\n\n    let that = this;\n    util.request(api.AddressSave, {\n      id: address.id,\n      name: address.name,\n      tel: address.tel,\n      province: address.province,\n      city: address.city,\n      county: address.county,\n      areaCode: address.areaCode,\n      addressDetail: address.addressDetail,\n      isDefault: address.isDefault\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        //返回之前，先取出上一页对象，并设置addressId\n        var pages = getCurrentPages();\n        var prevPage = pages[pages.length - 2];\n        console.log(prevPage);\n        if (prevPage.route == \"pages/checkout/checkout\") {\n          prevPage.setData({\n            addressId: res.data\n          })\n\n          try {\n            wx.setStorageSync('addressId', res.data);\n          } catch (e) {\n\n          }\n          console.log(\"set address\");\n        }\n        wx.navigateBack();\n      }\n    });\n\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/addressAdd/addressAdd.json",
    "content": "{\n  \"navigationBarTitleText\": \"编辑地址\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/addressAdd/addressAdd.wxml",
    "content": "<view class=\"add-address\">\n  <view class=\"add-form\">\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputName\" placeholder=\"姓名\" value=\"{{address.name}}\" auto-focus/>\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputMobile\" value=\"{{address.tel}}\" placeholder=\"手机号码\" />\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" value=\"{{address.province + address.city + address.county}}\" disabled=\"true\" bindtap=\"chooseRegion\" placeholder=\"省份、城市、区县\" />\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputAddress\" value=\"{{address.addressDetail}}\" placeholder=\"详细地址, 如街道、楼盘号等\" />\n    </view>\n    <view class=\"form-default\">\n      <van-checkbox value=\"{{ address.isDefault == 1 }}\" bind:change=\"bindIsDefault\">设为默认地址</van-checkbox>\n    </view>\n  </view>\n\n  <view class=\"btns\">\n    <button class=\"cannel\" bindtap=\"cancelAddress\">取消</button>\n    <button class=\"save\" bindtap=\"saveAddress\">保存</button>\n  </view>\n\n  <view class=\"region-select\" wx:if=\"{{openSelectRegion}}\">\n    <view class=\"hd\">\n      <view class=\"region-selected\">\n        <view class=\"item {{item.code == 0 ? 'disabled' : ''}} {{(regionType -1) === index ? 'selected' : ''}}\" bindtap=\"selectRegionType\" data-region-type-index=\"{{index}}\" wx:for=\"{{selectRegionList}}\" wx:key=\"code\">{{item.name}}</view>\n      </view>\n      <view class=\"done {{selectRegionDone ? '' : 'disabled'}}\" bindtap=\"doneSelectRegion\">确定</view>\n    </view>\n    <view class=\"bd\">\n      <scroll-view scroll-y class=\"region-list\">\n        <view class=\"item {{item.selected ? 'selected' : ''}}\" bindtap=\"selectRegion\" data-region-index=\"{{index}}\" wx:for=\"{{regionList}}\" wx:key=\"code\">{{item.name}}</view>\n      </scroll-view>\n    </view>\n  </view>\n</view>\n<view class=\"bg-mask\" bindtap=\"cancelSelectRegion\" wx:if=\"{{openSelectRegion}}\"></view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/addressAdd/addressAdd.wxss",
    "content": "page {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.add-address .add-form {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.add-address .form-item {\n  height: 116rpx;\n  padding-left: 31.25rpx;\n  border-bottom: 1px solid #d9d9d9;\n  display: flex;\n  align-items: center;\n  padding-right: 31.25rpx;\n}\n\n.add-address .input {\n  flex: 1;\n  height: 44rpx;\n  line-height: 44rpx;\n  overflow: hidden;\n}\n\n.add-address .form-default {\n  border-bottom: 1px solid #d9d9d9;\n  height: 96rpx;\n  background: #fff;\n  padding-top: 28rpx;\n  font-size: 28rpx;\n  padding-left: 31.25rpx;\n}\n\n.add-address .form-default .van-checkbox .van-icon {\n  color: #fff;\n}\n\n.add-address .btns {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  overflow: hidden;\n  display: flex;\n  height: 100rpx;\n  width: 100%;\n}\n\n.add-address .cannel, .add-address .save {\n  flex: 1;\n  height: 100rpx;\n  text-align: center;\n  line-height: 100rpx;\n  font-size: 28rpx;\n  color: #fff;\n  border: none;\n  border-radius: 0;\n}\n\n.add-address .cannel {\n  background: #333;\n}\n\n.add-address .save {\n  background: #b4282d;\n}\n\n.region-select {\n  width: 100%;\n  height: 600rpx;\n  background: #fff;\n  position: fixed;\n  z-index: 10;\n  left: 0;\n  bottom: 0;\n}\n\n.region-select .hd {\n  height: 108rpx;\n  width: 100%;\n  border-bottom: 1px solid #f4f4f4;\n  padding: 46rpx 30rpx 0 30rpx;\n}\n\n.region-select .region-selected {\n  float: left;\n  height: 60rpx;\n  display: flex;\n}\n\n.region-select .region-selected .item {\n  max-width: 140rpx;\n  margin-right: 30rpx;\n  text-align: left;\n  line-height: 60rpx;\n  height: 100%;\n  color: #333;\n  font-size: 28rpx;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.region-select .region-selected .item.disabled {\n  color: #999;\n}\n\n.region-select .region-selected .item.selected {\n  color: #b4282d;\n}\n\n.region-select .done {\n  float: right;\n  height: 60rpx;\n  width: 60rpx;\n  border: none;\n  background: #fff;\n  line-height: 60rpx;\n  text-align: center;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.region-select .done.disabled {\n  color: #999;\n}\n\n.region-select .bd {\n  height: 492rpx;\n  width: 100%;\n  padding: 0 30rpx;\n}\n\n.region-select .region-list {\n  height: 492rpx;\n}\n\n.region-select .region-list .item {\n  width: 100%;\n  height: 104rpx;\n  line-height: 104rpx;\n  text-align: left;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.region-select .region-list .item.selected {\n  color: #b4282d;\n}\n\n.bg-mask {\n  height: 100%;\n  width: 100%;\n  background: rgba(0, 0, 0, 0.4);\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 8;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersale/aftersale.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderId: 0,\n    orderInfo: {},\n    orderGoods: [],\n    aftersale: {\n      pictures: []\n    },\n    columns: ['未收货退款', '不退货退款', '退货退款'],\n    contentLength: 0,\n    fileList: []\n  },\n  onLoad: function (options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.id\n    });\n    this.getOrderDetail();\n  },\n  getOrderDetail: function () {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function () {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.OrderDetail, {\n      orderId: that.data.orderId\n    }).then(function (res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        that.setData({\n          orderInfo: res.data.orderInfo,\n          orderGoods: res.data.orderGoods,\n          'aftersale.orderId': that.data.orderId,\n          'aftersale.amount': res.data.orderInfo.actualPrice - res.data.orderInfo.freightPrice\n        });\n      }\n\n      wx.hideLoading();\n    });\n  },\n  deleteImage (event) {\n    const { fileList = [] } = this.data;\n    fileList.splice(event.detail.index, 1)\n    this.setData({\n      fileList: fileList\n    })\n  },\n  afterRead(event) {\n    const { file } = event.detail\n    let that = this\n    const uploadTask = wx.uploadFile({\n      url: api.StorageUpload,\n      filePath: file.path,\n      name: 'file',\n      success: function (res) {\n        var _res = JSON.parse(res.data);\n        if (_res.errno === 0) {\n          var url = _res.data.url\n          that.data.aftersale.pictures.push(url)\n          const { fileList = [] } = that.data;\n          fileList.push({ ...file, url: url });\n          that.setData({\n            fileList: fileList\n          })\n        }\n      },\n      fail: function (e) {\n        wx.showModal({\n          title: '错误',\n          content: '上传失败',\n          showCancel: false\n        })\n      },\n    })\n  },\n  previewImage: function (e) {\n    wx.previewImage({\n      current: e.currentTarget.id, // 当前显示图片的http链接\n      urls: this.data.files // 需要预览的图片http链接列表\n    })\n  },\n  contentInput: function (e) {\n    this.setData({\n      contentLength: e.detail.cursor,\n      'aftersale.comment': e.detail.value,\n    });\n  },\n  onReasonChange: function (e) {\n    this.setData({\n      'aftersale.reason': e.detail,\n    });\n  },\n  showTypePicker: function () {\n    this.setData({\n      showPicker: true,\n    });\n  },\n\n  onCancel: function () {\n    this.setData({\n      showPicker: false,\n    });\n  },\n  onConfirm: function (event) {\n    this.setData({\n      'aftersale.type': event.detail.index,\n      'aftersale.typeDesc': event.detail.value,\n      showPicker: false,\n    });\n  },\n  submit: function () {\n    let that = this;\n    if (that.data.aftersale.type == undefined) {\n      util.showErrorToast('请选择退款类型');\n      return false;\n    }\n\n    if (that.data.reason == '') {\n      util.showErrorToast('请输入退款原因');\n      return false;\n    }\n\n    wx.showLoading({\n      title: '提交中...',\n      mask: true,\n      success: function () {\n\n      }\n    });\n\n    util.request(api.AftersaleSubmit, that.data.aftersale, 'POST').then(function (res) {\n      wx.hideLoading();\n\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '申请售后成功',\n          icon: 'success',\n          duration: 2000,\n          complete: function () {\n            wx.switchTab({\n              url: '/pages/ucenter/index/index'\n            });\n          }\n        });\n      } else {\n        util.showErrorToast(res.errmsg);\n      }\n\n    });\n  },\n  onReady: function () {\n    // 页面渲染完成\n  },\n  onShow: function () {\n    // 页面显示\n  },\n  onHide: function () {\n    // 页面隐藏\n  },\n  onUnload: function () {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersale/aftersale.json",
    "content": "{\n  \"navigationBarTitleText\": \"售后\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersale/aftersale.wxml",
    "content": "<view class=\"container\">\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      退款商品\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.specifications}}</view>\n          <view class=\"price\">￥{{item.price}}</view>\n        </view>\n      </view>\n    </view>\n  </view>\n\n  <van-cell-group title=\"订单明细\">\n    <van-cell title=\"商品总价\" value=\" ￥{{orderInfo.goodsPrice}}元\" />\n    <van-cell title=\"    运费\" value=\" ￥{{orderInfo.freightPrice}}元\" />\n    <van-cell title=\"    优惠\" value=\"-￥{{orderInfo.couponPrice}}元\" />\n    <van-cell title=\"订单实付\" value=\" ￥{{orderInfo.actualPrice}}元\" />\n  </van-cell-group>\n\n  <van-cell-group title=\"操作\">\n    <van-field value=\"{{ aftersale.typeDesc }}\" label=\"退款类型\" placeholder=\"请选择\" input-align=\"right\" required clickable bind:tap=\"showTypePicker\" />\n    <van-field value=\"{{ aftersale.reason }}\" label=\"退款原因\" placeholder=\"请输入\" bind:change=\"onReasonChange\" input-align=\"right\" required clearable />\n    <van-cell title=\"退款金额\" value=\"￥{{ aftersale.amount }}元\" label=\"不可修改，即订单实付- 运费\" required/>\n    <van-field label=\"退款说明\" value=\"{{ aftersale.comment }}\" placeholder=\"请输入\" type=\"textarea\" input-align=\"right\" autosize/>\n    <van-cell title=\"上传凭证\" label=\"最多上传三张\">\n      <van-uploader file-list=\"{{ fileList }}\" bind:after-read=\"afterRead\" bind:delete=\"deleteImage\" max-count=\"3\" preview-size=\"50px\"/>\n    </van-cell>    \n  </van-cell-group>\n\n  <van-button type=\"danger\" bind:click=\"submit\" block>申请售后</van-button>\n\n  <van-popup show=\"{{showPicker}}\" position=\"bottom\">\n    <van-picker show-toolbar columns=\"{{columns}}\" bind:cancel=\"onCancel\" bind:confirm=\"onConfirm\" />\n  </van-popup>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersale/aftersale.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleDetail/aftersaleDetail.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderId: 0,\n    order: {},\n    orderGoods: [],\n    aftersale: {},\n    statusColumns: ['未申请', '已申请，待审核', '审核通过，待退款', '退款成功', '审核不通过，已拒绝'],\n    typeColumns: ['未收货退款', '不退货退款', '退货退款'],\n    fileList: []\n  },\n  onLoad: function (options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.id\n    });\n    this.getAftersaleDetail();\n  },\n  getAftersaleDetail: function () {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function () {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.AftersaleDetail, {\n      orderId: that.data.orderId\n    }).then(function (res) {\n      if (res.errno === 0) {\n        let _fileList = []\n        res.data.aftersale.pictures.forEach(function (v) {\n          _fileList.push({\n            url: v\n          })\n        });\n\n        that.setData({\n          order: res.data.order,\n          orderGoods: res.data.orderGoods,\n          aftersale: res.data.aftersale,\n          fileList: _fileList\n        });\n      }\n\n      wx.hideLoading();\n    });\n  },\n  onReady: function () {\n    // 页面渲染完成\n  },\n  onShow: function () {\n    // 页面显示\n  },\n  onHide: function () {\n    // 页面隐藏\n  },\n  onUnload: function () {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleDetail/aftersaleDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"售后详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleDetail/aftersaleDetail.wxml",
    "content": "<view class=\"container\">\n  <van-cell-group title=\"退款明细\">\n    <van-cell value=\"{{ statusColumns[aftersale.status] }}\" title=\"售后状态\" required/>\n    <van-cell value=\"{{ aftersale.addTime }}\" title=\"申请时间\" required/>\n    <van-cell value=\"{{ aftersale.aftersaleSn }}\" title=\"服务编号\" required/>\n    <van-cell value=\"{{ typeColumns[aftersale.type] }}\" title=\"退款类型\" required/>\n    <van-cell value=\"{{ aftersale.reason }}\" title=\"退款原因\" required/>\n    <van-cell title=\"退款金额\" value=\"￥{{ aftersale.amount }}元\" label=\"即订单实付- 运费\" required/>\n    <van-field label=\"退款说明\" value=\"{{ aftersale.comment }}\" type=\"textarea\" autosize disabled/>\n    <van-cell title=\"上传凭证\" >\n      <van-uploader file-list=\"{{ fileList }}\" disabled deletable=\"{{false}}\" max-count=\"0\" preview-size=\"50px\"/>\n    </van-cell>\n  </van-cell-group>\n\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      退款商品\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.specifications}}</view>\n          <view class=\"price\">￥{{item.price}}</view>\n        </view>\n      </view>\n    </view>\n  </view>\n\n  <van-cell-group title=\"订单明细\">\n    <van-cell title=\"商品总价\" value=\" ￥{{order.goodsPrice}}元\" />\n    <van-cell title=\"    运费\" value=\" ￥{{order.freightPrice}}元\" />\n    <van-cell title=\"    优惠\" value=\"-￥{{order.couponPrice}}元\" />\n    <van-cell title=\"订单实付\" value=\" ￥{{order.actualPrice}}元\" />\n  </van-cell-group>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleDetail/aftersaleDetail.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n\n.fb-body {\n  width: 100%;\n  background: #fff;\n  height: 300rpx;\n  padding: 30rpx;\n}\n\n.fb-body .content {\n  width: 100%;\n  height: 200rpx;\n  color: #333;\n}\n\n.weui-uploader__files {\n  width: 100%;\n}\n\n.weui-uploader__file {\n  float: left;\n  margin-right: 9px;\n  margin-bottom: 9px;\n}\n\n.weui-uploader__img {\n  display: block;\n  width: 30px;\n  height: 30px;\n}\n\n.weui-uploader__input-box {\n  float: left;\n  position: relative;\n  margin-right: 9px;\n  margin-bottom: 9px;\n  width: 30px;\n  height: 30px;\n  border: 1px solid #d9d9d9;\n}\n\n.weui-uploader__input-box:after, .weui-uploader__input-box:before {\n  content: \" \";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  background-color: #d9d9d9;\n}\n\n.weui-uploader__input-box:before {\n  width: 2px;\n  height: 30px;\n}\n\n.weui-uploader__input-box:after {\n  width: 30px;\n  height: 2px;\n}\n\n.weui-uploader__input-box:active {\n  border-color: #999;\n}\n\n.weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before {\n  background-color: #999;\n}\n\n.weui-uploader__input {\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n.fb-body .text-count {\n  float: right;\n  color: #666;\n  font-size: 24rpx;\n  line-height: 30rpx;\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleList/aftersaleList.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    aftersaleList: [],\n    showType: 1,\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  onLoad: function (options) {\n  },\n  getAftersaleList() {\n    let that = this;\n    util.request(api.AftersaleList, {\n      status: that.data.showType,\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function (res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        that.setData({\n          aftersaleList: that.data.aftersaleList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n      }\n    });\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n      this.getAftersaleList();\n    } else {\n      wx.showToast({\n        title: '没有更多售后了',\n        icon: 'none',\n        duration: 2000\n      });\n      return false;\n    }\n  },\n  switchTab: function (event) {\n    let showType = event.currentTarget.dataset.index;\n    this.setData({\n      aftersaleList: [],\n      showType: showType,\n      page: 1,\n      limit: 10,\n      totalPages: 1\n    });\n    this.getAftersaleList();\n  },\n  onReady: function () {\n    // 页面渲染完成\n  },\n  onShow: function () {\n    // 页面显示\n    this.getAftersaleList();\n  },\n  onHide: function () {\n    // 页面隐藏\n  },\n  onUnload: function () {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleList/aftersaleList.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的售后\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleList/aftersaleList.wxml",
    "content": "<view class=\"container\">\n  <view class=\"aftersales-switch\">\n    <view class=\"item {{ showType == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">申请中</view>\n    </view>\n    <view class=\"item {{ showType == 2 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='2'>\n      <view class=\"txt\">处理中</view>\n    </view>\n    <view class=\"item {{ showType == 3 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='3'>\n      <view class=\"txt\">已完成</view>\n    </view>\n    <view class=\"item {{ showType == 4 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='4'>\n      <view class=\"txt\">已拒绝</view>\n    </view>\n  </view>\n  <view class=\"no-aftersale\" wx:if=\"{{aftersaleList.length <= 0}}\">\n    <view class=\"c\">\n      <text>还没有呢</text>\n    </view>\n  </view>\n\n  <view class=\"aftersales\">\n    <navigator url=\"../aftersaleDetail/aftersaleDetail?id={{item.aftersale.orderId}}\" class=\"aftersale\" open-type=\"redirect\" wx:for=\"{{aftersaleList}}\" wx:key=\"id\">\n      <view class=\"h\">\n        <view class=\"l\">售后编号：{{item.aftersale.aftersaleSn}}</view>\n      </view>\n      <view class=\"goods\" wx:for=\"{{item.goodsList}}\" wx:key=\"id\" wx:for-item=\"gitem\">\n        <view class=\"img\">\n          <image src=\"{{gitem.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <text class=\"name\">{{gitem.goodsName}}</text>\n          <text class=\"number\">{{gitem.number}}件商品</text>\n        </view>\n        <view class=\"status\"></view>\n      </view>\n      <view class=\"b\">\n        <view class=\"l\">申请退款金额：￥{{item.aftersale.amount}}元</view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/aftersaleList/aftersaleList.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.aftersales-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n}\n\n.aftersales-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 18%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.aftersales-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #9a9ba1;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.aftersales-switch .item.active .txt {\n  color: #ab956d;\n  border-bottom: 4rpx solid #ab956d;\n}\n\n.no-aftersale {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-aftersale .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-aftersale .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.aftersales {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.aftersale {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.aftersale .h {\n  height: 83.3rpx;\n  line-height: 83.3rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.aftersale .h .l {\n  float: left;\n}\n\n.aftersale .h .r {\n  float: right;\n  color: #b4282d;\n  font-size: 24rpx;\n}\n\n.aftersale .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.aftersale .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.aftersale .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.aftersale .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.aftersale .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.aftersale .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.aftersale .goods .status {\n  width: 105rpx;\n  color: #b4282d;\n  font-size: 25rpx;\n}\n\n.aftersale .b {\n  height: 103rpx;\n  line-height: 103rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.aftersale .b .l {\n  float: left;\n}\n\n.aftersale .b .r {\n  float: right;\n}\n\n.aftersale .b .btn {\n  margin-top: 19rpx;\n  height: 64.5rpx;\n  line-height: 64.5rpx;\n  text-align: center;\n  padding: 0 20rpx;\n  border-radius: 5rpx;\n  font-size: 28rpx;\n  color: #fff;\n  background: #b4282d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/collect/collect.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    type: 0,\n    collectList: [],\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  getCollectList() {\n    wx.showLoading({\n      title: '加载中...',\n    });\n    let that = this;\n    util.request(api.CollectList, {\n      type: that.data.type,\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          collectList: that.data.collectList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n      }\n    }).finally(() => {\n      wx.hideLoading();\n    });\n  },\n  switchTab: function(event) {\n    let type = event.currentTarget.dataset.index;\n    this.setData({\n      collectList: [],\n      type,\n      page: 1,\n      limit: 10,\n      totalPages: 1\n    });\n    this.getCollectList();\n  },\n  onLoad: function(options) {\n    this.getCollectList();\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n      this.getCollectList();\n    } else {\n      wx.showToast({\n        title: '没有更多用户收藏了',\n        icon: 'none',\n        duration: 2000\n      });\n      return false;\n    }\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  openCollect(event) {\n    let that = this;\n    let index = event.currentTarget.dataset.index;\n    let valueId = this.data.collectList[index].valueId;\n\n    //触摸时间距离页面打开的毫秒数  \n    var touchTime = that.data.touchEnd - that.data.touchStart;\n    //如果按下时间大于350为长按  \n    if (touchTime > 350) {\n      wx.showModal({\n        title: '',\n        content: '确定删除吗？',\n        success: function(res) {\n          if (res.confirm) {\n\n            util.request(api.CollectAddOrDelete, {\n              type: that.data.type,\n              valueId: valueId\n            }, 'POST').then(function(res) {\n              if (res.errno === 0) {\n                wx.showToast({\n                  title: '删除成功',\n                  icon: 'success',\n                  duration: 2000\n                });\n                that.data.collectList.splice(index, 1)\n                that.setData({\n                  collectList: that.data.collectList\n                });\n              }\n            });\n          }\n        }\n      })\n    } else {\n      var prefix = '/pages/goods/goods?id='\n      if(this.data.type == 1){\n        prefix = \"/pages/topicDetail/topicDetail?id=\"\n      }\n      wx.navigateTo({\n        url: prefix + valueId,\n      });\n    }\n  },\n  //按下事件开始  \n  touchStart: function(e) {\n    let that = this;\n    that.setData({\n      touchStart: e.timeStamp\n    })\n  },\n  //按下事件结束  \n  touchEnd: function(e) {\n    let that = this;\n    that.setData({\n      touchEnd: e.timeStamp\n    })\n  },\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/collect/collect.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的收藏\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/collect/collect.wxml",
    "content": "<view class=\"container\">\n  <view class=\"collect-switch\">\n    <view class=\"item {{ type == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='0'>\n      <view class=\"txt\">商品收藏</view>\n    </view>\n    <view class=\"item {{ type == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">专题收藏</view>\n    </view>\n  </view>\n  <view class=\"no-collect\" wx:if=\"{{collectList.length <= 0}}\">\n    <view class=\"c\">\n      <text>还没有收藏</text>\n    </view>\n  </view>\n  <view class=\"{{type==0 ? 'goods-list' : 'topic-list'}}\" wx:else>\n    <view class=\"item\" bindtap=\"openCollect\" bindtouchstart=\"touchStart\" bindtouchend=\"touchEnd\" wx:for=\"{{collectList}}\" wx:key=\"id\" data-index=\"{{index}}\">\n      <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n      <view class=\"info\" wx:if=\"{{type==0}}\" >\n        <view class=\"name\">{{item.name}}</view>\n        <view class=\"subtitle\">{{item.brief}}</view>\n        <view class=\"price\">￥{{item.retailPrice}}</view>\n      </view>\n      <view class=\"info\" wx:if=\"{{type==1}}\">\n        <text class=\"title\">{{item.title}}</text>\n        <text class=\"desc\">{{item.subtitle}}</text>\n        <text class=\"price\">{{item.price}}元起</text>\n      </view>\n    </view>\n  </view>\n\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/collect/collect.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n.collect-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n}\n\n.collect-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.collect-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #9a9ba1;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.collect-switch .item.active .txt {\n  color: #ab956d;\n  border-bottom: 4rpx solid #ab956d;\n}\n\n.no-collect {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-collect .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-collect .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n/*商品收藏列表样式*/\n.goods-list {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding-left: 30rpx;\n  border-top: 1px solid #e1e1e1;\n}\n\n.goods-list .item {\n  height: 212rpx;\n  width: 720rpx;\n  background: #fff;\n  padding: 30rpx 30rpx 30rpx 0;\n  border-bottom: 1px solid #e1e1e1;\n}\n\n.goods-list .item:last-child {\n  border-bottom: 1px solid #fff;\n}\n\n.goods-list .item .img {\n  float: left;\n  width: 150rpx;\n  height: 150rpx;\n}\n\n.goods-list .item .info {\n  float: right;\n  width: 540rpx;\n  height: 150rpx;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  padding-left: 20rpx;\n}\n\n.goods-list .item .info .name {\n  font-size: 28rpx;\n  color: #333;\n  line-height: 40rpx;\n}\n\n.goods-list .item .info .subtitle {\n  margin-top: 8rpx;\n  font-size: 24rpx;\n  color: #888;\n  line-height: 40rpx;\n}\n\n.goods-list .item .info .price {\n  margin-top: 8rpx;\n  font-size: 28rpx;\n  color: #333;\n  line-height: 40rpx;\n}\n\n/*专题收藏列表样式*/\n\n.topic-list{\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.topic-list .item{\n  width: 100%;\n  height: 625rpx;\n  overflow: hidden;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.topic-list .img{\n  width: 100%;\n  height: 415rpx;\n}\n\n.topic-list .info{\n  width: 100%;\n  height: 210rpx;\n  overflow: hidden;\n}\n\n.topic-list .title{\n  display: block;\n  text-align: center;\n  width: 100%;\n  height: 33rpx;\n  line-height: 35rpx;\n  color: #333;\n  overflow: hidden;\n  font-size: 35rpx;\n  margin-top: 30rpx;\n}\n\n.topic-list .desc{\n  display: block;\n  text-align: center;\n  position: relative;\n  width: auto;\n  height: 24rpx;\n  line-height: 24rpx;\n  overflow: hidden;\n  color: #999;\n  font-size: 24rpx;\n  margin-top: 16rpx;\n  margin-bottom: 30rpx;\n}\n\n.topic-list .price{\n  display: block;\n  text-align: center;\n  width: 100%;\n  height: 27rpx;\n  line-height: 27rpx;\n  overflow: hidden;\n  color: #b4282d;\n  font-size: 27rpx;\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponList/couponList.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    couponList: [],\n    code: '',\n    status: 0,\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function(options) {\n    this.getCouponList();\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function() {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCouponList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom: function() {\n\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function() {\n\n  },\n  getCouponList: function() {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      couponList: []\n    });\n    util.request(api.CouponMyList, {\n      status: that.data.status,\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          couponList: res.data.list,\n          showPage: res.data.total > that.data.limit,\n          count: res.data.total\n        });\n      }\n    });\n\n  },\n  bindExchange: function (e) {\n    this.setData({\n      code: e.detail.value\n    });\n  },\n  clearExchange: function () {\n    this.setData({\n      code: ''\n    });\n  },\n  goExchange: function() {\n    if (this.data.code.length === 0) {\n      util.showErrorToast(\"请输入兑换码\");\n      return;\n    }\n\n    let that = this;\n    util.request(api.CouponExchange, {\n      code: that.data.code\n    }, 'POST').then(function (res) {\n      if (res.errno === 0) {\n        that.getCouponList();\n        that.clearExchange();\n        wx.showToast({\n          title: \"领取成功\",\n          duration: 2000\n        })\n      }\n      else{\n        util.showErrorToast(res.errmsg);\n      }\n    });\n  },\n  nextPage: function(event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getCouponList();\n\n  },\n  prevPage: function(event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getCouponList();\n  },\n  switchTab: function(e) {\n\n    this.setData({\n      couponList: [],\n      status: e.currentTarget.dataset.index,\n      page: 1,\n      limit: 10,\n      count: 0,\n      scrollTop: 0,\n      showPage: false\n    });\n\n    this.getCouponList();\n  },\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponList/couponList.json",
    "content": "{\n  \"enablePullDownRefresh\": true,\n  \"navigationBarTitleText\": \"我的优惠券\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponList/couponList.wxml",
    "content": "<view class=\"container\">\n\n  <view class=\"h\">\n    <view class=\"item {{ status == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index=\"0\">\n      <view class=\"txt\">未使用</view>\n    </view>\n    <view class=\"item {{ status == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index=\"1\">\n      <view class=\"txt\">已使用</view>\n    </view>\n    <view class=\"item {{ status == 2 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index=\"2\">\n      <view class=\"txt\">已过期</view>\n    </view>\n  </view>\n\n  <view class=\"b\">\n\n    <view class=\"coupon-form\" wx:if=\"{{status == 0}}\">\n      <view class=\"input-box\">\n        <input class=\"coupon-sn\" placeholder=\"请输入优惠码\" value=\"{{code}}\" bindinput=\"bindExchange\"/>\n        <van-icon name=\"close\" class=\"clear-icon\" wx:if=\"{{ code.length > 0 }}\" catchtap=\"clearExchange\"/>        \n      </view>\n      <view class=\"add-btn\" bindtap='goExchange'>兑换</view>\n    </view>\n\n    <view class=\"help\" wx:if=\"{{status == 0}}\">\n      <van-icon name=\"question-o\" />\n      使用说明\n    </view>\n\n    <scroll-view class=\"coupon-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n\n      <view class=\"item {{ status == 0 ? 'active' : ''}}\" wx:for=\"{{couponList}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n        <view class=\"tag\">{{item.tag}}</view>\n        <view class=\"content\">\n          <view class=\"left\">\n            <view class=\"discount\">{{item.discount}}元</view>\n            <view class=\"min\"> 满{{item.min}}元使用</view>\n          </view>\n          <view class=\"right\">\n            <view class=\"name\">{{item.name}}</view>\n            <view class=\"time\"> 有效期：{{item.startTime}} - {{item.endTime}}</view>\n          </view>\n        </view>\n        <view class=\"condition\">\n          <text class=\"txt\">{{item.desc}}</text>\n          <image src=\"{{item.pic}}\" class=\"icon\"></image>\n        </view>\n      </view>\n\n      <view class=\"page\" wx:if=\"{{showPage}}\">\n        <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n        <view class=\"next {{ (count / size) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n      </view>\n    </scroll-view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponList/couponList.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  padding-top: 30rpx;\n}\n\n.container .h {\n  position: fixed;\n  left: 0;\n  top: 0;\n  z-index: 1000;\n  width: 100%;\n  display: flex;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.container .h .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.container .h .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.container .h .item.active .txt {\n  color: #ab2b2b;\n  border-bottom: 4rpx solid #ab2b2b;\n}\n\n.container .b {\n  margin-top: 85rpx;\n  height: auto;\n}\n\n.container .b .coupon-form {\n  height: 110rpx;\n  width: 100%;\n  background: #fff;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n  padding-top: 20rpx;\n  display: flex;\n}\n\n.container .b .input-box {\n  flex: 1;\n  height: 70rpx;\n  color: #333;\n  font-size: 24rpx;\n  background: #fff;\n  position: relative;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4rpx;\n  margin-right: 30rpx;\n}\n\n.container .b .input-box .coupon-sn {\n  position: absolute;\n  top: 10rpx;\n  left: 30rpx;\n  height: 50rpx;\n  width: 100%;\n  color: #000;\n  line-height: 50rpx;\n  font-size: 24rpx;\n}\n\n.container .b .clear-icon {\n  position: absolute;\n  top: 25rpx;\n  right: 18rpx;\n  z-index: 2;\n  display: block;\n  background: #fff;\n}\n\n.container .b .add-btn {\n  height: 70rpx;\n  border: none;\n  width: 168rpx;\n  background: #b4282d;\n  border-radius: 0;\n  line-height: 70rpx;\n  color: #fff;\n  font-size: 28rpx;\n  text-align: center;\n}\n\n.container .b .add-btn.disabled {\n  background: #ccc;\n}\n\n.container .b .help {\n  height: 72rpx;\n  line-height: 72rpx;\n  text-align: right;\n  padding-right: 30rpx;\n  background-size: 28rpx;\n  color: #999;\n  font-size: 24rpx;\n}\n\n.container .b .coupon-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n}\n\n.container .b .item {\n  position: relative;\n  height: 290rpx;\n  background: #ccc7c7;\n  margin-bottom: 30rpx;\n  margin-left: 30rpx;\n  margin-right: 30rpx;\n  padding-top: 52rpx;\n}\n\n.container .b .item.active {\n  background: linear-gradient(to right, #cfa568, #e3bf79);\n}\n\n.container .b .tag {\n  height: 32rpx;\n  background: #a48143;\n  padding-left: 16rpx;\n  padding-right: 16rpx;\n  position: absolute;\n  left: 20rpx;\n  color: #fff;\n  top: 20rpx;\n  font-size: 20rpx;\n  text-align: center;\n  line-height: 32rpx;\n}\n\n.container .b .content {\n  margin-top: 24rpx;\n  margin-left: 40rpx;\n  display: flex;\n  margin-right: 40rpx;\n  flex-direction: row;\n}\n\n.container .b .content .left {\n  flex: 1;\n}\n\n.container .b .discount {\n  font-size: 50rpx;\n  color: #b4282d;\n}\n\n.container .b .min {\n  color: #fff;\n}\n\n.container .b .content .right {\n  width: 400rpx;\n}\n\n.container .b .name {\n  font-size: 44rpx;\n  color: #fff;\n  margin-bottom: 14rpx;\n}\n\n.container .b .time {\n  font-size: 24rpx;\n  color: #fff;\n  line-height: 30rpx;\n}\n\n.container .b .condition {\n  position: absolute;\n  width: 100%;\n  bottom: 0;\n  left: 0;\n  height: 78rpx;\n  background: rgba(0, 0, 0, 0.08);\n  padding: 24rpx 40rpx;\n  display: flex;\n  flex-direction: row;\n}\n\n.container .b .condition .txt {\n  display: block;\n  height: 30rpx;\n  flex: 1;\n  overflow: hidden;\n  font-size: 24rpx;\n  line-height: 30rpx;\n  color: #fff;\n}\n\n.container .b .condition .icon {\n  margin-left: 30rpx;\n  width: 24rpx;\n  height: 24rpx;\n}\n\n.container .b .page {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.container .b .page view {\n  height: 108rpx;\n  width: 50%;\n  float: left;\n  font-size: 29rpx;\n  color: #333;\n  text-align: center;\n  line-height: 108rpx;\n}\n\n.container .b .page .prev {\n  border-right: 1px solid #d9d9d9;\n}\n\n.container .b .page .disabled {\n  color: #ccc;\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponSelect/couponSelect.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    couponList: [],\n    cartId: 0,\n    couponId: 0,\n    userCouponId: 0,\n    grouponLinkId: 0,\n    scrollTop: 0\n  },\n\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function (options) {\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function () {\n    // 页面显示\n    wx.showLoading({\n      title: '加载中...',\n    });\n\n    try {\n      var cartId = wx.getStorageSync('cartId');\n      if (!cartId) {\n        cartId = 0;\n      }\n\n      var couponId = wx.getStorageSync('couponId');\n      if (!couponId) {\n        couponId = 0;\n      }\n\n      var userCouponId = wx.getStorageSync('userCouponId');\n      if (!userCouponId) {\n        userCouponId = 0;\n      }\n\n      var grouponRulesId = wx.getStorageSync('grouponRulesId');\n      if (!grouponRulesId) {\n        grouponRulesId = 0;\n      }\n\n      this.setData({\n        cartId: cartId,\n        couponId: couponId,\n        userCouponId: userCouponId,\n        grouponRulesId: grouponRulesId\n      });\n\n    } catch (e) {\n      // Do something when catch error\n      console.log(e);\n    }\n\n    this.getCouponList();\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function () {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function () {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh: function () {\n\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom() {\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function () {\n\n  },\n  getCouponList: function () {\n\n    let that = this;\n    that.setData({\n      couponList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.CouponSelectList, {\n      cartId: that.data.cartId,\n      grouponRulesId: that.data.grouponRulesId,\n    }).then(function (res) {\n      if (res.errno === 0) {\n        let list = [];\n        for (var i = 0; i < res.data.list.length; i++) {\n          if (res.data.list[i].available) {\n            list.push(res.data.list[i]);\n          }\n        }\n        that.setData({\n          couponList: list\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  selectCoupon: function (e) {\n    try {\n      wx.setStorageSync('couponId', e.currentTarget.dataset.cid);\n      wx.setStorageSync('userCouponId', e.currentTarget.dataset.id);\n    } catch (error) {\n\n    }\n    \n    wx.navigateBack();\n  },\n  unselectCoupon: function() {\n    // 如果优惠券ID设置-1，则表示订单不使用优惠券\n    try {\n      wx.setStorageSync('couponId', -1);\n      wx.setStorageSync('userCouponId', -1);\n    } catch (error) {\n\n    }\n\n    wx.navigateBack();\n  }\n\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponSelect/couponSelect.json",
    "content": "{\n  \"navigationBarTitleText\": \"选择优惠券\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/couponSelect/couponSelect.wxml",
    "content": "<view class=\"container\">\n\n  <scroll-view class=\"coupon-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n\n    <view class=\"unselect\" bindtap='unselectCoupon'>不选择优惠券</view>\n\n    <view class=\"item\" wx:for=\"{{couponList}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\" bindtap=\"selectCoupon\" data-id=\"{{item.id}}\" data-cid=\"{{item.cid}}\">\n      <view class=\"tag\">{{item.tag}}</view>\n      <view class=\"content\">\n        <view class=\"left\">\n          <view class=\"discount\">{{item.discount}}元</view>\n          <view class=\"min\"> 满{{item.min}}元使用</view>\n        </view>\n        <view class=\"right\">\n          <view class=\"name\">{{item.name}}</view>\n          <view class=\"time\"> 有效期：{{item.startTime}} - {{item.endTime}}</view>\n        </view>\n      </view>\n      <view class=\"condition\">\n        <text class=\"txt\">{{item.desc}}</text>\n        <image src=\"{{item.pic}}\" class=\"icon\"></image>\n      </view>\n    </view>\n\n  </scroll-view>\n</view>  "
  },
  {
    "path": "litemall-wx/pages/ucenter/couponSelect/couponSelect.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  padding-top: 30rpx;\n}\n\n.coupon-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n}\n\n.unselect {\n  height: 80rpx;\n  border: none;\n  width: 700rpx;\n  background: #28b43b;\n  color: #fff;\n  font-size: 40rpx;\n  text-align: center;\n  margin-bottom: 30rpx;\n  margin-left: 30rpx;\n  margin-right: 30rpx;\n  line-height: 80rpx;\n}\n\n.item {\n  position: relative;\n  height: 290rpx;\n  width: 700rpx;\n  background: linear-gradient(to right, #cfa568, #e3bf79);\n  margin-bottom: 30rpx;\n  margin-left: 30rpx;\n  margin-right: 30rpx;\n  padding-top: 52rpx;\n}\n\n.tag {\n  height: 32rpx;\n  background: #a48143;\n  padding-left: 16rpx;\n  padding-right: 16rpx;\n  position: absolute;\n  left: 20rpx;\n  color: #fff;\n  top: 20rpx;\n  font-size: 20rpx;\n  text-align: center;\n  line-height: 32rpx;\n}\n\n.content {\n  margin-top: 24rpx;\n  margin-left: 40rpx;\n  display: flex;\n  margin-right: 40rpx;\n  flex-direction: row;\n}\n\n.content .left {\n  flex: 1;\n}\n\n.discount {\n  font-size: 50rpx;\n  color: #b4282d;\n}\n\n.min {\n  color: #fff;\n}\n\n.content .right {\n  width: 400rpx;\n}\n\n.name {\n  font-size: 44rpx;\n  color: #fff;\n  margin-bottom: 14rpx;\n}\n\n.time {\n  font-size: 24rpx;\n  color: #fff;\n  line-height: 30rpx;\n}\n\n.condition {\n  position: absolute;\n  width: 100%;\n  bottom: 0;\n  left: 0;\n  height: 78rpx;\n  background: rgba(0, 0, 0, 0.08);\n  padding: 24rpx 40rpx;\n  display: flex;\n  flex-direction: row;\n}\n\n.condition .txt {\n  display: block;\n  height: 30rpx;\n  flex: 1;\n  overflow: hidden;\n  font-size: 24rpx;\n  line-height: 30rpx;\n  color: #fff;\n}\n\n.condition .icon {\n  margin-left: 30rpx;\n  width: 24rpx;\n  height: 24rpx;\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/feedback/feedback.js",
    "content": "var util = require('../../../utils/util.js');\nvar check = require('../../../utils/check.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    array: ['请选择反馈类型', '商品相关', '功能异常', '优化建议', '其他'],\n    index: 0,\n    content: '',\n    contentLength: 0,\n    mobile: '',\n    hasPicture: false,\n    picUrls: [],\n    files: []\n  },\n  chooseImage: function(e) {\n    if (this.data.files.length >= 5) {\n      util.showErrorToast('只能上传五张图片')\n      return false;\n    }\n\n    var that = this;\n    wx.chooseImage({\n      count: 1,\n      sizeType: ['original', 'compressed'],\n      sourceType: ['album', 'camera'],\n      success: function(res) {\n        that.setData({\n          files: that.data.files.concat(res.tempFilePaths)\n        });\n        that.upload(res);\n      }\n    })\n  },\n  upload: function(res) {\n    var that = this;\n    const uploadTask = wx.uploadFile({\n      url: api.StorageUpload,\n      filePath: res.tempFilePaths[0],\n      name: 'file',\n      success: function(res) {\n        var _res = JSON.parse(res.data);\n        if (_res.errno === 0) {\n          var url = _res.data.url\n          that.data.picUrls.push(url)\n          that.setData({\n            hasPicture: true,\n            picUrls: that.data.picUrls\n          })\n        }\n      },\n      fail: function(e) {\n        wx.showModal({\n          title: '错误',\n          content: '上传失败',\n          showCancel: false\n        })\n      },\n    })\n\n    uploadTask.onProgressUpdate((res) => {\n      console.log('上传进度', res.progress)\n      console.log('已经上传的数据长度', res.totalBytesSent)\n      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)\n    })\n\n  },\n  previewImage: function(e) {\n    wx.previewImage({\n      current: e.currentTarget.id, // 当前显示图片的http链接\n      urls: this.data.files // 需要预览的图片http链接列表\n    })\n  },\n  bindPickerChange: function(e) {\n    this.setData({\n      index: e.detail.value\n    });\n  },\n  mobileInput: function(e) {\n    this.setData({\n      mobile: e.detail.value\n    });\n  },\n  contentInput: function(e) {\n    this.setData({\n      contentLength: e.detail.cursor,\n      content: e.detail.value,\n    });\n  },\n  clearMobile: function(e) {\n    this.setData({\n      mobile: ''\n    });\n  },\n  submitFeedback: function(e) {\n    if (!app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    }\n\n    let that = this;\n    if (that.data.index == 0) {\n      util.showErrorToast('请选择反馈类型');\n      return false;\n    }\n\n    if (that.data.content == '') {\n      util.showErrorToast('请输入反馈内容');\n      return false;\n    }\n\n    if (that.data.mobile == '') {\n      util.showErrorToast('请输入手机号码');\n      return false;\n    }\n\n    wx.showLoading({\n      title: '提交中...',\n      mask: true,\n      success: function() {\n\n      }\n    });\n\n    util.request(api.FeedbackAdd, {\n      mobile: that.data.mobile,\n      feedType: that.data.array[that.data.index],\n      content: that.data.content,\n      hasPicture: that.data.hasPicture,\n      picUrls: that.data.picUrls\n    }, 'POST').then(function(res) {\n      wx.hideLoading();\n\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '感谢您的反馈！',\n          icon: 'success',\n          duration: 2000,\n          complete: function() {\n            that.setData({\n              index: 0,\n              content: '',\n              contentLength: 0,\n              mobile: '',\n              hasPicture: false,\n              picUrls: [],\n              files: []\n            });\n          }\n        });\n      } else {\n        util.showErrorToast(res.errmsg);\n      }\n\n    });\n  },\n  onLoad: function(options) {\n\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/feedback/feedback.json",
    "content": "{\n  \"navigationBarTitleText\": \"意见反馈\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/feedback/feedback.wxml",
    "content": "<view class=\"container\">\n\n  <picker bindchange=\"bindPickerChange\" value=\"{{index}}\" range=\"{{array}}\">\n    <view class=\"picker\">\n      <view class=\"fb-type\">\n        <view class=\"type-label\">{{array[index]}}</view>\n        <van-icon class=\"type-icon\" name=\"arrow-down\" />        \n      </view>\n    </view>\n  </picker>\n  <view class=\"fb-body\">\n    <textarea class=\"content\" placeholder=\"对我们网站、商品、服务，你还有什么建议吗？你还希望在商城上买到什么？请告诉我们...\" bindinput=\"contentInput\" maxlength=\"500\" auto-focus=\"true\" value=\"{{content}}\" />\n    <view class=\"weui-uploader__files\" id=\"uploaderFiles\">\n      <block wx:for=\"{{files}}\" wx:key=\"*this\">\n        <view class=\"weui-uploader__file\" bindtap=\"previewImage\" id=\"{{item}}\">\n          <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n        </view>\n      </block>\n      <view class=\"weui-uploader__input-box\" wx:if=\"{{ files.length < 5 }}\">\n        <view class=\"weui-uploader__input\" bindtap=\"chooseImage\"></view>\n      </view>\n    </view>\n    <view class=\"text-count\">{{contentLength}}/500</view>\n  </view>\n  <view class=\"fb-mobile\">\n    <view class=\"label\">手机号码</view>\n    <view class=\"mobile-box\">\n      <input class=\"mobile\" maxlength=\"11\" type=\"number\" placeholder=\"方便我们与你联系\" bindinput=\"mobileInput\" value=\"{{mobile}}\" />\n      <van-icon class=\"clear-icon\" name=\"close\" wx:if=\"{{ mobile.length > 0 }}\" catchtap=\"clearMobile\"/>\n    </view>\n  </view>\n\n  <view class=\"fb-btn\" bindtap=\"submitFeedback\">提交</view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/feedback/feedback.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  padding-top: 30rpx;\n}\n\n.fb-type {\n  height: 104rpx;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 20rpx;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n}\n\n.fb-type .type-label {\n  height: 36rpx;\n  flex: 1;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.fb-type .type-icon {\n  height: 36rpx;\n  width: 36rpx;\n}\n\n.fb-body {\n  width: 100%;\n  background: #fff;\n  height: 600rpx;\n  padding: 18rpx 30rpx 64rpx 30rpx;\n}\n\n.fb-body .content {\n  width: 100%;\n  height: 400rpx;\n  color: #333;\n  line-height: 40rpx;\n  font-size: 28rpx;\n}\n\n.weui-uploader__files {\n  width: 100%;\n}\n\n.weui-uploader__file {\n  float: left;\n  margin-right: 9px;\n  margin-bottom: 9px;\n}\n\n.weui-uploader__img {\n  display: block;\n  width: 50px;\n  height: 50px;\n}\n\n.weui-uploader__input-box {\n  float: left;\n  position: relative;\n  margin-right: 9px;\n  margin-bottom: 9px;\n  width: 50px;\n  height: 50px;\n  border: 1px solid #d9d9d9;\n}\n\n.weui-uploader__input-box:after, .weui-uploader__input-box:before {\n  content: \" \";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  background-color: #d9d9d9;\n}\n\n.weui-uploader__input-box:before {\n  width: 2px;\n  height: 39.5px;\n}\n\n.weui-uploader__input-box:after {\n  width: 39.5px;\n  height: 2px;\n}\n\n.weui-uploader__input-box:active {\n  border-color: #999;\n}\n\n.weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before {\n  background-color: #999;\n}\n\n.weui-uploader__input {\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n\n.fb-body .text-count {\n  line-height: 30rpx;\n  float: right;\n  color: #666;\n  font-size: 24rpx;\n}\n\n.fb-mobile {\n  height: 162rpx;\n  width: 100%;\n}\n\n.fb-mobile .label {\n  height: 58rpx;\n  width: 100%;\n  padding-top: 14rpx;\n  padding-bottom: 11rpx;\n  color: #7f7f7f;\n  font-size: 24rpx;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n  line-height: 33rpx;\n}\n\n.fb-mobile .mobile-box {\n  height: 104rpx;\n  width: 100%;\n  color: #333;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n  font-size: 24rpx;\n  background: #fff;\n  position: relative;\n}\n\n.fb-mobile .mobile {\n  position: absolute;\n  top: 27rpx;\n  left: 30rpx;\n  height: 50rpx;\n  width: 100%;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 24rpx;\n}\n\n.fb-mobile .clear-icon {\n  position: absolute;\n  top: 27rpx;\n  right: 30rpx;\n  width: 48rpx;\n  height: 48rpx;\n  z-index: 2;\n}\n\n.fb-btn {\n  right: 0;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  width: 80%;\n  height: 90rpx;\n  line-height: 98rpx;\n  position: absolute;\n  bottom: 0;\n  left: 0;\n  border-radius: 0;\n  padding: 0;\n  margin: 0;\n  margin-left: 10%;\n  text-align: center;\n  /* padding-left: -5rpx; */\n  font-size: 25rpx;\n  color: #f4f4f4;\n  border-top-left-radius: 50rpx;\n  border-bottom-left-radius: 50rpx;\n  border-top-right-radius: 50rpx;\n  border-bottom-right-radius: 50rpx;\n  letter-spacing: 3rpx;\n  background-image: linear-gradient(to right, #9a9ba1 0%, #9a9ba1 100%);\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/footprint/footprint.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    footprintList: [],\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  getFootprintList() {\n    wx.showLoading({\n      title: '加载中...',\n    });\n    let that = this;\n    util.request(api.FootprintList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        let f1 = that.data.footprintList;\n        let f2 = res.data.list;\n        for (let i = 0; i < f2.length; i++) {\n          f2[i].addDate = f2[i].addTime.substring(0, 10)\n          let last = f1.length - 1;\n          if (last >= 0 && f1[last][0].addDate === f2[i].addDate) {\n            f1[last].push(f2[i]);\n          } else {\n            let tmp = [];\n            tmp.push(f2[i])\n            f1.push(tmp);\n          }\n        }\n\n        that.setData({\n          footprintList: f1,\n          totalPages: res.data.pages\n        });\n      }\n      wx.hideLoading();\n    });\n  },\n  deleteItem(event) {\n    let that = this;\n    let index = event.currentTarget.dataset.index;\n    let iindex = event.currentTarget.dataset.iindex;\n    let footprintId = this.data.footprintList[index][iindex].id;\n    let goodsId = this.data.footprintList[index][iindex].goodsId;\n    var touchTime = that.data.touchEnd - that.data.touchStart;\n    console.log(touchTime);\n    //如果按下时间大于350为长按  \n    if (touchTime > 350) {\n      wx.showModal({\n        title: '',\n        content: '要删除所选足迹？',\n        success: function(res) {\n          if (res.confirm) {\n            util.request(api.FootprintDelete, {\n              id: footprintId\n            }, 'POST').then(function(res) {\n              if (res.errno === 0) {\n                wx.showToast({\n                  title: '删除成功',\n                  icon: 'success',\n                  duration: 2000\n                });\n                that.data.footprintList[index].splice(iindex, 1)\n                if (that.data.footprintList[index].length == 0) {\n                  that.data.footprintList.splice(index, 1)\n                }\n                that.setData({\n                  footprintList: that.data.footprintList\n                });\n              }\n            });\n          }\n        }\n      });\n    } else {\n      wx.navigateTo({\n        url: '/pages/goods/goods?id=' + goodsId,\n      });\n    }\n\n  },\n  onLoad: function(options) {\n    this.getFootprintList();\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n      this.getFootprintList();\n    } else {\n      wx.showToast({\n        title: '没有更多用户足迹了',\n        icon: 'none',\n        duration: 2000\n      });\n      return false;\n    }\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  //按下事件开始  \n  touchStart: function(e) {\n    let that = this;\n    that.setData({\n      touchStart: e.timeStamp\n    })\n    console.log(e.timeStamp + '- touchStart')\n  },\n  //按下事件结束  \n  touchEnd: function(e) {\n    let that = this;\n    that.setData({\n      touchEnd: e.timeStamp\n    })\n    console.log(e.timeStamp + '- touchEnd')\n  },\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/footprint/footprint.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的足迹\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/footprint/footprint.wxml",
    "content": "<view class=\"container\">\n  <view class=\"no-footprint\" wx:if=\"{{footprintList.length <= 0}}\">\n    <view class=\"c\">\n      <text>没有浏览足迹</text>\n    </view>\n  </view>\n  <view class=\"footprint\" wx:if=\"{{footprintList.length > 0}}\">\n    <view class=\"day-item\" wx:for=\"{{footprintList}}\" wx:key=\"*this\" wx:for-index=\"index\">\n      <view class=\"day-hd\" wx:if=\"{{item.length > 0}}\">{{item[0].addDate}}</view>\n      <view class=\"day-list\" wx:if=\"{{item.length > 0}}\">\n        <view class=\"item\" data-index=\"{{index}}\" data-iindex=\"{{iindex}}\" bindtouchstart=\"touchStart\" bindtouchend=\"touchEnd\" bindtap=\"deleteItem\" wx:for=\"{{item}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\"></image>\n          <view class=\"info\">\n            <view class=\"name\">{{iitem.name}}</view>\n            <view class=\"subtitle\">{{iitem.brief}}</view>\n            <view class=\"price\">￥{{iitem.retailPrice}}</view>\n          </view>\n        </view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/footprint/footprint.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.no-footprint {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-footprint .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-footprint .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.footprint {\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n  border-top: 1px solid #e1e1e1;\n}\n\n.day-item {\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n  margin-bottom: 20rpx;\n}\n\n.day-hd {\n  height: 94rpx;\n  width: 100%;\n  line-height: 94rpx;\n  background: #fff;\n  padding-left: 30rpx;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.day-list {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding-left: 30rpx;\n  border-top: 1px solid #e1e1e1;\n}\n\n.item {\n  height: 212rpx;\n  width: 720rpx;\n  background: #fff;\n  padding: 30rpx 30rpx 30rpx 0;\n  border-bottom: 1px solid #e1e1e1;\n}\n\n.item:last-child {\n  border-bottom: 1px solid #fff;\n}\n\n.item .img {\n  float: left;\n  width: 150rpx;\n  height: 150rpx;\n}\n\n.item .info {\n  float: right;\n  width: 540rpx;\n  height: 150rpx;\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  padding-left: 20rpx;\n}\n\n.item .info .name {\n  font-size: 28rpx;\n  color: #333;\n  line-height: 40rpx;\n}\n\n.item .info .subtitle {\n  margin-top: 8rpx;\n  font-size: 24rpx;\n  color: #888;\n  line-height: 40rpx;\n}\n\n.item .info .price {\n  margin-top: 8rpx;\n  font-size: 28rpx;\n  color: #333;\n  line-height: 40rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/index/index.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar user = require('../../../utils/user.js');\nvar app = getApp();\n\nPage({\n  data: {\n    userInfo: {\n      nickName: '点击登录',\n      avatarUrl: '/static/images/my.png'\n    },\n    order: {\n      unpaid: 0,\n      unship: 0,\n      unrecv: 0,\n      uncomment: 0\n    },\n    hasLogin: false\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n    //获取用户的登录信息\n    if (app.globalData.hasLogin) {\n      let userInfo = wx.getStorageSync('userInfo');\n      this.setData({\n        userInfo: userInfo,\n        hasLogin: true\n      });\n\n      let that = this;\n      util.request(api.UserIndex).then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            order: res.data.order\n          });\n        }\n      });\n    }\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  goLogin() {\n    if (!this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    }\n  },\n  goOrder() {\n    if (this.data.hasLogin) {\n      try {\n        wx.setStorageSync('tab', 0);\n      } catch (e) {\n\n      }\n      wx.navigateTo({\n        url: \"/pages/ucenter/order/order\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    }\n  },\n  goOrderIndex(e) {\n    if (this.data.hasLogin) {\n      let tab = e.currentTarget.dataset.index\n      let route = e.currentTarget.dataset.route\n      try {\n        wx.setStorageSync('tab', tab);\n      } catch (e) {\n\n      }\n      wx.navigateTo({\n        url: route,\n        success: function(res) {},\n        fail: function(res) {},\n        complete: function(res) {},\n      })\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goCoupon() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/couponList/couponList\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goGroupon() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/groupon/myGroupon/myGroupon\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goCollect() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/collect/collect\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goFeedback(e) {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/feedback/feedback\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goFootprint() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/footprint/footprint\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goAddress() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/address/address\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  bindPhoneNumber: function(e) {\n    if (e.detail.errMsg !== \"getPhoneNumber:ok\") {\n      // 拒绝授权\n      return;\n    }\n\n    if (!this.data.hasLogin) {\n      wx.showToast({\n        title: '绑定失败：请先登录',\n        icon: 'none',\n        duration: 2000\n      });\n      return;\n    }\n\n    util.request(api.AuthBindPhone, {\n      iv: e.detail.iv,\n      encryptedData: e.detail.encryptedData\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '绑定手机号码成功',\n          icon: 'success',\n          duration: 2000\n        });\n      }\n    });\n  },\n  goAfterSale: function() {\n    if (this.data.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/aftersaleList/aftersaleList\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  aboutUs: function() {\n    wx.navigateTo({\n      url: '/pages/about/about'\n    });\n  },\n  goHelp: function () {\n    wx.navigateTo({\n      url: '/pages/help/help'\n    });\n  },  \n  exitLogin: function() {\n    wx.showModal({\n      title: '',\n      confirmColor: '#b4282d',\n      content: '退出登录？',\n      success: function(res) {\n        if (!res.confirm) {\n          return;\n        }\n\n        util.request(api.AuthLogout, {}, 'POST');\n        app.globalData.hasLogin = false;\n        wx.removeStorageSync('token');\n        wx.removeStorageSync('userInfo');\n        wx.reLaunch({\n          url: '/pages/index/index'\n        });\n      }\n    })\n\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/index/index.json",
    "content": "{\n  \"backgroundColor\": \"#f4f4f4\",\n  \"navigationBarTitleText\": \"个人中心\",\n  \"enablePullDownRefresh\": false\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/index/index.wxml",
    "content": "<view class=\"container\">\n  <view class=\"profile-info\" bindtap=\"goLogin\">\n    <image class=\"avatar\" src=\"{{userInfo.avatarUrl}}\"></image>\n    <view class=\"info\">\n      <text class=\"name\">{{userInfo.nickName}}</text>\n    </view>\n  </view>\n\n  <view class='separate'></view>\n\n  <view class='user_area'>\n    <view class='user_row' bindtap='goOrder'>\n      <view class='user_row_left'>我的订单</view>\n      <van-icon class='user_row_right' name=\"arrow\" />      \n    </view>\n    <view class='user_column'>\n      <view class='user_column_item' bindtap='goOrderIndex' data-index='1' data-route='/pages/ucenter/order/order'>\n        <text class=\"user_column_item_badge\" wx:if=\"{{order.unpaid != 0}}\">{{order.unpaid}}</text>\n        <image class='user_column_item_image' src='/static/images/pendpay.png'>\n        </image>\n        <view class='user_column_item_text'>待付款</view>\n      </view>\n      <view class='user_column_item' bindtap='goOrderIndex' data-index='2' data-route='/pages/ucenter/order/order'>\n        <text class=\"user_column_item_badge\" wx:if=\"{{order.unship != 0}}\">{{order.unship}}</text>\n        <image class='user_column_item_image' src='/static/images/send.png'></image>\n        <view class='user_column_item_text'>待发货</view>\n      </view>\n      <view class='user_column_item' bindtap='goOrderIndex' data-index='3' data-route='/pages/ucenter/order/order'>\n        <text class=\"user_column_item_badge\" wx:if=\"{{order.unrecv != 0}}\">{{order.unrecv}}</text>\n        <image class='user_column_item_image' src='/static/images/receive.png'></image>\n        <view class='user_column_item_text'>待收货</view>\n      </view>\n      <view class='user_column_item' bindtap='goOrderIndex' data-index='4' data-route='/pages/ucenter/order/order'>\n        <text class=\"user_column_item_badge\" wx:if=\"{{order.uncomment != 0}}\">{{order.uncomment}}</text>\n        <image class='user_column_item_image' src='/static/images/comment.png'></image>\n        <view class='user_column_item_text'>待评价</view>\n      </view>\n      <view class='user_column_item' bindtap='goAfterSale'>\n        <image class='user_column_item_image' src='/static/images/aftersale.png'></image>\n        <view class='user_column_item_text'>售后</view>\n      </view>\n    </view>\n  </view>\n\n  <view class='separate'></view>\n\n  <view class='user_row'>\n    <view class='user_row_left'>核心服务</view>\n  </view>\n  <view class='user_column'>\n\n    <view class='user_column_item' bindtap='goCoupon'>\n      <image class='user_column_item_image' src='/static/images/coupon.png'></image>\n      <view class='user_column_item_text'>优惠卷</view>\n    </view>\n    <view class='user_column_item' bindtap='goCollect'>\n      <image class='user_column_item_image' src='/static/images/collect.png'></image>\n      <view class='user_column_item_text'>收藏夹</view>\n    </view>\n    <view class='user_column_item' bindtap='goFootprint'>\n      <image class='user_column_item_image' src='/static/images/footprint.png'></image>\n      <view class='user_column_item_text'>浏览足迹</view>\n    </view>\n    <view class='user_column_item' bindtap='goGroupon'>\n      <image class='user_column_item_image' src='/static/images/group.png'></image>\n      <view class='user_column_item_text'>我的拼团</view>\n    </view>\n\n    <view class='user_column_item' bindtap='goAddress'>\n      <image class='user_column_item_image' src='/static/images/address.png'></image>\n      <view class='user_column_item_text'>地址管理</view>\n    </view>\n  </view>\n  <view class='separate'></view>\n\n  <view class='user_row'>\n    <view class='user_row_left'>必备工具</view>\n  </view>\n  <view class='user_column'>\n\n    <button class=\"user_column_item_phone\" open-type=\"getPhoneNumber\" bindgetphonenumber=\"bindPhoneNumber\">\n      <image class='user_column_item_image' src='/static/images/mobile.png'></image>\n      <view class='user_column_item_text'>绑定手机</view>\n    </button>\n    <view class='user_column_item' bindtap='goHelp'>\n      <image class='user_column_item_image' src='/static/images/help.png'></image>\n      <view class='user_column_item_text'>帮助中心</view>\n    </view>\n    <view class='user_column_item' bindtap='goFeedback'>\n      <image class='user_column_item_image' src='/static/images/feedback.png'></image>\n      <view class='user_column_item_text'>意见反馈</view>\n    </view>\n    <view class='user_column_item'>\n      <contact-button style=\"opacity:0;position:absolute;\" type=\"default-dark\" session-from=\"weapp\" size=\"27\">\n      </contact-button>\n      <image class='user_column_item_image' src='/static/images/customer.png'></image>\n      <view class='user_column_item_text'>联系客服</view>\n    </view>\n    <view class='user_column_item' bindtap='aboutUs'>\n      <image class='user_column_item_image' src='/static/images/about.png'></image>\n      <view class='user_column_item_text'>关于我们</view>\n    </view>\n  </view>\n  <view class='separate'></view>\n\n  <view class=\"logout\" wx:if=\"{{hasLogin}}\" bindtap=\"exitLogin\">退出登录</view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/index/index.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.container {\n  background: #f4f4f4;\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n}\n\n.profile-info {\n  background-color: #ab956d;\n  color: #f4f4f4;\n  display: flex;\n  align-items: center;\n  padding: 30rpx;\n  font-size: 28rpx;\n}\n\n.profile-info .avatar {\n  height: 148rpx;\n  width: 148rpx;\n  border-radius: 50%;\n}\n\n.profile-info .info {\n  flex: 1;\n  height: 85rpx;\n  padding-left: 31.25rpx;\n}\n\n.profile-info .name {\n  display: block;\n  height: 45rpx;\n  line-height: 45rpx;\n  color: #fff;\n  font-size: 37.5rpx;\n  margin-bottom: 10rpx;\n}\n\n.profile-info .level {\n  display: block;\n  height: 30rpx;\n  line-height: 30rpx;\n  margin-bottom: 10rpx;\n  color: #7f7f7f;\n  font-size: 30rpx;\n}\n\n.user_area {\n  /* border: 1px solid black; */\n  width: 100%;\n  height: 226rpx;\n  /* margin: 0 auto; */\n  margin-top: -8rpx;\n  background: #fff;\n  /* border-top: 1px solid #f4f4f4; */\n}\n\n.user_row {\n  /* border: 1px solid black; */\n  height: 86rpx;\n  line-height: 86rpx;\n  border-bottom: 1px solid #fafafa;\n}\n\n.user_row_left {\n  /* border: 1px solid #757575; */\n  float: left;\n  height: 86rpx;\n  font-weight: 550;\n  line-height: 86rpx;\n  margin-left: 35rpx;\n  font-size: 26rpx;\n  letter-spacing: 1rpx;\n}\n\n.user_row_right {\n  /* border: 1px solid #757575; */\n  float: right;\n  height: 40rpx;\n  width: 40rpx;\n  font-weight: 550;\n  line-height: 86rpx;\n  margin-top: 28rpx;\n  margin-right: 30rpx;\n}\n\n.user_column {\n  /* border: 1px solid black; */\n  height: 140rpx;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.user_column_item {\n  width: 30%;\n  height: 140rpx;\n  background: #fff;\n  text-align: center;\n  position: relative;\n}\n\n.user_column_item_badge {\n  height: 28rpx;\n  width: 28rpx;\n  position: absolute;\n  background: #b4282d;\n  color: #fff;\n  border-radius: 50%;\n  margin-top: 20rpx;\n  margin-left: 40rpx;\n}\n\n.user_column_item_image {\n  width: 50rpx;\n  height: 50rpx;\n  margin-top: 30rpx;\n}\n\n.user_column_item_text {\n  /* border: 1px solid black; */\n  margin-top: 5rpx;\n  font-size: 24rpx;\n  color: #555;\n}\n\n.separate {\n  background: #e0e3da;\n  width: 100%;\n  height: 6rpx;\n}\n\n.user_column_item_phone {\n  width: 30%;\n  height: 140rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex-wrap: wrap;\n  float: left;\n  background: #fff;\n  border-radius: 0;\n}\n\n.user_column_item_phone::after {\n  border: none;\n  border-radius: 0;\n}\n\n.logout {\n  margin-top: 30rpx;\n  height: 100rpx;\n  width: 100%;\n  line-height: 100rpx;\n  text-align: center;\n  background: #fff;\n  color: red;\n  font-size: 30rpx;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/order/order.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderList: [],\n    showType: 0,\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    let that = this\n    try {\n      var tab = wx.getStorageSync('tab');\n\n      this.setData({\n        showType: tab\n      });\n    } catch (e) {}\n\n  },\n  getOrderList() {\n    let that = this;\n    util.request(api.OrderList, {\n      showType: that.data.showType,\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        that.setData({\n          orderList: that.data.orderList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n      }\n    });\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n      this.getOrderList();\n    } else {\n      wx.showToast({\n        title: '没有更多订单了',\n        icon: 'none',\n        duration: 2000\n      });\n      return false;\n    }\n  },\n  switchTab: function(event) {\n    let showType = event.currentTarget.dataset.index;\n    this.setData({\n      orderList: [],\n      showType: showType,\n      page: 1,\n      limit: 10,\n      totalPages: 1\n    });\n    this.getOrderList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getOrderList();\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/order/order.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的订单\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/order/order.wxml",
    "content": "<view class=\"container\">\n  <view class=\"orders-switch\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='0'>\n      <view class=\"txt\">全部</view>\n    </view>\n    <view class=\"item {{ showType == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">待付款</view>\n    </view>\n    <view class=\"item {{ showType == 2 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='2'>\n      <view class=\"txt\">待发货</view>\n    </view>\n    <view class=\"item {{ showType == 3 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='3'>\n      <view class=\"txt\">待收货</view>\n    </view>\n    <view class=\"item {{ showType == 4 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='4'>\n      <view class=\"txt\">待评价</view>\n    </view>\n  </view>\n  <view class=\"no-order\" wx:if=\"{{orderList.length <= 0}}\">\n    <view class=\"c\">\n      <text>还没有任何订单呢</text>\n    </view>\n  </view>\n\n  <view class=\"orders\">\n    <navigator url=\"../orderDetail/orderDetail?id={{item.id}}\" class=\"order\" open-type=\"redirect\" wx:for=\"{{orderList}}\" wx:key=\"id\">\n      <view class=\"h\">\n        <view class=\"l\">订单编号：{{item.orderSn}}</view>\n        <view class=\"r\">{{item.orderStatusText}}</view>\n      </view>\n      <view class=\"goods\" wx:for=\"{{item.goodsList}}\" wx:key=\"id\" wx:for-item=\"gitem\">\n        <view class=\"img\">\n          <image src=\"{{gitem.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <text class=\"name\">{{gitem.goodsName}}</text>\n          <text class=\"number\">共{{gitem.number}}件商品</text>\n        </view>\n        <view class=\"status\"></view>\n      </view>\n      <view class=\"b\">\n        <view class=\"l\">实付：￥{{item.actualPrice}}</view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/order/order.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.orders-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n  /* border-bottom: 1px solid rgba(0,0,0,.15); */\n}\n\n.orders-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 18%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.orders-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #9a9ba1;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.orders-switch .item.active .txt {\n  color: #ab956d;\n  border-bottom: 4rpx solid #ab956d;\n}\n\n.no-order {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-order .c {\n  width: 100%;\n  height: auto;\n  margin-top: 400rpx;\n}\n\n.no-order .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.orders {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.order {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order .h {\n  height: 83.3rpx;\n  line-height: 83.3rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .h .l {\n  float: left;\n}\n\n.order .h .r {\n  float: right;\n  color: #b4282d;\n  font-size: 24rpx;\n}\n\n.order .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.order .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.order .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.order .goods .status {\n  width: 105rpx;\n  color: #b4282d;\n  font-size: 25rpx;\n}\n\n.order .b {\n  height: 103rpx;\n  line-height: 103rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .b .l {\n  float: left;\n}\n\n.order .b .r {\n  float: right;\n}\n\n.order .b .btn {\n  margin-top: 19rpx;\n  height: 64.5rpx;\n  line-height: 64.5rpx;\n  text-align: center;\n  padding: 0 20rpx;\n  border-radius: 5rpx;\n  font-size: 28rpx;\n  color: #fff;\n  background: #b4282d;\n}\n"
  },
  {
    "path": "litemall-wx/pages/ucenter/orderDetail/orderDetail.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderId: 0,\n    orderInfo: {},\n    orderGoods: [],\n    expressInfo: {},\n    flag: false,\n    handleOption: {}\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.id\n    });\n    this.getOrderDetail();\n  },\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getOrderDetail();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  expandDetail: function() {\n    let that = this;\n    this.setData({\n      flag: !that.data.flag\n    })\n  },\n  getOrderDetail: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.OrderDetail, {\n      orderId: that.data.orderId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        that.setData({\n          orderInfo: res.data.orderInfo,\n          orderGoods: res.data.orderGoods,\n          handleOption: res.data.orderInfo.handleOption,\n          expressInfo: res.data.expressInfo\n        });\n      }\n\n      wx.hideLoading();\n    });\n  },\n  // “去付款”按钮点击效果\n  payOrder: function() {\n    let that = this;\n    util.request(api.OrderPrepay, {\n      orderId: that.data.orderId\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        const payParam = res.data;\n        console.log(\"支付过程开始\");\n        wx.requestPayment({\n          'timeStamp': payParam.timeStamp,\n          'nonceStr': payParam.nonceStr,\n          'package': payParam.packageValue,\n          'signType': payParam.signType,\n          'paySign': payParam.paySign,\n          'success': function(res) {\n            console.log(\"支付过程成功\");\n            util.redirect('/pages/ucenter/order/order');\n          },\n          'fail': function(res) {\n            console.log(\"支付过程失败\");\n            util.showErrorToast('支付失败');\n          },\n          'complete': function(res) {\n            console.log(\"支付过程结束\")\n          }\n        });\n      }\n    });\n\n  },\n  // “取消订单”点击效果\n  cancelOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要取消此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderCancel, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '取消订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “取消订单并退款”点击效果\n  refundOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要取消此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderRefund, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '取消订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “删除”点击效果\n  deleteOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要删除此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderDelete, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '删除订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “确认收货”点击效果\n  confirmOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确认收货？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderConfirm, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '确认收货成功！'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “申请售后”点击效果\n  aftersaleOrder: function () {\n    if(this.data.orderInfo.aftersaleStatus === 0){\n      util.redirect('/pages/ucenter/aftersale/aftersale?id=' + this.data.orderId );\n    }\n    else{\n      util.redirect('/pages/ucenter/aftersaleDetail/aftersaleDetail?id=' + this.data.orderId);\n    }\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "litemall-wx/pages/ucenter/orderDetail/orderDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"订单详情\"\n}"
  },
  {
    "path": "litemall-wx/pages/ucenter/orderDetail/orderDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"order-info\">\n    <view class=\"item\">\n      <view class=\"label\">下单时间：</view>\n      <view class=\"txt\">{{orderInfo.addTime}}</view>\n    </view>\n    <view class=\"item\">\n      <view class=\"label\">订单编号：</view>\n      <view class=\"txt\">{{orderInfo.orderSn}}</view>\n    </view>\n    <view class=\"item\">\n      <view class=\"label\">订单留言：</view>\n      <view class=\"txt\">{{orderInfo.message}}</view>\n    </view>\n    <view class=\"item-c\">\n      <view class=\"r\">\n        <view class=\"btn active\" bindtap=\"cancelOrder\" wx:if=\"{{handleOption.cancel}}\">取消订单</view>\n        <view class=\"btn active\" bindtap=\"payOrder\" wx:if=\"{{handleOption.pay}}\">去付款</view>\n        <view class=\"btn active\" bindtap=\"confirmOrder\" wx:if=\"{{handleOption.confirm}}\">确认收货</view>\n        <view class=\"btn active\" bindtap=\"deleteOrder\" wx:if=\"{{handleOption.delete}}\">删除订单</view>\n        <view class=\"btn active\" bindtap=\"refundOrder\" wx:if=\"{{handleOption.refund}}\">申请退款</view>\n        <view class=\"btn active\" bindtap=\"aftersaleOrder\" wx:if=\"{{handleOption.aftersale}}\">申请售后</view>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      <view class=\"label\">商品信息</view>\n      <view class=\"status\">{{orderInfo.orderStatusText}}</view>\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.specifications}}</view>\n          <view class=\"price\">￥{{item.price}}</view>\n          <view class=\"btn active\" wx:if=\"{{handleOption.comment && (item.comment == 0)}}\">\n            <navigator url=\"../../commentPost/commentPost?ogid={{item.id}}\">去评价</navigator>\n          </view>\n          <view class=\"btn active\" wx:if=\"{{handleOption.rebuy}}\">\n            <navigator url=\"../../goods/goods?id={{item.goodsId}}\">再次购买</navigator>\n          </view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"order-bottom\">\n      <view class=\"address\">\n        <view class=\"t\">\n          <text class=\"name\">{{orderInfo.consignee}}</text>\n          <text class=\"mobile\">{{orderInfo.mobile}}</text>\n        </view>\n        <view class=\"b\">{{orderInfo.address}}</view>\n      </view>\n      <view class=\"total\">\n        <view class=\"t\">\n          <text class=\"label\">商品合计：</text>\n          <text class=\"txt\">￥{{orderInfo.goodsPrice}}元</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">订单运费：</text>\n          <text class=\"txt\">￥{{orderInfo.freightPrice}}元</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">订单优惠：</text>\n          <text class=\"txt\">-￥{{orderInfo.couponPrice}}元</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">订单实付：</text>\n          <text class=\"txt\">￥{{orderInfo.actualPrice}}元</text>\n        </view>        \n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-express\" bindtap=\"expandDetail\" wx:if=\"{{ orderInfo.expNo }}\">\n    <view class=\"order-express\">\n      <view class=\"title\">\n        <view class=\"t\">快递公司：{{orderInfo.expName}}</view>\n        <view class=\"b\">物流单号：{{orderInfo.expNo}}</view>\n      </view>\n      <van-icon class=\"ti\" name=\"arrow\" />      \n    </view>\n    <view class=\"traces\" wx:for=\"{{expressInfo.Traces}}\" wx:key=\"item\" wx:for-item=\"iitem\" wx:if=\"{{ flag }}\">\n      <view class=\"trace\">\n        <view class=\"acceptStation\">{{iitem.AcceptStation}}</view>\n        <view class=\"acceptTime\">{{iitem.AcceptTime}}</view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "litemall-wx/pages/ucenter/orderDetail/orderDetail.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.order-info {\n  padding-top: 25rpx;\n  background: #fff;\n  height: auto;\n  overflow: hidden;\n}\n\n.order-info .item {\n  height: 80rpx;\n  line-height: 80rpx;\n  display: flex;\n  justify-content: space-between;\n  border-top: 1px solid #f4f4f4;\n  padding: 0 31.25rpx;\n}\n\n.item-c {\n  margin-left: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  height: 103rpx;\n  line-height: 103rpx;\n}\n\n.item-c .l {\n  float: left;\n}\n\n.item-c .r {\n  height: 103rpx;\n  float: right;\n  display: flex;\n  align-items: center;\n  padding-right: 16rpx;\n}\n\n.item-c .r .btn {\n  float: right;\n}\n\n.item-c .cost {\n  color: #b4282d;\n}\n\n.item-c .btn {\n  line-height: 66rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n  height: 66rpx;\n}\n\n.item-c .btn.active {\n  background: #b4282d;\n  color: #fff;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .btn {\n  height: 50rpx;\n  line-height: 50rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  display: block;\n  float: right;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n}\n\n.order-goods .item .btn.active {\n  background: #b4282d;\n  color: #fff;\n}\n\n.order-bottom {\n  margin-top: 20rpx;\n  padding: 0 31.25rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-bottom .address .t {\n  height: 80rpx;\n  line-height: 80rpx;\n  display: flex;\n  justify-content: space-between;\n  border-top: 1px solid #f4f4f4;\n}\n\n.order-bottom .address .b {\n  height: 60rpx;\n  line-height: 60rpx;\n  font-size: 30rpx;\n  border-bottom: 1px solid #f4f4f4;\n  text-align: right;\n}\n\n.order-bottom .total .t {\n  height: 80rpx;\n  line-height: 80rpx;\n  display: flex;\n  justify-content: space-between;\n  border-top: 1px solid #f4f4f4;\n}\n\n.order-bottom .pay-fee {\n  height: 81rpx;\n  line-height: 81rpx;\n}\n\n.order-bottom .pay-fee .label {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-bottom .pay-fee .txt {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-express {\n  margin-top: 20rpx;\n  width: 100%;\n  height: 100rpx;\n  background: #fff;\n}\n\n.order-express .title {\n  float: left;\n  margin-bottom: 20rpx;\n  padding: 10rpx;\n}\n\n.order-express .ti {\n  float: right;\n  width: 52rpx;\n  height: 52rpx;\n  margin-right: 16rpx;\n  margin-top: 28rpx;\n}\n\n.order-express .t {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .b {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .traces {\n  padding: 17.5rpx;\n  background: #fff;\n  border-bottom: 1rpx solid #f1e6cdcc;\n}\n\n.order-express .trace {\n  padding-bottom: 17.5rpx;\n  padding-top: 17.5rpx;\n  background: #fff;\n}\n\n.order-express .acceptTime {\n  margin-top: 20rpx;\n  margin-right: 40rpx;\n  text-align: right;\n  font-size: 26rpx;\n}\n\n.order-express .acceptStation {\n  font-size: 26rpx;\n}"
  },
  {
    "path": "litemall-wx/project.config.json",
    "content": "{\n  \"description\": \"项目配置文件。\",\n  \"setting\": {\n    \"urlCheck\": false,\n    \"es6\": true,\n    \"postcss\": true,\n    \"minified\": true,\n    \"newFeature\": true,\n    \"coverView\": true,\n    \"nodeModules\": true,\n    \"autoAudits\": false,\n    \"showShadowRootInWxmlPanel\": true,\n    \"scopeDataCheck\": false,\n    \"uglifyFileName\": true,\n    \"checkInvalidKey\": true,\n    \"checkSiteMap\": true,\n    \"uploadWithSourceMap\": true,\n    \"useMultiFrameRuntime\": true,\n    \"useApiHook\": true,\n    \"useApiHostProcess\": true,\n    \"babelSetting\": {\n      \"ignore\": [],\n      \"disablePlugins\": [],\n      \"outputPath\": \"\"\n    },\n    \"useIsolateContext\": true,\n    \"userConfirmedBundleSwitch\": false,\n    \"packNpmManually\": false,\n    \"packNpmRelationList\": [],\n    \"minifyWXSS\": true,\n    \"disableUseStrict\": false,\n    \"minifyWXML\": true,\n    \"showES6CompileOption\": false,\n    \"useCompilerPlugins\": false,\n    \"ignoreUploadUnusedFiles\": true\n  },\n  \"compileType\": \"miniprogram\",\n  \"libVersion\": \"2.4.0\",\n  \"appid\": \"wxa5b486c6b918ecfb\",\n  \"projectname\": \"litemall-wx\",\n  \"simulatorType\": \"wechat\",\n  \"simulatorPluginLibVersion\": {},\n  \"condition\": {\n    \"search\": {\n      \"list\": []\n    },\n    \"conversation\": {\n      \"list\": []\n    },\n    \"plugin\": {\n      \"list\": []\n    },\n    \"game\": {\n      \"list\": []\n    },\n    \"gamePlugin\": {\n      \"list\": []\n    },\n    \"miniprogram\": {\n      \"list\": [\n        {\n          \"id\": -1,\n          \"name\": \"首页\",\n          \"pathName\": \"pages/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题\",\n          \"pathName\": \"pages/topic/topic\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题详情\",\n          \"pathName\": \"pages/topicDetail/topicDetail\",\n          \"query\": \"id=314\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题评论列表\",\n          \"pathName\": \"pages/topicComment/topicComment\",\n          \"query\": \"valueId=314&type=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题评论添加\",\n          \"pathName\": \"pages/topicCommentPost/topicCommentPost\",\n          \"query\": \"valueId=314&type=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌\",\n          \"pathName\": \"pages/brand/brand\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌详情\",\n          \"pathName\": \"pages/brandDetail/brandDetail\",\n          \"query\": \"id=1001000\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"人气推荐\",\n          \"pathName\": \"pages/hotGoods/hotGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"新品首发\",\n          \"pathName\": \"pages/newGoods/newGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类\",\n          \"pathName\": \"pages/catalog/catalog\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类详情\",\n          \"pathName\": \"pages/category/category\",\n          \"query\": \"id=1008002\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"查找\",\n          \"pathName\": \"pages/search/search\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": 12,\n          \"name\": \"商品\",\n          \"pathName\": \"pages/goods/goods\",\n          \"query\": \"id=1181003\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"商品评论列表\",\n          \"pathName\": \"pages/comment/comment\",\n          \"query\": \"valueId=1181000&type=0\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购物车\",\n          \"pathName\": \"pages/cart/cart\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"下单\",\n          \"pathName\": \"pages/checkout/checkout\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"支付结果\",\n          \"pathName\": \"pages/payResult/payResult\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的\",\n          \"pathName\": \"pages/ucenter/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单列表\",\n          \"pathName\": \"pages/ucenter/order/order\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": 22,\n          \"name\": \"待评价的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购买商品评价\",\n          \"pathName\": \"pages/commentPost/commentPost\",\n          \"query\": \"orderId=2&type=0&valueId=1116011\"\n        },\n        {\n          \"id\": 22,\n          \"name\": \"我的优惠券\",\n          \"pathName\": \"pages/ucenter/couponList/couponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的收藏\",\n          \"pathName\": \"pages/ucenter/collect/collect\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的足迹\",\n          \"pathName\": \"pages/ucenter/footprint/footprint\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址\",\n          \"pathName\": \"pages/ucenter/address/address\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址添加\",\n          \"pathName\": \"pages/ucenter/addressAdd/addressAdd\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"登录\",\n          \"pathName\": \"pages/auth/login/login\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"账号登录\",\n          \"pathName\": \"pages/auth/accountLogin/accountLogin\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"注册\",\n          \"pathName\": \"pages/auth/register/register\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"找回密码\",\n          \"pathName\": \"pages/auth/reset/reset\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"关于\",\n          \"pathName\": \"pages/about/about\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"测试更新\",\n          \"pathName\": \"pages/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"意见反馈\",\n          \"pathName\": \"pages/ucenter/feedback/feedback\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"团购专区\",\n          \"pathName\": \"pages/groupon/grouponList/grouponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"选择优惠券\",\n          \"pathName\": \"pages/ucenter/couponSelect/couponSelect\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的优惠券列表\",\n          \"pathName\": \"pages/ucenter/couponList/couponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"优惠券列表\",\n          \"pathName\": \"pages/coupon/coupon\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"帮助中心\",\n          \"pathName\": \"pages/help/help\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的团购\",\n          \"pathName\": \"pages/groupon/myGroupon/myGroupon\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"申请售后\",\n          \"pathName\": \"pages/ucenter/aftersale/aftersale\",\n          \"query\": \"id=2\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"售后列表\",\n          \"pathName\": \"pages/ucenter/aftersaleList/aftersaleList\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"售后详情\",\n          \"pathName\": \"pages/ucenter/aftersaleDetail/aftersaleDetail\",\n          \"query\": \"id=1\",\n          \"scene\": null\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "litemall-wx/project.private.config.json",
    "content": "{\n  \"setting\": {},\n  \"condition\": {\n    \"plugin\": {\n      \"list\": []\n    },\n    \"game\": {\n      \"list\": []\n    },\n    \"gamePlugin\": {\n      \"list\": []\n    },\n    \"miniprogram\": {\n      \"list\": [\n        {\n          \"id\": -1,\n          \"name\": \"首页\",\n          \"pathName\": \"pages/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题\",\n          \"pathName\": \"pages/topic/topic\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题详情\",\n          \"pathName\": \"pages/topicDetail/topicDetail\",\n          \"query\": \"id=314\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题评论列表\",\n          \"pathName\": \"pages/topicComment/topicComment\",\n          \"query\": \"valueId=314&type=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题评论添加\",\n          \"pathName\": \"pages/topicCommentPost/topicCommentPost\",\n          \"query\": \"valueId=314&type=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌\",\n          \"pathName\": \"pages/brand/brand\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌详情\",\n          \"pathName\": \"pages/brandDetail/brandDetail\",\n          \"query\": \"id=1001000\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"人气推荐\",\n          \"pathName\": \"pages/hotGoods/hotGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"新品首发\",\n          \"pathName\": \"pages/newGoods/newGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类\",\n          \"pathName\": \"pages/catalog/catalog\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类详情\",\n          \"pathName\": \"pages/category/category\",\n          \"query\": \"id=1008002\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"查找\",\n          \"pathName\": \"pages/search/search\",\n          \"query\": \"\"\n        },\n        {\n          \"name\": \"商品\",\n          \"pathName\": \"pages/goods/goods\",\n          \"query\": \"id=1181267\",\n          \"scene\": null,\n          \"launchMode\": \"default\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"商品评论列表\",\n          \"pathName\": \"pages/comment/comment\",\n          \"query\": \"valueId=1181000&type=0\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购物车\",\n          \"pathName\": \"pages/cart/cart\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"下单\",\n          \"pathName\": \"pages/checkout/checkout\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"支付结果\",\n          \"pathName\": \"pages/payResult/payResult\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的\",\n          \"pathName\": \"pages/ucenter/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单列表\",\n          \"pathName\": \"pages/ucenter/order/order\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": 22,\n          \"name\": \"待评价的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购买商品评价\",\n          \"pathName\": \"pages/commentPost/commentPost\",\n          \"query\": \"orderId=2&type=0&valueId=1116011\"\n        },\n        {\n          \"id\": 22,\n          \"name\": \"我的优惠券\",\n          \"pathName\": \"pages/ucenter/couponList/couponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的收藏\",\n          \"pathName\": \"pages/ucenter/collect/collect\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的足迹\",\n          \"pathName\": \"pages/ucenter/footprint/footprint\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址\",\n          \"pathName\": \"pages/ucenter/address/address\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址添加\",\n          \"pathName\": \"pages/ucenter/addressAdd/addressAdd\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"登录\",\n          \"pathName\": \"pages/auth/login/login\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"账号登录\",\n          \"pathName\": \"pages/auth/accountLogin/accountLogin\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"注册\",\n          \"pathName\": \"pages/auth/register/register\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"找回密码\",\n          \"pathName\": \"pages/auth/reset/reset\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"关于\",\n          \"pathName\": \"pages/about/about\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"测试更新\",\n          \"pathName\": \"pages/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"意见反馈\",\n          \"pathName\": \"pages/ucenter/feedback/feedback\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"团购专区\",\n          \"pathName\": \"pages/groupon/grouponList/grouponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"选择优惠券\",\n          \"pathName\": \"pages/ucenter/couponSelect/couponSelect\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的优惠券列表\",\n          \"pathName\": \"pages/ucenter/couponList/couponList\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"优惠券列表\",\n          \"pathName\": \"pages/coupon/coupon\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"帮助中心\",\n          \"pathName\": \"pages/help/help\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的团购\",\n          \"pathName\": \"pages/groupon/myGroupon/myGroupon\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"申请售后\",\n          \"pathName\": \"pages/ucenter/aftersale/aftersale\",\n          \"query\": \"id=2\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"售后列表\",\n          \"pathName\": \"pages/ucenter/aftersaleList/aftersaleList\",\n          \"query\": \"\",\n          \"scene\": null\n        },\n        {\n          \"id\": -1,\n          \"name\": \"售后详情\",\n          \"pathName\": \"pages/ucenter/aftersaleDetail/aftersaleDetail\",\n          \"query\": \"id=1\",\n          \"scene\": null\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "litemall-wx/sitemap.json",
    "content": "{\n  \"desc\": \"关于本文件的更多信息，请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html\",\n  \"rules\": [\n    {\n      \"action\": \"disallow\",\n      \"page\": \"pages/checkout/checkout\"\n    },\n    {\n      \"action\": \"disallow\",\n      \"page\": \"pages/payResult/payResult\"\n    },\n    {\n      \"action\": \"disallow\",\n      \"page\": \"pages/ucenter/index/index\"\n    },    \n    {\n      \"action\": \"allow\",\n      \"page\": \"*\"\n    }\n  ]\n}"
  },
  {
    "path": "litemall-wx/utils/area.js",
    "content": "var areaList =\n{\n  \"province_list\": {\n    \"110000\": \"北京市\",\n    \"120000\": \"天津市\",\n    \"130000\": \"河北省\",\n    \"140000\": \"山西省\",\n    \"150000\": \"内蒙古自治区\",\n    \"210000\": \"辽宁省\",\n    \"220000\": \"吉林省\",\n    \"230000\": \"黑龙江省\",\n    \"310000\": \"上海市\",\n    \"320000\": \"江苏省\",\n    \"330000\": \"浙江省\",\n    \"340000\": \"安徽省\",\n    \"350000\": \"福建省\",\n    \"360000\": \"江西省\",\n    \"370000\": \"山东省\",\n    \"410000\": \"河南省\",\n    \"420000\": \"湖北省\",\n    \"430000\": \"湖南省\",\n    \"440000\": \"广东省\",\n    \"450000\": \"广西壮族自治区\",\n    \"460000\": \"海南省\",\n    \"500000\": \"重庆市\",\n    \"510000\": \"四川省\",\n    \"520000\": \"贵州省\",\n    \"530000\": \"云南省\",\n    \"540000\": \"西藏自治区\",\n    \"610000\": \"陕西省\",\n    \"620000\": \"甘肃省\",\n    \"630000\": \"青海省\",\n    \"640000\": \"宁夏回族自治区\",\n    \"650000\": \"新疆维吾尔自治区\"\n  },\n  \"city_list\": {\n    \"110100\": \"市辖区\",\n    \"120100\": \"市辖区\",\n    \"130100\": \"石家庄市\",\n    \"130200\": \"唐山市\",\n    \"130300\": \"秦皇岛市\",\n    \"130400\": \"邯郸市\",\n    \"130500\": \"邢台市\",\n    \"130600\": \"保定市\",\n    \"130700\": \"张家口市\",\n    \"130800\": \"承德市\",\n    \"130900\": \"沧州市\",\n    \"131000\": \"廊坊市\",\n    \"131100\": \"衡水市\",\n    \"139000\": \"省直辖县级行政区划\",\n    \"140100\": \"太原市\",\n    \"140200\": \"大同市\",\n    \"140300\": \"阳泉市\",\n    \"140400\": \"长治市\",\n    \"140500\": \"晋城市\",\n    \"140600\": \"朔州市\",\n    \"140700\": \"晋中市\",\n    \"140800\": \"运城市\",\n    \"140900\": \"忻州市\",\n    \"141000\": \"临汾市\",\n    \"141100\": \"吕梁市\",\n    \"150100\": \"呼和浩特市\",\n    \"150200\": \"包头市\",\n    \"150300\": \"乌海市\",\n    \"150400\": \"赤峰市\",\n    \"150500\": \"通辽市\",\n    \"150600\": \"鄂尔多斯市\",\n    \"150700\": \"呼伦贝尔市\",\n    \"150800\": \"巴彦淖尔市\",\n    \"150900\": \"乌兰察布市\",\n    \"152200\": \"兴安盟\",\n    \"152500\": \"锡林郭勒盟\",\n    \"152900\": \"阿拉善盟\",\n    \"210100\": \"沈阳市\",\n    \"210200\": \"大连市\",\n    \"210300\": \"鞍山市\",\n    \"210400\": \"抚顺市\",\n    \"210500\": \"本溪市\",\n    \"210600\": \"丹东市\",\n    \"210700\": \"锦州市\",\n    \"210800\": \"营口市\",\n    \"210900\": \"阜新市\",\n    \"211000\": \"辽阳市\",\n    \"211100\": \"盘锦市\",\n    \"211200\": \"铁岭市\",\n    \"211300\": \"朝阳市\",\n    \"211400\": \"葫芦岛市\",\n    \"220100\": \"长春市\",\n    \"220200\": \"吉林市\",\n    \"220300\": \"四平市\",\n    \"220400\": \"辽源市\",\n    \"220500\": \"通化市\",\n    \"220600\": \"白山市\",\n    \"220700\": \"松原市\",\n    \"220800\": \"白城市\",\n    \"222400\": \"延边朝鲜族自治州\",\n    \"230100\": \"哈尔滨市\",\n    \"230200\": \"齐齐哈尔市\",\n    \"230300\": \"鸡西市\",\n    \"230400\": \"鹤岗市\",\n    \"230500\": \"双鸭山市\",\n    \"230600\": \"大庆市\",\n    \"230700\": \"伊春市\",\n    \"230800\": \"佳木斯市\",\n    \"230900\": \"七台河市\",\n    \"231000\": \"牡丹江市\",\n    \"231100\": \"黑河市\",\n    \"231200\": \"绥化市\",\n    \"232700\": \"大兴安岭地区\",\n    \"310100\": \"市辖区\",\n    \"320100\": \"南京市\",\n    \"320200\": \"无锡市\",\n    \"320300\": \"徐州市\",\n    \"320400\": \"常州市\",\n    \"320500\": \"苏州市\",\n    \"320600\": \"南通市\",\n    \"320700\": \"连云港市\",\n    \"320800\": \"淮安市\",\n    \"320900\": \"盐城市\",\n    \"321000\": \"扬州市\",\n    \"321100\": \"镇江市\",\n    \"321200\": \"泰州市\",\n    \"321300\": \"宿迁市\",\n    \"330100\": \"杭州市\",\n    \"330200\": \"宁波市\",\n    \"330300\": \"温州市\",\n    \"330400\": \"嘉兴市\",\n    \"330500\": \"湖州市\",\n    \"330600\": \"绍兴市\",\n    \"330700\": \"金华市\",\n    \"330800\": \"衢州市\",\n    \"330900\": \"舟山市\",\n    \"331000\": \"台州市\",\n    \"331100\": \"丽水市\",\n    \"340100\": \"合肥市\",\n    \"340200\": \"芜湖市\",\n    \"340300\": \"蚌埠市\",\n    \"340400\": \"淮南市\",\n    \"340500\": \"马鞍山市\",\n    \"340600\": \"淮北市\",\n    \"340700\": \"铜陵市\",\n    \"340800\": \"安庆市\",\n    \"341000\": \"黄山市\",\n    \"341100\": \"滁州市\",\n    \"341200\": \"阜阳市\",\n    \"341300\": \"宿州市\",\n    \"341500\": \"六安市\",\n    \"341600\": \"亳州市\",\n    \"341700\": \"池州市\",\n    \"341800\": \"宣城市\",\n    \"350100\": \"福州市\",\n    \"350200\": \"厦门市\",\n    \"350300\": \"莆田市\",\n    \"350400\": \"三明市\",\n    \"350500\": \"泉州市\",\n    \"350600\": \"漳州市\",\n    \"350700\": \"南平市\",\n    \"350800\": \"龙岩市\",\n    \"350900\": \"宁德市\",\n    \"360100\": \"南昌市\",\n    \"360200\": \"景德镇市\",\n    \"360300\": \"萍乡市\",\n    \"360400\": \"九江市\",\n    \"360500\": \"新余市\",\n    \"360600\": \"鹰潭市\",\n    \"360700\": \"赣州市\",\n    \"360800\": \"吉安市\",\n    \"360900\": \"宜春市\",\n    \"361000\": \"抚州市\",\n    \"361100\": \"上饶市\",\n    \"370100\": \"济南市\",\n    \"370200\": \"青岛市\",\n    \"370300\": \"淄博市\",\n    \"370400\": \"枣庄市\",\n    \"370500\": \"东营市\",\n    \"370600\": \"烟台市\",\n    \"370700\": \"潍坊市\",\n    \"370800\": \"济宁市\",\n    \"370900\": \"泰安市\",\n    \"371000\": \"威海市\",\n    \"371100\": \"日照市\",\n    \"371200\": \"莱芜市\",\n    \"371300\": \"临沂市\",\n    \"371400\": \"德州市\",\n    \"371500\": \"聊城市\",\n    \"371600\": \"滨州市\",\n    \"371700\": \"菏泽市\",\n    \"410100\": \"郑州市\",\n    \"410200\": \"开封市\",\n    \"410300\": \"洛阳市\",\n    \"410400\": \"平顶山市\",\n    \"410500\": \"安阳市\",\n    \"410600\": \"鹤壁市\",\n    \"410700\": \"新乡市\",\n    \"410800\": \"焦作市\",\n    \"410900\": \"濮阳市\",\n    \"411000\": \"许昌市\",\n    \"411100\": \"漯河市\",\n    \"411200\": \"三门峡市\",\n    \"411300\": \"南阳市\",\n    \"411400\": \"商丘市\",\n    \"411500\": \"信阳市\",\n    \"411600\": \"周口市\",\n    \"411700\": \"驻马店市\",\n    \"419000\": \"省直辖县级行政区划\",\n    \"420100\": \"武汉市\",\n    \"420200\": \"黄石市\",\n    \"420300\": \"十堰市\",\n    \"420500\": \"宜昌市\",\n    \"420600\": \"襄阳市\",\n    \"420700\": \"鄂州市\",\n    \"420800\": \"荆门市\",\n    \"420900\": \"孝感市\",\n    \"421000\": \"荆州市\",\n    \"421100\": \"黄冈市\",\n    \"421200\": \"咸宁市\",\n    \"421300\": \"随州市\",\n    \"422800\": \"恩施土家族苗族自治州\",\n    \"429000\": \"省直辖县级行政区划\",\n    \"430100\": \"长沙市\",\n    \"430200\": \"株洲市\",\n    \"430300\": \"湘潭市\",\n    \"430400\": \"衡阳市\",\n    \"430500\": \"邵阳市\",\n    \"430600\": \"岳阳市\",\n    \"430700\": \"常德市\",\n    \"430800\": \"张家界市\",\n    \"430900\": \"益阳市\",\n    \"431000\": \"郴州市\",\n    \"431100\": \"永州市\",\n    \"431200\": \"怀化市\",\n    \"431300\": \"娄底市\",\n    \"433100\": \"湘西土家族苗族自治州\",\n    \"440100\": \"广州市\",\n    \"440200\": \"韶关市\",\n    \"440300\": \"深圳市\",\n    \"440400\": \"珠海市\",\n    \"440500\": \"汕头市\",\n    \"440600\": \"佛山市\",\n    \"440700\": \"江门市\",\n    \"440800\": \"湛江市\",\n    \"440900\": \"茂名市\",\n    \"441200\": \"肇庆市\",\n    \"441300\": \"惠州市\",\n    \"441400\": \"梅州市\",\n    \"441500\": \"汕尾市\",\n    \"441600\": \"河源市\",\n    \"441700\": \"阳江市\",\n    \"441800\": \"清远市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445100\": \"潮州市\",\n    \"445200\": \"揭阳市\",\n    \"445300\": \"云浮市\",\n    \"450100\": \"南宁市\",\n    \"450200\": \"柳州市\",\n    \"450300\": \"桂林市\",\n    \"450400\": \"梧州市\",\n    \"450500\": \"北海市\",\n    \"450600\": \"防城港市\",\n    \"450700\": \"钦州市\",\n    \"450800\": \"贵港市\",\n    \"450900\": \"玉林市\",\n    \"451000\": \"百色市\",\n    \"451100\": \"贺州市\",\n    \"451200\": \"河池市\",\n    \"451300\": \"来宾市\",\n    \"451400\": \"崇左市\",\n    \"460100\": \"海口市\",\n    \"460200\": \"三亚市\",\n    \"460300\": \"三沙市\",\n    \"460400\": \"儋州市\",\n    \"469000\": \"省直辖县级行政区划\",\n    \"500100\": \"市辖区\",\n    \"500200\": \"县\",\n    \"510100\": \"成都市\",\n    \"510300\": \"自贡市\",\n    \"510400\": \"攀枝花市\",\n    \"510500\": \"泸州市\",\n    \"510600\": \"德阳市\",\n    \"510700\": \"绵阳市\",\n    \"510800\": \"广元市\",\n    \"510900\": \"遂宁市\",\n    \"511000\": \"内江市\",\n    \"511100\": \"乐山市\",\n    \"511300\": \"南充市\",\n    \"511400\": \"眉山市\",\n    \"511500\": \"宜宾市\",\n    \"511600\": \"广安市\",\n    \"511700\": \"达州市\",\n    \"511800\": \"雅安市\",\n    \"511900\": \"巴中市\",\n    \"512000\": \"资阳市\",\n    \"513200\": \"阿坝藏族羌族自治州\",\n    \"513300\": \"甘孜藏族自治州\",\n    \"513400\": \"凉山彝族自治州\",\n    \"520100\": \"贵阳市\",\n    \"520200\": \"六盘水市\",\n    \"520300\": \"遵义市\",\n    \"520400\": \"安顺市\",\n    \"520500\": \"毕节市\",\n    \"520600\": \"铜仁市\",\n    \"522300\": \"黔西南布依族苗族自治州\",\n    \"522600\": \"黔东南苗族侗族自治州\",\n    \"522700\": \"黔南布依族苗族自治州\",\n    \"530100\": \"昆明市\",\n    \"530300\": \"曲靖市\",\n    \"530400\": \"玉溪市\",\n    \"530500\": \"保山市\",\n    \"530600\": \"昭通市\",\n    \"530700\": \"丽江市\",\n    \"530800\": \"普洱市\",\n    \"530900\": \"临沧市\",\n    \"532300\": \"楚雄彝族自治州\",\n    \"532500\": \"红河哈尼族彝族自治州\",\n    \"532600\": \"文山壮族苗族自治州\",\n    \"532800\": \"西双版纳傣族自治州\",\n    \"532900\": \"大理白族自治州\",\n    \"533100\": \"德宏傣族景颇族自治州\",\n    \"533300\": \"怒江傈僳族自治州\",\n    \"533400\": \"迪庆藏族自治州\",\n    \"540100\": \"拉萨市\",\n    \"540200\": \"日喀则市\",\n    \"540300\": \"昌都市\",\n    \"540400\": \"林芝市\",\n    \"540500\": \"山南市\",\n    \"542400\": \"那曲地区\",\n    \"542500\": \"阿里地区\",\n    \"610100\": \"西安市\",\n    \"610200\": \"铜川市\",\n    \"610300\": \"宝鸡市\",\n    \"610400\": \"咸阳市\",\n    \"610500\": \"渭南市\",\n    \"610600\": \"延安市\",\n    \"610700\": \"汉中市\",\n    \"610800\": \"榆林市\",\n    \"610900\": \"安康市\",\n    \"611000\": \"商洛市\",\n    \"620100\": \"兰州市\",\n    \"620200\": \"嘉峪关市\",\n    \"620300\": \"金昌市\",\n    \"620400\": \"白银市\",\n    \"620500\": \"天水市\",\n    \"620600\": \"武威市\",\n    \"620700\": \"张掖市\",\n    \"620800\": \"平凉市\",\n    \"620900\": \"酒泉市\",\n    \"621000\": \"庆阳市\",\n    \"621100\": \"定西市\",\n    \"621200\": \"陇南市\",\n    \"622900\": \"临夏回族自治州\",\n    \"623000\": \"甘南藏族自治州\",\n    \"630100\": \"西宁市\",\n    \"630200\": \"海东市\",\n    \"632200\": \"海北藏族自治州\",\n    \"632300\": \"黄南藏族自治州\",\n    \"632500\": \"海南藏族自治州\",\n    \"632600\": \"果洛藏族自治州\",\n    \"632700\": \"玉树藏族自治州\",\n    \"632800\": \"海西蒙古族藏族自治州\",\n    \"640100\": \"银川市\",\n    \"640200\": \"石嘴山市\",\n    \"640300\": \"吴忠市\",\n    \"640400\": \"固原市\",\n    \"640500\": \"中卫市\",\n    \"650100\": \"乌鲁木齐市\",\n    \"650200\": \"克拉玛依市\",\n    \"650400\": \"吐鲁番市\",\n    \"650500\": \"哈密市\",\n    \"652300\": \"昌吉回族自治州\",\n    \"652700\": \"博尔塔拉蒙古自治州\",\n    \"652800\": \"巴音郭楞蒙古自治州\",\n    \"652900\": \"阿克苏地区\",\n    \"653000\": \"克孜勒苏柯尔克孜自治州\",\n    \"653100\": \"喀什地区\",\n    \"653200\": \"和田地区\",\n    \"654000\": \"伊犁哈萨克自治州\",\n    \"654200\": \"塔城地区\",\n    \"654300\": \"阿勒泰地区\",\n    \"659000\": \"自治区直辖县级行政区划\"\n  },\n  \"county_list\": {\n    \"110101\": \"东城区\",\n    \"110102\": \"西城区\",\n    \"110105\": \"朝阳区\",\n    \"110106\": \"丰台区\",\n    \"110107\": \"石景山区\",\n    \"110108\": \"海淀区\",\n    \"110109\": \"门头沟区\",\n    \"110111\": \"房山区\",\n    \"110112\": \"通州区\",\n    \"110113\": \"顺义区\",\n    \"110114\": \"昌平区\",\n    \"110115\": \"大兴区\",\n    \"110116\": \"怀柔区\",\n    \"110117\": \"平谷区\",\n    \"110118\": \"密云区\",\n    \"110119\": \"延庆区\",\n    \"120101\": \"和平区\",\n    \"120102\": \"河东区\",\n    \"120103\": \"河西区\",\n    \"120104\": \"南开区\",\n    \"120105\": \"河北区\",\n    \"120106\": \"红桥区\",\n    \"120110\": \"东丽区\",\n    \"120111\": \"西青区\",\n    \"120112\": \"津南区\",\n    \"120113\": \"北辰区\",\n    \"120114\": \"武清区\",\n    \"120115\": \"宝坻区\",\n    \"120116\": \"滨海新区\",\n    \"120117\": \"宁河区\",\n    \"120118\": \"静海区\",\n    \"120119\": \"蓟州区\",\n    \"130102\": \"长安区\",\n    \"130104\": \"桥西区\",\n    \"130105\": \"新华区\",\n    \"130107\": \"井陉矿区\",\n    \"130108\": \"裕华区\",\n    \"130109\": \"藁城区\",\n    \"130110\": \"鹿泉区\",\n    \"130111\": \"栾城区\",\n    \"130121\": \"井陉县\",\n    \"130123\": \"正定县\",\n    \"130125\": \"行唐县\",\n    \"130126\": \"灵寿县\",\n    \"130127\": \"高邑县\",\n    \"130128\": \"深泽县\",\n    \"130129\": \"赞皇县\",\n    \"130130\": \"无极县\",\n    \"130131\": \"平山县\",\n    \"130132\": \"元氏县\",\n    \"130133\": \"赵县\",\n    \"130183\": \"晋州市\",\n    \"130184\": \"新乐市\",\n    \"130202\": \"路南区\",\n    \"130203\": \"路北区\",\n    \"130204\": \"古冶区\",\n    \"130205\": \"开平区\",\n    \"130207\": \"丰南区\",\n    \"130208\": \"丰润区\",\n    \"130209\": \"曹妃甸区\",\n    \"130223\": \"滦县\",\n    \"130224\": \"滦南县\",\n    \"130225\": \"乐亭县\",\n    \"130227\": \"迁西县\",\n    \"130229\": \"玉田县\",\n    \"130281\": \"遵化市\",\n    \"130283\": \"迁安市\",\n    \"130302\": \"海港区\",\n    \"130303\": \"山海关区\",\n    \"130304\": \"北戴河区\",\n    \"130306\": \"抚宁区\",\n    \"130321\": \"青龙满族自治县\",\n    \"130322\": \"昌黎县\",\n    \"130324\": \"卢龙县\",\n    \"130402\": \"邯山区\",\n    \"130403\": \"丛台区\",\n    \"130404\": \"复兴区\",\n    \"130406\": \"峰峰矿区\",\n    \"130421\": \"邯郸县\",\n    \"130423\": \"临漳县\",\n    \"130424\": \"成安县\",\n    \"130425\": \"大名县\",\n    \"130426\": \"涉县\",\n    \"130427\": \"磁县\",\n    \"130428\": \"肥乡县\",\n    \"130429\": \"永年县\",\n    \"130430\": \"邱县\",\n    \"130431\": \"鸡泽县\",\n    \"130432\": \"广平县\",\n    \"130433\": \"馆陶县\",\n    \"130434\": \"魏县\",\n    \"130435\": \"曲周县\",\n    \"130481\": \"武安市\",\n    \"130502\": \"桥东区\",\n    \"130503\": \"桥西区\",\n    \"130521\": \"邢台县\",\n    \"130522\": \"临城县\",\n    \"130523\": \"内丘县\",\n    \"130524\": \"柏乡县\",\n    \"130525\": \"隆尧县\",\n    \"130526\": \"任县\",\n    \"130527\": \"南和县\",\n    \"130528\": \"宁晋县\",\n    \"130529\": \"巨鹿县\",\n    \"130530\": \"新河县\",\n    \"130531\": \"广宗县\",\n    \"130532\": \"平乡县\",\n    \"130533\": \"威县\",\n    \"130534\": \"清河县\",\n    \"130535\": \"临西县\",\n    \"130581\": \"南宫市\",\n    \"130582\": \"沙河市\",\n    \"130602\": \"竞秀区\",\n    \"130606\": \"莲池区\",\n    \"130607\": \"满城区\",\n    \"130608\": \"清苑区\",\n    \"130609\": \"徐水区\",\n    \"130623\": \"涞水县\",\n    \"130624\": \"阜平县\",\n    \"130626\": \"定兴县\",\n    \"130627\": \"唐县\",\n    \"130628\": \"高阳县\",\n    \"130629\": \"容城县\",\n    \"130630\": \"涞源县\",\n    \"130631\": \"望都县\",\n    \"130632\": \"安新县\",\n    \"130633\": \"易县\",\n    \"130634\": \"曲阳县\",\n    \"130635\": \"蠡县\",\n    \"130636\": \"顺平县\",\n    \"130637\": \"博野县\",\n    \"130638\": \"雄县\",\n    \"130681\": \"涿州市\",\n    \"130683\": \"安国市\",\n    \"130684\": \"高碑店市\",\n    \"130702\": \"桥东区\",\n    \"130703\": \"桥西区\",\n    \"130705\": \"宣化区\",\n    \"130706\": \"下花园区\",\n    \"130708\": \"万全区\",\n    \"130709\": \"崇礼区\",\n    \"130722\": \"张北县\",\n    \"130723\": \"康保县\",\n    \"130724\": \"沽源县\",\n    \"130725\": \"尚义县\",\n    \"130726\": \"蔚县\",\n    \"130727\": \"阳原县\",\n    \"130728\": \"怀安县\",\n    \"130730\": \"怀来县\",\n    \"130731\": \"涿鹿县\",\n    \"130732\": \"赤城县\",\n    \"130802\": \"双桥区\",\n    \"130803\": \"双滦区\",\n    \"130804\": \"鹰手营子矿区\",\n    \"130821\": \"承德县\",\n    \"130822\": \"兴隆县\",\n    \"130823\": \"平泉县\",\n    \"130824\": \"滦平县\",\n    \"130825\": \"隆化县\",\n    \"130826\": \"丰宁满族自治县\",\n    \"130827\": \"宽城满族自治县\",\n    \"130828\": \"围场满族蒙古族自治县\",\n    \"130902\": \"新华区\",\n    \"130903\": \"运河区\",\n    \"130921\": \"沧县\",\n    \"130922\": \"青县\",\n    \"130923\": \"东光县\",\n    \"130924\": \"海兴县\",\n    \"130925\": \"盐山县\",\n    \"130926\": \"肃宁县\",\n    \"130927\": \"南皮县\",\n    \"130928\": \"吴桥县\",\n    \"130929\": \"献县\",\n    \"130930\": \"孟村回族自治县\",\n    \"130981\": \"泊头市\",\n    \"130982\": \"任丘市\",\n    \"130983\": \"黄骅市\",\n    \"130984\": \"河间市\",\n    \"131002\": \"安次区\",\n    \"131003\": \"广阳区\",\n    \"131022\": \"固安县\",\n    \"131023\": \"永清县\",\n    \"131024\": \"香河县\",\n    \"131025\": \"大城县\",\n    \"131026\": \"文安县\",\n    \"131028\": \"大厂回族自治县\",\n    \"131081\": \"霸州市\",\n    \"131082\": \"三河市\",\n    \"131102\": \"桃城区\",\n    \"131103\": \"冀州区\",\n    \"131121\": \"枣强县\",\n    \"131122\": \"武邑县\",\n    \"131123\": \"武强县\",\n    \"131124\": \"饶阳县\",\n    \"131125\": \"安平县\",\n    \"131126\": \"故城县\",\n    \"131127\": \"景县\",\n    \"131128\": \"阜城县\",\n    \"131182\": \"深州市\",\n    \"139001\": \"定州市\",\n    \"139002\": \"辛集市\",\n    \"140105\": \"小店区\",\n    \"140106\": \"迎泽区\",\n    \"140107\": \"杏花岭区\",\n    \"140108\": \"尖草坪区\",\n    \"140109\": \"万柏林区\",\n    \"140110\": \"晋源区\",\n    \"140121\": \"清徐县\",\n    \"140122\": \"阳曲县\",\n    \"140123\": \"娄烦县\",\n    \"140181\": \"古交市\",\n    \"140202\": \"城区\",\n    \"140203\": \"矿区\",\n    \"140211\": \"南郊区\",\n    \"140212\": \"新荣区\",\n    \"140221\": \"阳高县\",\n    \"140222\": \"天镇县\",\n    \"140223\": \"广灵县\",\n    \"140224\": \"灵丘县\",\n    \"140225\": \"浑源县\",\n    \"140226\": \"左云县\",\n    \"140227\": \"大同县\",\n    \"140302\": \"城区\",\n    \"140303\": \"矿区\",\n    \"140311\": \"郊区\",\n    \"140321\": \"平定县\",\n    \"140322\": \"盂县\",\n    \"140402\": \"城区\",\n    \"140411\": \"郊区\",\n    \"140421\": \"长治县\",\n    \"140423\": \"襄垣县\",\n    \"140424\": \"屯留县\",\n    \"140425\": \"平顺县\",\n    \"140426\": \"黎城县\",\n    \"140427\": \"壶关县\",\n    \"140428\": \"长子县\",\n    \"140429\": \"武乡县\",\n    \"140430\": \"沁县\",\n    \"140431\": \"沁源县\",\n    \"140481\": \"潞城市\",\n    \"140502\": \"城区\",\n    \"140521\": \"沁水县\",\n    \"140522\": \"阳城县\",\n    \"140524\": \"陵川县\",\n    \"140525\": \"泽州县\",\n    \"140581\": \"高平市\",\n    \"140602\": \"朔城区\",\n    \"140603\": \"平鲁区\",\n    \"140621\": \"山阴县\",\n    \"140622\": \"应县\",\n    \"140623\": \"右玉县\",\n    \"140624\": \"怀仁县\",\n    \"140702\": \"榆次区\",\n    \"140721\": \"榆社县\",\n    \"140722\": \"左权县\",\n    \"140723\": \"和顺县\",\n    \"140724\": \"昔阳县\",\n    \"140725\": \"寿阳县\",\n    \"140726\": \"太谷县\",\n    \"140727\": \"祁县\",\n    \"140728\": \"平遥县\",\n    \"140729\": \"灵石县\",\n    \"140781\": \"介休市\",\n    \"140802\": \"盐湖区\",\n    \"140821\": \"临猗县\",\n    \"140822\": \"万荣县\",\n    \"140823\": \"闻喜县\",\n    \"140824\": \"稷山县\",\n    \"140825\": \"新绛县\",\n    \"140826\": \"绛县\",\n    \"140827\": \"垣曲县\",\n    \"140828\": \"夏县\",\n    \"140829\": \"平陆县\",\n    \"140830\": \"芮城县\",\n    \"140881\": \"永济市\",\n    \"140882\": \"河津市\",\n    \"140902\": \"忻府区\",\n    \"140921\": \"定襄县\",\n    \"140922\": \"五台县\",\n    \"140923\": \"代县\",\n    \"140924\": \"繁峙县\",\n    \"140925\": \"宁武县\",\n    \"140926\": \"静乐县\",\n    \"140927\": \"神池县\",\n    \"140928\": \"五寨县\",\n    \"140929\": \"岢岚县\",\n    \"140930\": \"河曲县\",\n    \"140931\": \"保德县\",\n    \"140932\": \"偏关县\",\n    \"140981\": \"原平市\",\n    \"141002\": \"尧都区\",\n    \"141021\": \"曲沃县\",\n    \"141022\": \"翼城县\",\n    \"141023\": \"襄汾县\",\n    \"141024\": \"洪洞县\",\n    \"141025\": \"古县\",\n    \"141026\": \"安泽县\",\n    \"141027\": \"浮山县\",\n    \"141028\": \"吉县\",\n    \"141029\": \"乡宁县\",\n    \"141030\": \"大宁县\",\n    \"141031\": \"隰县\",\n    \"141032\": \"永和县\",\n    \"141033\": \"蒲县\",\n    \"141034\": \"汾西县\",\n    \"141081\": \"侯马市\",\n    \"141082\": \"霍州市\",\n    \"141102\": \"离石区\",\n    \"141121\": \"文水县\",\n    \"141122\": \"交城县\",\n    \"141123\": \"兴县\",\n    \"141124\": \"临县\",\n    \"141125\": \"柳林县\",\n    \"141126\": \"石楼县\",\n    \"141127\": \"岚县\",\n    \"141128\": \"方山县\",\n    \"141129\": \"中阳县\",\n    \"141130\": \"交口县\",\n    \"141181\": \"孝义市\",\n    \"141182\": \"汾阳市\",\n    \"150102\": \"新城区\",\n    \"150103\": \"回民区\",\n    \"150104\": \"玉泉区\",\n    \"150105\": \"赛罕区\",\n    \"150121\": \"土默特左旗\",\n    \"150122\": \"托克托县\",\n    \"150123\": \"和林格尔县\",\n    \"150124\": \"清水河县\",\n    \"150125\": \"武川县\",\n    \"150202\": \"东河区\",\n    \"150203\": \"昆都仑区\",\n    \"150204\": \"青山区\",\n    \"150205\": \"石拐区\",\n    \"150206\": \"白云鄂博矿区\",\n    \"150207\": \"九原区\",\n    \"150221\": \"土默特右旗\",\n    \"150222\": \"固阳县\",\n    \"150223\": \"达尔罕茂明安联合旗\",\n    \"150302\": \"海勃湾区\",\n    \"150303\": \"海南区\",\n    \"150304\": \"乌达区\",\n    \"150402\": \"红山区\",\n    \"150403\": \"元宝山区\",\n    \"150404\": \"松山区\",\n    \"150421\": \"阿鲁科尔沁旗\",\n    \"150422\": \"巴林左旗\",\n    \"150423\": \"巴林右旗\",\n    \"150424\": \"林西县\",\n    \"150425\": \"克什克腾旗\",\n    \"150426\": \"翁牛特旗\",\n    \"150428\": \"喀喇沁旗\",\n    \"150429\": \"宁城县\",\n    \"150430\": \"敖汉旗\",\n    \"150502\": \"科尔沁区\",\n    \"150521\": \"科尔沁左翼中旗\",\n    \"150522\": \"科尔沁左翼后旗\",\n    \"150523\": \"开鲁县\",\n    \"150524\": \"库伦旗\",\n    \"150525\": \"奈曼旗\",\n    \"150526\": \"扎鲁特旗\",\n    \"150581\": \"霍林郭勒市\",\n    \"150602\": \"东胜区\",\n    \"150603\": \"康巴什区\",\n    \"150621\": \"达拉特旗\",\n    \"150622\": \"准格尔旗\",\n    \"150623\": \"鄂托克前旗\",\n    \"150624\": \"鄂托克旗\",\n    \"150625\": \"杭锦旗\",\n    \"150626\": \"乌审旗\",\n    \"150627\": \"伊金霍洛旗\",\n    \"150702\": \"海拉尔区\",\n    \"150703\": \"扎赉诺尔区\",\n    \"150721\": \"阿荣旗\",\n    \"150722\": \"莫力达瓦达斡尔族自治旗\",\n    \"150723\": \"鄂伦春自治旗\",\n    \"150724\": \"鄂温克族自治旗\",\n    \"150725\": \"陈巴尔虎旗\",\n    \"150726\": \"新巴尔虎左旗\",\n    \"150727\": \"新巴尔虎右旗\",\n    \"150781\": \"满洲里市\",\n    \"150782\": \"牙克石市\",\n    \"150783\": \"扎兰屯市\",\n    \"150784\": \"额尔古纳市\",\n    \"150785\": \"根河市\",\n    \"150802\": \"临河区\",\n    \"150821\": \"五原县\",\n    \"150822\": \"磴口县\",\n    \"150823\": \"乌拉特前旗\",\n    \"150824\": \"乌拉特中旗\",\n    \"150825\": \"乌拉特后旗\",\n    \"150826\": \"杭锦后旗\",\n    \"150902\": \"集宁区\",\n    \"150921\": \"卓资县\",\n    \"150922\": \"化德县\",\n    \"150923\": \"商都县\",\n    \"150924\": \"兴和县\",\n    \"150925\": \"凉城县\",\n    \"150926\": \"察哈尔右翼前旗\",\n    \"150927\": \"察哈尔右翼中旗\",\n    \"150928\": \"察哈尔右翼后旗\",\n    \"150929\": \"四子王旗\",\n    \"150981\": \"丰镇市\",\n    \"152201\": \"乌兰浩特市\",\n    \"152202\": \"阿尔山市\",\n    \"152221\": \"科尔沁右翼前旗\",\n    \"152222\": \"科尔沁右翼中旗\",\n    \"152223\": \"扎赉特旗\",\n    \"152224\": \"突泉县\",\n    \"152501\": \"二连浩特市\",\n    \"152502\": \"锡林浩特市\",\n    \"152522\": \"阿巴嘎旗\",\n    \"152523\": \"苏尼特左旗\",\n    \"152524\": \"苏尼特右旗\",\n    \"152525\": \"东乌珠穆沁旗\",\n    \"152526\": \"西乌珠穆沁旗\",\n    \"152527\": \"太仆寺旗\",\n    \"152528\": \"镶黄旗\",\n    \"152529\": \"正镶白旗\",\n    \"152530\": \"正蓝旗\",\n    \"152531\": \"多伦县\",\n    \"152921\": \"阿拉善左旗\",\n    \"152922\": \"阿拉善右旗\",\n    \"152923\": \"额济纳旗\",\n    \"210102\": \"和平区\",\n    \"210103\": \"沈河区\",\n    \"210104\": \"大东区\",\n    \"210105\": \"皇姑区\",\n    \"210106\": \"铁西区\",\n    \"210111\": \"苏家屯区\",\n    \"210112\": \"浑南区\",\n    \"210113\": \"沈北新区\",\n    \"210114\": \"于洪区\",\n    \"210115\": \"辽中区\",\n    \"210123\": \"康平县\",\n    \"210124\": \"法库县\",\n    \"210181\": \"新民市\",\n    \"210202\": \"中山区\",\n    \"210203\": \"西岗区\",\n    \"210204\": \"沙河口区\",\n    \"210211\": \"甘井子区\",\n    \"210212\": \"旅顺口区\",\n    \"210213\": \"金州区\",\n    \"210214\": \"普兰店区\",\n    \"210224\": \"长海县\",\n    \"210281\": \"瓦房店市\",\n    \"210283\": \"庄河市\",\n    \"210302\": \"铁东区\",\n    \"210303\": \"铁西区\",\n    \"210304\": \"立山区\",\n    \"210311\": \"千山区\",\n    \"210321\": \"台安县\",\n    \"210323\": \"岫岩满族自治县\",\n    \"210381\": \"海城市\",\n    \"210402\": \"新抚区\",\n    \"210403\": \"东洲区\",\n    \"210404\": \"望花区\",\n    \"210411\": \"顺城区\",\n    \"210421\": \"抚顺县\",\n    \"210422\": \"新宾满族自治县\",\n    \"210423\": \"清原满族自治县\",\n    \"210502\": \"平山区\",\n    \"210503\": \"溪湖区\",\n    \"210504\": \"明山区\",\n    \"210505\": \"南芬区\",\n    \"210521\": \"本溪满族自治县\",\n    \"210522\": \"桓仁满族自治县\",\n    \"210602\": \"元宝区\",\n    \"210603\": \"振兴区\",\n    \"210604\": \"振安区\",\n    \"210624\": \"宽甸满族自治县\",\n    \"210681\": \"东港市\",\n    \"210682\": \"凤城市\",\n    \"210702\": \"古塔区\",\n    \"210703\": \"凌河区\",\n    \"210711\": \"太和区\",\n    \"210726\": \"黑山县\",\n    \"210727\": \"义县\",\n    \"210781\": \"凌海市\",\n    \"210782\": \"北镇市\",\n    \"210802\": \"站前区\",\n    \"210803\": \"西市区\",\n    \"210804\": \"鲅鱼圈区\",\n    \"210811\": \"老边区\",\n    \"210881\": \"盖州市\",\n    \"210882\": \"大石桥市\",\n    \"210902\": \"海州区\",\n    \"210903\": \"新邱区\",\n    \"210904\": \"太平区\",\n    \"210905\": \"清河门区\",\n    \"210911\": \"细河区\",\n    \"210921\": \"阜新蒙古族自治县\",\n    \"210922\": \"彰武县\",\n    \"211002\": \"白塔区\",\n    \"211003\": \"文圣区\",\n    \"211004\": \"宏伟区\",\n    \"211005\": \"弓长岭区\",\n    \"211011\": \"太子河区\",\n    \"211021\": \"辽阳县\",\n    \"211081\": \"灯塔市\",\n    \"211102\": \"双台子区\",\n    \"211103\": \"兴隆台区\",\n    \"211104\": \"大洼区\",\n    \"211122\": \"盘山县\",\n    \"211202\": \"银州区\",\n    \"211204\": \"清河区\",\n    \"211221\": \"铁岭县\",\n    \"211223\": \"西丰县\",\n    \"211224\": \"昌图县\",\n    \"211281\": \"调兵山市\",\n    \"211282\": \"开原市\",\n    \"211302\": \"双塔区\",\n    \"211303\": \"龙城区\",\n    \"211321\": \"朝阳县\",\n    \"211322\": \"建平县\",\n    \"211324\": \"喀喇沁左翼蒙古族自治县\",\n    \"211381\": \"北票市\",\n    \"211382\": \"凌源市\",\n    \"211402\": \"连山区\",\n    \"211403\": \"龙港区\",\n    \"211404\": \"南票区\",\n    \"211421\": \"绥中县\",\n    \"211422\": \"建昌县\",\n    \"211481\": \"兴城市\",\n    \"220102\": \"南关区\",\n    \"220103\": \"宽城区\",\n    \"220104\": \"朝阳区\",\n    \"220105\": \"二道区\",\n    \"220106\": \"绿园区\",\n    \"220112\": \"双阳区\",\n    \"220113\": \"九台区\",\n    \"220122\": \"农安县\",\n    \"220182\": \"榆树市\",\n    \"220183\": \"德惠市\",\n    \"220202\": \"昌邑区\",\n    \"220203\": \"龙潭区\",\n    \"220204\": \"船营区\",\n    \"220211\": \"丰满区\",\n    \"220221\": \"永吉县\",\n    \"220281\": \"蛟河市\",\n    \"220282\": \"桦甸市\",\n    \"220283\": \"舒兰市\",\n    \"220284\": \"磐石市\",\n    \"220302\": \"铁西区\",\n    \"220303\": \"铁东区\",\n    \"220322\": \"梨树县\",\n    \"220323\": \"伊通满族自治县\",\n    \"220381\": \"公主岭市\",\n    \"220382\": \"双辽市\",\n    \"220402\": \"龙山区\",\n    \"220403\": \"西安区\",\n    \"220421\": \"东丰县\",\n    \"220422\": \"东辽县\",\n    \"220502\": \"东昌区\",\n    \"220503\": \"二道江区\",\n    \"220521\": \"通化县\",\n    \"220523\": \"辉南县\",\n    \"220524\": \"柳河县\",\n    \"220581\": \"梅河口市\",\n    \"220582\": \"集安市\",\n    \"220602\": \"浑江区\",\n    \"220605\": \"江源区\",\n    \"220621\": \"抚松县\",\n    \"220622\": \"靖宇县\",\n    \"220623\": \"长白朝鲜族自治县\",\n    \"220681\": \"临江市\",\n    \"220702\": \"宁江区\",\n    \"220721\": \"前郭尔罗斯蒙古族自治县\",\n    \"220722\": \"长岭县\",\n    \"220723\": \"乾安县\",\n    \"220781\": \"扶余市\",\n    \"220802\": \"洮北区\",\n    \"220821\": \"镇赉县\",\n    \"220822\": \"通榆县\",\n    \"220881\": \"洮南市\",\n    \"220882\": \"大安市\",\n    \"222401\": \"延吉市\",\n    \"222402\": \"图们市\",\n    \"222403\": \"敦化市\",\n    \"222404\": \"珲春市\",\n    \"222405\": \"龙井市\",\n    \"222406\": \"和龙市\",\n    \"222424\": \"汪清县\",\n    \"222426\": \"安图县\",\n    \"230102\": \"道里区\",\n    \"230103\": \"南岗区\",\n    \"230104\": \"道外区\",\n    \"230108\": \"平房区\",\n    \"230109\": \"松北区\",\n    \"230110\": \"香坊区\",\n    \"230111\": \"呼兰区\",\n    \"230112\": \"阿城区\",\n    \"230113\": \"双城区\",\n    \"230123\": \"依兰县\",\n    \"230124\": \"方正县\",\n    \"230125\": \"宾县\",\n    \"230126\": \"巴彦县\",\n    \"230127\": \"木兰县\",\n    \"230128\": \"通河县\",\n    \"230129\": \"延寿县\",\n    \"230183\": \"尚志市\",\n    \"230184\": \"五常市\",\n    \"230202\": \"龙沙区\",\n    \"230203\": \"建华区\",\n    \"230204\": \"铁锋区\",\n    \"230205\": \"昂昂溪区\",\n    \"230206\": \"富拉尔基区\",\n    \"230207\": \"碾子山区\",\n    \"230208\": \"梅里斯达斡尔族区\",\n    \"230221\": \"龙江县\",\n    \"230223\": \"依安县\",\n    \"230224\": \"泰来县\",\n    \"230225\": \"甘南县\",\n    \"230227\": \"富裕县\",\n    \"230229\": \"克山县\",\n    \"230230\": \"克东县\",\n    \"230231\": \"拜泉县\",\n    \"230281\": \"讷河市\",\n    \"230302\": \"鸡冠区\",\n    \"230303\": \"恒山区\",\n    \"230304\": \"滴道区\",\n    \"230305\": \"梨树区\",\n    \"230306\": \"城子河区\",\n    \"230307\": \"麻山区\",\n    \"230321\": \"鸡东县\",\n    \"230381\": \"虎林市\",\n    \"230382\": \"密山市\",\n    \"230402\": \"向阳区\",\n    \"230403\": \"工农区\",\n    \"230404\": \"南山区\",\n    \"230405\": \"兴安区\",\n    \"230406\": \"东山区\",\n    \"230407\": \"兴山区\",\n    \"230421\": \"萝北县\",\n    \"230422\": \"绥滨县\",\n    \"230502\": \"尖山区\",\n    \"230503\": \"岭东区\",\n    \"230505\": \"四方台区\",\n    \"230506\": \"宝山区\",\n    \"230521\": \"集贤县\",\n    \"230522\": \"友谊县\",\n    \"230523\": \"宝清县\",\n    \"230524\": \"饶河县\",\n    \"230602\": \"萨尔图区\",\n    \"230603\": \"龙凤区\",\n    \"230604\": \"让胡路区\",\n    \"230605\": \"红岗区\",\n    \"230606\": \"大同区\",\n    \"230621\": \"肇州县\",\n    \"230622\": \"肇源县\",\n    \"230623\": \"林甸县\",\n    \"230624\": \"杜尔伯特蒙古族自治县\",\n    \"230702\": \"伊春区\",\n    \"230703\": \"南岔区\",\n    \"230704\": \"友好区\",\n    \"230705\": \"西林区\",\n    \"230706\": \"翠峦区\",\n    \"230707\": \"新青区\",\n    \"230708\": \"美溪区\",\n    \"230709\": \"金山屯区\",\n    \"230710\": \"五营区\",\n    \"230711\": \"乌马河区\",\n    \"230712\": \"汤旺河区\",\n    \"230713\": \"带岭区\",\n    \"230714\": \"乌伊岭区\",\n    \"230715\": \"红星区\",\n    \"230716\": \"上甘岭区\",\n    \"230722\": \"嘉荫县\",\n    \"230781\": \"铁力市\",\n    \"230803\": \"向阳区\",\n    \"230804\": \"前进区\",\n    \"230805\": \"东风区\",\n    \"230811\": \"郊区\",\n    \"230822\": \"桦南县\",\n    \"230826\": \"桦川县\",\n    \"230828\": \"汤原县\",\n    \"230881\": \"同江市\",\n    \"230882\": \"富锦市\",\n    \"230883\": \"抚远市\",\n    \"230902\": \"新兴区\",\n    \"230903\": \"桃山区\",\n    \"230904\": \"茄子河区\",\n    \"230921\": \"勃利县\",\n    \"231002\": \"东安区\",\n    \"231003\": \"阳明区\",\n    \"231004\": \"爱民区\",\n    \"231005\": \"西安区\",\n    \"231025\": \"林口县\",\n    \"231081\": \"绥芬河市\",\n    \"231083\": \"海林市\",\n    \"231084\": \"宁安市\",\n    \"231085\": \"穆棱市\",\n    \"231086\": \"东宁市\",\n    \"231102\": \"爱辉区\",\n    \"231121\": \"嫩江县\",\n    \"231123\": \"逊克县\",\n    \"231124\": \"孙吴县\",\n    \"231181\": \"北安市\",\n    \"231182\": \"五大连池市\",\n    \"231202\": \"北林区\",\n    \"231221\": \"望奎县\",\n    \"231222\": \"兰西县\",\n    \"231223\": \"青冈县\",\n    \"231224\": \"庆安县\",\n    \"231225\": \"明水县\",\n    \"231226\": \"绥棱县\",\n    \"231281\": \"安达市\",\n    \"231282\": \"肇东市\",\n    \"231283\": \"海伦市\",\n    \"232721\": \"呼玛县\",\n    \"232722\": \"塔河县\",\n    \"232723\": \"漠河县\",\n    \"310101\": \"黄浦区\",\n    \"310104\": \"徐汇区\",\n    \"310105\": \"长宁区\",\n    \"310106\": \"静安区\",\n    \"310107\": \"普陀区\",\n    \"310109\": \"虹口区\",\n    \"310110\": \"杨浦区\",\n    \"310112\": \"闵行区\",\n    \"310113\": \"宝山区\",\n    \"310114\": \"嘉定区\",\n    \"310115\": \"浦东新区\",\n    \"310116\": \"金山区\",\n    \"310117\": \"松江区\",\n    \"310118\": \"青浦区\",\n    \"310120\": \"奉贤区\",\n    \"310151\": \"崇明区\",\n    \"320102\": \"玄武区\",\n    \"320104\": \"秦淮区\",\n    \"320105\": \"建邺区\",\n    \"320106\": \"鼓楼区\",\n    \"320111\": \"浦口区\",\n    \"320113\": \"栖霞区\",\n    \"320114\": \"雨花台区\",\n    \"320115\": \"江宁区\",\n    \"320116\": \"六合区\",\n    \"320117\": \"溧水区\",\n    \"320118\": \"高淳区\",\n    \"320205\": \"锡山区\",\n    \"320206\": \"惠山区\",\n    \"320211\": \"滨湖区\",\n    \"320213\": \"梁溪区\",\n    \"320214\": \"新吴区\",\n    \"320281\": \"江阴市\",\n    \"320282\": \"宜兴市\",\n    \"320302\": \"鼓楼区\",\n    \"320303\": \"云龙区\",\n    \"320305\": \"贾汪区\",\n    \"320311\": \"泉山区\",\n    \"320312\": \"铜山区\",\n    \"320321\": \"丰县\",\n    \"320322\": \"沛县\",\n    \"320324\": \"睢宁县\",\n    \"320381\": \"新沂市\",\n    \"320382\": \"邳州市\",\n    \"320402\": \"天宁区\",\n    \"320404\": \"钟楼区\",\n    \"320411\": \"新北区\",\n    \"320412\": \"武进区\",\n    \"320413\": \"金坛区\",\n    \"320481\": \"溧阳市\",\n    \"320505\": \"虎丘区\",\n    \"320506\": \"吴中区\",\n    \"320507\": \"相城区\",\n    \"320508\": \"姑苏区\",\n    \"320509\": \"吴江区\",\n    \"320581\": \"常熟市\",\n    \"320582\": \"张家港市\",\n    \"320583\": \"昆山市\",\n    \"320585\": \"太仓市\",\n    \"320602\": \"崇川区\",\n    \"320611\": \"港闸区\",\n    \"320612\": \"通州区\",\n    \"320621\": \"海安县\",\n    \"320623\": \"如东县\",\n    \"320681\": \"启东市\",\n    \"320682\": \"如皋市\",\n    \"320684\": \"海门市\",\n    \"320703\": \"连云区\",\n    \"320706\": \"海州区\",\n    \"320707\": \"赣榆区\",\n    \"320722\": \"东海县\",\n    \"320723\": \"灌云县\",\n    \"320724\": \"灌南县\",\n    \"320803\": \"淮安区\",\n    \"320804\": \"淮阴区\",\n    \"320812\": \"清江浦区\",\n    \"320813\": \"洪泽区\",\n    \"320826\": \"涟水县\",\n    \"320830\": \"盱眙县\",\n    \"320831\": \"金湖县\",\n    \"320902\": \"亭湖区\",\n    \"320903\": \"盐都区\",\n    \"320904\": \"大丰区\",\n    \"320921\": \"响水县\",\n    \"320922\": \"滨海县\",\n    \"320923\": \"阜宁县\",\n    \"320924\": \"射阳县\",\n    \"320925\": \"建湖县\",\n    \"320981\": \"东台市\",\n    \"321002\": \"广陵区\",\n    \"321003\": \"邗江区\",\n    \"321012\": \"江都区\",\n    \"321023\": \"宝应县\",\n    \"321081\": \"仪征市\",\n    \"321084\": \"高邮市\",\n    \"321102\": \"京口区\",\n    \"321111\": \"润州区\",\n    \"321112\": \"丹徒区\",\n    \"321181\": \"丹阳市\",\n    \"321182\": \"扬中市\",\n    \"321183\": \"句容市\",\n    \"321202\": \"海陵区\",\n    \"321203\": \"高港区\",\n    \"321204\": \"姜堰区\",\n    \"321281\": \"兴化市\",\n    \"321282\": \"靖江市\",\n    \"321283\": \"泰兴市\",\n    \"321302\": \"宿城区\",\n    \"321311\": \"宿豫区\",\n    \"321322\": \"沭阳县\",\n    \"321323\": \"泗阳县\",\n    \"321324\": \"泗洪县\",\n    \"330102\": \"上城区\",\n    \"330103\": \"下城区\",\n    \"330104\": \"江干区\",\n    \"330105\": \"拱墅区\",\n    \"330106\": \"西湖区\",\n    \"330108\": \"滨江区\",\n    \"330109\": \"萧山区\",\n    \"330110\": \"余杭区\",\n    \"330111\": \"富阳区\",\n    \"330122\": \"桐庐县\",\n    \"330127\": \"淳安县\",\n    \"330182\": \"建德市\",\n    \"330185\": \"临安市\",\n    \"330203\": \"海曙区\",\n    \"330204\": \"江东区\",\n    \"330205\": \"江北区\",\n    \"330206\": \"北仑区\",\n    \"330211\": \"镇海区\",\n    \"330212\": \"鄞州区\",\n    \"330225\": \"象山县\",\n    \"330226\": \"宁海县\",\n    \"330281\": \"余姚市\",\n    \"330282\": \"慈溪市\",\n    \"330283\": \"奉化市\",\n    \"330302\": \"鹿城区\",\n    \"330303\": \"龙湾区\",\n    \"330304\": \"瓯海区\",\n    \"330305\": \"洞头区\",\n    \"330324\": \"永嘉县\",\n    \"330326\": \"平阳县\",\n    \"330327\": \"苍南县\",\n    \"330328\": \"文成县\",\n    \"330329\": \"泰顺县\",\n    \"330381\": \"瑞安市\",\n    \"330382\": \"乐清市\",\n    \"330402\": \"南湖区\",\n    \"330411\": \"秀洲区\",\n    \"330421\": \"嘉善县\",\n    \"330424\": \"海盐县\",\n    \"330481\": \"海宁市\",\n    \"330482\": \"平湖市\",\n    \"330483\": \"桐乡市\",\n    \"330502\": \"吴兴区\",\n    \"330503\": \"南浔区\",\n    \"330521\": \"德清县\",\n    \"330522\": \"长兴县\",\n    \"330523\": \"安吉县\",\n    \"330602\": \"越城区\",\n    \"330603\": \"柯桥区\",\n    \"330604\": \"上虞区\",\n    \"330624\": \"新昌县\",\n    \"330681\": \"诸暨市\",\n    \"330683\": \"嵊州市\",\n    \"330702\": \"婺城区\",\n    \"330703\": \"金东区\",\n    \"330723\": \"武义县\",\n    \"330726\": \"浦江县\",\n    \"330727\": \"磐安县\",\n    \"330781\": \"兰溪市\",\n    \"330782\": \"义乌市\",\n    \"330783\": \"东阳市\",\n    \"330784\": \"永康市\",\n    \"330802\": \"柯城区\",\n    \"330803\": \"衢江区\",\n    \"330822\": \"常山县\",\n    \"330824\": \"开化县\",\n    \"330825\": \"龙游县\",\n    \"330881\": \"江山市\",\n    \"330902\": \"定海区\",\n    \"330903\": \"普陀区\",\n    \"330921\": \"岱山县\",\n    \"330922\": \"嵊泗县\",\n    \"331002\": \"椒江区\",\n    \"331003\": \"黄岩区\",\n    \"331004\": \"路桥区\",\n    \"331021\": \"玉环县\",\n    \"331022\": \"三门县\",\n    \"331023\": \"天台县\",\n    \"331024\": \"仙居县\",\n    \"331081\": \"温岭市\",\n    \"331082\": \"临海市\",\n    \"331102\": \"莲都区\",\n    \"331121\": \"青田县\",\n    \"331122\": \"缙云县\",\n    \"331123\": \"遂昌县\",\n    \"331124\": \"松阳县\",\n    \"331125\": \"云和县\",\n    \"331126\": \"庆元县\",\n    \"331127\": \"景宁畲族自治县\",\n    \"331181\": \"龙泉市\",\n    \"340102\": \"瑶海区\",\n    \"340103\": \"庐阳区\",\n    \"340104\": \"蜀山区\",\n    \"340111\": \"包河区\",\n    \"340121\": \"长丰县\",\n    \"340122\": \"肥东县\",\n    \"340123\": \"肥西县\",\n    \"340124\": \"庐江县\",\n    \"340181\": \"巢湖市\",\n    \"340202\": \"镜湖区\",\n    \"340203\": \"弋江区\",\n    \"340207\": \"鸠江区\",\n    \"340208\": \"三山区\",\n    \"340221\": \"芜湖县\",\n    \"340222\": \"繁昌县\",\n    \"340223\": \"南陵县\",\n    \"340225\": \"无为县\",\n    \"340302\": \"龙子湖区\",\n    \"340303\": \"蚌山区\",\n    \"340304\": \"禹会区\",\n    \"340311\": \"淮上区\",\n    \"340321\": \"怀远县\",\n    \"340322\": \"五河县\",\n    \"340323\": \"固镇县\",\n    \"340402\": \"大通区\",\n    \"340403\": \"田家庵区\",\n    \"340404\": \"谢家集区\",\n    \"340405\": \"八公山区\",\n    \"340406\": \"潘集区\",\n    \"340421\": \"凤台县\",\n    \"340422\": \"寿县\",\n    \"340503\": \"花山区\",\n    \"340504\": \"雨山区\",\n    \"340506\": \"博望区\",\n    \"340521\": \"当涂县\",\n    \"340522\": \"含山县\",\n    \"340523\": \"和县\",\n    \"340602\": \"杜集区\",\n    \"340603\": \"相山区\",\n    \"340604\": \"烈山区\",\n    \"340621\": \"濉溪县\",\n    \"340705\": \"铜官区\",\n    \"340706\": \"义安区\",\n    \"340711\": \"郊区\",\n    \"340722\": \"枞阳县\",\n    \"340802\": \"迎江区\",\n    \"340803\": \"大观区\",\n    \"340811\": \"宜秀区\",\n    \"340822\": \"怀宁县\",\n    \"340824\": \"潜山县\",\n    \"340825\": \"太湖县\",\n    \"340826\": \"宿松县\",\n    \"340827\": \"望江县\",\n    \"340828\": \"岳西县\",\n    \"340881\": \"桐城市\",\n    \"341002\": \"屯溪区\",\n    \"341003\": \"黄山区\",\n    \"341004\": \"徽州区\",\n    \"341021\": \"歙县\",\n    \"341022\": \"休宁县\",\n    \"341023\": \"黟县\",\n    \"341024\": \"祁门县\",\n    \"341102\": \"琅琊区\",\n    \"341103\": \"南谯区\",\n    \"341122\": \"来安县\",\n    \"341124\": \"全椒县\",\n    \"341125\": \"定远县\",\n    \"341126\": \"凤阳县\",\n    \"341181\": \"天长市\",\n    \"341182\": \"明光市\",\n    \"341202\": \"颍州区\",\n    \"341203\": \"颍东区\",\n    \"341204\": \"颍泉区\",\n    \"341221\": \"临泉县\",\n    \"341222\": \"太和县\",\n    \"341225\": \"阜南县\",\n    \"341226\": \"颍上县\",\n    \"341282\": \"界首市\",\n    \"341302\": \"埇桥区\",\n    \"341321\": \"砀山县\",\n    \"341322\": \"萧县\",\n    \"341323\": \"灵璧县\",\n    \"341324\": \"泗县\",\n    \"341502\": \"金安区\",\n    \"341503\": \"裕安区\",\n    \"341504\": \"叶集区\",\n    \"341522\": \"霍邱县\",\n    \"341523\": \"舒城县\",\n    \"341524\": \"金寨县\",\n    \"341525\": \"霍山县\",\n    \"341602\": \"谯城区\",\n    \"341621\": \"涡阳县\",\n    \"341622\": \"蒙城县\",\n    \"341623\": \"利辛县\",\n    \"341702\": \"贵池区\",\n    \"341721\": \"东至县\",\n    \"341722\": \"石台县\",\n    \"341723\": \"青阳县\",\n    \"341802\": \"宣州区\",\n    \"341821\": \"郎溪县\",\n    \"341822\": \"广德县\",\n    \"341823\": \"泾县\",\n    \"341824\": \"绩溪县\",\n    \"341825\": \"旌德县\",\n    \"341881\": \"宁国市\",\n    \"350102\": \"鼓楼区\",\n    \"350103\": \"台江区\",\n    \"350104\": \"仓山区\",\n    \"350105\": \"马尾区\",\n    \"350111\": \"晋安区\",\n    \"350121\": \"闽侯县\",\n    \"350122\": \"连江县\",\n    \"350123\": \"罗源县\",\n    \"350124\": \"闽清县\",\n    \"350125\": \"永泰县\",\n    \"350128\": \"平潭县\",\n    \"350181\": \"福清市\",\n    \"350182\": \"长乐市\",\n    \"350203\": \"思明区\",\n    \"350205\": \"海沧区\",\n    \"350206\": \"湖里区\",\n    \"350211\": \"集美区\",\n    \"350212\": \"同安区\",\n    \"350213\": \"翔安区\",\n    \"350302\": \"城厢区\",\n    \"350303\": \"涵江区\",\n    \"350304\": \"荔城区\",\n    \"350305\": \"秀屿区\",\n    \"350322\": \"仙游县\",\n    \"350402\": \"梅列区\",\n    \"350403\": \"三元区\",\n    \"350421\": \"明溪县\",\n    \"350423\": \"清流县\",\n    \"350424\": \"宁化县\",\n    \"350425\": \"大田县\",\n    \"350426\": \"尤溪县\",\n    \"350427\": \"沙县\",\n    \"350428\": \"将乐县\",\n    \"350429\": \"泰宁县\",\n    \"350430\": \"建宁县\",\n    \"350481\": \"永安市\",\n    \"350502\": \"鲤城区\",\n    \"350503\": \"丰泽区\",\n    \"350504\": \"洛江区\",\n    \"350505\": \"泉港区\",\n    \"350521\": \"惠安县\",\n    \"350524\": \"安溪县\",\n    \"350525\": \"永春县\",\n    \"350526\": \"德化县\",\n    \"350527\": \"金门县\",\n    \"350581\": \"石狮市\",\n    \"350582\": \"晋江市\",\n    \"350583\": \"南安市\",\n    \"350602\": \"芗城区\",\n    \"350603\": \"龙文区\",\n    \"350622\": \"云霄县\",\n    \"350623\": \"漳浦县\",\n    \"350624\": \"诏安县\",\n    \"350625\": \"长泰县\",\n    \"350626\": \"东山县\",\n    \"350627\": \"南靖县\",\n    \"350628\": \"平和县\",\n    \"350629\": \"华安县\",\n    \"350681\": \"龙海市\",\n    \"350702\": \"延平区\",\n    \"350703\": \"建阳区\",\n    \"350721\": \"顺昌县\",\n    \"350722\": \"浦城县\",\n    \"350723\": \"光泽县\",\n    \"350724\": \"松溪县\",\n    \"350725\": \"政和县\",\n    \"350781\": \"邵武市\",\n    \"350782\": \"武夷山市\",\n    \"350783\": \"建瓯市\",\n    \"350802\": \"新罗区\",\n    \"350803\": \"永定区\",\n    \"350821\": \"长汀县\",\n    \"350823\": \"上杭县\",\n    \"350824\": \"武平县\",\n    \"350825\": \"连城县\",\n    \"350881\": \"漳平市\",\n    \"350902\": \"蕉城区\",\n    \"350921\": \"霞浦县\",\n    \"350922\": \"古田县\",\n    \"350923\": \"屏南县\",\n    \"350924\": \"寿宁县\",\n    \"350925\": \"周宁县\",\n    \"350926\": \"柘荣县\",\n    \"350981\": \"福安市\",\n    \"350982\": \"福鼎市\",\n    \"360102\": \"东湖区\",\n    \"360103\": \"西湖区\",\n    \"360104\": \"青云谱区\",\n    \"360105\": \"湾里区\",\n    \"360111\": \"青山湖区\",\n    \"360112\": \"新建区\",\n    \"360121\": \"南昌县\",\n    \"360123\": \"安义县\",\n    \"360124\": \"进贤县\",\n    \"360202\": \"昌江区\",\n    \"360203\": \"珠山区\",\n    \"360222\": \"浮梁县\",\n    \"360281\": \"乐平市\",\n    \"360302\": \"安源区\",\n    \"360313\": \"湘东区\",\n    \"360321\": \"莲花县\",\n    \"360322\": \"上栗县\",\n    \"360323\": \"芦溪县\",\n    \"360402\": \"濂溪区\",\n    \"360403\": \"浔阳区\",\n    \"360421\": \"九江县\",\n    \"360423\": \"武宁县\",\n    \"360424\": \"修水县\",\n    \"360425\": \"永修县\",\n    \"360426\": \"德安县\",\n    \"360428\": \"都昌县\",\n    \"360429\": \"湖口县\",\n    \"360430\": \"彭泽县\",\n    \"360481\": \"瑞昌市\",\n    \"360482\": \"共青城市\",\n    \"360483\": \"庐山市\",\n    \"360502\": \"渝水区\",\n    \"360521\": \"分宜县\",\n    \"360602\": \"月湖区\",\n    \"360622\": \"余江县\",\n    \"360681\": \"贵溪市\",\n    \"360702\": \"章贡区\",\n    \"360703\": \"南康区\",\n    \"360721\": \"赣县\",\n    \"360722\": \"信丰县\",\n    \"360723\": \"大余县\",\n    \"360724\": \"上犹县\",\n    \"360725\": \"崇义县\",\n    \"360726\": \"安远县\",\n    \"360727\": \"龙南县\",\n    \"360728\": \"定南县\",\n    \"360729\": \"全南县\",\n    \"360730\": \"宁都县\",\n    \"360731\": \"于都县\",\n    \"360732\": \"兴国县\",\n    \"360733\": \"会昌县\",\n    \"360734\": \"寻乌县\",\n    \"360735\": \"石城县\",\n    \"360781\": \"瑞金市\",\n    \"360802\": \"吉州区\",\n    \"360803\": \"青原区\",\n    \"360821\": \"吉安县\",\n    \"360822\": \"吉水县\",\n    \"360823\": \"峡江县\",\n    \"360824\": \"新干县\",\n    \"360825\": \"永丰县\",\n    \"360826\": \"泰和县\",\n    \"360827\": \"遂川县\",\n    \"360828\": \"万安县\",\n    \"360829\": \"安福县\",\n    \"360830\": \"永新县\",\n    \"360881\": \"井冈山市\",\n    \"360902\": \"袁州区\",\n    \"360921\": \"奉新县\",\n    \"360922\": \"万载县\",\n    \"360923\": \"上高县\",\n    \"360924\": \"宜丰县\",\n    \"360925\": \"靖安县\",\n    \"360926\": \"铜鼓县\",\n    \"360981\": \"丰城市\",\n    \"360982\": \"樟树市\",\n    \"360983\": \"高安市\",\n    \"361002\": \"临川区\",\n    \"361021\": \"南城县\",\n    \"361022\": \"黎川县\",\n    \"361023\": \"南丰县\",\n    \"361024\": \"崇仁县\",\n    \"361025\": \"乐安县\",\n    \"361026\": \"宜黄县\",\n    \"361027\": \"金溪县\",\n    \"361028\": \"资溪县\",\n    \"361029\": \"东乡县\",\n    \"361030\": \"广昌县\",\n    \"361102\": \"信州区\",\n    \"361103\": \"广丰区\",\n    \"361121\": \"上饶县\",\n    \"361123\": \"玉山县\",\n    \"361124\": \"铅山县\",\n    \"361125\": \"横峰县\",\n    \"361126\": \"弋阳县\",\n    \"361127\": \"余干县\",\n    \"361128\": \"鄱阳县\",\n    \"361129\": \"万年县\",\n    \"361130\": \"婺源县\",\n    \"361181\": \"德兴市\",\n    \"370102\": \"历下区\",\n    \"370103\": \"市中区\",\n    \"370104\": \"槐荫区\",\n    \"370105\": \"天桥区\",\n    \"370112\": \"历城区\",\n    \"370113\": \"长清区\",\n    \"370124\": \"平阴县\",\n    \"370125\": \"济阳县\",\n    \"370126\": \"商河县\",\n    \"370181\": \"章丘市\",\n    \"370202\": \"市南区\",\n    \"370203\": \"市北区\",\n    \"370211\": \"黄岛区\",\n    \"370212\": \"崂山区\",\n    \"370213\": \"李沧区\",\n    \"370214\": \"城阳区\",\n    \"370281\": \"胶州市\",\n    \"370282\": \"即墨市\",\n    \"370283\": \"平度市\",\n    \"370285\": \"莱西市\",\n    \"370302\": \"淄川区\",\n    \"370303\": \"张店区\",\n    \"370304\": \"博山区\",\n    \"370305\": \"临淄区\",\n    \"370306\": \"周村区\",\n    \"370321\": \"桓台县\",\n    \"370322\": \"高青县\",\n    \"370323\": \"沂源县\",\n    \"370402\": \"市中区\",\n    \"370403\": \"薛城区\",\n    \"370404\": \"峄城区\",\n    \"370405\": \"台儿庄区\",\n    \"370406\": \"山亭区\",\n    \"370481\": \"滕州市\",\n    \"370502\": \"东营区\",\n    \"370503\": \"河口区\",\n    \"370505\": \"垦利区\",\n    \"370522\": \"利津县\",\n    \"370523\": \"广饶县\",\n    \"370602\": \"芝罘区\",\n    \"370611\": \"福山区\",\n    \"370612\": \"牟平区\",\n    \"370613\": \"莱山区\",\n    \"370634\": \"长岛县\",\n    \"370681\": \"龙口市\",\n    \"370682\": \"莱阳市\",\n    \"370683\": \"莱州市\",\n    \"370684\": \"蓬莱市\",\n    \"370685\": \"招远市\",\n    \"370686\": \"栖霞市\",\n    \"370687\": \"海阳市\",\n    \"370702\": \"潍城区\",\n    \"370703\": \"寒亭区\",\n    \"370704\": \"坊子区\",\n    \"370705\": \"奎文区\",\n    \"370724\": \"临朐县\",\n    \"370725\": \"昌乐县\",\n    \"370781\": \"青州市\",\n    \"370782\": \"诸城市\",\n    \"370783\": \"寿光市\",\n    \"370784\": \"安丘市\",\n    \"370785\": \"高密市\",\n    \"370786\": \"昌邑市\",\n    \"370811\": \"任城区\",\n    \"370812\": \"兖州区\",\n    \"370826\": \"微山县\",\n    \"370827\": \"鱼台县\",\n    \"370828\": \"金乡县\",\n    \"370829\": \"嘉祥县\",\n    \"370830\": \"汶上县\",\n    \"370831\": \"泗水县\",\n    \"370832\": \"梁山县\",\n    \"370881\": \"曲阜市\",\n    \"370883\": \"邹城市\",\n    \"370902\": \"泰山区\",\n    \"370911\": \"岱岳区\",\n    \"370921\": \"宁阳县\",\n    \"370923\": \"东平县\",\n    \"370982\": \"新泰市\",\n    \"370983\": \"肥城市\",\n    \"371002\": \"环翠区\",\n    \"371003\": \"文登区\",\n    \"371082\": \"荣成市\",\n    \"371083\": \"乳山市\",\n    \"371102\": \"东港区\",\n    \"371103\": \"岚山区\",\n    \"371121\": \"五莲县\",\n    \"371122\": \"莒县\",\n    \"371202\": \"莱城区\",\n    \"371203\": \"钢城区\",\n    \"371302\": \"兰山区\",\n    \"371311\": \"罗庄区\",\n    \"371312\": \"河东区\",\n    \"371321\": \"沂南县\",\n    \"371322\": \"郯城县\",\n    \"371323\": \"沂水县\",\n    \"371324\": \"兰陵县\",\n    \"371325\": \"费县\",\n    \"371326\": \"平邑县\",\n    \"371327\": \"莒南县\",\n    \"371328\": \"蒙阴县\",\n    \"371329\": \"临沭县\",\n    \"371402\": \"德城区\",\n    \"371403\": \"陵城区\",\n    \"371422\": \"宁津县\",\n    \"371423\": \"庆云县\",\n    \"371424\": \"临邑县\",\n    \"371425\": \"齐河县\",\n    \"371426\": \"平原县\",\n    \"371427\": \"夏津县\",\n    \"371428\": \"武城县\",\n    \"371481\": \"乐陵市\",\n    \"371482\": \"禹城市\",\n    \"371502\": \"东昌府区\",\n    \"371521\": \"阳谷县\",\n    \"371522\": \"莘县\",\n    \"371523\": \"茌平县\",\n    \"371524\": \"东阿县\",\n    \"371525\": \"冠县\",\n    \"371526\": \"高唐县\",\n    \"371581\": \"临清市\",\n    \"371602\": \"滨城区\",\n    \"371603\": \"沾化区\",\n    \"371621\": \"惠民县\",\n    \"371622\": \"阳信县\",\n    \"371623\": \"无棣县\",\n    \"371625\": \"博兴县\",\n    \"371626\": \"邹平县\",\n    \"371702\": \"牡丹区\",\n    \"371703\": \"定陶区\",\n    \"371721\": \"曹县\",\n    \"371722\": \"单县\",\n    \"371723\": \"成武县\",\n    \"371724\": \"巨野县\",\n    \"371725\": \"郓城县\",\n    \"371726\": \"鄄城县\",\n    \"371728\": \"东明县\",\n    \"410102\": \"中原区\",\n    \"410103\": \"二七区\",\n    \"410104\": \"管城回族区\",\n    \"410105\": \"金水区\",\n    \"410106\": \"上街区\",\n    \"410108\": \"惠济区\",\n    \"410122\": \"中牟县\",\n    \"410181\": \"巩义市\",\n    \"410182\": \"荥阳市\",\n    \"410183\": \"新密市\",\n    \"410184\": \"新郑市\",\n    \"410185\": \"登封市\",\n    \"410202\": \"龙亭区\",\n    \"410203\": \"顺河回族区\",\n    \"410204\": \"鼓楼区\",\n    \"410205\": \"禹王台区\",\n    \"410211\": \"金明区\",\n    \"410212\": \"祥符区\",\n    \"410221\": \"杞县\",\n    \"410222\": \"通许县\",\n    \"410223\": \"尉氏县\",\n    \"410225\": \"兰考县\",\n    \"410302\": \"老城区\",\n    \"410303\": \"西工区\",\n    \"410304\": \"瀍河回族区\",\n    \"410305\": \"涧西区\",\n    \"410306\": \"吉利区\",\n    \"410311\": \"洛龙区\",\n    \"410322\": \"孟津县\",\n    \"410323\": \"新安县\",\n    \"410324\": \"栾川县\",\n    \"410325\": \"嵩县\",\n    \"410326\": \"汝阳县\",\n    \"410327\": \"宜阳县\",\n    \"410328\": \"洛宁县\",\n    \"410329\": \"伊川县\",\n    \"410381\": \"偃师市\",\n    \"410402\": \"新华区\",\n    \"410403\": \"卫东区\",\n    \"410404\": \"石龙区\",\n    \"410411\": \"湛河区\",\n    \"410421\": \"宝丰县\",\n    \"410422\": \"叶县\",\n    \"410423\": \"鲁山县\",\n    \"410425\": \"郏县\",\n    \"410481\": \"舞钢市\",\n    \"410482\": \"汝州市\",\n    \"410502\": \"文峰区\",\n    \"410503\": \"北关区\",\n    \"410505\": \"殷都区\",\n    \"410506\": \"龙安区\",\n    \"410522\": \"安阳县\",\n    \"410523\": \"汤阴县\",\n    \"410526\": \"滑县\",\n    \"410527\": \"内黄县\",\n    \"410581\": \"林州市\",\n    \"410602\": \"鹤山区\",\n    \"410603\": \"山城区\",\n    \"410611\": \"淇滨区\",\n    \"410621\": \"浚县\",\n    \"410622\": \"淇县\",\n    \"410702\": \"红旗区\",\n    \"410703\": \"卫滨区\",\n    \"410704\": \"凤泉区\",\n    \"410711\": \"牧野区\",\n    \"410721\": \"新乡县\",\n    \"410724\": \"获嘉县\",\n    \"410725\": \"原阳县\",\n    \"410726\": \"延津县\",\n    \"410727\": \"封丘县\",\n    \"410728\": \"长垣县\",\n    \"410781\": \"卫辉市\",\n    \"410782\": \"辉县市\",\n    \"410802\": \"解放区\",\n    \"410803\": \"中站区\",\n    \"410804\": \"马村区\",\n    \"410811\": \"山阳区\",\n    \"410821\": \"修武县\",\n    \"410822\": \"博爱县\",\n    \"410823\": \"武陟县\",\n    \"410825\": \"温县\",\n    \"410882\": \"沁阳市\",\n    \"410883\": \"孟州市\",\n    \"410902\": \"华龙区\",\n    \"410922\": \"清丰县\",\n    \"410923\": \"南乐县\",\n    \"410926\": \"范县\",\n    \"410927\": \"台前县\",\n    \"410928\": \"濮阳县\",\n    \"411002\": \"魏都区\",\n    \"411023\": \"许昌县\",\n    \"411024\": \"鄢陵县\",\n    \"411025\": \"襄城县\",\n    \"411081\": \"禹州市\",\n    \"411082\": \"长葛市\",\n    \"411102\": \"源汇区\",\n    \"411103\": \"郾城区\",\n    \"411104\": \"召陵区\",\n    \"411121\": \"舞阳县\",\n    \"411122\": \"临颍县\",\n    \"411202\": \"湖滨区\",\n    \"411203\": \"陕州区\",\n    \"411221\": \"渑池县\",\n    \"411224\": \"卢氏县\",\n    \"411281\": \"义马市\",\n    \"411282\": \"灵宝市\",\n    \"411302\": \"宛城区\",\n    \"411303\": \"卧龙区\",\n    \"411321\": \"南召县\",\n    \"411322\": \"方城县\",\n    \"411323\": \"西峡县\",\n    \"411324\": \"镇平县\",\n    \"411325\": \"内乡县\",\n    \"411326\": \"淅川县\",\n    \"411327\": \"社旗县\",\n    \"411328\": \"唐河县\",\n    \"411329\": \"新野县\",\n    \"411330\": \"桐柏县\",\n    \"411381\": \"邓州市\",\n    \"411402\": \"梁园区\",\n    \"411403\": \"睢阳区\",\n    \"411421\": \"民权县\",\n    \"411422\": \"睢县\",\n    \"411423\": \"宁陵县\",\n    \"411424\": \"柘城县\",\n    \"411425\": \"虞城县\",\n    \"411426\": \"夏邑县\",\n    \"411481\": \"永城市\",\n    \"411502\": \"浉河区\",\n    \"411503\": \"平桥区\",\n    \"411521\": \"罗山县\",\n    \"411522\": \"光山县\",\n    \"411523\": \"新县\",\n    \"411524\": \"商城县\",\n    \"411525\": \"固始县\",\n    \"411526\": \"潢川县\",\n    \"411527\": \"淮滨县\",\n    \"411528\": \"息县\",\n    \"411602\": \"川汇区\",\n    \"411621\": \"扶沟县\",\n    \"411622\": \"西华县\",\n    \"411623\": \"商水县\",\n    \"411624\": \"沈丘县\",\n    \"411625\": \"郸城县\",\n    \"411626\": \"淮阳县\",\n    \"411627\": \"太康县\",\n    \"411628\": \"鹿邑县\",\n    \"411681\": \"项城市\",\n    \"411702\": \"驿城区\",\n    \"411721\": \"西平县\",\n    \"411722\": \"上蔡县\",\n    \"411723\": \"平舆县\",\n    \"411724\": \"正阳县\",\n    \"411725\": \"确山县\",\n    \"411726\": \"泌阳县\",\n    \"411727\": \"汝南县\",\n    \"411728\": \"遂平县\",\n    \"411729\": \"新蔡县\",\n    \"419001\": \"济源市\",\n    \"420102\": \"江岸区\",\n    \"420103\": \"江汉区\",\n    \"420104\": \"硚口区\",\n    \"420105\": \"汉阳区\",\n    \"420106\": \"武昌区\",\n    \"420107\": \"青山区\",\n    \"420111\": \"洪山区\",\n    \"420112\": \"东西湖区\",\n    \"420113\": \"汉南区\",\n    \"420114\": \"蔡甸区\",\n    \"420115\": \"江夏区\",\n    \"420116\": \"黄陂区\",\n    \"420117\": \"新洲区\",\n    \"420202\": \"黄石港区\",\n    \"420203\": \"西塞山区\",\n    \"420204\": \"下陆区\",\n    \"420205\": \"铁山区\",\n    \"420222\": \"阳新县\",\n    \"420281\": \"大冶市\",\n    \"420302\": \"茅箭区\",\n    \"420303\": \"张湾区\",\n    \"420304\": \"郧阳区\",\n    \"420322\": \"郧西县\",\n    \"420323\": \"竹山县\",\n    \"420324\": \"竹溪县\",\n    \"420325\": \"房县\",\n    \"420381\": \"丹江口市\",\n    \"420502\": \"西陵区\",\n    \"420503\": \"伍家岗区\",\n    \"420504\": \"点军区\",\n    \"420505\": \"猇亭区\",\n    \"420506\": \"夷陵区\",\n    \"420525\": \"远安县\",\n    \"420526\": \"兴山县\",\n    \"420527\": \"秭归县\",\n    \"420528\": \"长阳土家族自治县\",\n    \"420529\": \"五峰土家族自治县\",\n    \"420581\": \"宜都市\",\n    \"420582\": \"当阳市\",\n    \"420583\": \"枝江市\",\n    \"420602\": \"襄城区\",\n    \"420606\": \"樊城区\",\n    \"420607\": \"襄州区\",\n    \"420624\": \"南漳县\",\n    \"420625\": \"谷城县\",\n    \"420626\": \"保康县\",\n    \"420682\": \"老河口市\",\n    \"420683\": \"枣阳市\",\n    \"420684\": \"宜城市\",\n    \"420702\": \"梁子湖区\",\n    \"420703\": \"华容区\",\n    \"420704\": \"鄂城区\",\n    \"420802\": \"东宝区\",\n    \"420804\": \"掇刀区\",\n    \"420821\": \"京山县\",\n    \"420822\": \"沙洋县\",\n    \"420881\": \"钟祥市\",\n    \"420902\": \"孝南区\",\n    \"420921\": \"孝昌县\",\n    \"420922\": \"大悟县\",\n    \"420923\": \"云梦县\",\n    \"420981\": \"应城市\",\n    \"420982\": \"安陆市\",\n    \"420984\": \"汉川市\",\n    \"421002\": \"沙市区\",\n    \"421003\": \"荆州区\",\n    \"421022\": \"公安县\",\n    \"421023\": \"监利县\",\n    \"421024\": \"江陵县\",\n    \"421081\": \"石首市\",\n    \"421083\": \"洪湖市\",\n    \"421087\": \"松滋市\",\n    \"421102\": \"黄州区\",\n    \"421121\": \"团风县\",\n    \"421122\": \"红安县\",\n    \"421123\": \"罗田县\",\n    \"421124\": \"英山县\",\n    \"421125\": \"浠水县\",\n    \"421126\": \"蕲春县\",\n    \"421127\": \"黄梅县\",\n    \"421181\": \"麻城市\",\n    \"421182\": \"武穴市\",\n    \"421202\": \"咸安区\",\n    \"421221\": \"嘉鱼县\",\n    \"421222\": \"通城县\",\n    \"421223\": \"崇阳县\",\n    \"421224\": \"通山县\",\n    \"421281\": \"赤壁市\",\n    \"421303\": \"曾都区\",\n    \"421321\": \"随县\",\n    \"421381\": \"广水市\",\n    \"422801\": \"恩施市\",\n    \"422802\": \"利川市\",\n    \"422822\": \"建始县\",\n    \"422823\": \"巴东县\",\n    \"422825\": \"宣恩县\",\n    \"422826\": \"咸丰县\",\n    \"422827\": \"来凤县\",\n    \"422828\": \"鹤峰县\",\n    \"429004\": \"仙桃市\",\n    \"429005\": \"潜江市\",\n    \"429006\": \"天门市\",\n    \"429021\": \"神农架林区\",\n    \"430102\": \"芙蓉区\",\n    \"430103\": \"天心区\",\n    \"430104\": \"岳麓区\",\n    \"430105\": \"开福区\",\n    \"430111\": \"雨花区\",\n    \"430112\": \"望城区\",\n    \"430121\": \"长沙县\",\n    \"430124\": \"宁乡县\",\n    \"430181\": \"浏阳市\",\n    \"430202\": \"荷塘区\",\n    \"430203\": \"芦淞区\",\n    \"430204\": \"石峰区\",\n    \"430211\": \"天元区\",\n    \"430221\": \"株洲县\",\n    \"430223\": \"攸县\",\n    \"430224\": \"茶陵县\",\n    \"430225\": \"炎陵县\",\n    \"430281\": \"醴陵市\",\n    \"430302\": \"雨湖区\",\n    \"430304\": \"岳塘区\",\n    \"430321\": \"湘潭县\",\n    \"430381\": \"湘乡市\",\n    \"430382\": \"韶山市\",\n    \"430405\": \"珠晖区\",\n    \"430406\": \"雁峰区\",\n    \"430407\": \"石鼓区\",\n    \"430408\": \"蒸湘区\",\n    \"430412\": \"南岳区\",\n    \"430421\": \"衡阳县\",\n    \"430422\": \"衡南县\",\n    \"430423\": \"衡山县\",\n    \"430424\": \"衡东县\",\n    \"430426\": \"祁东县\",\n    \"430481\": \"耒阳市\",\n    \"430482\": \"常宁市\",\n    \"430502\": \"双清区\",\n    \"430503\": \"大祥区\",\n    \"430511\": \"北塔区\",\n    \"430521\": \"邵东县\",\n    \"430522\": \"新邵县\",\n    \"430523\": \"邵阳县\",\n    \"430524\": \"隆回县\",\n    \"430525\": \"洞口县\",\n    \"430527\": \"绥宁县\",\n    \"430528\": \"新宁县\",\n    \"430529\": \"城步苗族自治县\",\n    \"430581\": \"武冈市\",\n    \"430602\": \"岳阳楼区\",\n    \"430603\": \"云溪区\",\n    \"430611\": \"君山区\",\n    \"430621\": \"岳阳县\",\n    \"430623\": \"华容县\",\n    \"430624\": \"湘阴县\",\n    \"430626\": \"平江县\",\n    \"430681\": \"汨罗市\",\n    \"430682\": \"临湘市\",\n    \"430702\": \"武陵区\",\n    \"430703\": \"鼎城区\",\n    \"430721\": \"安乡县\",\n    \"430722\": \"汉寿县\",\n    \"430723\": \"澧县\",\n    \"430724\": \"临澧县\",\n    \"430725\": \"桃源县\",\n    \"430726\": \"石门县\",\n    \"430781\": \"津市市\",\n    \"430802\": \"永定区\",\n    \"430811\": \"武陵源区\",\n    \"430821\": \"慈利县\",\n    \"430822\": \"桑植县\",\n    \"430902\": \"资阳区\",\n    \"430903\": \"赫山区\",\n    \"430921\": \"南县\",\n    \"430922\": \"桃江县\",\n    \"430923\": \"安化县\",\n    \"430981\": \"沅江市\",\n    \"431002\": \"北湖区\",\n    \"431003\": \"苏仙区\",\n    \"431021\": \"桂阳县\",\n    \"431022\": \"宜章县\",\n    \"431023\": \"永兴县\",\n    \"431024\": \"嘉禾县\",\n    \"431025\": \"临武县\",\n    \"431026\": \"汝城县\",\n    \"431027\": \"桂东县\",\n    \"431028\": \"安仁县\",\n    \"431081\": \"资兴市\",\n    \"431102\": \"零陵区\",\n    \"431103\": \"冷水滩区\",\n    \"431121\": \"祁阳县\",\n    \"431122\": \"东安县\",\n    \"431123\": \"双牌县\",\n    \"431124\": \"道县\",\n    \"431125\": \"江永县\",\n    \"431126\": \"宁远县\",\n    \"431127\": \"蓝山县\",\n    \"431128\": \"新田县\",\n    \"431129\": \"江华瑶族自治县\",\n    \"431202\": \"鹤城区\",\n    \"431221\": \"中方县\",\n    \"431222\": \"沅陵县\",\n    \"431223\": \"辰溪县\",\n    \"431224\": \"溆浦县\",\n    \"431225\": \"会同县\",\n    \"431226\": \"麻阳苗族自治县\",\n    \"431227\": \"新晃侗族自治县\",\n    \"431228\": \"芷江侗族自治县\",\n    \"431229\": \"靖州苗族侗族自治县\",\n    \"431230\": \"通道侗族自治县\",\n    \"431281\": \"洪江市\",\n    \"431302\": \"娄星区\",\n    \"431321\": \"双峰县\",\n    \"431322\": \"新化县\",\n    \"431381\": \"冷水江市\",\n    \"431382\": \"涟源市\",\n    \"433101\": \"吉首市\",\n    \"433122\": \"泸溪县\",\n    \"433123\": \"凤凰县\",\n    \"433124\": \"花垣县\",\n    \"433125\": \"保靖县\",\n    \"433126\": \"古丈县\",\n    \"433127\": \"永顺县\",\n    \"433130\": \"龙山县\",\n    \"440103\": \"荔湾区\",\n    \"440104\": \"越秀区\",\n    \"440105\": \"海珠区\",\n    \"440106\": \"天河区\",\n    \"440111\": \"白云区\",\n    \"440112\": \"黄埔区\",\n    \"440113\": \"番禺区\",\n    \"440114\": \"花都区\",\n    \"440115\": \"南沙区\",\n    \"440117\": \"从化区\",\n    \"440118\": \"增城区\",\n    \"440203\": \"武江区\",\n    \"440204\": \"浈江区\",\n    \"440205\": \"曲江区\",\n    \"440222\": \"始兴县\",\n    \"440224\": \"仁化县\",\n    \"440229\": \"翁源县\",\n    \"440232\": \"乳源瑶族自治县\",\n    \"440233\": \"新丰县\",\n    \"440281\": \"乐昌市\",\n    \"440282\": \"南雄市\",\n    \"440303\": \"罗湖区\",\n    \"440304\": \"福田区\",\n    \"440305\": \"南山区\",\n    \"440306\": \"宝安区\",\n    \"440307\": \"龙岗区\",\n    \"440308\": \"盐田区\",\n    \"440402\": \"香洲区\",\n    \"440403\": \"斗门区\",\n    \"440404\": \"金湾区\",\n    \"440507\": \"龙湖区\",\n    \"440511\": \"金平区\",\n    \"440512\": \"濠江区\",\n    \"440513\": \"潮阳区\",\n    \"440514\": \"潮南区\",\n    \"440515\": \"澄海区\",\n    \"440523\": \"南澳县\",\n    \"440604\": \"禅城区\",\n    \"440605\": \"南海区\",\n    \"440606\": \"顺德区\",\n    \"440607\": \"三水区\",\n    \"440608\": \"高明区\",\n    \"440703\": \"蓬江区\",\n    \"440704\": \"江海区\",\n    \"440705\": \"新会区\",\n    \"440781\": \"台山市\",\n    \"440783\": \"开平市\",\n    \"440784\": \"鹤山市\",\n    \"440785\": \"恩平市\",\n    \"440802\": \"赤坎区\",\n    \"440803\": \"霞山区\",\n    \"440804\": \"坡头区\",\n    \"440811\": \"麻章区\",\n    \"440823\": \"遂溪县\",\n    \"440825\": \"徐闻县\",\n    \"440881\": \"廉江市\",\n    \"440882\": \"雷州市\",\n    \"440883\": \"吴川市\",\n    \"440902\": \"茂南区\",\n    \"440904\": \"电白区\",\n    \"440981\": \"高州市\",\n    \"440982\": \"化州市\",\n    \"440983\": \"信宜市\",\n    \"441202\": \"端州区\",\n    \"441203\": \"鼎湖区\",\n    \"441204\": \"高要区\",\n    \"441223\": \"广宁县\",\n    \"441224\": \"怀集县\",\n    \"441225\": \"封开县\",\n    \"441226\": \"德庆县\",\n    \"441284\": \"四会市\",\n    \"441302\": \"惠城区\",\n    \"441303\": \"惠阳区\",\n    \"441322\": \"博罗县\",\n    \"441323\": \"惠东县\",\n    \"441324\": \"龙门县\",\n    \"441402\": \"梅江区\",\n    \"441403\": \"梅县区\",\n    \"441422\": \"大埔县\",\n    \"441423\": \"丰顺县\",\n    \"441424\": \"五华县\",\n    \"441426\": \"平远县\",\n    \"441427\": \"蕉岭县\",\n    \"441481\": \"兴宁市\",\n    \"441502\": \"城区\",\n    \"441521\": \"海丰县\",\n    \"441523\": \"陆河县\",\n    \"441581\": \"陆丰市\",\n    \"441602\": \"源城区\",\n    \"441621\": \"紫金县\",\n    \"441622\": \"龙川县\",\n    \"441623\": \"连平县\",\n    \"441624\": \"和平县\",\n    \"441625\": \"东源县\",\n    \"441702\": \"江城区\",\n    \"441704\": \"阳东区\",\n    \"441721\": \"阳西县\",\n    \"441781\": \"阳春市\",\n    \"441802\": \"清城区\",\n    \"441803\": \"清新区\",\n    \"441821\": \"佛冈县\",\n    \"441823\": \"阳山县\",\n    \"441825\": \"连山壮族瑶族自治县\",\n    \"441826\": \"连南瑶族自治县\",\n    \"441881\": \"英德市\",\n    \"441882\": \"连州市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445102\": \"湘桥区\",\n    \"445103\": \"潮安区\",\n    \"445122\": \"饶平县\",\n    \"445202\": \"榕城区\",\n    \"445203\": \"揭东区\",\n    \"445222\": \"揭西县\",\n    \"445224\": \"惠来县\",\n    \"445281\": \"普宁市\",\n    \"445302\": \"云城区\",\n    \"445303\": \"云安区\",\n    \"445321\": \"新兴县\",\n    \"445322\": \"郁南县\",\n    \"445381\": \"罗定市\",\n    \"450102\": \"兴宁区\",\n    \"450103\": \"青秀区\",\n    \"450105\": \"江南区\",\n    \"450107\": \"西乡塘区\",\n    \"450108\": \"良庆区\",\n    \"450109\": \"邕宁区\",\n    \"450110\": \"武鸣区\",\n    \"450123\": \"隆安县\",\n    \"450124\": \"马山县\",\n    \"450125\": \"上林县\",\n    \"450126\": \"宾阳县\",\n    \"450127\": \"横县\",\n    \"450202\": \"城中区\",\n    \"450203\": \"鱼峰区\",\n    \"450204\": \"柳南区\",\n    \"450205\": \"柳北区\",\n    \"450206\": \"柳江区\",\n    \"450222\": \"柳城县\",\n    \"450223\": \"鹿寨县\",\n    \"450224\": \"融安县\",\n    \"450225\": \"融水苗族自治县\",\n    \"450226\": \"三江侗族自治县\",\n    \"450302\": \"秀峰区\",\n    \"450303\": \"叠彩区\",\n    \"450304\": \"象山区\",\n    \"450305\": \"七星区\",\n    \"450311\": \"雁山区\",\n    \"450312\": \"临桂区\",\n    \"450321\": \"阳朔县\",\n    \"450323\": \"灵川县\",\n    \"450324\": \"全州县\",\n    \"450325\": \"兴安县\",\n    \"450326\": \"永福县\",\n    \"450327\": \"灌阳县\",\n    \"450328\": \"龙胜各族自治县\",\n    \"450329\": \"资源县\",\n    \"450330\": \"平乐县\",\n    \"450331\": \"荔浦县\",\n    \"450332\": \"恭城瑶族自治县\",\n    \"450403\": \"万秀区\",\n    \"450405\": \"长洲区\",\n    \"450406\": \"龙圩区\",\n    \"450421\": \"苍梧县\",\n    \"450422\": \"藤县\",\n    \"450423\": \"蒙山县\",\n    \"450481\": \"岑溪市\",\n    \"450502\": \"海城区\",\n    \"450503\": \"银海区\",\n    \"450512\": \"铁山港区\",\n    \"450521\": \"合浦县\",\n    \"450602\": \"港口区\",\n    \"450603\": \"防城区\",\n    \"450621\": \"上思县\",\n    \"450681\": \"东兴市\",\n    \"450702\": \"钦南区\",\n    \"450703\": \"钦北区\",\n    \"450721\": \"灵山县\",\n    \"450722\": \"浦北县\",\n    \"450802\": \"港北区\",\n    \"450803\": \"港南区\",\n    \"450804\": \"覃塘区\",\n    \"450821\": \"平南县\",\n    \"450881\": \"桂平市\",\n    \"450902\": \"玉州区\",\n    \"450903\": \"福绵区\",\n    \"450921\": \"容县\",\n    \"450922\": \"陆川县\",\n    \"450923\": \"博白县\",\n    \"450924\": \"兴业县\",\n    \"450981\": \"北流市\",\n    \"451002\": \"右江区\",\n    \"451021\": \"田阳县\",\n    \"451022\": \"田东县\",\n    \"451023\": \"平果县\",\n    \"451024\": \"德保县\",\n    \"451026\": \"那坡县\",\n    \"451027\": \"凌云县\",\n    \"451028\": \"乐业县\",\n    \"451029\": \"田林县\",\n    \"451030\": \"西林县\",\n    \"451031\": \"隆林各族自治县\",\n    \"451081\": \"靖西市\",\n    \"451102\": \"八步区\",\n    \"451103\": \"平桂区\",\n    \"451121\": \"昭平县\",\n    \"451122\": \"钟山县\",\n    \"451123\": \"富川瑶族自治县\",\n    \"451202\": \"金城江区\",\n    \"451221\": \"南丹县\",\n    \"451222\": \"天峨县\",\n    \"451223\": \"凤山县\",\n    \"451224\": \"东兰县\",\n    \"451225\": \"罗城仫佬族自治县\",\n    \"451226\": \"环江毛南族自治县\",\n    \"451227\": \"巴马瑶族自治县\",\n    \"451228\": \"都安瑶族自治县\",\n    \"451229\": \"大化瑶族自治县\",\n    \"451281\": \"宜州市\",\n    \"451302\": \"兴宾区\",\n    \"451321\": \"忻城县\",\n    \"451322\": \"象州县\",\n    \"451323\": \"武宣县\",\n    \"451324\": \"金秀瑶族自治县\",\n    \"451381\": \"合山市\",\n    \"451402\": \"江州区\",\n    \"451421\": \"扶绥县\",\n    \"451422\": \"宁明县\",\n    \"451423\": \"龙州县\",\n    \"451424\": \"大新县\",\n    \"451425\": \"天等县\",\n    \"451481\": \"凭祥市\",\n    \"460105\": \"秀英区\",\n    \"460106\": \"龙华区\",\n    \"460107\": \"琼山区\",\n    \"460108\": \"美兰区\",\n    \"460201\": \"市辖区\",\n    \"460202\": \"海棠区\",\n    \"460203\": \"吉阳区\",\n    \"460204\": \"天涯区\",\n    \"460205\": \"崖州区\",\n    \"460321\": \"西沙群岛\",\n    \"460322\": \"南沙群岛\",\n    \"460323\": \"中沙群岛的岛礁及其海域\",\n    \"460400\": \"儋州市\",\n    \"469001\": \"五指山市\",\n    \"469002\": \"琼海市\",\n    \"469005\": \"文昌市\",\n    \"469006\": \"万宁市\",\n    \"469007\": \"东方市\",\n    \"469021\": \"定安县\",\n    \"469022\": \"屯昌县\",\n    \"469023\": \"澄迈县\",\n    \"469024\": \"临高县\",\n    \"469025\": \"白沙黎族自治县\",\n    \"469026\": \"昌江黎族自治县\",\n    \"469027\": \"乐东黎族自治县\",\n    \"469028\": \"陵水黎族自治县\",\n    \"469029\": \"保亭黎族苗族自治县\",\n    \"469030\": \"琼中黎族苗族自治县\",\n    \"500101\": \"万州区\",\n    \"500102\": \"涪陵区\",\n    \"500103\": \"渝中区\",\n    \"500104\": \"大渡口区\",\n    \"500105\": \"江北区\",\n    \"500106\": \"沙坪坝区\",\n    \"500107\": \"九龙坡区\",\n    \"500108\": \"南岸区\",\n    \"500109\": \"北碚区\",\n    \"500110\": \"綦江区\",\n    \"500111\": \"大足区\",\n    \"500112\": \"渝北区\",\n    \"500113\": \"巴南区\",\n    \"500114\": \"黔江区\",\n    \"500115\": \"长寿区\",\n    \"500116\": \"江津区\",\n    \"500117\": \"合川区\",\n    \"500118\": \"永川区\",\n    \"500119\": \"南川区\",\n    \"500120\": \"璧山区\",\n    \"500151\": \"铜梁区\",\n    \"500152\": \"潼南区\",\n    \"500153\": \"荣昌区\",\n    \"500154\": \"开州区\",\n    \"500228\": \"梁平县\",\n    \"500229\": \"城口县\",\n    \"500230\": \"丰都县\",\n    \"500231\": \"垫江县\",\n    \"500232\": \"武隆县\",\n    \"500233\": \"忠县\",\n    \"500235\": \"云阳县\",\n    \"500236\": \"奉节县\",\n    \"500237\": \"巫山县\",\n    \"500238\": \"巫溪县\",\n    \"500240\": \"石柱土家族自治县\",\n    \"500241\": \"秀山土家族苗族自治县\",\n    \"500242\": \"酉阳土家族苗族自治县\",\n    \"500243\": \"彭水苗族土家族自治县\",\n    \"510104\": \"锦江区\",\n    \"510105\": \"青羊区\",\n    \"510106\": \"金牛区\",\n    \"510107\": \"武侯区\",\n    \"510108\": \"成华区\",\n    \"510112\": \"龙泉驿区\",\n    \"510113\": \"青白江区\",\n    \"510114\": \"新都区\",\n    \"510115\": \"温江区\",\n    \"510116\": \"双流区\",\n    \"510121\": \"金堂县\",\n    \"510124\": \"郫县\",\n    \"510129\": \"大邑县\",\n    \"510131\": \"蒲江县\",\n    \"510132\": \"新津县\",\n    \"510181\": \"都江堰市\",\n    \"510182\": \"彭州市\",\n    \"510183\": \"邛崃市\",\n    \"510184\": \"崇州市\",\n    \"510185\": \"简阳市\",\n    \"510302\": \"自流井区\",\n    \"510303\": \"贡井区\",\n    \"510304\": \"大安区\",\n    \"510311\": \"沿滩区\",\n    \"510321\": \"荣县\",\n    \"510322\": \"富顺县\",\n    \"510402\": \"东区\",\n    \"510403\": \"西区\",\n    \"510411\": \"仁和区\",\n    \"510421\": \"米易县\",\n    \"510422\": \"盐边县\",\n    \"510502\": \"江阳区\",\n    \"510503\": \"纳溪区\",\n    \"510504\": \"龙马潭区\",\n    \"510521\": \"泸县\",\n    \"510522\": \"合江县\",\n    \"510524\": \"叙永县\",\n    \"510525\": \"古蔺县\",\n    \"510603\": \"旌阳区\",\n    \"510623\": \"中江县\",\n    \"510626\": \"罗江县\",\n    \"510681\": \"广汉市\",\n    \"510682\": \"什邡市\",\n    \"510683\": \"绵竹市\",\n    \"510703\": \"涪城区\",\n    \"510704\": \"游仙区\",\n    \"510705\": \"安州区\",\n    \"510722\": \"三台县\",\n    \"510723\": \"盐亭县\",\n    \"510725\": \"梓潼县\",\n    \"510726\": \"北川羌族自治县\",\n    \"510727\": \"平武县\",\n    \"510781\": \"江油市\",\n    \"510802\": \"利州区\",\n    \"510811\": \"昭化区\",\n    \"510812\": \"朝天区\",\n    \"510821\": \"旺苍县\",\n    \"510822\": \"青川县\",\n    \"510823\": \"剑阁县\",\n    \"510824\": \"苍溪县\",\n    \"510903\": \"船山区\",\n    \"510904\": \"安居区\",\n    \"510921\": \"蓬溪县\",\n    \"510922\": \"射洪县\",\n    \"510923\": \"大英县\",\n    \"511002\": \"市中区\",\n    \"511011\": \"东兴区\",\n    \"511024\": \"威远县\",\n    \"511025\": \"资中县\",\n    \"511028\": \"隆昌县\",\n    \"511102\": \"市中区\",\n    \"511111\": \"沙湾区\",\n    \"511112\": \"五通桥区\",\n    \"511113\": \"金口河区\",\n    \"511123\": \"犍为县\",\n    \"511124\": \"井研县\",\n    \"511126\": \"夹江县\",\n    \"511129\": \"沐川县\",\n    \"511132\": \"峨边彝族自治县\",\n    \"511133\": \"马边彝族自治县\",\n    \"511181\": \"峨眉山市\",\n    \"511302\": \"顺庆区\",\n    \"511303\": \"高坪区\",\n    \"511304\": \"嘉陵区\",\n    \"511321\": \"南部县\",\n    \"511322\": \"营山县\",\n    \"511323\": \"蓬安县\",\n    \"511324\": \"仪陇县\",\n    \"511325\": \"西充县\",\n    \"511381\": \"阆中市\",\n    \"511402\": \"东坡区\",\n    \"511403\": \"彭山区\",\n    \"511421\": \"仁寿县\",\n    \"511423\": \"洪雅县\",\n    \"511424\": \"丹棱县\",\n    \"511425\": \"青神县\",\n    \"511502\": \"翠屏区\",\n    \"511503\": \"南溪区\",\n    \"511521\": \"宜宾县\",\n    \"511523\": \"江安县\",\n    \"511524\": \"长宁县\",\n    \"511525\": \"高县\",\n    \"511526\": \"珙县\",\n    \"511527\": \"筠连县\",\n    \"511528\": \"兴文县\",\n    \"511529\": \"屏山县\",\n    \"511602\": \"广安区\",\n    \"511603\": \"前锋区\",\n    \"511621\": \"岳池县\",\n    \"511622\": \"武胜县\",\n    \"511623\": \"邻水县\",\n    \"511681\": \"华蓥市\",\n    \"511702\": \"通川区\",\n    \"511703\": \"达川区\",\n    \"511722\": \"宣汉县\",\n    \"511723\": \"开江县\",\n    \"511724\": \"大竹县\",\n    \"511725\": \"渠县\",\n    \"511781\": \"万源市\",\n    \"511802\": \"雨城区\",\n    \"511803\": \"名山区\",\n    \"511822\": \"荥经县\",\n    \"511823\": \"汉源县\",\n    \"511824\": \"石棉县\",\n    \"511825\": \"天全县\",\n    \"511826\": \"芦山县\",\n    \"511827\": \"宝兴县\",\n    \"511902\": \"巴州区\",\n    \"511903\": \"恩阳区\",\n    \"511921\": \"通江县\",\n    \"511922\": \"南江县\",\n    \"511923\": \"平昌县\",\n    \"512002\": \"雁江区\",\n    \"512021\": \"安岳县\",\n    \"512022\": \"乐至县\",\n    \"513201\": \"马尔康市\",\n    \"513221\": \"汶川县\",\n    \"513222\": \"理县\",\n    \"513223\": \"茂县\",\n    \"513224\": \"松潘县\",\n    \"513225\": \"九寨沟县\",\n    \"513226\": \"金川县\",\n    \"513227\": \"小金县\",\n    \"513228\": \"黑水县\",\n    \"513230\": \"壤塘县\",\n    \"513231\": \"阿坝县\",\n    \"513232\": \"若尔盖县\",\n    \"513233\": \"红原县\",\n    \"513301\": \"康定市\",\n    \"513322\": \"泸定县\",\n    \"513323\": \"丹巴县\",\n    \"513324\": \"九龙县\",\n    \"513325\": \"雅江县\",\n    \"513326\": \"道孚县\",\n    \"513327\": \"炉霍县\",\n    \"513328\": \"甘孜县\",\n    \"513329\": \"新龙县\",\n    \"513330\": \"德格县\",\n    \"513331\": \"白玉县\",\n    \"513332\": \"石渠县\",\n    \"513333\": \"色达县\",\n    \"513334\": \"理塘县\",\n    \"513335\": \"巴塘县\",\n    \"513336\": \"乡城县\",\n    \"513337\": \"稻城县\",\n    \"513338\": \"得荣县\",\n    \"513401\": \"西昌市\",\n    \"513422\": \"木里藏族自治县\",\n    \"513423\": \"盐源县\",\n    \"513424\": \"德昌县\",\n    \"513425\": \"会理县\",\n    \"513426\": \"会东县\",\n    \"513427\": \"宁南县\",\n    \"513428\": \"普格县\",\n    \"513429\": \"布拖县\",\n    \"513430\": \"金阳县\",\n    \"513431\": \"昭觉县\",\n    \"513432\": \"喜德县\",\n    \"513433\": \"冕宁县\",\n    \"513434\": \"越西县\",\n    \"513435\": \"甘洛县\",\n    \"513436\": \"美姑县\",\n    \"513437\": \"雷波县\",\n    \"520102\": \"南明区\",\n    \"520103\": \"云岩区\",\n    \"520111\": \"花溪区\",\n    \"520112\": \"乌当区\",\n    \"520113\": \"白云区\",\n    \"520115\": \"观山湖区\",\n    \"520121\": \"开阳县\",\n    \"520122\": \"息烽县\",\n    \"520123\": \"修文县\",\n    \"520181\": \"清镇市\",\n    \"520201\": \"钟山区\",\n    \"520203\": \"六枝特区\",\n    \"520221\": \"水城县\",\n    \"520222\": \"盘县\",\n    \"520302\": \"红花岗区\",\n    \"520303\": \"汇川区\",\n    \"520304\": \"播州区\",\n    \"520322\": \"桐梓县\",\n    \"520323\": \"绥阳县\",\n    \"520324\": \"正安县\",\n    \"520325\": \"道真仡佬族苗族自治县\",\n    \"520326\": \"务川仡佬族苗族自治县\",\n    \"520327\": \"凤冈县\",\n    \"520328\": \"湄潭县\",\n    \"520329\": \"余庆县\",\n    \"520330\": \"习水县\",\n    \"520381\": \"赤水市\",\n    \"520382\": \"仁怀市\",\n    \"520402\": \"西秀区\",\n    \"520403\": \"平坝区\",\n    \"520422\": \"普定县\",\n    \"520423\": \"镇宁布依族苗族自治县\",\n    \"520424\": \"关岭布依族苗族自治县\",\n    \"520425\": \"紫云苗族布依族自治县\",\n    \"520502\": \"七星关区\",\n    \"520521\": \"大方县\",\n    \"520522\": \"黔西县\",\n    \"520523\": \"金沙县\",\n    \"520524\": \"织金县\",\n    \"520525\": \"纳雍县\",\n    \"520526\": \"威宁彝族回族苗族自治县\",\n    \"520527\": \"赫章县\",\n    \"520602\": \"碧江区\",\n    \"520603\": \"万山区\",\n    \"520621\": \"江口县\",\n    \"520622\": \"玉屏侗族自治县\",\n    \"520623\": \"石阡县\",\n    \"520624\": \"思南县\",\n    \"520625\": \"印江土家族苗族自治县\",\n    \"520626\": \"德江县\",\n    \"520627\": \"沿河土家族自治县\",\n    \"520628\": \"松桃苗族自治县\",\n    \"522301\": \"兴义市\",\n    \"522322\": \"兴仁县\",\n    \"522323\": \"普安县\",\n    \"522324\": \"晴隆县\",\n    \"522325\": \"贞丰县\",\n    \"522326\": \"望谟县\",\n    \"522327\": \"册亨县\",\n    \"522328\": \"安龙县\",\n    \"522601\": \"凯里市\",\n    \"522622\": \"黄平县\",\n    \"522623\": \"施秉县\",\n    \"522624\": \"三穗县\",\n    \"522625\": \"镇远县\",\n    \"522626\": \"岑巩县\",\n    \"522627\": \"天柱县\",\n    \"522628\": \"锦屏县\",\n    \"522629\": \"剑河县\",\n    \"522630\": \"台江县\",\n    \"522631\": \"黎平县\",\n    \"522632\": \"榕江县\",\n    \"522633\": \"从江县\",\n    \"522634\": \"雷山县\",\n    \"522635\": \"麻江县\",\n    \"522636\": \"丹寨县\",\n    \"522701\": \"都匀市\",\n    \"522702\": \"福泉市\",\n    \"522722\": \"荔波县\",\n    \"522723\": \"贵定县\",\n    \"522725\": \"瓮安县\",\n    \"522726\": \"独山县\",\n    \"522727\": \"平塘县\",\n    \"522728\": \"罗甸县\",\n    \"522729\": \"长顺县\",\n    \"522730\": \"龙里县\",\n    \"522731\": \"惠水县\",\n    \"522732\": \"三都水族自治县\",\n    \"530102\": \"五华区\",\n    \"530103\": \"盘龙区\",\n    \"530111\": \"官渡区\",\n    \"530112\": \"西山区\",\n    \"530113\": \"东川区\",\n    \"530114\": \"呈贡区\",\n    \"530122\": \"晋宁县\",\n    \"530124\": \"富民县\",\n    \"530125\": \"宜良县\",\n    \"530126\": \"石林彝族自治县\",\n    \"530127\": \"嵩明县\",\n    \"530128\": \"禄劝彝族苗族自治县\",\n    \"530129\": \"寻甸回族彝族自治县\",\n    \"530181\": \"安宁市\",\n    \"530302\": \"麒麟区\",\n    \"530303\": \"沾益区\",\n    \"530321\": \"马龙县\",\n    \"530322\": \"陆良县\",\n    \"530323\": \"师宗县\",\n    \"530324\": \"罗平县\",\n    \"530325\": \"富源县\",\n    \"530326\": \"会泽县\",\n    \"530381\": \"宣威市\",\n    \"530402\": \"红塔区\",\n    \"530403\": \"江川区\",\n    \"530422\": \"澄江县\",\n    \"530423\": \"通海县\",\n    \"530424\": \"华宁县\",\n    \"530425\": \"易门县\",\n    \"530426\": \"峨山彝族自治县\",\n    \"530427\": \"新平彝族傣族自治县\",\n    \"530428\": \"元江哈尼族彝族傣族自治县\",\n    \"530502\": \"隆阳区\",\n    \"530521\": \"施甸县\",\n    \"530523\": \"龙陵县\",\n    \"530524\": \"昌宁县\",\n    \"530581\": \"腾冲市\",\n    \"530602\": \"昭阳区\",\n    \"530621\": \"鲁甸县\",\n    \"530622\": \"巧家县\",\n    \"530623\": \"盐津县\",\n    \"530624\": \"大关县\",\n    \"530625\": \"永善县\",\n    \"530626\": \"绥江县\",\n    \"530627\": \"镇雄县\",\n    \"530628\": \"彝良县\",\n    \"530629\": \"威信县\",\n    \"530630\": \"水富县\",\n    \"530702\": \"古城区\",\n    \"530721\": \"玉龙纳西族自治县\",\n    \"530722\": \"永胜县\",\n    \"530723\": \"华坪县\",\n    \"530724\": \"宁蒗彝族自治县\",\n    \"530802\": \"思茅区\",\n    \"530821\": \"宁洱哈尼族彝族自治县\",\n    \"530822\": \"墨江哈尼族自治县\",\n    \"530823\": \"景东彝族自治县\",\n    \"530824\": \"景谷傣族彝族自治县\",\n    \"530825\": \"镇沅彝族哈尼族拉祜族自治县\",\n    \"530826\": \"江城哈尼族彝族自治县\",\n    \"530827\": \"孟连傣族拉祜族佤族自治县\",\n    \"530828\": \"澜沧拉祜族自治县\",\n    \"530829\": \"西盟佤族自治县\",\n    \"530902\": \"临翔区\",\n    \"530921\": \"凤庆县\",\n    \"530922\": \"云县\",\n    \"530923\": \"永德县\",\n    \"530924\": \"镇康县\",\n    \"530925\": \"双江拉祜族佤族布朗族傣族自治县\",\n    \"530926\": \"耿马傣族佤族自治县\",\n    \"530927\": \"沧源佤族自治县\",\n    \"532301\": \"楚雄市\",\n    \"532322\": \"双柏县\",\n    \"532323\": \"牟定县\",\n    \"532324\": \"南华县\",\n    \"532325\": \"姚安县\",\n    \"532326\": \"大姚县\",\n    \"532327\": \"永仁县\",\n    \"532328\": \"元谋县\",\n    \"532329\": \"武定县\",\n    \"532331\": \"禄丰县\",\n    \"532501\": \"个旧市\",\n    \"532502\": \"开远市\",\n    \"532503\": \"蒙自市\",\n    \"532504\": \"弥勒市\",\n    \"532523\": \"屏边苗族自治县\",\n    \"532524\": \"建水县\",\n    \"532525\": \"石屏县\",\n    \"532527\": \"泸西县\",\n    \"532528\": \"元阳县\",\n    \"532529\": \"红河县\",\n    \"532530\": \"金平苗族瑶族傣族自治县\",\n    \"532531\": \"绿春县\",\n    \"532532\": \"河口瑶族自治县\",\n    \"532601\": \"文山市\",\n    \"532622\": \"砚山县\",\n    \"532623\": \"西畴县\",\n    \"532624\": \"麻栗坡县\",\n    \"532625\": \"马关县\",\n    \"532626\": \"丘北县\",\n    \"532627\": \"广南县\",\n    \"532628\": \"富宁县\",\n    \"532801\": \"景洪市\",\n    \"532822\": \"勐海县\",\n    \"532823\": \"勐腊县\",\n    \"532901\": \"大理市\",\n    \"532922\": \"漾濞彝族自治县\",\n    \"532923\": \"祥云县\",\n    \"532924\": \"宾川县\",\n    \"532925\": \"弥渡县\",\n    \"532926\": \"南涧彝族自治县\",\n    \"532927\": \"巍山彝族回族自治县\",\n    \"532928\": \"永平县\",\n    \"532929\": \"云龙县\",\n    \"532930\": \"洱源县\",\n    \"532931\": \"剑川县\",\n    \"532932\": \"鹤庆县\",\n    \"533102\": \"瑞丽市\",\n    \"533103\": \"芒市\",\n    \"533122\": \"梁河县\",\n    \"533123\": \"盈江县\",\n    \"533124\": \"陇川县\",\n    \"533301\": \"泸水市\",\n    \"533323\": \"福贡县\",\n    \"533324\": \"贡山独龙族怒族自治县\",\n    \"533325\": \"兰坪白族普米族自治县\",\n    \"533401\": \"香格里拉市\",\n    \"533422\": \"德钦县\",\n    \"533423\": \"维西傈僳族自治县\",\n    \"540102\": \"城关区\",\n    \"540103\": \"堆龙德庆区\",\n    \"540121\": \"林周县\",\n    \"540122\": \"当雄县\",\n    \"540123\": \"尼木县\",\n    \"540124\": \"曲水县\",\n    \"540126\": \"达孜县\",\n    \"540127\": \"墨竹工卡县\",\n    \"540202\": \"桑珠孜区\",\n    \"540221\": \"南木林县\",\n    \"540222\": \"江孜县\",\n    \"540223\": \"定日县\",\n    \"540224\": \"萨迦县\",\n    \"540225\": \"拉孜县\",\n    \"540226\": \"昂仁县\",\n    \"540227\": \"谢通门县\",\n    \"540228\": \"白朗县\",\n    \"540229\": \"仁布县\",\n    \"540230\": \"康马县\",\n    \"540231\": \"定结县\",\n    \"540232\": \"仲巴县\",\n    \"540233\": \"亚东县\",\n    \"540234\": \"吉隆县\",\n    \"540235\": \"聂拉木县\",\n    \"540236\": \"萨嘎县\",\n    \"540237\": \"岗巴县\",\n    \"540302\": \"卡若区\",\n    \"540321\": \"江达县\",\n    \"540322\": \"贡觉县\",\n    \"540323\": \"类乌齐县\",\n    \"540324\": \"丁青县\",\n    \"540325\": \"察雅县\",\n    \"540326\": \"八宿县\",\n    \"540327\": \"左贡县\",\n    \"540328\": \"芒康县\",\n    \"540329\": \"洛隆县\",\n    \"540330\": \"边坝县\",\n    \"540402\": \"巴宜区\",\n    \"540421\": \"工布江达县\",\n    \"540422\": \"米林县\",\n    \"540423\": \"墨脱县\",\n    \"540424\": \"波密县\",\n    \"540425\": \"察隅县\",\n    \"540426\": \"朗县\",\n    \"540502\": \"乃东区\",\n    \"540521\": \"扎囊县\",\n    \"540522\": \"贡嘎县\",\n    \"540523\": \"桑日县\",\n    \"540524\": \"琼结县\",\n    \"540525\": \"曲松县\",\n    \"540526\": \"措美县\",\n    \"540527\": \"洛扎县\",\n    \"540528\": \"加查县\",\n    \"540529\": \"隆子县\",\n    \"540530\": \"错那县\",\n    \"540531\": \"浪卡子县\",\n    \"542421\": \"那曲县\",\n    \"542422\": \"嘉黎县\",\n    \"542423\": \"比如县\",\n    \"542424\": \"聂荣县\",\n    \"542425\": \"安多县\",\n    \"542426\": \"申扎县\",\n    \"542427\": \"索县\",\n    \"542428\": \"班戈县\",\n    \"542429\": \"巴青县\",\n    \"542430\": \"尼玛县\",\n    \"542431\": \"双湖县\",\n    \"542521\": \"普兰县\",\n    \"542522\": \"札达县\",\n    \"542523\": \"噶尔县\",\n    \"542524\": \"日土县\",\n    \"542525\": \"革吉县\",\n    \"542526\": \"改则县\",\n    \"542527\": \"措勤县\",\n    \"610102\": \"新城区\",\n    \"610103\": \"碑林区\",\n    \"610104\": \"莲湖区\",\n    \"610111\": \"灞桥区\",\n    \"610112\": \"未央区\",\n    \"610113\": \"雁塔区\",\n    \"610114\": \"阎良区\",\n    \"610115\": \"临潼区\",\n    \"610116\": \"长安区\",\n    \"610117\": \"高陵区\",\n    \"610122\": \"蓝田县\",\n    \"610124\": \"周至县\",\n    \"610125\": \"户县\",\n    \"610202\": \"王益区\",\n    \"610203\": \"印台区\",\n    \"610204\": \"耀州区\",\n    \"610222\": \"宜君县\",\n    \"610302\": \"渭滨区\",\n    \"610303\": \"金台区\",\n    \"610304\": \"陈仓区\",\n    \"610322\": \"凤翔县\",\n    \"610323\": \"岐山县\",\n    \"610324\": \"扶风县\",\n    \"610326\": \"眉县\",\n    \"610327\": \"陇县\",\n    \"610328\": \"千阳县\",\n    \"610329\": \"麟游县\",\n    \"610330\": \"凤县\",\n    \"610331\": \"太白县\",\n    \"610402\": \"秦都区\",\n    \"610403\": \"杨陵区\",\n    \"610404\": \"渭城区\",\n    \"610422\": \"三原县\",\n    \"610423\": \"泾阳县\",\n    \"610424\": \"乾县\",\n    \"610425\": \"礼泉县\",\n    \"610426\": \"永寿县\",\n    \"610427\": \"彬县\",\n    \"610428\": \"长武县\",\n    \"610429\": \"旬邑县\",\n    \"610430\": \"淳化县\",\n    \"610431\": \"武功县\",\n    \"610481\": \"兴平市\",\n    \"610502\": \"临渭区\",\n    \"610503\": \"华州区\",\n    \"610522\": \"潼关县\",\n    \"610523\": \"大荔县\",\n    \"610524\": \"合阳县\",\n    \"610525\": \"澄城县\",\n    \"610526\": \"蒲城县\",\n    \"610527\": \"白水县\",\n    \"610528\": \"富平县\",\n    \"610581\": \"韩城市\",\n    \"610582\": \"华阴市\",\n    \"610602\": \"宝塔区\",\n    \"610603\": \"安塞区\",\n    \"610621\": \"延长县\",\n    \"610622\": \"延川县\",\n    \"610623\": \"子长县\",\n    \"610625\": \"志丹县\",\n    \"610626\": \"吴起县\",\n    \"610627\": \"甘泉县\",\n    \"610628\": \"富县\",\n    \"610629\": \"洛川县\",\n    \"610630\": \"宜川县\",\n    \"610631\": \"黄龙县\",\n    \"610632\": \"黄陵县\",\n    \"610702\": \"汉台区\",\n    \"610721\": \"南郑县\",\n    \"610722\": \"城固县\",\n    \"610723\": \"洋县\",\n    \"610724\": \"西乡县\",\n    \"610725\": \"勉县\",\n    \"610726\": \"宁强县\",\n    \"610727\": \"略阳县\",\n    \"610728\": \"镇巴县\",\n    \"610729\": \"留坝县\",\n    \"610730\": \"佛坪县\",\n    \"610802\": \"榆阳区\",\n    \"610803\": \"横山区\",\n    \"610821\": \"神木县\",\n    \"610822\": \"府谷县\",\n    \"610824\": \"靖边县\",\n    \"610825\": \"定边县\",\n    \"610826\": \"绥德县\",\n    \"610827\": \"米脂县\",\n    \"610828\": \"佳县\",\n    \"610829\": \"吴堡县\",\n    \"610830\": \"清涧县\",\n    \"610831\": \"子洲县\",\n    \"610902\": \"汉滨区\",\n    \"610921\": \"汉阴县\",\n    \"610922\": \"石泉县\",\n    \"610923\": \"宁陕县\",\n    \"610924\": \"紫阳县\",\n    \"610925\": \"岚皋县\",\n    \"610926\": \"平利县\",\n    \"610927\": \"镇坪县\",\n    \"610928\": \"旬阳县\",\n    \"610929\": \"白河县\",\n    \"611002\": \"商州区\",\n    \"611021\": \"洛南县\",\n    \"611022\": \"丹凤县\",\n    \"611023\": \"商南县\",\n    \"611024\": \"山阳县\",\n    \"611025\": \"镇安县\",\n    \"611026\": \"柞水县\",\n    \"620102\": \"城关区\",\n    \"620103\": \"七里河区\",\n    \"620104\": \"西固区\",\n    \"620105\": \"安宁区\",\n    \"620111\": \"红古区\",\n    \"620121\": \"永登县\",\n    \"620122\": \"皋兰县\",\n    \"620123\": \"榆中县\",\n    \"620201\": \"嘉峪关市\",\n    \"620302\": \"金川区\",\n    \"620321\": \"永昌县\",\n    \"620402\": \"白银区\",\n    \"620403\": \"平川区\",\n    \"620421\": \"靖远县\",\n    \"620422\": \"会宁县\",\n    \"620423\": \"景泰县\",\n    \"620502\": \"秦州区\",\n    \"620503\": \"麦积区\",\n    \"620521\": \"清水县\",\n    \"620522\": \"秦安县\",\n    \"620523\": \"甘谷县\",\n    \"620524\": \"武山县\",\n    \"620525\": \"张家川回族自治县\",\n    \"620602\": \"凉州区\",\n    \"620621\": \"民勤县\",\n    \"620622\": \"古浪县\",\n    \"620623\": \"天祝藏族自治县\",\n    \"620702\": \"甘州区\",\n    \"620721\": \"肃南裕固族自治县\",\n    \"620722\": \"民乐县\",\n    \"620723\": \"临泽县\",\n    \"620724\": \"高台县\",\n    \"620725\": \"山丹县\",\n    \"620802\": \"崆峒区\",\n    \"620821\": \"泾川县\",\n    \"620822\": \"灵台县\",\n    \"620823\": \"崇信县\",\n    \"620824\": \"华亭县\",\n    \"620825\": \"庄浪县\",\n    \"620826\": \"静宁县\",\n    \"620902\": \"肃州区\",\n    \"620921\": \"金塔县\",\n    \"620922\": \"瓜州县\",\n    \"620923\": \"肃北蒙古族自治县\",\n    \"620924\": \"阿克塞哈萨克族自治县\",\n    \"620981\": \"玉门市\",\n    \"620982\": \"敦煌市\",\n    \"621002\": \"西峰区\",\n    \"621021\": \"庆城县\",\n    \"621022\": \"环县\",\n    \"621023\": \"华池县\",\n    \"621024\": \"合水县\",\n    \"621025\": \"正宁县\",\n    \"621026\": \"宁县\",\n    \"621027\": \"镇原县\",\n    \"621102\": \"安定区\",\n    \"621121\": \"通渭县\",\n    \"621122\": \"陇西县\",\n    \"621123\": \"渭源县\",\n    \"621124\": \"临洮县\",\n    \"621125\": \"漳县\",\n    \"621126\": \"岷县\",\n    \"621202\": \"武都区\",\n    \"621221\": \"成县\",\n    \"621222\": \"文县\",\n    \"621223\": \"宕昌县\",\n    \"621224\": \"康县\",\n    \"621225\": \"西和县\",\n    \"621226\": \"礼县\",\n    \"621227\": \"徽县\",\n    \"621228\": \"两当县\",\n    \"622901\": \"临夏市\",\n    \"622921\": \"临夏县\",\n    \"622922\": \"康乐县\",\n    \"622923\": \"永靖县\",\n    \"622924\": \"广河县\",\n    \"622925\": \"和政县\",\n    \"622926\": \"东乡族自治县\",\n    \"622927\": \"积石山保安族东乡族撒拉族自治县\",\n    \"623001\": \"合作市\",\n    \"623021\": \"临潭县\",\n    \"623022\": \"卓尼县\",\n    \"623023\": \"舟曲县\",\n    \"623024\": \"迭部县\",\n    \"623025\": \"玛曲县\",\n    \"623026\": \"碌曲县\",\n    \"623027\": \"夏河县\",\n    \"630102\": \"城东区\",\n    \"630103\": \"城中区\",\n    \"630104\": \"城西区\",\n    \"630105\": \"城北区\",\n    \"630121\": \"大通回族土族自治县\",\n    \"630122\": \"湟中县\",\n    \"630123\": \"湟源县\",\n    \"630202\": \"乐都区\",\n    \"630203\": \"平安区\",\n    \"630222\": \"民和回族土族自治县\",\n    \"630223\": \"互助土族自治县\",\n    \"630224\": \"化隆回族自治县\",\n    \"630225\": \"循化撒拉族自治县\",\n    \"632221\": \"门源回族自治县\",\n    \"632222\": \"祁连县\",\n    \"632223\": \"海晏县\",\n    \"632224\": \"刚察县\",\n    \"632321\": \"同仁县\",\n    \"632322\": \"尖扎县\",\n    \"632323\": \"泽库县\",\n    \"632324\": \"河南蒙古族自治县\",\n    \"632521\": \"共和县\",\n    \"632522\": \"同德县\",\n    \"632523\": \"贵德县\",\n    \"632524\": \"兴海县\",\n    \"632525\": \"贵南县\",\n    \"632621\": \"玛沁县\",\n    \"632622\": \"班玛县\",\n    \"632623\": \"甘德县\",\n    \"632624\": \"达日县\",\n    \"632625\": \"久治县\",\n    \"632626\": \"玛多县\",\n    \"632701\": \"玉树市\",\n    \"632722\": \"杂多县\",\n    \"632723\": \"称多县\",\n    \"632724\": \"治多县\",\n    \"632725\": \"囊谦县\",\n    \"632726\": \"曲麻莱县\",\n    \"632801\": \"格尔木市\",\n    \"632802\": \"德令哈市\",\n    \"632821\": \"乌兰县\",\n    \"632822\": \"都兰县\",\n    \"632823\": \"天峻县\",\n    \"640104\": \"兴庆区\",\n    \"640105\": \"西夏区\",\n    \"640106\": \"金凤区\",\n    \"640121\": \"永宁县\",\n    \"640122\": \"贺兰县\",\n    \"640181\": \"灵武市\",\n    \"640202\": \"大武口区\",\n    \"640205\": \"惠农区\",\n    \"640221\": \"平罗县\",\n    \"640302\": \"利通区\",\n    \"640303\": \"红寺堡区\",\n    \"640323\": \"盐池县\",\n    \"640324\": \"同心县\",\n    \"640381\": \"青铜峡市\",\n    \"640402\": \"原州区\",\n    \"640422\": \"西吉县\",\n    \"640423\": \"隆德县\",\n    \"640424\": \"泾源县\",\n    \"640425\": \"彭阳县\",\n    \"640502\": \"沙坡头区\",\n    \"640521\": \"中宁县\",\n    \"640522\": \"海原县\",\n    \"650102\": \"天山区\",\n    \"650103\": \"沙依巴克区\",\n    \"650104\": \"新市区\",\n    \"650105\": \"水磨沟区\",\n    \"650106\": \"头屯河区\",\n    \"650107\": \"达坂城区\",\n    \"650109\": \"米东区\",\n    \"650121\": \"乌鲁木齐县\",\n    \"650202\": \"独山子区\",\n    \"650203\": \"克拉玛依区\",\n    \"650204\": \"白碱滩区\",\n    \"650205\": \"乌尔禾区\",\n    \"650402\": \"高昌区\",\n    \"650421\": \"鄯善县\",\n    \"650422\": \"托克逊县\",\n    \"650502\": \"伊州区\",\n    \"650521\": \"巴里坤哈萨克自治县\",\n    \"650522\": \"伊吾县\",\n    \"652301\": \"昌吉市\",\n    \"652302\": \"阜康市\",\n    \"652323\": \"呼图壁县\",\n    \"652324\": \"玛纳斯县\",\n    \"652325\": \"奇台县\",\n    \"652327\": \"吉木萨尔县\",\n    \"652328\": \"木垒哈萨克自治县\",\n    \"652701\": \"博乐市\",\n    \"652702\": \"阿拉山口市\",\n    \"652722\": \"精河县\",\n    \"652723\": \"温泉县\",\n    \"652801\": \"库尔勒市\",\n    \"652822\": \"轮台县\",\n    \"652823\": \"尉犁县\",\n    \"652824\": \"若羌县\",\n    \"652825\": \"且末县\",\n    \"652826\": \"焉耆回族自治县\",\n    \"652827\": \"和静县\",\n    \"652828\": \"和硕县\",\n    \"652829\": \"博湖县\",\n    \"652901\": \"阿克苏市\",\n    \"652922\": \"温宿县\",\n    \"652923\": \"库车县\",\n    \"652924\": \"沙雅县\",\n    \"652925\": \"新和县\",\n    \"652926\": \"拜城县\",\n    \"652927\": \"乌什县\",\n    \"652928\": \"阿瓦提县\",\n    \"652929\": \"柯坪县\",\n    \"653001\": \"阿图什市\",\n    \"653022\": \"阿克陶县\",\n    \"653023\": \"阿合奇县\",\n    \"653024\": \"乌恰县\",\n    \"653101\": \"喀什市\",\n    \"653121\": \"疏附县\",\n    \"653122\": \"疏勒县\",\n    \"653123\": \"英吉沙县\",\n    \"653124\": \"泽普县\",\n    \"653125\": \"莎车县\",\n    \"653126\": \"叶城县\",\n    \"653127\": \"麦盖提县\",\n    \"653128\": \"岳普湖县\",\n    \"653129\": \"伽师县\",\n    \"653130\": \"巴楚县\",\n    \"653131\": \"塔什库尔干塔吉克自治县\",\n    \"653201\": \"和田市\",\n    \"653221\": \"和田县\",\n    \"653222\": \"墨玉县\",\n    \"653223\": \"皮山县\",\n    \"653224\": \"洛浦县\",\n    \"653225\": \"策勒县\",\n    \"653226\": \"于田县\",\n    \"653227\": \"民丰县\",\n    \"654002\": \"伊宁市\",\n    \"654003\": \"奎屯市\",\n    \"654004\": \"霍尔果斯市\",\n    \"654021\": \"伊宁县\",\n    \"654022\": \"察布查尔锡伯自治县\",\n    \"654023\": \"霍城县\",\n    \"654024\": \"巩留县\",\n    \"654025\": \"新源县\",\n    \"654026\": \"昭苏县\",\n    \"654027\": \"特克斯县\",\n    \"654028\": \"尼勒克县\",\n    \"654201\": \"塔城市\",\n    \"654202\": \"乌苏市\",\n    \"654221\": \"额敏县\",\n    \"654223\": \"沙湾县\",\n    \"654224\": \"托里县\",\n    \"654225\": \"裕民县\",\n    \"654226\": \"和布克赛尔蒙古自治县\",\n    \"654301\": \"阿勒泰市\",\n    \"654321\": \"布尔津县\",\n    \"654322\": \"富蕴县\",\n    \"654323\": \"福海县\",\n    \"654324\": \"哈巴河县\",\n    \"654325\": \"青河县\",\n    \"654326\": \"吉木乃县\",\n    \"659001\": \"石河子市\",\n    \"659002\": \"阿拉尔市\",\n    \"659003\": \"图木舒克市\",\n    \"659004\": \"五家渠市\",\n    \"659006\": \"铁门关市\"\n  }\n}\n\nfunction getConfig(type) {\n  return (areaList && areaList[`${type}_list`]) || {};\n}\n\nfunction getList(type, code) {\n  let result = [];\n  if (type !== 'province' && !code) {\n    return result;\n  }\n\n  const list = getConfig(type);\n  result = Object.keys(list).map(code => ({\n    code,\n    name: list[code]\n  }));\n\n  if (code) {\n    // oversea code\n    if (code[0] === '9' && type === 'city') {\n      code = '9';\n    }\n\n    result = result.filter(item => item.code.indexOf(code) === 0);\n  }\n\n  return result;\n}\n\n// get index by code\nfunction getIndex(type, code) {\n  let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;\n  const list = getList(type, code.slice(0, compareNum - 2));\n\n  // oversea code\n  if (code[0] === '9' && type === 'province') {\n    compareNum = 1;\n  }\n\n  code = code.slice(0, compareNum);\n  for (let i = 0; i < list.length; i++) {\n    if (list[i].code.slice(0, compareNum) === code) {\n      return i;\n    }\n  }\n\n  return 0;\n}\n\n// 参考 https://github.com/youzan/vant-weapp/blob/dev/packages/area/index.ts\n// 定义数据出口\nmodule.exports = {\n  areaList: areaList,\n  getList: getList,\n  getIndex: getIndex\n}"
  },
  {
    "path": "litemall-wx/utils/check.js",
    "content": "function isValidPhone(str) {\n  var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;\n  if (!myreg.test(str)) {\n    return false;\n  } else {\n    return true;\n  }\n}\n\nmodule.exports = {\n  isValidPhone\n}"
  },
  {
    "path": "litemall-wx/utils/user.js",
    "content": "/**\n * 用户相关服务\n */\nconst util = require('../utils/util.js');\nconst api = require('../config/api.js');\n\n\n/**\n * Promise封装wx.checkSession\n */\nfunction checkSession() {\n  return new Promise(function(resolve, reject) {\n    wx.checkSession({\n      success: function() {\n        resolve(true);\n      },\n      fail: function() {\n        reject(false);\n      }\n    })\n  });\n}\n\n/**\n * Promise封装wx.login\n */\nfunction login() {\n  return new Promise(function(resolve, reject) {\n    wx.login({\n      success: function(res) {\n        if (res.code) {\n          resolve(res);\n        } else {\n          reject(res);\n        }\n      },\n      fail: function(err) {\n        reject(err);\n      }\n    });\n  });\n}\n\n/**\n * 调用微信登录\n */\nfunction loginByWeixin(userInfo) {\n\n  return new Promise(function(resolve, reject) {\n    return login().then((res) => {\n      //登录远程服务器\n      util.request(api.AuthLoginByWeixin, {\n        code: res.code,\n        userInfo: userInfo\n      }, 'POST').then(res => {\n        if (res.errno === 0) {\n          //存储用户信息\n          wx.setStorageSync('userInfo', res.data.userInfo);\n          wx.setStorageSync('token', res.data.token);\n\n          resolve(res);\n        } else {\n          reject(res);\n        }\n      }).catch((err) => {\n        reject(err);\n      });\n    }).catch((err) => {\n      reject(err);\n    })\n  });\n}\n\n/**\n * 判断用户是否登录\n */\nfunction checkLogin() {\n  return new Promise(function(resolve, reject) {\n    if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) {\n      checkSession().then(() => {\n        resolve(true);\n      }).catch(() => {\n        reject(false);\n      });\n    } else {\n      reject(false);\n    }\n  });\n}\n\nmodule.exports = {\n  loginByWeixin,\n  checkLogin,\n};"
  },
  {
    "path": "litemall-wx/utils/util.js",
    "content": "var api = require('../config/api.js');\nvar app = getApp();\n\nfunction formatTime(date) {\n  var year = date.getFullYear()\n  var month = date.getMonth() + 1\n  var day = date.getDate()\n\n  var hour = date.getHours()\n  var minute = date.getMinutes()\n  var second = date.getSeconds()\n\n\n  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')\n}\n\nfunction formatNumber(n) {\n  n = n.toString()\n  return n[1] ? n : '0' + n\n}\n\n/**\n * 封封微信的的request\n */\nfunction request(url, data = {}, method = \"GET\") {\n  return new Promise(function(resolve, reject) {\n    wx.request({\n      url: url,\n      data: data,\n      method: method,\n      header: {\n        'Content-Type': 'application/json',\n        'X-Litemall-Token': wx.getStorageSync('token')\n      },\n      success: function(res) {\n\n        if (res.statusCode == 200) {\n\n          if (res.data.errno == 501) {\n            // 清除登录相关内容\n            try {\n              wx.removeStorageSync('userInfo');\n              wx.removeStorageSync('token');\n            } catch (e) {\n              // Do something when catch error\n            }\n            // 切换到登录页面\n            wx.navigateTo({\n              url: '/pages/auth/login/login'\n            });\n          } else {\n            resolve(res.data);\n          }\n        } else {\n          reject(res.errMsg);\n        }\n\n      },\n      fail: function(err) {\n        reject(err)\n      }\n    })\n  });\n}\n\nfunction redirect(url) {\n\n  //判断页面是否需要登录\n  if (false) {\n    wx.redirectTo({\n      url: '/pages/auth/login/login'\n    });\n    return false;\n  } else {\n    wx.redirectTo({\n      url: url\n    });\n  }\n}\n\nfunction showErrorToast(msg) {\n  wx.showToast({\n    title: msg,\n    image: '/static/images/icon_error.png'\n  })\n}\n\nmodule.exports = {\n  formatTime,\n  request,\n  redirect,\n  showErrorToast\n}"
  },
  {
    "path": "litemall-wx-api/.gitignore",
    "content": "\n/target/\n/litemall-wx-api.iml\n"
  },
  {
    "path": "litemall-wx-api/pom.xml",
    "content": "<project xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns=\"http://maven.apache.org/POM/4.0.0\"\n         xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <artifactId>litemall-wx-api</artifactId>\n    <packaging>jar</packaging>\n\n    <parent>\n        <groupId>org.linlinjava</groupId>\n        <artifactId>litemall</artifactId>\n        <version>0.1.0</version>\n    </parent>\n\n    <dependencies>\n\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-mail</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-core</artifactId>\n            <exclusions>\n                <exclusion>\n                    <artifactId>commons-lang</artifactId>\n                    <groupId>commons-lang</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n\n        <dependency>\n            <groupId>org.linlinjava</groupId>\n            <artifactId>litemall-db</artifactId>\n        </dependency>\n\n        <dependency>\n            <groupId>com.github.binarywang</groupId>\n            <artifactId>weixin-java-pay</artifactId>\n            <exclusions>\n                <exclusion>\n                    <artifactId>qrcode-utils</artifactId>\n                    <groupId>com.github.binarywang</groupId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n\n        <dependency>\n            <groupId>com.github.binarywang</groupId>\n            <artifactId>weixin-java-miniapp</artifactId>\n        </dependency>\n\n        <dependency>\n\t\t     <groupId>io.springfox</groupId>\n\t\t\t <artifactId>springfox-swagger2</artifactId>\n\t\t</dependency>\n\t\t\n\t\t<dependency>\n\t\t\t<groupId>io.springfox</groupId>\n\t\t\t<artifactId>springfox-swagger-ui</artifactId>\n\t\t</dependency>\n\t\t\n\t\t<!--引入ui包-->\n\t\t<dependency>\n\t \t\t <groupId>com.github.xiaoymin</groupId>\n\t \t\t <artifactId>swagger-bootstrap-ui</artifactId>\n\t\t</dependency>\n\t\t<dependency>\n            <groupId>com.google.guava</groupId>\n            <artifactId>guava</artifactId>\n        </dependency>\n\n        <dependency>\n\t\t    <groupId>com.auth0</groupId>\n\t\t    <artifactId>java-jwt</artifactId>\n\t\t</dependency>\n\n    </dependencies>\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-maven-plugin</artifactId>\n                <executions>\n                    <execution>\n                        <id>repackage</id>\n                        <configuration>\n                            <executable>true</executable>\n                            <classifier>exec</classifier>\n                        </configuration>\n                    </execution>\n                </executions>\n            </plugin>\n        </plugins>\n    </build>\n</project>"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/Application.java",
    "content": "package org.linlinjava.litemall.wx;\n\nimport org.mybatis.spring.annotation.MapperScan;\nimport org.springframework.boot.SpringApplication;\nimport org.springframework.boot.autoconfigure.SpringBootApplication;\nimport org.springframework.scheduling.annotation.EnableScheduling;\nimport org.springframework.transaction.annotation.EnableTransactionManagement;\n\n@SpringBootApplication(scanBasePackages = {\"org.linlinjava.litemall.db\", \"org.linlinjava.litemall.core\", \"org.linlinjava.litemall.wx\"})\n@MapperScan(\"org.linlinjava.litemall.db.dao\")\n@EnableTransactionManagement\n@EnableScheduling\npublic class Application {\n\n    public static void main(String[] args) {\n        SpringApplication.run(Application.class, args);\n    }\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/annotation/LoginUser.java",
    "content": "package org.linlinjava.litemall.wx.annotation;\n\nimport java.lang.annotation.ElementType;\nimport java.lang.annotation.Retention;\nimport java.lang.annotation.RetentionPolicy;\nimport java.lang.annotation.Target;\n\n\n@Target(ElementType.PARAMETER)\n@Retention(RetentionPolicy.RUNTIME)\npublic @interface LoginUser {\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/annotation/support/LoginUserHandlerMethodArgumentResolver.java",
    "content": "package org.linlinjava.litemall.wx.annotation.support;\n\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.service.UserTokenManager;\nimport org.springframework.core.MethodParameter;\nimport org.springframework.web.bind.support.WebDataBinderFactory;\nimport org.springframework.web.context.request.NativeWebRequest;\nimport org.springframework.web.method.support.HandlerMethodArgumentResolver;\nimport org.springframework.web.method.support.ModelAndViewContainer;\n\n\npublic class LoginUserHandlerMethodArgumentResolver implements HandlerMethodArgumentResolver {\n    public static final String LOGIN_TOKEN_KEY = \"X-Litemall-Token\";\n\n    @Override\n    public boolean supportsParameter(MethodParameter parameter) {\n        return parameter.getParameterType().isAssignableFrom(Integer.class) && parameter.hasParameterAnnotation(LoginUser.class);\n    }\n\n    @Override\n    public Object resolveArgument(MethodParameter parameter, ModelAndViewContainer container,\n                                  NativeWebRequest request, WebDataBinderFactory factory) throws Exception {\n\n//        return new Integer(1);\n        String token = request.getHeader(LOGIN_TOKEN_KEY);\n        if (token == null || token.isEmpty()) {\n            return null;\n        }\n\n        return UserTokenManager.getUserId(token);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/config/WxSwagger2Configuration.java",
    "content": "package org.linlinjava.litemall.wx.config;\n\nimport com.github.xiaoymin.swaggerbootstrapui.annotations.EnableSwaggerBootstrapUI;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport springfox.documentation.builders.ApiInfoBuilder;\nimport springfox.documentation.builders.PathSelectors;\nimport springfox.documentation.builders.RequestHandlerSelectors;\nimport springfox.documentation.service.ApiInfo;\nimport springfox.documentation.spi.DocumentationType;\nimport springfox.documentation.spring.web.plugins.Docket;\nimport springfox.documentation.swagger2.annotations.EnableSwagger2;\n\n/**\n * swagger在线文档配置<br>\n * 项目启动后可通过地址：http://host:ip/swagger-ui.html 查看在线文档\n *\n * @author enilu\n * @version 2018-07-24\n */\n\n@Configuration\n@EnableSwagger2\n@EnableSwaggerBootstrapUI\npublic class WxSwagger2Configuration {\n    @Bean\n    public Docket wxDocket() {\n\n        return new Docket(DocumentationType.SWAGGER_2)\n                .groupName(\"wx\")\n                .apiInfo(wxApiInfo())\n                .select()\n                .apis(RequestHandlerSelectors.basePackage(\"org.linlinjava.litemall.wx.web\"))\n                .paths(PathSelectors.any())\n                .build();\n    }\n\n    private ApiInfo wxApiInfo() {\n        return new ApiInfoBuilder()\n                .title(\"litemall-wx API\")\n                .description(\"litemall小商场API\")\n                .termsOfServiceUrl(\"https://github.com/linlinjava/litemall\")\n                .contact(\"https://github.com/linlinjava/litemall\")\n                .version(\"1.0\")\n                .build();\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/config/WxWebMvcConfiguration.java",
    "content": "package org.linlinjava.litemall.wx.config;\n\nimport org.linlinjava.litemall.wx.annotation.support.LoginUserHandlerMethodArgumentResolver;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.web.method.support.HandlerMethodArgumentResolver;\nimport org.springframework.web.servlet.config.annotation.WebMvcConfigurer;\n\nimport java.util.List;\n\n@Configuration\npublic class WxWebMvcConfiguration implements WebMvcConfigurer {\n    @Override\n    public void addArgumentResolvers(List<HandlerMethodArgumentResolver> argumentResolvers) {\n        argumentResolvers.add(new LoginUserHandlerMethodArgumentResolver());\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dto/CaptchaItem.java",
    "content": "package org.linlinjava.litemall.wx.dto;\n\nimport java.time.LocalDateTime;\n\n/**\n * 验证码实体类，用于缓存验证码发送\n */\npublic class CaptchaItem {\n    private String phoneNumber;\n    private String code;\n    private LocalDateTime expireTime;\n\n    public String getPhoneNumber() {\n        return phoneNumber;\n    }\n\n    public void setPhoneNumber(String phoneNumber) {\n        this.phoneNumber = phoneNumber;\n    }\n\n    public String getCode() {\n        return code;\n    }\n\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    public LocalDateTime getExpireTime() {\n        return expireTime;\n    }\n\n    public void setExpireTime(LocalDateTime expireTime) {\n        this.expireTime = expireTime;\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dto/UserInfo.java",
    "content": "package org.linlinjava.litemall.wx.dto;\n\npublic class UserInfo {\n    private String nickName;\n    private String avatarUrl;\n    private String country;\n    private String province;\n    private String city;\n    private String language;\n    private Byte gender;\n\n    public String getCountry() {\n        return country;\n    }\n\n    public void setCountry(String country) {\n        this.country = country;\n    }\n\n    public String getProvince() {\n        return province;\n    }\n\n    public void setProvince(String province) {\n        this.province = province;\n    }\n\n    public String getCity() {\n        return city;\n    }\n\n    public void setCity(String city) {\n        this.city = city;\n    }\n\n    public String getLanguage() {\n        return language;\n    }\n\n    public void setLanguage(String language) {\n        this.language = language;\n    }\n\n    public Byte getGender() {\n        return gender;\n    }\n\n    public void setGender(Byte gender) {\n        this.gender = gender;\n    }\n\n    public String getNickName() {\n        return nickName;\n    }\n\n    public void setNickName(String nickName) {\n        this.nickName = nickName;\n    }\n\n    public String getAvatarUrl() {\n        return avatarUrl;\n    }\n\n    public void setAvatarUrl(String avatarUrl) {\n        this.avatarUrl = avatarUrl;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dto/UserToken.java",
    "content": "package org.linlinjava.litemall.wx.dto;\n\nimport java.time.LocalDateTime;\n\npublic class UserToken {\n    private Integer userId;\n    private String token;\n    private String sessionKey;\n    private LocalDateTime expireTime;\n    private LocalDateTime updateTime;\n\n    public String getSessionKey() {\n        return sessionKey;\n    }\n\n    public void setSessionKey(String sessionKey) {\n        this.sessionKey = sessionKey;\n    }\n\n    public Integer getUserId() {\n        return userId;\n    }\n\n    public void setUserId(Integer userId) {\n        this.userId = userId;\n    }\n\n    public String getToken() {\n        return token;\n    }\n\n    public void setToken(String token) {\n        this.token = token;\n    }\n\n    public LocalDateTime getExpireTime() {\n        return expireTime;\n    }\n\n    public void setExpireTime(LocalDateTime expireTime) {\n        this.expireTime = expireTime;\n    }\n\n    public LocalDateTime getUpdateTime() {\n        return updateTime;\n    }\n\n    public void setUpdateTime(LocalDateTime updateTime) {\n        this.updateTime = updateTime;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/dto/WxLoginInfo.java",
    "content": "package org.linlinjava.litemall.wx.dto;\n\npublic class WxLoginInfo {\n    private String code;\n    private UserInfo userInfo;\n\n    public String getCode() {\n        return code;\n    }\n\n    public void setCode(String code) {\n        this.code = code;\n    }\n\n    public UserInfo getUserInfo() {\n        return userInfo;\n    }\n\n    public void setUserInfo(UserInfo userInfo) {\n        this.userInfo = userInfo;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/CaptchaCodeManager.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport org.linlinjava.litemall.wx.dto.CaptchaItem;\n\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n * 缓存系统中的验证码\n */\npublic class CaptchaCodeManager {\n    private static ConcurrentHashMap<String, CaptchaItem> captchaCodeCache = new ConcurrentHashMap<>();\n\n    /**\n     * 添加到缓存\n     *\n     * @param phoneNumber 电话号码\n     * @param code        验证码\n     */\n    public static boolean addToCache(String phoneNumber, String code) {\n\n\n        //已经发过验证码且验证码还未过期\n        if (captchaCodeCache.get(phoneNumber) != null) {\n            if (captchaCodeCache.get(phoneNumber).getExpireTime().isAfter(LocalDateTime.now())) {\n                return false;\n            } else {\n                //存在但是已过期，删掉\n                captchaCodeCache.remove(phoneNumber);\n            }\n        }\n\n        CaptchaItem captchaItem = new CaptchaItem();\n        captchaItem.setPhoneNumber(phoneNumber);\n        captchaItem.setCode(code);\n        // 有效期为1分钟\n        captchaItem.setExpireTime(LocalDateTime.now().plusMinutes(1));\n\n        captchaCodeCache.put(phoneNumber, captchaItem);\n\n        return true;\n    }\n\n    /**\n     * 获取缓存的验证码\n     *\n     * @param phoneNumber 关联的电话号码\n     * @return 验证码\n     */\n    public static String getCachedCaptcha(String phoneNumber) {\n        //没有这个电话记录\n        if (captchaCodeCache.get(phoneNumber) == null)\n            return null;\n\n        //有电话记录但是已经过期\n        if (captchaCodeCache.get(phoneNumber).getExpireTime().isBefore(LocalDateTime.now())) {\n            return null;\n        }\n\n        return captchaCodeCache.get(phoneNumber).getCode();\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/GetRegionService.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport org.linlinjava.litemall.db.domain.LitemallRegion;\nimport org.linlinjava.litemall.db.service.LitemallRegionService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Component;\n\nimport java.util.List;\n\n/**\n * @author zhy\n * @date 2019-01-17 23:07\n **/\n@Component\npublic class GetRegionService {\n\n\t@Autowired\n\tprivate LitemallRegionService regionService;\n\n\tprivate static List<LitemallRegion> litemallRegions;\n\n\tprotected List<LitemallRegion> getLitemallRegions() {\n\t\tif(litemallRegions==null){\n\t\t\tcreateRegion();\n\t\t}\n\t\treturn litemallRegions;\n\t}\n\n\tprivate synchronized void createRegion(){\n\t\tif (litemallRegions == null) {\n\t\t\tlitemallRegions = regionService.getAll();\n\t\t}\n\t}\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/HomeCacheManager.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.Map;\nimport java.util.concurrent.ConcurrentHashMap;\n\n/**\n * 简单缓存的数据\n */\npublic class HomeCacheManager {\n    public static final boolean ENABLE = false;\n    public static final String INDEX = \"index\";\n    public static final String CATALOG = \"catalog\";\n    public static final String GOODS = \"goods\";\n\n    private static ConcurrentHashMap<String, Map<String, Object>> cacheDataList = new ConcurrentHashMap<>();\n\n    /**\n     * 缓存首页数据\n     *\n     * @param data\n     */\n    public static void loadData(String cacheKey, Map<String, Object> data) {\n        Map<String, Object> cacheData = cacheDataList.get(cacheKey);\n        //有记录，则先丢弃\n        if (cacheData != null) {\n            cacheData.remove(cacheKey);\n        }\n\n        cacheData = new HashMap<>();\n        //深拷贝\n        cacheData.putAll(data);\n        cacheData.put(\"isCache\", \"true\");\n        //设置缓存有效期为10分钟\n        cacheData.put(\"expireTime\", LocalDateTime.now().plusMinutes(10));\n        cacheDataList.put(cacheKey, cacheData);\n    }\n\n    public static Map<String, Object> getCacheData(String cacheKey) {\n        return cacheDataList.get(cacheKey);\n    }\n\n    /**\n     * 判断缓存中是否有数据\n     *\n     * @return\n     */\n    public static boolean hasData(String cacheKey) {\n        if (!ENABLE)\n            return false;\n\n        Map<String, Object> cacheData = cacheDataList.get(cacheKey);\n        if (cacheData == null) {\n            return false;\n        } else {\n            LocalDateTime expire = (LocalDateTime) cacheData.get(\"expireTime\");\n            if (expire.isBefore(LocalDateTime.now())) {\n                return false;\n            } else {\n                return true;\n            }\n        }\n    }\n\n    /**\n     * 清除所有缓存\n     */\n    public static void clearAll() {\n        cacheDataList = new ConcurrentHashMap<>();\n    }\n\n    /**\n     * 清除缓存数据\n     */\n    public static void clear(String cacheKey) {\n        Map<String, Object> cacheData = cacheDataList.get(cacheKey);\n        if (cacheData != null) {\n            cacheDataList.remove(cacheKey);\n        }\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/UserInfoService.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.linlinjava.litemall.wx.dto.UserInfo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.util.Assert;\n\n@Service\npublic class UserInfoService {\n    @Autowired\n    private LitemallUserService userService;\n\n\n    public UserInfo getInfo(Integer userId) {\n        LitemallUser user = userService.findById(userId);\n        Assert.state(user != null, \"用户不存在\");\n        UserInfo userInfo = new UserInfo();\n        userInfo.setNickName(user.getNickname());\n        userInfo.setAvatarUrl(user.getAvatar());\n        return userInfo;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/UserTokenManager.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport org.linlinjava.litemall.wx.util.JwtHelper;\n\n/**\n * 维护用户token\n */\npublic class UserTokenManager {\n\tpublic static String generateToken(Integer id) {\n        JwtHelper jwtHelper = new JwtHelper();\n        return jwtHelper.createToken(id);\n    }\n    public static Integer getUserId(String token) {\n    \tJwtHelper jwtHelper = new JwtHelper();\n    \tInteger userId = jwtHelper.verifyTokenAndGetUserId(token);\n    \tif(userId == null || userId == 0){\n    \t\treturn null;\n    \t}\n        return userId;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxGrouponRuleService.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport com.github.pagehelper.Page;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallGrouponRulesService;\nimport org.linlinjava.litemall.db.service.LitemallGrouponService;\nimport org.linlinjava.litemall.wx.vo.GrouponRuleVo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\n\nimport java.util.List;\n\n@Service\npublic class WxGrouponRuleService {\n    private final Log logger = LogFactory.getLog(WxGrouponRuleService.class);\n\n    @Autowired\n    private LitemallGrouponRulesService grouponRulesService;\n    @Autowired\n    private LitemallGrouponService grouponService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n\n\n    public List<GrouponRuleVo> queryList(Integer page, Integer size) {\n        return queryList(page, size, \"add_time\", \"desc\");\n    }\n\n\n    public List<GrouponRuleVo> queryList(Integer page, Integer size, String sort, String order) {\n        Page<LitemallGrouponRules> grouponRulesList = (Page<LitemallGrouponRules>)grouponRulesService.queryList(page, size, sort, order);\n\n        Page<GrouponRuleVo> grouponList = new Page<GrouponRuleVo>();\n        grouponList.setPages(grouponRulesList.getPages());\n        grouponList.setPageNum(grouponRulesList.getPageNum());\n        grouponList.setPageSize(grouponRulesList.getPageSize());\n        grouponList.setTotal(grouponRulesList.getTotal());\n\n        for (LitemallGrouponRules rule : grouponRulesList) {\n            Integer goodsId = rule.getGoodsId();\n            LitemallGoods goods = goodsService.findById(goodsId);\n            if (goods == null)\n                continue;\n\n            GrouponRuleVo grouponRuleVo = new GrouponRuleVo();\n            grouponRuleVo.setId(goods.getId());\n            grouponRuleVo.setName(goods.getName());\n            grouponRuleVo.setBrief(goods.getBrief());\n            grouponRuleVo.setPicUrl(goods.getPicUrl());\n            grouponRuleVo.setCounterPrice(goods.getCounterPrice());\n            grouponRuleVo.setRetailPrice(goods.getRetailPrice());\n            grouponRuleVo.setGrouponPrice(goods.getRetailPrice().subtract(rule.getDiscount()));\n            grouponRuleVo.setGrouponDiscount(rule.getDiscount());\n            grouponRuleVo.setGrouponMember(rule.getDiscountMember());\n            grouponRuleVo.setExpireTime(rule.getExpireTime());\n            grouponList.add(grouponRuleVo);\n        }\n\n        return grouponList;\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/service/WxOrderService.java",
    "content": "package org.linlinjava.litemall.wx.service;\n\nimport com.github.binarywang.wxpay.bean.notify.WxPayNotifyResponse;\nimport com.github.binarywang.wxpay.bean.notify.WxPayOrderNotifyResult;\nimport com.github.binarywang.wxpay.bean.order.WxPayMpOrderResult;\nimport com.github.binarywang.wxpay.bean.order.WxPayMwebOrderResult;\nimport com.github.binarywang.wxpay.bean.request.WxPayUnifiedOrderRequest;\nimport com.github.binarywang.wxpay.bean.result.BaseWxPayResult;\nimport com.github.binarywang.wxpay.constant.WxPayConstants;\nimport com.github.binarywang.wxpay.exception.WxPayException;\nimport com.github.binarywang.wxpay.service.WxPayService;\nimport org.apache.commons.io.IOUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.express.ExpressService;\nimport org.linlinjava.litemall.core.express.dao.ExpressInfo;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.NotifyType;\nimport org.linlinjava.litemall.core.qcode.QCodeService;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.task.TaskService;\nimport org.linlinjava.litemall.core.util.DateTimeUtil;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.CouponUserConstant;\nimport org.linlinjava.litemall.db.util.GrouponConstant;\nimport org.linlinjava.litemall.db.util.OrderHandleOption;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.linlinjava.litemall.core.util.IpUtil;\nimport org.linlinjava.litemall.wx.task.OrderUnpaidTask;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.stereotype.Service;\nimport org.springframework.transaction.annotation.Transactional;\nimport org.springframework.util.Assert;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.wx.util.WxResponseCode.*;\n\n/**\n * 订单服务\n *\n * <p>\n * 订单状态：\n * 101 订单生成，未支付；102，下单后未支付用户取消；103，下单后未支付超时系统自动取消\n * 201 支付完成，商家未发货；202，订单生产，已付款未发货，但是退款取消；\n * 301 商家发货，用户未确认；\n * 401 用户确认收货； 402 用户没有确认收货超过一定时间，系统自动确认收货；\n *\n * <p>\n * 用户操作：\n * 当101用户未付款时，此时用户可以进行的操作是取消订单，或者付款操作\n * 当201支付完成而商家未发货时，此时用户可以取消订单并申请退款\n * 当301商家已发货时，此时用户可以有确认收货的操作\n * 当401用户确认收货以后，此时用户可以进行的操作是删除订单，评价商品，申请售后，或者再次购买\n * 当402系统自动确认收货以后，此时用户可以删除订单，评价商品，申请售后，或者再次购买\n */\n@Service\npublic class WxOrderService {\n    private final Log logger = LogFactory.getLog(WxOrderService.class);\n\n    @Autowired\n    private LitemallUserService userService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n    @Autowired\n    private LitemallAddressService addressService;\n    @Autowired\n    private LitemallCartService cartService;\n    @Autowired\n    private LitemallRegionService regionService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private WxPayService wxPayService;\n    @Autowired\n    private NotifyService notifyService;\n    @Autowired\n    private LitemallGrouponRulesService grouponRulesService;\n    @Autowired\n    private LitemallGrouponService grouponService;\n    @Autowired\n    private QCodeService qCodeService;\n    @Autowired\n    private ExpressService expressService;\n    @Autowired\n    private LitemallCommentService commentService;\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n    @Autowired\n    private CouponVerifyService couponVerifyService;\n    @Autowired\n    private TaskService taskService;\n    @Autowired\n    private LitemallAftersaleService aftersaleService;\n\n    /**\n     * 订单列表\n     *\n     * @param userId   用户ID\n     * @param showType 订单信息：\n     *                 0，全部订单；\n     *                 1，待付款；\n     *                 2，待发货；\n     *                 3，待收货；\n     *                 4，待评价。\n     * @param page     分页页数\n     * @param limit     分页大小\n     * @return 订单列表\n     */\n    public Object list(Integer userId, Integer showType, Integer page, Integer limit, String sort, String order) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<Short> orderStatus = OrderUtil.orderStatus(showType);\n        List<LitemallOrder> orderList = orderService.queryByOrderStatus(userId, orderStatus, page, limit, sort, order);\n\n        List<Map<String, Object>> orderVoList = new ArrayList<>(orderList.size());\n        for (LitemallOrder o : orderList) {\n            Map<String, Object> orderVo = new HashMap<>();\n            orderVo.put(\"id\", o.getId());\n            orderVo.put(\"orderSn\", o.getOrderSn());\n            orderVo.put(\"actualPrice\", o.getActualPrice());\n            orderVo.put(\"orderStatusText\", OrderUtil.orderStatusText(o));\n            orderVo.put(\"handleOption\", OrderUtil.build(o));\n            orderVo.put(\"aftersaleStatus\", o.getAftersaleStatus());\n\n            LitemallGroupon groupon = grouponService.queryByOrderId(o.getId());\n            if (groupon != null) {\n                orderVo.put(\"isGroupin\", true);\n            } else {\n                orderVo.put(\"isGroupin\", false);\n            }\n\n            List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(o.getId());\n            List<Map<String, Object>> orderGoodsVoList = new ArrayList<>(orderGoodsList.size());\n            for (LitemallOrderGoods orderGoods : orderGoodsList) {\n                Map<String, Object> orderGoodsVo = new HashMap<>();\n                orderGoodsVo.put(\"id\", orderGoods.getId());\n                orderGoodsVo.put(\"goodsName\", orderGoods.getGoodsName());\n                orderGoodsVo.put(\"number\", orderGoods.getNumber());\n                orderGoodsVo.put(\"picUrl\", orderGoods.getPicUrl());\n                orderGoodsVo.put(\"specifications\", orderGoods.getSpecifications());\n                orderGoodsVo.put(\"price\",orderGoods.getPrice());\n                orderGoodsVoList.add(orderGoodsVo);\n            }\n            orderVo.put(\"goodsList\", orderGoodsVoList);\n\n            orderVoList.add(orderVo);\n        }\n\n        return ResponseUtil.okList(orderVoList, orderList);\n    }\n\n    /**\n     * 订单详情\n     *\n     * @param userId  用户ID\n     * @param orderId 订单ID\n     * @return 订单详情\n     */\n    public Object detail(Integer userId, Integer orderId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        // 订单信息\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (null == order) {\n            return ResponseUtil.fail(ORDER_UNKNOWN, \"订单不存在\");\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.fail(ORDER_INVALID, \"不是当前用户的订单\");\n        }\n        Map<String, Object> orderVo = new HashMap<String, Object>();\n        orderVo.put(\"id\", order.getId());\n        orderVo.put(\"orderSn\", order.getOrderSn());\n        orderVo.put(\"message\", order.getMessage());\n        orderVo.put(\"addTime\", order.getAddTime());\n        orderVo.put(\"consignee\", order.getConsignee());\n        orderVo.put(\"mobile\", order.getMobile());\n        orderVo.put(\"address\", order.getAddress());\n        orderVo.put(\"goodsPrice\", order.getGoodsPrice());\n        orderVo.put(\"couponPrice\", order.getCouponPrice());\n        orderVo.put(\"freightPrice\", order.getFreightPrice());\n        orderVo.put(\"actualPrice\", order.getActualPrice());\n        orderVo.put(\"orderStatusText\", OrderUtil.orderStatusText(order));\n        orderVo.put(\"handleOption\", OrderUtil.build(order));\n        orderVo.put(\"aftersaleStatus\", order.getAftersaleStatus());\n        orderVo.put(\"expCode\", order.getShipChannel());\n        orderVo.put(\"expName\", expressService.getVendorName(order.getShipChannel()));\n        orderVo.put(\"expNo\", order.getShipSn());\n\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(order.getId());\n\n        Map<String, Object> result = new HashMap<>();\n        result.put(\"orderInfo\", orderVo);\n        result.put(\"orderGoods\", orderGoodsList);\n\n        // 订单状态为已发货且物流信息不为空\n        //\"YTO\", \"800669400640887922\"\n        if (order.getOrderStatus().equals(OrderUtil.STATUS_SHIP)) {\n            ExpressInfo ei = expressService.getExpressInfo(order.getShipChannel(), order.getShipSn());\n            if(ei == null){\n                result.put(\"expressInfo\", new ArrayList<>());\n            }\n            else {\n                result.put(\"expressInfo\", ei);\n            }\n        }\n        else{\n            result.put(\"expressInfo\", new ArrayList<>());\n        }\n\n        return ResponseUtil.ok(result);\n\n    }\n\n    /**\n     * 提交订单\n     * <p>\n     * 1. 创建订单表项和订单商品表项;\n     * 2. 购物车清空;\n     * 3. 优惠券设置已用;\n     * 4. 商品货品库存减少;\n     * 5. 如果是团购商品，则创建团购活动表项。\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ cartId：xxx, addressId: xxx, couponId: xxx, message: xxx, grouponRulesId: xxx,  grouponLinkId: xxx}\n     * @return 提交订单操作结果\n     */\n    @Transactional\n    public Object submit(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (body == null) {\n            return ResponseUtil.badArgument();\n        }\n        Integer cartId = JacksonUtil.parseInteger(body, \"cartId\");\n        Integer addressId = JacksonUtil.parseInteger(body, \"addressId\");\n        Integer couponId = JacksonUtil.parseInteger(body, \"couponId\");\n        Integer userCouponId = JacksonUtil.parseInteger(body, \"userCouponId\");\n        String message = JacksonUtil.parseString(body, \"message\");\n        Integer grouponRulesId = JacksonUtil.parseInteger(body, \"grouponRulesId\");\n        Integer grouponLinkId = JacksonUtil.parseInteger(body, \"grouponLinkId\");\n\n        //如果是团购项目,验证活动是否有效\n        if (grouponRulesId != null && grouponRulesId > 0) {\n            LitemallGrouponRules rules = grouponRulesService.findById(grouponRulesId);\n            //找不到记录\n            if (rules == null) {\n                return ResponseUtil.badArgument();\n            }\n            //团购规则已经过期\n            if (rules.getStatus().equals(GrouponConstant.RULE_STATUS_DOWN_EXPIRE)) {\n                return ResponseUtil.fail(GROUPON_EXPIRED, \"团购已过期!\");\n            }\n            //团购规则已经下线\n            if (rules.getStatus().equals(GrouponConstant.RULE_STATUS_DOWN_ADMIN)) {\n                return ResponseUtil.fail(GROUPON_OFFLINE, \"团购已下线!\");\n            }\n\n            if (grouponLinkId != null && grouponLinkId > 0) {\n                //团购人数已满\n                if(grouponService.countGroupon(grouponLinkId) >= (rules.getDiscountMember() - 1)){\n                    return ResponseUtil.fail(GROUPON_FULL, \"团购活动人数已满!\");\n                }\n                // NOTE\n                // 这里业务方面允许用户多次开团，以及多次参团，\n                // 但是会限制以下两点：\n                // （1）不允许参加已经加入的团购\n                if(grouponService.hasJoin(userId, grouponLinkId)){\n                    return ResponseUtil.fail(GROUPON_JOIN, \"团购活动已经参加!\");\n                }\n                // （2）不允许参加自己开团的团购\n                LitemallGroupon groupon = grouponService.queryById(userId, grouponLinkId);\n                // if(groupon.getCreatorUserId().equals(userId)){\n                //     return ResponseUtil.fail(GROUPON_JOIN, \"团购活动已经参加!\");\n                // }\n                if(groupon!=null) {\n\t                if(groupon.getCreatorUserId().equals(userId)){\n\t                    return ResponseUtil.fail(GROUPON_JOIN, \"团购活动已经参加!\");\n\t                }\n                }\n            }\n        }\n\n        if (cartId == null || addressId == null || couponId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 收货地址\n        LitemallAddress checkedAddress = addressService.query(userId, addressId);\n        if (checkedAddress == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        // 团购优惠\n        BigDecimal grouponPrice = new BigDecimal(0);\n        LitemallGrouponRules grouponRules = grouponRulesService.findById(grouponRulesId);\n        if (grouponRules != null) {\n            grouponPrice = grouponRules.getDiscount();\n        }\n\n        // 货品价格\n        List<LitemallCart> checkedGoodsList = null;\n        if (cartId.equals(0)) {\n            checkedGoodsList = cartService.queryByUidAndChecked(userId);\n        } else {\n            LitemallCart cart = cartService.findById(cartId);\n            checkedGoodsList = new ArrayList<>(1);\n            checkedGoodsList.add(cart);\n        }\n        if (checkedGoodsList.size() == 0) {\n            return ResponseUtil.badArgumentValue();\n        }\n        BigDecimal checkedGoodsPrice = new BigDecimal(0);\n        for (LitemallCart checkGoods : checkedGoodsList) {\n            //  只有当团购规格商品ID符合才进行团购优惠\n            if (grouponRules != null && grouponRules.getGoodsId().equals(checkGoods.getGoodsId())) {\n                checkedGoodsPrice = checkedGoodsPrice.add(checkGoods.getPrice().subtract(grouponPrice).multiply(new BigDecimal(checkGoods.getNumber())));\n            } else {\n                checkedGoodsPrice = checkedGoodsPrice.add(checkGoods.getPrice().multiply(new BigDecimal(checkGoods.getNumber())));\n            }\n        }\n\n        // 获取可用的优惠券信息\n        // 使用优惠券减免的金额\n        BigDecimal couponPrice = new BigDecimal(0);\n        // 如果couponId=0则没有优惠券，couponId=-1则不使用优惠券\n        if (couponId != 0 && couponId != -1) {\n            LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice, checkedGoodsList);\n            if (coupon == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n            couponPrice = coupon.getDiscount();\n        }\n\n\n        // 根据订单商品总价计算运费，满足条件（例如88元）则免运费，否则需要支付运费（例如8元）；\n        BigDecimal freightPrice = new BigDecimal(0);\n        if (checkedGoodsPrice.compareTo(SystemConfig.getFreightLimit()) < 0) {\n            freightPrice = SystemConfig.getFreight();\n        }\n\n        // 可以使用的其他钱，例如用户积分\n        BigDecimal integralPrice = new BigDecimal(0);\n\n        // 订单费用\n        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal(0));\n        // 最终支付费用\n        BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);\n\n        Integer orderId = null;\n        LitemallOrder order = null;\n        // 订单\n        order = new LitemallOrder();\n        order.setUserId(userId);\n        order.setOrderSn(orderService.generateOrderSn(userId));\n        order.setOrderStatus(OrderUtil.STATUS_CREATE);\n        order.setConsignee(checkedAddress.getName());\n        order.setMobile(checkedAddress.getTel());\n        order.setMessage(message);\n        String detailedAddress = checkedAddress.getProvince() + checkedAddress.getCity() + checkedAddress.getCounty() + \" \" + checkedAddress.getAddressDetail();\n        order.setAddress(detailedAddress);\n        order.setGoodsPrice(checkedGoodsPrice);\n        order.setFreightPrice(freightPrice);\n        order.setCouponPrice(couponPrice);\n        order.setIntegralPrice(integralPrice);\n        order.setOrderPrice(orderTotalPrice);\n        order.setActualPrice(actualPrice);\n\n        // 有团购\n        if (grouponRules != null) {\n            order.setGrouponPrice(grouponPrice);    //  团购价格\n        } else {\n            order.setGrouponPrice(new BigDecimal(0));    //  团购价格\n        }\n\n        // 添加订单表项\n        orderService.add(order);\n        orderId = order.getId();\n\n        // 添加订单商品表项\n        for (LitemallCart cartGoods : checkedGoodsList) {\n            // 订单商品\n            LitemallOrderGoods orderGoods = new LitemallOrderGoods();\n            orderGoods.setOrderId(order.getId());\n            orderGoods.setGoodsId(cartGoods.getGoodsId());\n            orderGoods.setGoodsSn(cartGoods.getGoodsSn());\n            orderGoods.setProductId(cartGoods.getProductId());\n            orderGoods.setGoodsName(cartGoods.getGoodsName());\n            orderGoods.setPicUrl(cartGoods.getPicUrl());\n            orderGoods.setPrice(cartGoods.getPrice());\n            orderGoods.setNumber(cartGoods.getNumber());\n            orderGoods.setSpecifications(cartGoods.getSpecifications());\n            orderGoods.setAddTime(LocalDateTime.now());\n\n            orderGoodsService.add(orderGoods);\n        }\n\n        // 删除购物车里面的商品信息\n        if(cartId.equals(0)){\n            cartService.clearGoods(userId);\n        }else{\n            cartService.deleteById(cartId);\n        }\n\n        // 商品货品数量减少\n        for (LitemallCart checkGoods : checkedGoodsList) {\n            Integer productId = checkGoods.getProductId();\n            LitemallGoodsProduct product = productService.findById(productId);\n\n            int remainNumber = product.getNumber() - checkGoods.getNumber();\n            if (remainNumber < 0) {\n                throw new RuntimeException(\"下单的商品货品数量大于库存量\");\n            }\n            if (productService.reduceStock(productId, checkGoods.getNumber()) == 0) {\n                throw new RuntimeException(\"商品货品库存减少失败\");\n            }\n        }\n\n        // 如果使用了优惠券，设置优惠券使用状态\n        if (couponId != 0 && couponId != -1) {\n            LitemallCouponUser couponUser = couponUserService.findById(userCouponId);\n            couponUser.setStatus(CouponUserConstant.STATUS_USED);\n            couponUser.setUsedTime(LocalDateTime.now());\n            couponUser.setOrderId(orderId);\n            couponUserService.update(couponUser);\n        }\n\n        //如果是团购项目，添加团购信息\n        if (grouponRulesId != null && grouponRulesId > 0) {\n            LitemallGroupon groupon = new LitemallGroupon();\n            groupon.setOrderId(orderId);\n            groupon.setStatus(GrouponConstant.STATUS_NONE);\n            groupon.setUserId(userId);\n            groupon.setRulesId(grouponRulesId);\n\n            //参与者\n            if (grouponLinkId != null && grouponLinkId > 0) {\n                //参与的团购记录\n                LitemallGroupon baseGroupon = grouponService.queryById(grouponLinkId);\n                groupon.setCreatorUserId(baseGroupon.getCreatorUserId());\n                groupon.setGrouponId(grouponLinkId);\n                groupon.setShareUrl(baseGroupon.getShareUrl());\n                grouponService.createGroupon(groupon);\n            } else {\n                groupon.setCreatorUserId(userId);\n                groupon.setCreatorUserTime(LocalDateTime.now());\n                groupon.setGrouponId(0);\n                grouponService.createGroupon(groupon);\n                grouponLinkId = groupon.getId();\n            }\n        }\n\n        // NOTE: 建议开发者从业务场景核实下面代码，防止用户利用业务BUG使订单跳过支付环节。\n        // 如果订单实际支付费用是0，则直接跳过支付变成待发货状态\n        boolean payed = false;\n        if (order.getActualPrice().equals(new BigDecimal(\"0.00\"))) {\n            payed = true;\n\n            LitemallOrder o = new LitemallOrder();\n            o.setId(orderId);\n            o.setOrderStatus(OrderUtil.STATUS_PAY);\n            orderService.updateSelective(o);\n\n            //  支付成功，有团购信息，更新团购信息\n            LitemallGroupon groupon = grouponService.queryByOrderId(order.getId());\n            if (groupon != null) {\n                grouponRules = grouponRulesService.findById(groupon.getRulesId());\n\n                //仅当发起者才创建分享图片\n                if (groupon.getGrouponId() == 0) {\n                    String url = qCodeService.createGrouponShareImage(grouponRules.getGoodsName(), grouponRules.getPicUrl(), groupon);\n                    groupon.setShareUrl(url);\n                }\n                groupon.setStatus(GrouponConstant.STATUS_ON);\n                if (grouponService.updateById(groupon) == 0) {\n                    throw new RuntimeException(\"更新数据已失效\");\n                }\n\n\n                List<LitemallGroupon> grouponList = grouponService.queryJoinRecord(groupon.getGrouponId());\n                if (groupon.getGrouponId() != 0 && (grouponList.size() >= grouponRules.getDiscountMember() - 1)) {\n                    for (LitemallGroupon grouponActivity : grouponList) {\n                        grouponActivity.setStatus(GrouponConstant.STATUS_SUCCEED);\n                        grouponService.updateById(grouponActivity);\n                    }\n\n                    LitemallGroupon grouponSource = grouponService.queryById(groupon.getGrouponId());\n                    grouponSource.setStatus(GrouponConstant.STATUS_SUCCEED);\n                    grouponService.updateById(grouponSource);\n                }\n            }\n\n            //TODO 发送邮件和短信通知，这里采用异步发送\n            // 订单支付成功以后，会发送短信给用户，以及发送邮件给管理员\n            notifyService.notifyMail(\"新订单通知\", order.toString());\n            // 这里微信的短信平台对参数长度有限制，所以将订单号只截取后6位\n            notifyService.notifySmsTemplateSync(order.getMobile(), NotifyType.PAY_SUCCEED, new String[]{order.getOrderSn().substring(8, 14)});\n        }\n        else {\n            // 订单支付超期任务\n            taskService.addTask(new OrderUnpaidTask(orderId));\n        }\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"orderId\", orderId);\n        data.put(\"payed\", payed);\n        if (grouponRulesId != null && grouponRulesId > 0) {\n            data.put(\"grouponLinkId\", grouponLinkId);\n        }\n        else {\n            data.put(\"grouponLinkId\", 0);\n        }\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 取消订单\n     * <p>\n     * 1. 检测当前订单是否能够取消；\n     * 2. 设置订单取消状态；\n     * 3. 商品货品库存恢复；\n     * 4. 返还优惠券；\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 取消订单操作结果\n     */\n    @Transactional\n    public Object cancel(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        LocalDateTime preUpdateTime = order.getUpdateTime();\n\n        // 检测是否能够取消\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isCancel()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能取消\");\n        }\n\n        // 设置订单已取消状态\n        order.setOrderStatus(OrderUtil.STATUS_CANCEL);\n        order.setEndTime(LocalDateTime.now());\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            throw new RuntimeException(\"更新数据已失效\");\n        }\n\n        // 商品货品数量增加\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);\n        for (LitemallOrderGoods orderGoods : orderGoodsList) {\n            Integer productId = orderGoods.getProductId();\n            Short number = orderGoods.getNumber();\n            if (productService.addStock(productId, number) == 0) {\n                throw new RuntimeException(\"商品货品库存增加失败\");\n            }\n        }\n\n        // 返还优惠券\n        releaseCoupon(orderId);\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 付款订单的预支付会话标识\n     * <p>\n     * 1. 检测当前订单是否能够付款\n     * 2. 微信商户平台返回支付订单ID\n     * 3. 设置订单付款状态\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 支付订单ID\n     */\n    @Transactional\n    public Object prepay(Integer userId, String body, HttpServletRequest request) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 检测是否能够取消\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isPay()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能支付\");\n        }\n\n        LitemallUser user = userService.findById(userId);\n        String openid = user.getWeixinOpenid();\n        if (openid == null) {\n            return ResponseUtil.fail(AUTH_OPENID_UNACCESS, \"订单不能支付\");\n        }\n        WxPayMpOrderResult result = null;\n        try {\n            WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();\n            orderRequest.setOutTradeNo(order.getOrderSn());\n            orderRequest.setOpenid(openid);\n            orderRequest.setBody(\"订单：\" + order.getOrderSn());\n            // 元转成分\n            int fee = 0;\n            BigDecimal actualPrice = order.getActualPrice();\n            fee = actualPrice.multiply(new BigDecimal(100)).intValue();\n            orderRequest.setTotalFee(fee);\n            orderRequest.setSpbillCreateIp(IpUtil.getIpAddr(request));\n\n            result = wxPayService.createOrder(orderRequest);\n        } catch (Exception e) {\n            e.printStackTrace();\n            return ResponseUtil.fail(ORDER_PAY_FAIL, \"订单不能支付\");\n        }\n\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return ResponseUtil.updatedDateExpired();\n        }\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 微信H5支付\n     *\n     * @param userId\n     * @param body\n     * @param request\n     * @return\n     */\n    @Transactional\n    public Object h5pay(Integer userId, String body, HttpServletRequest request) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 检测是否能够取消\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isPay()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能支付\");\n        }\n\n        WxPayMwebOrderResult result = null;\n        try {\n            WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();\n            orderRequest.setOutTradeNo(order.getOrderSn());\n            orderRequest.setTradeType(\"MWEB\");\n            orderRequest.setBody(\"订单：\" + order.getOrderSn());\n            // 元转成分\n            int fee = 0;\n            BigDecimal actualPrice = order.getActualPrice();\n            fee = actualPrice.multiply(new BigDecimal(100)).intValue();\n            orderRequest.setTotalFee(fee);\n            orderRequest.setSpbillCreateIp(IpUtil.getIpAddr(request));\n\n            result = wxPayService.createOrder(orderRequest);\n\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 微信付款成功或失败回调接口\n     * <p>\n     * 1. 检测当前订单是否是付款状态;\n     * 2. 设置订单付款成功状态相关信息;\n     * 3. 响应微信商户平台.\n     *\n     * @param request  请求内容\n     * @param response 响应内容\n     * @return 操作结果\n     */\n    @Transactional\n    public Object payNotify(HttpServletRequest request, HttpServletResponse response) {\n        String xmlResult = null;\n        try {\n            xmlResult = IOUtils.toString(request.getInputStream(), request.getCharacterEncoding());\n        } catch (IOException e) {\n            e.printStackTrace();\n            return WxPayNotifyResponse.fail(e.getMessage());\n        }\n\n        WxPayOrderNotifyResult result = null;\n        try {\n            result = wxPayService.parseOrderNotifyResult(xmlResult);\n\n            if(!WxPayConstants.ResultCode.SUCCESS.equals(result.getResultCode())){\n                logger.error(xmlResult);\n                throw new WxPayException(\"微信通知支付失败！\");\n            }\n            if(!WxPayConstants.ResultCode.SUCCESS.equals(result.getReturnCode())){\n                logger.error(xmlResult);\n                throw new WxPayException(\"微信通知支付失败！\");\n            }\n        } catch (WxPayException e) {\n            e.printStackTrace();\n            return WxPayNotifyResponse.fail(e.getMessage());\n        }\n\n        logger.info(\"处理腾讯支付平台的订单支付\");\n        logger.info(result);\n\n        String orderSn = result.getOutTradeNo();\n        String payId = result.getTransactionId();\n\n        // 分转化成元\n        String totalFee = BaseWxPayResult.fenToYuan(result.getTotalFee());\n        LitemallOrder order = orderService.findBySn(orderSn);\n        if (order == null) {\n            return WxPayNotifyResponse.fail(\"订单不存在 sn=\" + orderSn);\n        }\n\n        // 检查这个订单是否已经处理过\n        if (OrderUtil.hasPayed(order)) {\n            return WxPayNotifyResponse.success(\"订单已经处理成功!\");\n        }\n\n        // 检查支付订单金额\n        if (!totalFee.equals(order.getActualPrice().toString())) {\n            return WxPayNotifyResponse.fail(order.getOrderSn() + \" : 支付金额不符合 totalFee=\" + totalFee);\n        }\n\n        order.setPayId(payId);\n        order.setPayTime(LocalDateTime.now());\n        order.setOrderStatus(OrderUtil.STATUS_PAY);\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return WxPayNotifyResponse.fail(\"更新数据已失效\");\n        }\n\n        //  支付成功，有团购信息，更新团购信息\n        LitemallGroupon groupon = grouponService.queryByOrderId(order.getId());\n        if (groupon != null) {\n            LitemallGrouponRules grouponRules = grouponRulesService.findById(groupon.getRulesId());\n\n            //仅当发起者才创建分享图片\n            if (groupon.getGrouponId() == 0) {\n                String url = qCodeService.createGrouponShareImage(grouponRules.getGoodsName(), grouponRules.getPicUrl(), groupon);\n                groupon.setShareUrl(url);\n            }\n            groupon.setStatus(GrouponConstant.STATUS_ON);\n            if (grouponService.updateById(groupon) == 0) {\n                return WxPayNotifyResponse.fail(\"更新数据已失效\");\n            }\n\n\n            List<LitemallGroupon> grouponList = grouponService.queryJoinRecord(groupon.getGrouponId());\n            if (groupon.getGrouponId() != 0 && (grouponList.size() >= grouponRules.getDiscountMember() - 1)) {\n                for (LitemallGroupon grouponActivity : grouponList) {\n                    grouponActivity.setStatus(GrouponConstant.STATUS_SUCCEED);\n                    grouponService.updateById(grouponActivity);\n                }\n\n                LitemallGroupon grouponSource = grouponService.queryById(groupon.getGrouponId());\n                grouponSource.setStatus(GrouponConstant.STATUS_SUCCEED);\n                grouponService.updateById(grouponSource);\n            }\n        }\n\n        //TODO 发送邮件和短信通知，这里采用异步发送\n        // 订单支付成功以后，会发送短信给用户，以及发送邮件给管理员\n        notifyService.notifyMail(\"新订单通知\", order.toString());\n        // 这里微信的短信平台对参数长度有限制，所以将订单号只截取后6位\n        notifyService.notifySmsTemplateSync(order.getMobile(), NotifyType.PAY_SUCCEED, new String[]{orderSn.substring(8, 14)});\n\n        // 取消订单超时未支付任务\n        taskService.removeTask(new OrderUnpaidTask(order.getId()));\n\n        return WxPayNotifyResponse.success(\"处理成功!\");\n    }\n\n    /**\n     * 订单申请退款\n     * <p>\n     * 1. 检测当前订单是否能够退款；\n     * 2. 设置订单申请退款状态。\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单退款操作结果\n     */\n    public Object refund(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isRefund()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能取消\");\n        }\n\n        // 设置订单申请退款状态\n        order.setOrderStatus(OrderUtil.STATUS_REFUND);\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return ResponseUtil.updatedDateExpired();\n        }\n\n        //TODO 发送邮件和短信通知，这里采用异步发送\n        // 有用户申请退款，邮件通知运营人员\n        notifyService.notifyMail(\"退款申请\", order.toString());\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 确认收货\n     * <p>\n     * 1. 检测当前订单是否能够确认收货；\n     * 2. 设置订单确认收货状态。\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    public Object confirm(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isConfirm()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能确认收货\");\n        }\n\n        Short comments = orderGoodsService.getComments(orderId);\n        order.setComments(comments);\n\n        order.setOrderStatus(OrderUtil.STATUS_CONFIRM);\n        order.setConfirmTime(LocalDateTime.now());\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            return ResponseUtil.updatedDateExpired();\n        }\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 删除订单\n     * <p>\n     * 1. 检测当前订单是否可以删除；\n     * 2. 删除订单。\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    public Object delete(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer orderId = JacksonUtil.parseInteger(body, \"orderId\");\n        if (orderId == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        OrderHandleOption handleOption = OrderUtil.build(order);\n        if (!handleOption.isDelete()) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"订单不能删除\");\n        }\n\n        // 订单order_status没有字段用于标识删除\n        // 而是存在专门的delete字段表示是否删除\n        orderService.deleteById(orderId);\n        // 售后也同时删除\n        aftersaleService.deleteByOrderId(userId, orderId);\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 待评价订单商品信息\n     *\n     * @param userId  用户ID\n     * @param ogid 订单商品ID\n     * @return 待评价订单商品信息\n     */\n    public Object goods(Integer userId, Integer ogid) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        LitemallOrderGoods orderGoods = orderGoodsService.findById(ogid);\n\n        if (orderGoods != null) {\n            Integer orderId = orderGoods.getOrderId();\n            LitemallOrder order = orderService.findById(orderId);\n            if (!order.getUserId().equals(userId)) {\n                return ResponseUtil.badArgument();\n            }\n        }\n        return ResponseUtil.ok(orderGoods);\n    }\n\n    /**\n     * 评价订单商品\n     * <p>\n     * 确认商品收货或者系统自动确认商品收货后7天内可以评价，过期不能评价。\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    public Object comment(Integer userId, String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        Integer orderGoodsId = JacksonUtil.parseInteger(body, \"orderGoodsId\");\n        if (orderGoodsId == null) {\n            return ResponseUtil.badArgument();\n        }\n        LitemallOrderGoods orderGoods = orderGoodsService.findById(orderGoodsId);\n        if (orderGoods == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        Integer orderId = orderGoods.getOrderId();\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!OrderUtil.isConfirmStatus(order) && !OrderUtil.isAutoConfirmStatus(order)) {\n            return ResponseUtil.fail(ORDER_INVALID_OPERATION, \"当前商品不能评价\");\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.fail(ORDER_INVALID, \"当前商品不属于用户\");\n        }\n        Integer commentId = orderGoods.getComment();\n        if (commentId == -1) {\n            return ResponseUtil.fail(ORDER_COMMENT_EXPIRED, \"当前商品评价时间已经过期\");\n        }\n        if (commentId != 0) {\n            return ResponseUtil.fail(ORDER_COMMENTED, \"订单商品已评价\");\n        }\n\n        String content = JacksonUtil.parseString(body, \"content\");\n        Integer star = JacksonUtil.parseInteger(body, \"star\");\n        if (star == null || star < 0 || star > 5) {\n            return ResponseUtil.badArgumentValue();\n        }\n        Boolean hasPicture = JacksonUtil.parseBoolean(body, \"hasPicture\");\n        List<String> picUrls = JacksonUtil.parseStringList(body, \"picUrls\");\n        if (hasPicture == null || !hasPicture) {\n            picUrls = new ArrayList<>(0);\n        }\n\n        // 1. 创建评价\n        LitemallComment comment = new LitemallComment();\n        comment.setUserId(userId);\n        comment.setType((byte) 0);\n        comment.setValueId(orderGoods.getGoodsId());\n        comment.setStar(star.shortValue());\n        comment.setContent(content);\n        comment.setHasPicture(hasPicture);\n        comment.setPicUrls(picUrls.toArray(new String[]{}));\n        commentService.save(comment);\n\n        // 2. 更新订单商品的评价列表\n        orderGoods.setComment(comment.getId());\n        orderGoodsService.updateById(orderGoods);\n\n        // 3. 更新订单中未评价的订单商品可评价数量\n        Short commentCount = order.getComments();\n        if (commentCount > 0) {\n            commentCount--;\n        }\n        order.setComments(commentCount);\n        orderService.updateWithOptimisticLocker(order);\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 取消订单/退款返还优惠券\n     * <br/>\n     * @param orderId\n     * @return void\n     * @author Tyson\n     * @date 2020/6/8/0008 1:41\n     */\n    public void releaseCoupon(Integer orderId) {\n        List<LitemallCouponUser> couponUsers = couponUserService.findByOid(orderId);\n        for (LitemallCouponUser couponUser: couponUsers) {\n            // 优惠券状态设置为可使用\n            couponUser.setStatus(CouponUserConstant.STATUS_USABLE);\n            couponUser.setUpdateTime(LocalDateTime.now());\n            couponUserService.update(couponUser);\n        }\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/task/OrderUnpaidTask.java",
    "content": "package org.linlinjava.litemall.wx.task;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.task.Task;\nimport org.linlinjava.litemall.core.util.BeanUtil;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.domain.LitemallOrderGoods;\nimport org.linlinjava.litemall.db.service.LitemallGoodsProductService;\nimport org.linlinjava.litemall.db.service.LitemallOrderGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallOrderService;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.linlinjava.litemall.wx.service.WxOrderService;\n\nimport java.time.LocalDateTime;\nimport java.util.List;\n\npublic class OrderUnpaidTask extends Task {\n    private final Log logger = LogFactory.getLog(OrderUnpaidTask.class);\n    private int orderId = -1;\n\n    public OrderUnpaidTask(Integer orderId, long delayInMilliseconds){\n        super(\"OrderUnpaidTask-\" + orderId, delayInMilliseconds);\n        this.orderId = orderId;\n    }\n\n    public OrderUnpaidTask(Integer orderId){\n        super(\"OrderUnpaidTask-\" + orderId, SystemConfig.getOrderUnpaid() * 60 * 1000);\n        this.orderId = orderId;\n    }\n\n    @Override\n    public void run() {\n        logger.info(\"系统开始处理延时任务---订单超时未付款---\" + this.orderId);\n\n        LitemallOrderService orderService = BeanUtil.getBean(LitemallOrderService.class);\n        LitemallOrderGoodsService orderGoodsService = BeanUtil.getBean(LitemallOrderGoodsService.class);\n        LitemallGoodsProductService productService = BeanUtil.getBean(LitemallGoodsProductService.class);\n        WxOrderService wxOrderService = BeanUtil.getBean(WxOrderService.class);\n\n        LitemallOrder order = orderService.findById(this.orderId);\n        if(order == null){\n            return;\n        }\n        if(!OrderUtil.isCreateStatus(order)){\n            return;\n        }\n\n        // 设置订单已取消状态\n        order.setOrderStatus(OrderUtil.STATUS_AUTO_CANCEL);\n        order.setEndTime(LocalDateTime.now());\n        if (orderService.updateWithOptimisticLocker(order) == 0) {\n            throw new RuntimeException(\"更新数据已失效\");\n        }\n\n        // 商品货品数量增加\n        Integer orderId = order.getId();\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);\n        for (LitemallOrderGoods orderGoods : orderGoodsList) {\n            Integer productId = orderGoods.getProductId();\n            Short number = orderGoods.getNumber();\n            if (productService.addStock(productId, number) == 0) {\n                throw new RuntimeException(\"商品货品库存增加失败\");\n            }\n        }\n\n        //返还优惠券\n        wxOrderService.releaseCoupon(orderId);\n\n        logger.info(\"系统结束处理延时任务---订单超时未付款---\" + this.orderId);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/task/TaskStartupRunner.java",
    "content": "package org.linlinjava.litemall.wx.task;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.task.TaskService;\nimport org.linlinjava.litemall.db.domain.LitemallOrder;\nimport org.linlinjava.litemall.db.service.LitemallOrderService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.ApplicationArguments;\nimport org.springframework.boot.ApplicationRunner;\nimport org.springframework.stereotype.Component;\n\nimport java.time.LocalDateTime;\nimport java.time.temporal.ChronoUnit;\nimport java.util.List;\n\n@Component\npublic class TaskStartupRunner implements ApplicationRunner {\n\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private TaskService taskService;\n\n    @Override\n    public void run(ApplicationArguments args) throws Exception {\n        List<LitemallOrder> orderList = orderService.queryUnpaid(SystemConfig.getOrderUnpaid());\n        for(LitemallOrder order : orderList){\n            LocalDateTime add = order.getAddTime();\n            LocalDateTime now = LocalDateTime.now();\n            LocalDateTime expire =  add.plusMinutes(SystemConfig.getOrderUnpaid());\n            if(expire.isBefore(now)) {\n                // 已经过期，则加入延迟队列\n                taskService.addTask(new OrderUnpaidTask(order.getId(), 0));\n            }\n            else{\n                // 还没过期，则加入延迟队列\n                long delay = ChronoUnit.MILLIS.between(now, expire);\n                taskService.addTask(new OrderUnpaidTask(order.getId(), delay));\n            }\n        }\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/util/JwtHelper.java",
    "content": "package org.linlinjava.litemall.wx.util;\n\nimport java.util.Calendar;\nimport java.util.Date;\nimport java.util.GregorianCalendar;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport com.auth0.jwt.JWT;\nimport com.auth0.jwt.JWTVerifier;\nimport com.auth0.jwt.algorithms.Algorithm;\nimport com.auth0.jwt.exceptions.JWTCreationException;\nimport com.auth0.jwt.exceptions.JWTVerificationException;\nimport com.auth0.jwt.interfaces.Claim;\nimport com.auth0.jwt.interfaces.DecodedJWT;\n\npublic class JwtHelper {\n\t// 秘钥\n\tstatic final String SECRET = \"X-Litemall-Token\";\n\t// 签名是有谁生成\n\tstatic final String ISSUSER = \"LITEMALL\";\n\t// 签名的主题\n\tstatic final String SUBJECT = \"this is litemall token\";\n\t// 签名的观众\n\tstatic final String AUDIENCE = \"MINIAPP\";\n\t\n\t\n\tpublic String createToken(Integer userId){\n\t\ttry {\n\t\t    Algorithm algorithm = Algorithm.HMAC256(SECRET);\n\t\t    Map<String, Object> map = new HashMap<String, Object>();\n\t\t    Date nowDate = new Date();\n\t\t    // 过期时间：2小时\n\t\t    Date expireDate = getAfterDate(nowDate,0,0,0,2,0,0);\n\t        map.put(\"alg\", \"HS256\");\n\t        map.put(\"typ\", \"JWT\");\n\t\t    String token = JWT.create()\n\t\t    \t// 设置头部信息 Header\n\t\t    \t.withHeader(map)\n\t\t    \t// 设置 载荷 Payload\n\t\t    \t.withClaim(\"userId\", userId)\n\t\t        .withIssuer(ISSUSER)\n\t\t        .withSubject(SUBJECT)\n\t\t        .withAudience(AUDIENCE)\n\t\t        // 生成签名的时间 \n\t\t        .withIssuedAt(nowDate)\n\t\t        // 签名过期的时间 \n\t\t        .withExpiresAt(expireDate)\n\t\t        // 签名 Signature\n\t\t        .sign(algorithm);\n\t\t    return token;\n\t\t} catch (JWTCreationException exception){\n\t\t\texception.printStackTrace();\n\t\t}\n\t\treturn null;\n\t}\n\t\n\tpublic Integer verifyTokenAndGetUserId(String token) {\n\t\ttry {\n\t\t    Algorithm algorithm = Algorithm.HMAC256(SECRET);\n\t\t    JWTVerifier verifier = JWT.require(algorithm)\n\t\t        .withIssuer(ISSUSER)\n\t\t        .build();\n\t\t    DecodedJWT jwt = verifier.verify(token);\n\t\t    Map<String, Claim> claims = jwt.getClaims();\n\t\t    Claim claim = claims.get(\"userId\");\n\t\t    return claim.asInt();\n\t\t} catch (JWTVerificationException exception){\n//\t\t\texception.printStackTrace();\n\t\t}\n\t\t\n\t\treturn 0;\n\t}\n\t\n\tpublic  Date getAfterDate(Date date, int year, int month, int day, int hour, int minute, int second){\n\t\tif(date == null){\n\t\t\tdate = new Date();\n\t\t}\n\t\t\n\t\tCalendar cal = new GregorianCalendar();\n\t\t\n\t\tcal.setTime(date);\n\t\tif(year != 0){\n\t\t\tcal.add(Calendar.YEAR, year);\n\t\t}\n\t\tif(month != 0){\n\t\t\tcal.add(Calendar.MONTH, month);\n\t\t}\n\t\tif(day != 0){\n\t\t\tcal.add(Calendar.DATE, day);\n\t\t}\n\t\tif(hour != 0){\n\t\t\tcal.add(Calendar.HOUR_OF_DAY, hour);\n\t\t}\n\t\tif(minute != 0){\n\t\t\tcal.add(Calendar.MINUTE, minute);\n\t\t}\n\t\tif(second != 0){\n\t\t\tcal.add(Calendar.SECOND, second);\n\t\t}\n\t\treturn cal.getTime();\n\t}\n\t\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/util/WxResponseCode.java",
    "content": "package org.linlinjava.litemall.wx.util;\n\npublic class WxResponseCode {\n    public static final Integer AUTH_INVALID_ACCOUNT = 700;\n    public static final Integer AUTH_CAPTCHA_UNSUPPORT = 701;\n    public static final Integer AUTH_CAPTCHA_FREQUENCY = 702;\n    public static final Integer AUTH_CAPTCHA_UNMATCH = 703;\n    public static final Integer AUTH_NAME_REGISTERED = 704;\n    public static final Integer AUTH_MOBILE_REGISTERED = 705;\n    public static final Integer AUTH_MOBILE_UNREGISTERED = 706;\n    public static final Integer AUTH_INVALID_MOBILE = 707;\n    public static final Integer AUTH_OPENID_UNACCESS = 708;\n    public static final Integer AUTH_OPENID_BINDED = 709;\n\n    public static final Integer GOODS_UNSHELVE = 710;\n    public static final Integer GOODS_NO_STOCK = 711;\n    public static final Integer GOODS_UNKNOWN = 712;\n    public static final Integer GOODS_INVALID = 713;\n\n    public static final Integer ORDER_UNKNOWN = 720;\n    public static final Integer ORDER_INVALID = 721;\n    public static final Integer ORDER_CHECKOUT_FAIL = 722;\n    public static final Integer ORDER_CANCEL_FAIL = 723;\n    public static final Integer ORDER_PAY_FAIL = 724;\n    // 订单当前状态下不支持用户的操作，例如商品未发货状态用户执行确认收货是不可能的。\n    public static final Integer ORDER_INVALID_OPERATION = 725;\n    public static final Integer ORDER_COMMENTED = 726;\n    public static final Integer ORDER_COMMENT_EXPIRED = 727;\n\n    public static final Integer GROUPON_EXPIRED = 730;\n    public static final Integer GROUPON_OFFLINE = 731;\n    public static final Integer GROUPON_FULL = 732;\n    public static final Integer GROUPON_JOIN = 733;\n\n    public static final int COUPON_EXCEED_LIMIT = 740;\n    public static final int COUPON_RECEIVE_FAIL= 741;\n    public static final int COUPON_CODE_INVALID= 742;\n\n    public static final int AFTERSALE_UNALLOWED = 750;\n    public static final int AFTERSALE_INVALID_AMOUNT = 751;\n    public static final int AFTERSALE_INVALID_STATUS = 752;\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/vo/CouponVo.java",
    "content": "package org.linlinjava.litemall.wx.vo;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\n\npublic class CouponVo {\n    private Integer id;\n    private Integer cid;\n    private String name;\n    private String desc;\n    private String tag;\n    private BigDecimal min;\n    private BigDecimal discount;\n    private LocalDateTime startTime;\n    private LocalDateTime endTime;\n    private boolean available;\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public Integer getCid() {\n        return cid;\n    }\n\n    public void setCid(Integer cid) {\n        this.cid = cid;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getDesc() {\n        return desc;\n    }\n\n    public void setDesc(String desc) {\n        this.desc = desc;\n    }\n\n    public String getTag() {\n        return tag;\n    }\n\n    public void setTag(String tag) {\n        this.tag = tag;\n    }\n\n    public BigDecimal getMin() {\n        return min;\n    }\n\n    public void setMin(BigDecimal min) {\n        this.min = min;\n    }\n\n    public BigDecimal getDiscount() {\n        return discount;\n    }\n\n    public void setDiscount(BigDecimal discount) {\n        this.discount = discount;\n    }\n\n    public LocalDateTime getStartTime() {\n        return startTime;\n    }\n\n    public void setStartTime(LocalDateTime startTime) {\n        this.startTime = startTime;\n    }\n\n    public LocalDateTime getEndTime() {\n        return endTime;\n    }\n\n    public void setEndTime(LocalDateTime endTime) {\n        this.endTime = endTime;\n    }\n\n    public boolean isAvailable() {\n        return available;\n    }\n\n    public void setAvailable(boolean available) {\n        this.available = available;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/vo/GrouponRuleVo.java",
    "content": "package org.linlinjava.litemall.wx.vo;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\n\npublic class GrouponRuleVo {\n    private Integer id;\n    private String name;\n    private String brief;\n    private String picUrl;\n    private BigDecimal counterPrice;\n    private BigDecimal retailPrice;\n    private BigDecimal grouponPrice;\n    private BigDecimal grouponDiscount;\n    private Integer grouponMember;\n    private LocalDateTime expireTime;\n\n    public LocalDateTime getExpireTime() {\n        return expireTime;\n    }\n\n    public void setExpireTime(LocalDateTime expireTime) {\n        this.expireTime = expireTime;\n    }\n\n    public BigDecimal getGrouponDiscount() {\n        return grouponDiscount;\n    }\n\n    public void setGrouponDiscount(BigDecimal grouponDiscount) {\n        this.grouponDiscount = grouponDiscount;\n    }\n\n    public Integer getGrouponMember() {\n        return grouponMember;\n    }\n\n    public void setGrouponMember(Integer grouponMember) {\n        this.grouponMember = grouponMember;\n    }\n\n    public Integer getId() {\n        return id;\n    }\n\n    public void setId(Integer id) {\n        this.id = id;\n    }\n\n    public String getName() {\n        return name;\n    }\n\n    public void setName(String name) {\n        this.name = name;\n    }\n\n    public String getBrief() {\n        return brief;\n    }\n\n    public void setBrief(String brief) {\n        this.brief = brief;\n    }\n\n    public String getPicUrl() {\n        return picUrl;\n    }\n\n    public void setPicUrl(String picUrl) {\n        this.picUrl = picUrl;\n    }\n\n    public BigDecimal getCounterPrice() {\n        return counterPrice;\n    }\n\n    public void setCounterPrice(BigDecimal counterPrice) {\n        this.counterPrice = counterPrice;\n    }\n\n    public BigDecimal getRetailPrice() {\n        return retailPrice;\n    }\n\n    public void setRetailPrice(BigDecimal retailPrice) {\n        this.retailPrice = retailPrice;\n    }\n\n    public BigDecimal getGrouponPrice() {\n        return grouponPrice;\n    }\n\n    public void setGrouponPrice(BigDecimal grouponPrice) {\n        this.grouponPrice = grouponPrice;\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAddressController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.RegexUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallAddress;\nimport org.linlinjava.litemall.db.service.LitemallAddressService;\nimport org.linlinjava.litemall.db.service.LitemallRegionService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.service.GetRegionService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.List;\n\n/**\n * 用户收货地址服务\n */\n@RestController\n@RequestMapping(\"/wx/address\")\n@Validated\npublic class WxAddressController extends GetRegionService {\n\tprivate final Log logger = LogFactory.getLog(WxAddressController.class);\n\n\t@Autowired\n\tprivate LitemallAddressService addressService;\n\n\t@Autowired\n\tprivate LitemallRegionService regionService;\n\n\n\t/**\n\t * 用户收货地址列表\n\t *\n\t * @param userId 用户ID\n\t * @return 收货地址列表\n\t */\n\t@GetMapping(\"list\")\n\tpublic Object list(@LoginUser Integer userId) {\n\t\tif (userId == null) {\n\t\t\treturn ResponseUtil.unlogin();\n\t\t}\n\t\tList<LitemallAddress> addressList = addressService.queryByUid(userId);\n\t\treturn ResponseUtil.okList(addressList);\n\t}\n\n\t/**\n\t * 收货地址详情\n\t *\n\t * @param userId 用户ID\n\t * @param id     收货地址ID\n\t * @return 收货地址详情\n\t */\n\t@GetMapping(\"detail\")\n\tpublic Object detail(@LoginUser Integer userId, @NotNull Integer id) {\n\t\tif (userId == null) {\n\t\t\treturn ResponseUtil.unlogin();\n\t\t}\n\n\t\tLitemallAddress address = addressService.query(userId, id);\n\t\tif (address == null) {\n\t\t\treturn ResponseUtil.badArgumentValue();\n\t\t}\n\t\treturn ResponseUtil.ok(address);\n\t}\n\n\tprivate Object validate(LitemallAddress address) {\n\t\tString name = address.getName();\n\t\tif (StringUtils.isEmpty(name)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\t// 测试收货手机号码是否正确\n\t\tString mobile = address.getTel();\n\t\tif (StringUtils.isEmpty(mobile)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\t\tif (!RegexUtil.isMobileSimple(mobile)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\tString province = address.getProvince();\n\t\tif (StringUtils.isEmpty(province)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\tString city = address.getCity();\n\t\tif (StringUtils.isEmpty(city)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\tString county = address.getCounty();\n\t\tif (StringUtils.isEmpty(county)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\n\t\tString areaCode = address.getAreaCode();\n\t\tif (StringUtils.isEmpty(areaCode)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\tString detailedAddress = address.getAddressDetail();\n\t\tif (StringUtils.isEmpty(detailedAddress)) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\n\t\tBoolean isDefault = address.getIsDefault();\n\t\tif (isDefault == null) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\t\treturn null;\n\t}\n\n\t/**\n\t * 添加或更新收货地址\n\t *\n\t * @param userId  用户ID\n\t * @param address 用户收货地址\n\t * @return 添加或更新操作结果\n\t */\n\t@PostMapping(\"save\")\n\tpublic Object save(@LoginUser Integer userId, @RequestBody LitemallAddress address) {\n\t\tif (userId == null) {\n\t\t\treturn ResponseUtil.unlogin();\n\t\t}\n\t\tObject error = validate(address);\n\t\tif (error != null) {\n\t\t\treturn error;\n\t\t}\n\n\t\tif (address.getId() == null || address.getId().equals(0)) {\n\t\t\tif (address.getIsDefault()) {\n\t\t\t\t// 重置其他收货地址的默认选项\n\t\t\t\taddressService.resetDefault(userId);\n\t\t\t}\n\n\t\t\taddress.setId(null);\n\t\t\taddress.setUserId(userId);\n\t\t\taddressService.add(address);\n\t\t} else {\n\t\t\tLitemallAddress litemallAddress = addressService.query(userId, address.getId());\n\t\t\tif (litemallAddress == null) {\n\t\t\t\treturn ResponseUtil.badArgumentValue();\n\t\t\t}\n\n\t\t\tif (address.getIsDefault()) {\n\t\t\t\t// 重置其他收货地址的默认选项\n\t\t\t\taddressService.resetDefault(userId);\n\t\t\t}\n\n\t\t\taddress.setUserId(userId);\n\t\t\taddressService.update(address);\n\t\t}\n\t\treturn ResponseUtil.ok(address.getId());\n\t}\n\n\t/**\n\t * 删除收货地址\n\t *\n\t * @param userId  用户ID\n\t * @param address 用户收货地址，{ id: xxx }\n\t * @return 删除操作结果\n\t */\n\t@PostMapping(\"delete\")\n\tpublic Object delete(@LoginUser Integer userId, @RequestBody LitemallAddress address) {\n\t\tif (userId == null) {\n\t\t\treturn ResponseUtil.unlogin();\n\t\t}\n\t\tInteger id = address.getId();\n\t\tif (id == null) {\n\t\t\treturn ResponseUtil.badArgument();\n\t\t}\n\t\tLitemallAddress litemallAddress = addressService.query(userId, id);\n\t\tif (litemallAddress == null) {\n\t\t\treturn ResponseUtil.badArgumentValue();\n\t\t}\n\n\t\taddressService.delete(id);\n\t\treturn ResponseUtil.ok();\n\t}\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAftersaleController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.AftersaleConstant;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.util.WxResponseCode;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.math.BigDecimal;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 售后服务\n *\n * 目前只支持订单整体售后，不支持订单商品单个售后\n *\n * 一个订单只能有一个售后记录\n */\n@RestController\n@RequestMapping(\"/wx/aftersale\")\n@Validated\npublic class WxAftersaleController {\n    private final Log logger = LogFactory.getLog(WxAftersaleController.class);\n\n    @Autowired\n    private LitemallAftersaleService aftersaleService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n\n    /**\n     * 售后列表\n     *\n     * @param userId   用户ID\n     * @param status   状态类型，如果是空则是全部\n     * @param page     分页页数\n     * @param limit    分页大小\n     * @param sort     排序字段\n     * @param order    排序方式\n     * @return 售后列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@LoginUser Integer userId,\n                       @RequestParam Short status,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallAftersale> aftersaleList = aftersaleService.queryList(userId, status, page, limit, sort, order);\n\n        List<Map<String, Object>> aftersaleVoList = new ArrayList<>(aftersaleList.size());\n        for (LitemallAftersale aftersale : aftersaleList) {\n            List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(aftersale.getOrderId());\n\n            Map<String, Object> aftersaleVo = new HashMap<>();\n            aftersaleVo.put(\"aftersale\", aftersale);\n            aftersaleVo.put(\"goodsList\", orderGoodsList);\n\n            aftersaleVoList.add(aftersaleVo);\n        }\n\n        return ResponseUtil.okList(aftersaleVoList, aftersaleList);\n    }\n\n    /**\n     * 售后详情\n     *\n     * @param orderId 订单ID\n     * @return 售后详情\n     */\n    @GetMapping(\"detail\")\n    public Object detail(@LoginUser Integer userId, @NotNull Integer orderId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if (order == null){\n            return ResponseUtil.badArgumentValue();\n        }\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(orderId);\n        LitemallAftersale aftersale = aftersaleService.findByOrderId(userId, orderId);\n\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"aftersale\", aftersale);\n        data.put(\"order\", order);\n        data.put(\"orderGoods\", orderGoodsList);\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 申请售后\n     *\n     * @param userId   用户ID\n     * @param aftersale 用户售后信息\n     * @return 操作结果\n     */\n    @PostMapping(\"submit\")\n    public Object submit(@LoginUser Integer userId, @RequestBody LitemallAftersale aftersale) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Object error = validate(aftersale);\n        if (error != null) {\n            return error;\n        }\n        // 进一步验证\n        Integer orderId = aftersale.getOrderId();\n        if(orderId == null){\n            return ResponseUtil.badArgument();\n        }\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if(order == null){\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 订单必须完成才能进入售后流程。\n        if(!OrderUtil.isConfirmStatus(order) && !OrderUtil.isAutoConfirmStatus(order)){\n            return ResponseUtil.fail(WxResponseCode.AFTERSALE_UNALLOWED, \"不能申请售后\");\n        }\n        BigDecimal amount = order.getActualPrice().subtract(order.getFreightPrice());\n        if(aftersale.getAmount().compareTo(amount) > 0){\n            return ResponseUtil.fail(WxResponseCode.AFTERSALE_INVALID_AMOUNT, \"退款金额不正确\");\n        }\n        Short afterStatus = order.getAftersaleStatus();\n        if(afterStatus.equals(AftersaleConstant.STATUS_RECEPT) || afterStatus.equals(AftersaleConstant.STATUS_REFUND)){\n            return ResponseUtil.fail(WxResponseCode.AFTERSALE_INVALID_AMOUNT, \"已申请售后\");\n        }\n\n        // 如果有旧的售后记录则删除（例如用户已取消，管理员拒绝）\n        aftersaleService.deleteByOrderId(userId, orderId);\n\n        aftersale.setStatus(AftersaleConstant.STATUS_REQUEST);\n        aftersale.setAftersaleSn(aftersaleService.generateAftersaleSn(userId));\n        aftersale.setUserId(userId);\n        aftersaleService.add(aftersale);\n\n        // 订单的aftersale_status和售后记录的status是一致的。\n        orderService.updateAftersaleStatus(orderId, AftersaleConstant.STATUS_REQUEST);\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 取消售后\n     *\n     * 如果管理员还没有审核，用户可以取消自己的售后申请\n     *\n     * @param userId   用户ID\n     * @param aftersale 用户售后信息\n     * @return 操作结果\n     */\n    @PostMapping(\"cancel\")\n    public Object cancel(@LoginUser Integer userId, @RequestBody LitemallAftersale aftersale) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer id = aftersale.getId();\n        if(id == null){\n            return ResponseUtil.badArgument();\n        }\n        LitemallAftersale aftersaleOne = aftersaleService.findById(userId, id);\n        if(aftersaleOne == null){\n            return ResponseUtil.badArgument();\n        }\n\n        Integer orderId = aftersaleOne.getOrderId();\n        LitemallOrder order = orderService.findById(userId, orderId);\n        if(!order.getUserId().equals(userId)){\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 订单必须完成才能进入售后流程。\n        if(!OrderUtil.isConfirmStatus(order) && !OrderUtil.isAutoConfirmStatus(order)){\n            return ResponseUtil.fail(WxResponseCode.AFTERSALE_UNALLOWED, \"不支持售后\");\n        }\n        Short afterStatus = order.getAftersaleStatus();\n        if(!afterStatus.equals(AftersaleConstant.STATUS_REQUEST)){\n            return ResponseUtil.fail(WxResponseCode.AFTERSALE_INVALID_STATUS, \"不能取消售后\");\n        }\n\n        aftersale.setStatus(AftersaleConstant.STATUS_CANCEL);\n        aftersale.setUserId(userId);\n        aftersaleService.updateById(aftersale);\n\n        // 订单的aftersale_status和售后记录的status是一致的。\n        orderService.updateAftersaleStatus(orderId, AftersaleConstant.STATUS_CANCEL);\n        return ResponseUtil.ok();\n    }\n\n    private Object validate(LitemallAftersale aftersale) {\n        Short type = aftersale.getType();\n        if (type == null) {\n            return ResponseUtil.badArgument();\n        }\n        BigDecimal amount = aftersale.getAmount();\n        if (amount == null) {\n            return ResponseUtil.badArgument();\n        }\n        String reason = aftersale.getReason();\n        if (StringUtils.isEmpty(reason)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxAuthController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport cn.binarywang.wx.miniapp.api.WxMaService;\nimport cn.binarywang.wx.miniapp.bean.WxMaJscode2SessionResult;\nimport cn.binarywang.wx.miniapp.bean.WxMaPhoneNumberInfo;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.notify.NotifyService;\nimport org.linlinjava.litemall.core.notify.NotifyType;\nimport org.linlinjava.litemall.core.util.CharUtil;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.RegexUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.util.bcrypt.BCryptPasswordEncoder;\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.service.CouponAssignService;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.dto.UserInfo;\nimport org.linlinjava.litemall.wx.dto.UserToken;\nimport org.linlinjava.litemall.wx.dto.WxLoginInfo;\nimport org.linlinjava.litemall.wx.service.CaptchaCodeManager;\nimport org.linlinjava.litemall.wx.service.UserTokenManager;\nimport org.linlinjava.litemall.core.util.IpUtil;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.servlet.http.HttpServletRequest;\nimport java.time.LocalDateTime;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.wx.util.WxResponseCode.*;\n\n/**\n * 鉴权服务\n */\n@RestController\n@RequestMapping(\"/wx/auth\")\n@Validated\npublic class WxAuthController {\n    private final Log logger = LogFactory.getLog(WxAuthController.class);\n\n    @Autowired\n    private LitemallUserService userService;\n\n    @Autowired\n    private WxMaService wxService;\n\n    @Autowired\n    private NotifyService notifyService;\n\n    @Autowired\n    private CouponAssignService couponAssignService;\n\n    /**\n     * 账号登录\n     *\n     * @param body    请求内容，{ username: xxx, password: xxx }\n     * @param request 请求对象\n     * @return 登录结果\n     */\n    @PostMapping(\"login\")\n    public Object login(@RequestBody String body, HttpServletRequest request) {\n        String username = JacksonUtil.parseString(body, \"username\");\n        String password = JacksonUtil.parseString(body, \"password\");\n        if (username == null || password == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        List<LitemallUser> userList = userService.queryByUsername(username);\n        LitemallUser user = null;\n        if (userList.size() > 1) {\n            return ResponseUtil.serious();\n        } else if (userList.size() == 0) {\n            return ResponseUtil.fail(AUTH_INVALID_ACCOUNT, \"账号不存在\");\n        } else {\n            user = userList.get(0);\n        }\n\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        if (!encoder.matches(password, user.getPassword())) {\n            return ResponseUtil.fail(AUTH_INVALID_ACCOUNT, \"账号密码不对\");\n        }\n\n        // 更新登录情况\n        user.setLastLoginTime(LocalDateTime.now());\n        user.setLastLoginIp(IpUtil.getIpAddr(request));\n        if (userService.updateById(user) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        // userInfo\n        UserInfo userInfo = new UserInfo();\n        userInfo.setNickName(username);\n        userInfo.setAvatarUrl(user.getAvatar());\n\n        // token\n        String token = UserTokenManager.generateToken(user.getId());\n\n        Map<Object, Object> result = new HashMap<Object, Object>();\n        result.put(\"token\", token);\n        result.put(\"userInfo\", userInfo);\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 微信登录\n     *\n     * @param wxLoginInfo 请求内容，{ code: xxx, userInfo: xxx }\n     * @param request     请求对象\n     * @return 登录结果\n     */\n    @PostMapping(\"login_by_weixin\")\n    public Object loginByWeixin(@RequestBody WxLoginInfo wxLoginInfo, HttpServletRequest request) {\n        String code = wxLoginInfo.getCode();\n        UserInfo userInfo = wxLoginInfo.getUserInfo();\n        if (code == null || userInfo == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        String sessionKey = null;\n        String openId = null;\n        try {\n            WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(code);\n            sessionKey = result.getSessionKey();\n            openId = result.getOpenid();\n        } catch (Exception e) {\n            e.printStackTrace();\n        }\n\n        if (sessionKey == null || openId == null) {\n            return ResponseUtil.fail();\n        }\n\n        LitemallUser user = userService.queryByOid(openId);\n        if (user == null) {\n            user = new LitemallUser();\n            user.setUsername(openId);\n            user.setPassword(openId);\n            user.setWeixinOpenid(openId);\n            user.setAvatar(userInfo.getAvatarUrl());\n            user.setNickname(userInfo.getNickName());\n            user.setGender(userInfo.getGender());\n            user.setUserLevel((byte) 0);\n            user.setStatus((byte) 0);\n            user.setLastLoginTime(LocalDateTime.now());\n            user.setLastLoginIp(IpUtil.getIpAddr(request));\n            user.setSessionKey(sessionKey);\n\n            userService.add(user);\n\n            // 新用户发送注册优惠券\n            couponAssignService.assignForRegister(user.getId());\n        } else {\n            user.setLastLoginTime(LocalDateTime.now());\n            user.setLastLoginIp(IpUtil.getIpAddr(request));\n            user.setSessionKey(sessionKey);\n            if (userService.updateById(user) == 0) {\n                return ResponseUtil.updatedDataFailed();\n            }\n        }\n\n        // token\n        String token = UserTokenManager.generateToken(user.getId());\n\n        Map<Object, Object> result = new HashMap<Object, Object>();\n        result.put(\"token\", token);\n        result.put(\"userInfo\", userInfo);\n        return ResponseUtil.ok(result);\n    }\n\n\n    /**\n     * 请求注册验证码\n     *\n     * TODO\n     * 这里需要一定机制防止短信验证码被滥用\n     *\n     * @param body 手机号码 { mobile }\n     * @return\n     */\n    @PostMapping(\"regCaptcha\")\n    public Object registerCaptcha(@RequestBody String body) {\n        String phoneNumber = JacksonUtil.parseString(body, \"mobile\");\n        if (StringUtils.isEmpty(phoneNumber)) {\n            return ResponseUtil.badArgument();\n        }\n        if (!RegexUtil.isMobileSimple(phoneNumber)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        if (!notifyService.isSmsEnable()) {\n            return ResponseUtil.fail(AUTH_CAPTCHA_UNSUPPORT, \"小程序后台验证码服务不支持\");\n        }\n        String code = CharUtil.getRandomNum(6);\n        boolean successful = CaptchaCodeManager.addToCache(phoneNumber, code);\n        if (!successful) {\n            return ResponseUtil.fail(AUTH_CAPTCHA_FREQUENCY, \"验证码未超时1分钟，不能发送\");\n        }\n        notifyService.notifySmsTemplate(phoneNumber, NotifyType.CAPTCHA, new String[]{code});\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 账号注册\n     *\n     * @param body    请求内容\n     *                {\n     *                username: xxx,\n     *                password: xxx,\n     *                mobile: xxx\n     *                code: xxx\n     *                }\n     *                其中code是手机验证码，目前还不支持手机短信验证码\n     * @param request 请求对象\n     * @return 登录结果\n     * 成功则\n     * {\n     * errno: 0,\n     * errmsg: '成功',\n     * data:\n     * {\n     * token: xxx,\n     * tokenExpire: xxx,\n     * userInfo: xxx\n     * }\n     * }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    @PostMapping(\"register\")\n    public Object register(@RequestBody String body, HttpServletRequest request) {\n        String username = JacksonUtil.parseString(body, \"username\");\n        String password = JacksonUtil.parseString(body, \"password\");\n        String mobile = JacksonUtil.parseString(body, \"mobile\");\n        String code = JacksonUtil.parseString(body, \"code\");\n        // 如果是小程序注册，则必须非空\n        // 其他情况，可以为空\n        String wxCode = JacksonUtil.parseString(body, \"wxCode\");\n\n        if (StringUtils.isEmpty(username) || StringUtils.isEmpty(password) || StringUtils.isEmpty(mobile)\n                || StringUtils.isEmpty(code)) {\n            return ResponseUtil.badArgument();\n        }\n\n        List<LitemallUser> userList = userService.queryByUsername(username);\n        if (userList.size() > 0) {\n            return ResponseUtil.fail(AUTH_NAME_REGISTERED, \"用户名已注册\");\n        }\n\n        userList = userService.queryByMobile(mobile);\n        if (userList.size() > 0) {\n            return ResponseUtil.fail(AUTH_MOBILE_REGISTERED, \"手机号已注册\");\n        }\n        if (!RegexUtil.isMobileSimple(mobile)) {\n            return ResponseUtil.fail(AUTH_INVALID_MOBILE, \"手机号格式不正确\");\n        }\n        //判断验证码是否正确\n        String cacheCode = CaptchaCodeManager.getCachedCaptcha(mobile);\n        if (cacheCode == null || cacheCode.isEmpty() || !cacheCode.equals(code)) {\n            return ResponseUtil.fail(AUTH_CAPTCHA_UNMATCH, \"验证码错误\");\n        }\n\n        String openId = \"\";\n        // 非空，则是小程序注册\n        // 继续验证openid\n        if(!StringUtils.isEmpty(wxCode)) {\n            try {\n                WxMaJscode2SessionResult result = this.wxService.getUserService().getSessionInfo(wxCode);\n                openId = result.getOpenid();\n            } catch (Exception e) {\n                e.printStackTrace();\n                return ResponseUtil.fail(AUTH_OPENID_UNACCESS, \"openid 获取失败\");\n            }\n            userList = userService.queryByOpenid(openId);\n            if (userList.size() > 1) {\n                return ResponseUtil.serious();\n            }\n            if (userList.size() == 1) {\n                LitemallUser checkUser = userList.get(0);\n                String checkUsername = checkUser.getUsername();\n                String checkPassword = checkUser.getPassword();\n                if (!checkUsername.equals(openId) || !checkPassword.equals(openId)) {\n                    return ResponseUtil.fail(AUTH_OPENID_BINDED, \"openid已绑定账号\");\n                }\n            }\n        }\n\n        LitemallUser user = null;\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        String encodedPassword = encoder.encode(password);\n        user = new LitemallUser();\n        user.setUsername(username);\n        user.setPassword(encodedPassword);\n        user.setMobile(mobile);\n        user.setWeixinOpenid(openId);\n        user.setAvatar(\"https://yanxuan.nosdn.127.net/80841d741d7fa3073e0ae27bf487339f.jpg?imageView&quality=90&thumbnail=64x64\");\n        user.setNickname(username);\n        user.setGender((byte) 0);\n        user.setUserLevel((byte) 0);\n        user.setStatus((byte) 0);\n        user.setLastLoginTime(LocalDateTime.now());\n        user.setLastLoginIp(IpUtil.getIpAddr(request));\n        userService.add(user);\n\n        // 给新用户发送注册优惠券\n        couponAssignService.assignForRegister(user.getId());\n\n        // userInfo\n        UserInfo userInfo = new UserInfo();\n        userInfo.setNickName(username);\n        userInfo.setAvatarUrl(user.getAvatar());\n\n        // token\n        String token = UserTokenManager.generateToken(user.getId());\n\n        Map<Object, Object> result = new HashMap<Object, Object>();\n        result.put(\"token\", token);\n        result.put(\"userInfo\", userInfo);\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 请求验证码\n     *\n     * TODO\n     * 这里需要一定机制防止短信验证码被滥用\n     *\n     * @param body 手机号码 { mobile: xxx, type: xxx }\n     * @return\n     */\n    @PostMapping(\"captcha\")\n    public Object captcha(@LoginUser Integer userId, @RequestBody String body) {\n        if(userId == null){\n            return ResponseUtil.unlogin();\n        }\n        String phoneNumber = JacksonUtil.parseString(body, \"mobile\");\n        String captchaType = JacksonUtil.parseString(body, \"type\");\n        if (StringUtils.isEmpty(phoneNumber)) {\n            return ResponseUtil.badArgument();\n        }\n        if (!RegexUtil.isMobileSimple(phoneNumber)) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (StringUtils.isEmpty(captchaType)) {\n            return ResponseUtil.badArgument();\n        }\n\n        if (!notifyService.isSmsEnable()) {\n            return ResponseUtil.fail(AUTH_CAPTCHA_UNSUPPORT, \"小程序后台验证码服务不支持\");\n        }\n        String code = CharUtil.getRandomNum(6);\n        boolean successful = CaptchaCodeManager.addToCache(phoneNumber, code);\n        if (!successful) {\n            return ResponseUtil.fail(AUTH_CAPTCHA_FREQUENCY, \"验证码未超时1分钟，不能发送\");\n        }\n        notifyService.notifySmsTemplate(phoneNumber, NotifyType.CAPTCHA, new String[]{code});\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 账号密码重置\n     *\n     * @param body    请求内容\n     *                {\n     *                password: xxx,\n     *                mobile: xxx\n     *                code: xxx\n     *                }\n     *                其中code是手机验证码，目前还不支持手机短信验证码\n     * @param request 请求对象\n     * @return 登录结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    @PostMapping(\"reset\")\n    public Object reset(@RequestBody String body, HttpServletRequest request) {\n        String password = JacksonUtil.parseString(body, \"password\");\n        String mobile = JacksonUtil.parseString(body, \"mobile\");\n        String code = JacksonUtil.parseString(body, \"code\");\n\n        if (mobile == null || code == null || password == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        //判断验证码是否正确\n        String cacheCode = CaptchaCodeManager.getCachedCaptcha(mobile);\n        if (cacheCode == null || cacheCode.isEmpty() || !cacheCode.equals(code))\n            return ResponseUtil.fail(AUTH_CAPTCHA_UNMATCH, \"验证码错误\");\n\n        List<LitemallUser> userList = userService.queryByMobile(mobile);\n        LitemallUser user = null;\n        if (userList.size() > 1) {\n            return ResponseUtil.serious();\n        } else if (userList.size() == 0) {\n            return ResponseUtil.fail(AUTH_MOBILE_UNREGISTERED, \"手机号未注册\");\n        } else {\n            user = userList.get(0);\n        }\n\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        String encodedPassword = encoder.encode(password);\n        user.setPassword(encodedPassword);\n\n        if (userService.updateById(user) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 账号手机号码重置\n     *\n     * @param body    请求内容\n     *                {\n     *                password: xxx,\n     *                mobile: xxx\n     *                code: xxx\n     *                }\n     *                其中code是手机验证码，目前还不支持手机短信验证码\n     * @param request 请求对象\n     * @return 登录结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    @PostMapping(\"resetPhone\")\n    public Object resetPhone(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {\n        if(userId == null){\n            return ResponseUtil.unlogin();\n        }\n        String password = JacksonUtil.parseString(body, \"password\");\n        String mobile = JacksonUtil.parseString(body, \"mobile\");\n        String code = JacksonUtil.parseString(body, \"code\");\n\n        if (mobile == null || code == null || password == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        //判断验证码是否正确\n        String cacheCode = CaptchaCodeManager.getCachedCaptcha(mobile);\n        if (cacheCode == null || cacheCode.isEmpty() || !cacheCode.equals(code))\n            return ResponseUtil.fail(AUTH_CAPTCHA_UNMATCH, \"验证码错误\");\n\n        List<LitemallUser> userList = userService.queryByMobile(mobile);\n        LitemallUser user = null;\n        if (userList.size() > 1) {\n            return ResponseUtil.fail(AUTH_MOBILE_REGISTERED, \"手机号已注册\");\n        }\n        user = userService.findById(userId);\n\n        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();\n        if (!encoder.matches(password, user.getPassword())) {\n            return ResponseUtil.fail(AUTH_INVALID_ACCOUNT, \"账号密码不对\");\n        }\n\n        user.setMobile(mobile);\n        if (userService.updateById(user) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 账号信息更新\n     *\n     * @param body    请求内容\n     *                {\n     *                password: xxx,\n     *                mobile: xxx\n     *                code: xxx\n     *                }\n     *                其中code是手机验证码，目前还不支持手机短信验证码\n     * @param request 请求对象\n     * @return 登录结果\n     * 成功则 { errno: 0, errmsg: '成功' }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    @PostMapping(\"profile\")\n    public Object profile(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {\n        if(userId == null){\n            return ResponseUtil.unlogin();\n        }\n        String avatar = JacksonUtil.parseString(body, \"avatar\");\n        Byte gender = JacksonUtil.parseByte(body, \"gender\");\n        String nickname = JacksonUtil.parseString(body, \"nickname\");\n\n        LitemallUser user = userService.findById(userId);\n        if(!StringUtils.isEmpty(avatar)){\n            user.setAvatar(avatar);\n        }\n        if(gender != null){\n            user.setGender(gender);\n        }\n        if(!StringUtils.isEmpty(nickname)){\n            user.setNickname(nickname);\n        }\n\n        if (userService.updateById(user) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 微信手机号码绑定\n     *\n     * @param userId\n     * @param body\n     * @return\n     */\n    @PostMapping(\"bindPhone\")\n    public Object bindPhone(@LoginUser Integer userId, @RequestBody String body) {\n    \tif (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n    \tLitemallUser user = userService.findById(userId);\n        String encryptedData = JacksonUtil.parseString(body, \"encryptedData\");\n        String iv = JacksonUtil.parseString(body, \"iv\");\n        WxMaPhoneNumberInfo phoneNumberInfo = this.wxService.getUserService().getPhoneNoInfo(user.getSessionKey(), encryptedData, iv);\n        String phone = phoneNumberInfo.getPhoneNumber();\n        user.setMobile(phone);\n        if (userService.updateById(user) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok();\n    }\n\n    @PostMapping(\"logout\")\n    public Object logout(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        return ResponseUtil.ok();\n    }\n\n    @GetMapping(\"info\")\n    public Object info(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        LitemallUser user = userService.findById(userId);\n        Map<Object, Object> data = new HashMap<Object, Object>();\n        data.put(\"nickName\", user.getNickname());\n        data.put(\"avatar\", user.getAvatar());\n        data.put(\"gender\", user.getGender());\n        data.put(\"mobile\", user.getMobile());\n\n        return ResponseUtil.ok(data);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxBrandController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallBrand;\nimport org.linlinjava.litemall.db.service.LitemallBrandService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 专题服务\n */\n@RestController\n@RequestMapping(\"/wx/brand\")\n@Validated\npublic class WxBrandController {\n    private final Log logger = LogFactory.getLog(WxBrandController.class);\n\n    @Autowired\n    private LitemallBrandService brandService;\n\n    /**\n     * 品牌列表\n     *\n     * @param page 分页页数\n     * @param limit 分页大小\n     * @return 品牌列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallBrand> brandList = brandService.query(page, limit, sort, order);\n        return ResponseUtil.okList(brandList);\n    }\n\n    /**\n     * 品牌详情\n     *\n     * @param id 品牌ID\n     * @return 品牌详情\n     */\n    @GetMapping(\"detail\")\n    public Object detail(@NotNull Integer id) {\n        LitemallBrand entity = brandService.findById(id);\n        if (entity == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        return ResponseUtil.ok(entity);\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCartController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.lang3.ObjectUtils;\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.math.BigDecimal;\nimport java.util.*;\n\nimport static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_NO_STOCK;\nimport static org.linlinjava.litemall.wx.util.WxResponseCode.GOODS_UNSHELVE;\n\n/**\n * 用户购物车服务\n */\n@RestController\n@RequestMapping(\"/wx/cart\")\n@Validated\npublic class WxCartController {\n    private final Log logger = LogFactory.getLog(WxCartController.class);\n\n    @Autowired\n    private LitemallCartService cartService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallGoodsProductService productService;\n    @Autowired\n    private LitemallAddressService addressService;\n    @Autowired\n    private LitemallGrouponRulesService grouponRulesService;\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n    @Autowired\n    private CouponVerifyService couponVerifyService;\n\n    /**\n     * 用户购物车信息\n     *\n     * @param userId 用户ID\n     * @return 用户购物车信息\n     */\n    @GetMapping(\"index\")\n    public Object index(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallCart> list = cartService.queryByUid(userId);\n        List<LitemallCart> cartList = new ArrayList<>();\n        // TODO\n        // 如果系统检查商品已删除或已下架，则系统自动删除。\n        // 更好的效果应该是告知用户商品失效，允许用户点击按钮来清除失效商品。\n        for (LitemallCart cart : list) {\n            LitemallGoods goods = goodsService.findById(cart.getGoodsId());\n            if (goods == null || !goods.getIsOnSale()) {\n                cartService.deleteById(cart.getId());\n                logger.debug(\"系统自动删除失效购物车商品 goodsId=\" + cart.getGoodsId() + \" productId=\" + cart.getProductId());\n            }\n            else{\n                cartList.add(cart);\n            }\n        }\n\n        Integer goodsCount = 0;\n        BigDecimal goodsAmount = new BigDecimal(0.00);\n        Integer checkedGoodsCount = 0;\n        BigDecimal checkedGoodsAmount = new BigDecimal(0.00);\n        for (LitemallCart cart : cartList) {\n            goodsCount += cart.getNumber();\n            goodsAmount = goodsAmount.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));\n            if (cart.getChecked()) {\n                checkedGoodsCount += cart.getNumber();\n                checkedGoodsAmount = checkedGoodsAmount.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));\n            }\n        }\n        Map<String, Object> cartTotal = new HashMap<>();\n        cartTotal.put(\"goodsCount\", goodsCount);\n        cartTotal.put(\"goodsAmount\", goodsAmount);\n        cartTotal.put(\"checkedGoodsCount\", checkedGoodsCount);\n        cartTotal.put(\"checkedGoodsAmount\", checkedGoodsAmount);\n\n        Map<String, Object> result = new HashMap<>();\n        result.put(\"cartList\", cartList);\n        result.put(\"cartTotal\", cartTotal);\n\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 加入商品到购物车\n     * <p>\n     * 如果已经存在购物车货品，则增加数量；\n     * 否则添加新的购物车货品项。\n     *\n     * @param userId 用户ID\n     * @param cart   购物车商品信息， { goodsId: xxx, productId: xxx, number: xxx }\n     * @return 加入购物车操作结果\n     */\n    @PostMapping(\"add\")\n    public Object add(@LoginUser Integer userId, @RequestBody LitemallCart cart) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (cart == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        Integer productId = cart.getProductId();\n        Integer number = cart.getNumber().intValue();\n        Integer goodsId = cart.getGoodsId();\n        if (!ObjectUtils.allNotNull(productId, number, goodsId)) {\n            return ResponseUtil.badArgument();\n        }\n        if(number <= 0){\n            return ResponseUtil.badArgument();\n        }\n\n        //判断商品是否可以购买\n        LitemallGoods goods = goodsService.findById(goodsId);\n        if (goods == null || !goods.getIsOnSale()) {\n            return ResponseUtil.fail(GOODS_UNSHELVE, \"商品已下架\");\n        }\n\n        LitemallGoodsProduct product = productService.findById(productId);\n        //判断购物车中是否存在此规格商品\n        LitemallCart existCart = cartService.queryExist(goodsId, productId, userId);\n        if (existCart == null) {\n            //取得规格的信息,判断规格库存\n            if (product == null || number > product.getNumber()) {\n                return ResponseUtil.fail(GOODS_NO_STOCK, \"库存不足\");\n            }\n\n            cart.setId(null);\n            cart.setGoodsSn(goods.getGoodsSn());\n            cart.setGoodsName((goods.getName()));\n            if(StringUtils.isEmpty(product.getUrl())){\n                cart.setPicUrl(goods.getPicUrl());\n            }\n            else{\n                cart.setPicUrl(product.getUrl());\n            }\n            cart.setPrice(product.getPrice());\n            cart.setSpecifications(product.getSpecifications());\n            cart.setUserId(userId);\n            cart.setChecked(true);\n            cartService.add(cart);\n        } else {\n            //取得规格的信息,判断规格库存\n            int num = existCart.getNumber() + number;\n            if (num > product.getNumber()) {\n                return ResponseUtil.fail(GOODS_NO_STOCK, \"库存不足\");\n            }\n            existCart.setNumber((short) num);\n            if (cartService.updateById(existCart) == 0) {\n                return ResponseUtil.updatedDataFailed();\n            }\n        }\n\n        return goodscount(userId);\n    }\n\n    /**\n     * 立即购买\n     * <p>\n     * 和add方法的区别在于：\n     * 1. 如果购物车内已经存在购物车货品，前者的逻辑是数量添加，这里的逻辑是数量覆盖\n     * 2. 添加成功以后，前者的逻辑是返回当前购物车商品数量，这里的逻辑是返回对应购物车项的ID\n     *\n     * @param userId 用户ID\n     * @param cart   购物车商品信息， { goodsId: xxx, productId: xxx, number: xxx }\n     * @return 立即购买操作结果\n     */\n    @PostMapping(\"fastadd\")\n    public Object fastadd(@LoginUser Integer userId, @RequestBody LitemallCart cart) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (cart == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        Integer productId = cart.getProductId();\n        Integer number = cart.getNumber().intValue();\n        Integer goodsId = cart.getGoodsId();\n        if (!ObjectUtils.allNotNull(productId, number, goodsId)) {\n            return ResponseUtil.badArgument();\n        }\n        if(number <= 0){\n            return ResponseUtil.badArgument();\n        }\n\n        //判断商品是否可以购买\n        LitemallGoods goods = goodsService.findById(goodsId);\n        if (goods == null || !goods.getIsOnSale()) {\n            return ResponseUtil.fail(GOODS_UNSHELVE, \"商品已下架\");\n        }\n\n        LitemallGoodsProduct product = productService.findById(productId);\n        //判断购物车中是否存在此规格商品\n        LitemallCart existCart = cartService.queryExist(goodsId, productId, userId);\n        if (existCart == null) {\n            //取得规格的信息,判断规格库存\n            if (product == null || number > product.getNumber()) {\n                return ResponseUtil.fail(GOODS_NO_STOCK, \"库存不足\");\n            }\n\n            cart.setId(null);\n            cart.setGoodsSn(goods.getGoodsSn());\n            cart.setGoodsName((goods.getName()));\n            if(StringUtils.isEmpty(product.getUrl())){\n                cart.setPicUrl(goods.getPicUrl());\n            }\n            else{\n                cart.setPicUrl(product.getUrl());\n            }\n            cart.setPrice(product.getPrice());\n            cart.setSpecifications(product.getSpecifications());\n            cart.setUserId(userId);\n            cart.setChecked(true);\n            cartService.add(cart);\n        } else {\n            //取得规格的信息,判断规格库存\n            int num = number;\n            if (num > product.getNumber()) {\n                return ResponseUtil.fail(GOODS_NO_STOCK, \"库存不足\");\n            }\n            existCart.setNumber((short) num);\n            if (cartService.updateById(existCart) == 0) {\n                return ResponseUtil.updatedDataFailed();\n            }\n        }\n\n        return ResponseUtil.ok(existCart != null ? existCart.getId() : cart.getId());\n    }\n\n    /**\n     * 修改购物车商品货品数量\n     *\n     * @param userId 用户ID\n     * @param cart   购物车商品信息， { id: xxx, goodsId: xxx, productId: xxx, number: xxx }\n     * @return 修改结果\n     */\n    @PostMapping(\"update\")\n    public Object update(@LoginUser Integer userId, @RequestBody LitemallCart cart) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Integer productId = cart.getProductId();\n        Integer number = cart.getNumber().intValue();\n        Integer goodsId = cart.getGoodsId();\n        Integer id = cart.getId();\n        if (!ObjectUtils.allNotNull(id, productId, number, goodsId)) {\n            return ResponseUtil.badArgument();\n        }\n        if(number <= 0){\n            return ResponseUtil.badArgument();\n        }\n\n        //判断是否存在该订单\n        // 如果不存在，直接返回错误\n        LitemallCart existCart = cartService.findById(userId, id);\n        if (existCart == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 判断goodsId和productId是否与当前cart里的值一致\n        if (!existCart.getGoodsId().equals(goodsId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!existCart.getProductId().equals(productId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        //判断商品是否可以购买\n        LitemallGoods goods = goodsService.findById(goodsId);\n        if (goods == null || !goods.getIsOnSale()) {\n            return ResponseUtil.fail(GOODS_UNSHELVE, \"商品已下架\");\n        }\n\n        //取得规格的信息,判断规格库存\n        LitemallGoodsProduct product = productService.findById(productId);\n        if (product == null || product.getNumber() < number) {\n            return ResponseUtil.fail(GOODS_UNSHELVE, \"库存不足\");\n        }\n\n        existCart.setNumber(number.shortValue());\n        if (cartService.updateById(existCart) == 0) {\n            return ResponseUtil.updatedDataFailed();\n        }\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 购物车商品货品勾选状态\n     * <p>\n     * 如果原来没有勾选，则设置勾选状态；如果商品已经勾选，则设置非勾选状态。\n     *\n     * @param userId 用户ID\n     * @param body   购物车商品信息， { productIds: xxx, isChecked: 1/0 }\n     * @return 购物车信息\n     */\n    @PostMapping(\"checked\")\n    public Object checked(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (body == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        List<Integer> productIds = JacksonUtil.parseIntegerList(body, \"productIds\");\n        if (productIds == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        Integer checkValue = JacksonUtil.parseInteger(body, \"isChecked\");\n        if (checkValue == null) {\n            return ResponseUtil.badArgument();\n        }\n        Boolean isChecked = (checkValue == 1);\n\n        cartService.updateCheck(userId, productIds, isChecked);\n        return index(userId);\n    }\n\n    /**\n     * 购物车商品删除\n     *\n     * @param userId 用户ID\n     * @param body   购物车商品信息， { productIds: xxx }\n     * @return 购物车信息\n     * 成功则\n     * {\n     * errno: 0,\n     * errmsg: '成功',\n     * data: xxx\n     * }\n     * 失败则 { errno: XXX, errmsg: XXX }\n     */\n    @PostMapping(\"delete\")\n    public Object delete(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (body == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        List<Integer> productIds = JacksonUtil.parseIntegerList(body, \"productIds\");\n\n        if (productIds == null || productIds.size() == 0) {\n            return ResponseUtil.badArgument();\n        }\n\n        cartService.delete(productIds, userId);\n        return index(userId);\n    }\n\n    /**\n     * 购物车商品货品数量\n     * <p>\n     * 如果用户没有登录，则返回空数据。\n     *\n     * @param userId 用户ID\n     * @return 购物车商品货品数量\n     */\n    @GetMapping(\"goodscount\")\n    public Object goodscount(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.ok(0);\n        }\n\n        int goodsCount = 0;\n        List<LitemallCart> cartList = cartService.queryByUid(userId);\n        for (LitemallCart cart : cartList) {\n            goodsCount += cart.getNumber();\n        }\n\n        return ResponseUtil.ok(goodsCount);\n    }\n\n    /**\n     * 购物车下单\n     *\n     * @param userId    用户ID\n     * @param cartId    购物车商品ID：\n     *                  如果购物车商品ID是空，则下单当前用户所有购物车商品；\n     *                  如果购物车商品ID非空，则只下单当前购物车商品。\n     * @param addressId 收货地址ID：\n     *                  如果收货地址ID是空，则查询当前用户的默认地址。\n     * @param couponId  优惠券ID：\n     *                  如果优惠券ID是空，则自动选择合适的优惠券。\n     * @return 购物车操作结果\n     */\n    @GetMapping(\"checkout\")\n    public Object checkout(@LoginUser Integer userId, Integer cartId, Integer addressId, Integer couponId, Integer userCouponId, Integer grouponRulesId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        // 收货地址\n        LitemallAddress checkedAddress = null;\n        if (addressId != null && !addressId.equals(0)) {\n            checkedAddress = addressService.query(userId, addressId);\n        }\n        if (checkedAddress == null) {\n            checkedAddress = addressService.findDefault(userId);\n            // 如果仍然没有地址，则是没有收货地址\n            // 返回一个空的地址id=0，这样前端则会提醒添加地址\n            if (checkedAddress == null) {\n                checkedAddress = new LitemallAddress();\n                checkedAddress.setId(0);\n                addressId = 0;\n            } else {\n                addressId = checkedAddress.getId();\n            }\n        }\n\n        // 团购优惠\n        BigDecimal grouponPrice = new BigDecimal(0.00);\n        LitemallGrouponRules grouponRules = grouponRulesService.findById(grouponRulesId);\n        if (grouponRules != null) {\n            grouponPrice = grouponRules.getDiscount();\n        }\n\n        // 商品价格\n        List<LitemallCart> checkedGoodsList = null;\n        if (cartId == null || cartId.equals(0)) {\n            checkedGoodsList = cartService.queryByUidAndChecked(userId);\n        } else {\n            LitemallCart cart = cartService.findById(userId, cartId);\n            if (cart == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n            checkedGoodsList = new ArrayList<>(1);\n            checkedGoodsList.add(cart);\n        }\n        BigDecimal checkedGoodsPrice = new BigDecimal(0.00);\n        for (LitemallCart cart : checkedGoodsList) {\n            //  只有当团购规格商品ID符合才进行团购优惠\n            if (grouponRules != null && grouponRules.getGoodsId().equals(cart.getGoodsId())) {\n                checkedGoodsPrice = checkedGoodsPrice.add(cart.getPrice().subtract(grouponPrice).multiply(new BigDecimal(cart.getNumber())));\n            } else {\n                checkedGoodsPrice = checkedGoodsPrice.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));\n            }\n        }\n\n        // 计算优惠券可用情况\n        BigDecimal tmpCouponPrice = new BigDecimal(0.00);\n        Integer tmpCouponId = 0;\n        Integer tmpUserCouponId = 0;\n        int tmpCouponLength = 0;\n        List<LitemallCouponUser> couponUserList = couponUserService.queryAll(userId);\n        for(LitemallCouponUser couponUser : couponUserList){\n            LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponUser.getCouponId(), couponUser.getId(), checkedGoodsPrice, checkedGoodsList);\n            if(coupon == null){\n                continue;\n            }\n\n            tmpCouponLength++;\n            if(tmpCouponPrice.compareTo(coupon.getDiscount()) == -1){\n                tmpCouponPrice = coupon.getDiscount();\n                tmpCouponId = coupon.getId();\n                tmpUserCouponId = couponUser.getId();\n            }\n        }\n        // 获取优惠券减免金额，优惠券可用数量\n        int availableCouponLength = tmpCouponLength;\n        BigDecimal couponPrice = new BigDecimal(0);\n        // 这里存在三种情况\n        // 1. 用户不想使用优惠券，则不处理\n        // 2. 用户想自动使用优惠券，则选择合适优惠券\n        // 3. 用户已选择优惠券，则测试优惠券是否合适\n        if (couponId == null || couponId.equals(-1)){\n            couponId = -1;\n            userCouponId = -1;\n        }\n        else if (couponId.equals(0)) {\n            couponPrice = tmpCouponPrice;\n            couponId = tmpCouponId;\n            userCouponId = tmpUserCouponId;\n        }\n        else {\n            LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, couponId, userCouponId, checkedGoodsPrice, checkedGoodsList);\n            // 用户选择的优惠券有问题，则选择合适优惠券，否则使用用户选择的优惠券\n            if(coupon == null){\n                couponPrice = tmpCouponPrice;\n                couponId = tmpCouponId;\n                userCouponId = tmpUserCouponId;\n            }\n            else {\n                couponPrice = coupon.getDiscount();\n            }\n        }\n\n        // 根据订单商品总价计算运费，满88则免运费，否则8元；\n        BigDecimal freightPrice = new BigDecimal(0.00);\n        if (checkedGoodsPrice.compareTo(SystemConfig.getFreightLimit()) < 0) {\n            freightPrice = SystemConfig.getFreight();\n        }\n\n        // 可以使用的其他钱，例如用户积分\n        BigDecimal integralPrice = new BigDecimal(0.00);\n\n        // 订单费用\n        BigDecimal orderTotalPrice = checkedGoodsPrice.add(freightPrice).subtract(couponPrice).max(new BigDecimal(0.00));\n\n        BigDecimal actualPrice = orderTotalPrice.subtract(integralPrice);\n\n        Map<String, Object> data = new HashMap<>();\n        data.put(\"addressId\", addressId);\n        data.put(\"couponId\", couponId);\n        data.put(\"userCouponId\", userCouponId);\n        data.put(\"cartId\", cartId);\n        data.put(\"grouponRulesId\", grouponRulesId);\n        data.put(\"grouponPrice\", grouponPrice);\n        data.put(\"checkedAddress\", checkedAddress);\n        data.put(\"availableCouponLength\", availableCouponLength);\n        data.put(\"goodsTotalPrice\", checkedGoodsPrice);\n        data.put(\"freightPrice\", freightPrice);\n        data.put(\"couponPrice\", couponPrice);\n        data.put(\"orderTotalPrice\", orderTotalPrice);\n        data.put(\"actualPrice\", actualPrice);\n        data.put(\"checkedGoodsList\", checkedGoodsList);\n        return ResponseUtil.ok(data);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCatalogController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallCategory;\nimport org.linlinjava.litemall.db.service.LitemallCategoryService;\nimport org.linlinjava.litemall.wx.service.HomeCacheManager;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 类目服务\n */\n@RestController\n@RequestMapping(\"/wx/catalog\")\n@Validated\npublic class WxCatalogController {\n    private final Log logger = LogFactory.getLog(WxCatalogController.class);\n\n    @Autowired\n    private LitemallCategoryService categoryService;\n\n    @GetMapping(\"/getfirstcategory\")\n    public Object getFirstCategory() {\n        // 所有一级分类目录\n        List<LitemallCategory> l1CatList = categoryService.queryL1();\n        return ResponseUtil.ok(l1CatList);\n    }\n\n    @GetMapping(\"/getsecondcategory\")\n    public Object getSecondCategory(@NotNull Integer id) {\n        // 所有二级分类目录\n        List<LitemallCategory> currentSubCategory = categoryService.queryByPid(id);\n        return ResponseUtil.ok(currentSubCategory);\n    }\n\n    /**\n     * 分类详情\n     *\n     * @param id   分类类目ID。\n     *             如果分类类目ID是空，则选择第一个分类类目。\n     *             需要注意，这里分类类目是一级类目\n     * @return 分类详情\n     */\n    @GetMapping(\"index\")\n    public Object index(Integer id) {\n\n        // 所有一级分类目录\n        List<LitemallCategory> l1CatList = categoryService.queryL1();\n\n        // 当前一级分类目录\n        LitemallCategory currentCategory = null;\n        if (id != null) {\n            currentCategory = categoryService.findById(id);\n        } else {\n             if (l1CatList.size() > 0) {\n                currentCategory = l1CatList.get(0);\n            }\n        }\n\n        // 当前一级分类目录对应的二级分类目录\n        List<LitemallCategory> currentSubCategory = null;\n        if (null != currentCategory) {\n            currentSubCategory = categoryService.queryByPid(currentCategory.getId());\n        }\n\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"categoryList\", l1CatList);\n        data.put(\"currentCategory\", currentCategory);\n        data.put(\"currentSubCategory\", currentSubCategory);\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 所有分类数据\n     *\n     * @return 所有分类数据\n     */\n    @GetMapping(\"all\")\n    public Object queryAll() {\n        //优先从缓存中读取\n        if (HomeCacheManager.hasData(HomeCacheManager.CATALOG)) {\n            return ResponseUtil.ok(HomeCacheManager.getCacheData(HomeCacheManager.CATALOG));\n        }\n\n\n        // 所有一级分类目录\n        List<LitemallCategory> l1CatList = categoryService.queryL1();\n\n        //所有子分类列表\n        Map<Integer, List<LitemallCategory>> allList = new HashMap<>();\n        List<LitemallCategory> sub;\n        for (LitemallCategory category : l1CatList) {\n            sub = categoryService.queryByPid(category.getId());\n            allList.put(category.getId(), sub);\n        }\n\n        // 当前一级分类目录\n        LitemallCategory currentCategory = l1CatList.get(0);\n\n        // 当前一级分类目录对应的二级分类目录\n        List<LitemallCategory> currentSubCategory = null;\n        if (null != currentCategory) {\n            currentSubCategory = categoryService.queryByPid(currentCategory.getId());\n        }\n\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"categoryList\", l1CatList);\n        data.put(\"allList\", allList);\n        data.put(\"currentCategory\", currentCategory);\n        data.put(\"currentSubCategory\", currentSubCategory);\n\n        //缓存数据\n        HomeCacheManager.loadData(HomeCacheManager.CATALOG, data);\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 当前分类栏目\n     *\n     * @param id 分类类目ID\n     * @return 当前分类栏目\n     */\n    @GetMapping(\"current\")\n    public Object current(@NotNull Integer id) {\n        // 当前分类\n        LitemallCategory currentCategory = categoryService.findById(id);\n        if(currentCategory == null){\n            return ResponseUtil.badArgumentValue();\n        }\n        List<LitemallCategory> currentSubCategory = categoryService.queryByPid(currentCategory.getId());\n\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"currentCategory\", currentCategory);\n        data.put(\"currentSubCategory\", currentSubCategory);\n        return ResponseUtil.ok(data);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCollectController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport javax.validation.constraints.NotNull;\n\nimport org.apache.commons.lang3.ObjectUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallCollect;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallTopic;\nimport org.linlinjava.litemall.db.service.LitemallCollectService;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallTopicService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * 用户收藏服务\n */\n@RestController\n@RequestMapping(\"/wx/collect\")\n@Validated\npublic class WxCollectController {\n    private final Log logger = LogFactory.getLog(WxCollectController.class);\n\n    @Autowired\n    private LitemallCollectService collectService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallTopicService topicService;\n\n    /**\n     * 用户收藏列表\n     *\n     * @param userId 用户ID\n     * @param type   类型，如果是0则是商品收藏，如果是1则是专题收藏\n     * @param page   分页页数\n     * @param limit   分页大小\n     * @return 用户收藏列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@LoginUser Integer userId,\n                       @NotNull Byte type,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallCollect> collectList = collectService.queryByType(userId, type, page, limit, sort, order);\n\n        List<Object> collects = new ArrayList<>(collectList.size());\n        for (LitemallCollect collect : collectList) {\n            Map<String, Object> c = new HashMap<String, Object>();\n            c.put(\"id\", collect.getId());\n            c.put(\"type\", collect.getType());\n            c.put(\"valueId\", collect.getValueId());\n            if (type == (byte)0){\n            \t//查询商品信息\n                LitemallGoods goods = goodsService.findById(collect.getValueId());\n                c.put(\"name\", goods.getName());\n                c.put(\"brief\", goods.getBrief());\n                c.put(\"picUrl\", goods.getPicUrl());\n                c.put(\"retailPrice\", goods.getRetailPrice());\n            } else {\n            \t//查询专题信息\n            \tLitemallTopic topic = topicService.findById(collect.getValueId());\n\t            c.put(\"title\", topic.getTitle());\n\t            c.put(\"subtitle\", topic.getTitle());\n\t            c.put(\"price\", topic.getPrice());\n\t            c.put(\"picUrl\", topic.getPicUrl());\n            }\n            collects.add(c);\n        }\n\n        return ResponseUtil.okList(collects, collectList);\n    }\n\n    /**\n     * 用户收藏添加或删除\n     * <p>\n     * 如果商品没有收藏，则添加收藏；如果商品已经收藏，则删除收藏状态。\n     *\n     * @param userId 用户ID\n     * @param body   请求内容，{ type: xxx, valueId: xxx }\n     * @return 操作结果\n     */\n    @PostMapping(\"addordelete\")\n    public Object addordelete(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        Byte type = JacksonUtil.parseByte(body, \"type\");\n        Integer valueId = JacksonUtil.parseInteger(body, \"valueId\");\n        if (!ObjectUtils.allNotNull(type, valueId)) {\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallCollect collect = collectService.queryByTypeAndValue(userId, type, valueId);\n\n        if (collect != null) {\n            collectService.deleteById(collect.getId());\n        } else {\n            collect = new LitemallCollect();\n            collect.setUserId(userId);\n            collect.setValueId(valueId);\n            collect.setType(type);\n            collectService.add(collect);\n        }\n\n        return ResponseUtil.ok();\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCommentController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallComment;\nimport org.linlinjava.litemall.db.service.LitemallCommentService;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallTopicService;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.dto.UserInfo;\nimport org.linlinjava.litemall.wx.service.UserInfoService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 用户评论服务\n */\n@RestController\n@RequestMapping(\"/wx/comment\")\n@Validated\npublic class WxCommentController {\n    private final Log logger = LogFactory.getLog(WxCommentController.class);\n\n    @Autowired\n    private LitemallCommentService commentService;\n    @Autowired\n    private LitemallUserService userService;\n    @Autowired\n    private UserInfoService userInfoService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallTopicService topicService;\n\n    private Object validate(LitemallComment comment) {\n        String content = comment.getContent();\n        if (StringUtils.isEmpty(content)) {\n            return ResponseUtil.badArgument();\n        }\n\n        Short star = comment.getStar();\n        if (star == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (star < 0 || star > 5) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        Byte type = comment.getType();\n        Integer valueId = comment.getValueId();\n        if (type == null || valueId == null) {\n            return ResponseUtil.badArgument();\n        }\n        if (type == 0) {\n            if (goodsService.findById(valueId) == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n        } else if (type == 1) {\n            if (topicService.findById(valueId) == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n        } else {\n            return ResponseUtil.badArgumentValue();\n        }\n        Boolean hasPicture = comment.getHasPicture();\n        if (hasPicture == null || !hasPicture) {\n            comment.setPicUrls(new String[0]);\n        }\n        return null;\n    }\n\n    /**\n     * 发表评论\n     *\n     * @param userId  用户ID\n     * @param comment 评论内容\n     * @return 发表评论操作结果\n     */\n    @PostMapping(\"post\")\n    public Object post(@LoginUser Integer userId, @RequestBody LitemallComment comment) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Object error = validate(comment);\n        if (error != null) {\n            return error;\n        }\n\n        comment.setUserId(userId);\n        commentService.save(comment);\n        return ResponseUtil.ok(comment);\n    }\n\n    /**\n     * 评论数量\n     *\n     * @param type    类型ID。 如果是0，则查询商品评论；如果是1，则查询专题评论。\n     * @param valueId 商品或专题ID。如果type是0，则是商品ID；如果type是1，则是专题ID。\n     * @return 评论数量\n     */\n    @GetMapping(\"count\")\n    public Object count(@NotNull Byte type, @NotNull Integer valueId) {\n        int allCount = commentService.count(type, valueId, 0);\n        int hasPicCount = commentService.count(type, valueId, 1);\n        Map<String, Object> entity = new HashMap<String, Object>();\n        entity.put(\"allCount\", allCount);\n        entity.put(\"hasPicCount\", hasPicCount);\n        return ResponseUtil.ok(entity);\n    }\n\n    /**\n     * 评论列表\n     *\n     * @param type     类型ID。 如果是0，则查询商品评论；如果是1，则查询专题评论。\n     * @param valueId  商品或专题ID。如果type是0，则是商品ID；如果type是1，则是专题ID。\n     * @param showType 显示类型。如果是0，则查询全部；如果是1，则查询有图片的评论。\n     * @param page     分页页数\n     * @param limit     分页大小\n     * @return 评论列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@NotNull Byte type,\n                       @NotNull Integer valueId,\n                       @NotNull Integer showType,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit) {\n        List<LitemallComment> commentList = commentService.query(type, valueId, showType, page, limit);\n\n        List<Map<String, Object>> commentVoList = new ArrayList<>(commentList.size());\n        for (LitemallComment comment : commentList) {\n            Map<String, Object> commentVo = new HashMap<>();\n            commentVo.put(\"addTime\", comment.getAddTime());\n            commentVo.put(\"content\", comment.getContent());\n            commentVo.put(\"adminContent\", comment.getAdminContent());\n            commentVo.put(\"picList\", comment.getPicUrls());\n            commentVo.put(\"star\", comment.getStar());\n            UserInfo userInfo = userInfoService.getInfo(comment.getUserId());\n            commentVo.put(\"userInfo\", userInfo);\n\n            commentVoList.add(commentVo);\n        }\n        return ResponseUtil.okList(commentVoList, commentList);\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxCouponController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallCart;\nimport org.linlinjava.litemall.db.domain.LitemallCoupon;\nimport org.linlinjava.litemall.db.domain.LitemallCouponUser;\nimport org.linlinjava.litemall.db.domain.LitemallGrouponRules;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.CouponConstant;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.vo.CouponVo;\nimport org.linlinjava.litemall.wx.util.WxResponseCode;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.math.BigDecimal;\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.List;\n\n/**\n * 优惠券服务\n */\n@RestController\n@RequestMapping(\"/wx/coupon\")\n@Validated\npublic class WxCouponController {\n    private final Log logger = LogFactory.getLog(WxCouponController.class);\n\n    @Autowired\n    private LitemallCouponService couponService;\n    @Autowired\n    private LitemallCouponUserService couponUserService;\n    @Autowired\n    private LitemallGrouponRulesService grouponRulesService;\n    @Autowired\n    private LitemallCartService cartService;\n    @Autowired\n    private CouponVerifyService couponVerifyService;\n\n    /**\n     * 优惠券列表\n     *\n     * @param page\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    @GetMapping(\"list\")\n    public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n\n        List<LitemallCoupon> couponList = couponService.queryList(page, limit, sort, order);\n        return ResponseUtil.okList(couponList);\n    }\n\n    /**\n     * 个人优惠券列表\n     *\n     * @param userId\n     * @param status\n     * @param page\n     * @param limit\n     * @param sort\n     * @param order\n     * @return\n     */\n    @GetMapping(\"mylist\")\n    public Object mylist(@LoginUser Integer userId,\n                       Short status,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallCouponUser> couponUserList = couponUserService.queryList(userId, null, status, page, limit, sort, order);\n        List<CouponVo> couponVoList = change(couponUserList);\n        return ResponseUtil.okList(couponVoList, couponUserList);\n    }\n\n    private List<CouponVo> change(List<LitemallCouponUser> couponList) {\n        List<CouponVo> couponVoList = new ArrayList<>(couponList.size());\n        for(LitemallCouponUser couponUser : couponList){\n            Integer couponId = couponUser.getCouponId();\n            LitemallCoupon coupon = couponService.findById(couponId);\n            CouponVo couponVo = new CouponVo();\n            couponVo.setId(couponUser.getId());\n            couponVo.setCid(coupon.getId());\n            couponVo.setName(coupon.getName());\n            couponVo.setDesc(coupon.getDesc());\n            couponVo.setTag(coupon.getTag());\n            couponVo.setMin(coupon.getMin());\n            couponVo.setDiscount(coupon.getDiscount());\n            couponVo.setStartTime(couponUser.getStartTime());\n            couponVo.setEndTime(couponUser.getEndTime());\n\n            couponVoList.add(couponVo);\n        }\n\n        return couponVoList;\n    }\n\n\n    /**\n     * 当前购物车下单商品订单可用优惠券\n     *\n     * @param userId\n     * @param cartId\n     * @param grouponRulesId\n     * @return\n     */\n    @GetMapping(\"selectlist\")\n    public Object selectlist(@LoginUser Integer userId, Integer cartId, Integer grouponRulesId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        // 团购优惠\n        BigDecimal grouponPrice = new BigDecimal(0.00);\n        LitemallGrouponRules grouponRules = grouponRulesService.findById(grouponRulesId);\n        if (grouponRules != null) {\n            grouponPrice = grouponRules.getDiscount();\n        }\n\n        // 商品价格\n        List<LitemallCart> checkedGoodsList = null;\n        if (cartId == null || cartId.equals(0)) {\n            checkedGoodsList = cartService.queryByUidAndChecked(userId);\n        } else {\n            LitemallCart cart = cartService.findById(userId, cartId);\n            if (cart == null) {\n                return ResponseUtil.badArgumentValue();\n            }\n            checkedGoodsList = new ArrayList<>(1);\n            checkedGoodsList.add(cart);\n        }\n        BigDecimal checkedGoodsPrice = new BigDecimal(0.00);\n        for (LitemallCart cart : checkedGoodsList) {\n            //  只有当团购规格商品ID符合才进行团购优惠\n            if (grouponRules != null && grouponRules.getGoodsId().equals(cart.getGoodsId())) {\n                checkedGoodsPrice = checkedGoodsPrice.add(cart.getPrice().subtract(grouponPrice).multiply(new BigDecimal(cart.getNumber())));\n            } else {\n                checkedGoodsPrice = checkedGoodsPrice.add(cart.getPrice().multiply(new BigDecimal(cart.getNumber())));\n            }\n        }\n        // 计算优惠券可用情况\n        List<LitemallCouponUser> couponUserList = couponUserService.queryAll(userId);\n        List<CouponVo> couponVoList = change(couponUserList);\n        for (CouponVo cv : couponVoList) {\n            LitemallCoupon coupon = couponVerifyService.checkCoupon(userId, cv.getCid(), cv.getId(), checkedGoodsPrice, checkedGoodsList);\n            cv.setAvailable(coupon != null);\n        }\n\n        return ResponseUtil.okList(couponVoList);\n    }\n\n    /**\n     * 优惠券领取\n     *\n     * @param userId 用户ID\n     * @param body 请求内容， { couponId: xxx }\n     * @return 操作结果\n     */\n    @PostMapping(\"receive\")\n    public Object receive(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        Integer couponId = JacksonUtil.parseInteger(body, \"couponId\");\n        if(couponId == null){\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallCoupon coupon = couponService.findById(couponId);\n        if(coupon == null){\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 当前已领取数量和总数量比较\n        Integer total = coupon.getTotal();\n        Integer totalCoupons = couponUserService.countCoupon(couponId);\n        if((total != 0) && (totalCoupons >= total)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已领完\");\n        }\n\n        // 当前用户已领取数量和用户限领数量比较\n        Integer limit = coupon.getLimit().intValue();\n        Integer userCounpons = couponUserService.countUserAndCoupon(userId, couponId);\n        if((limit != 0) && (userCounpons >= limit)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已经领取过\");\n        }\n\n        // 优惠券分发类型\n        // 例如注册赠券类型的优惠券不能领取\n        Short type = coupon.getType();\n        if(type.equals(CouponConstant.TYPE_REGISTER)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"新用户优惠券自动发送\");\n        }\n        else if(type.equals(CouponConstant.TYPE_CODE)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券只能兑换\");\n        }\n        else if(!type.equals(CouponConstant.TYPE_COMMON)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券类型不支持\");\n        }\n\n        // 优惠券状态，已下架或者过期不能领取\n        Short status = coupon.getStatus();\n        if(status.equals(CouponConstant.STATUS_OUT)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已领完\");\n        }\n        else if(status.equals(CouponConstant.STATUS_EXPIRED)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券已经过期\");\n        }\n\n        // 用户领券记录\n        LitemallCouponUser couponUser = new LitemallCouponUser();\n        couponUser.setCouponId(couponId);\n        couponUser.setUserId(userId);\n        Short timeType = coupon.getTimeType();\n        if (timeType.equals(CouponConstant.TIME_TYPE_TIME)) {\n            couponUser.setStartTime(coupon.getStartTime());\n            couponUser.setEndTime(coupon.getEndTime());\n        }\n        else{\n            LocalDateTime now = LocalDateTime.now();\n            couponUser.setStartTime(now);\n            couponUser.setEndTime(now.plusDays(coupon.getDays()));\n        }\n        couponUserService.add(couponUser);\n\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 优惠券兑换\n     *\n     * @param userId 用户ID\n     * @param body 请求内容， { code: xxx }\n     * @return 操作结果\n     */\n    @PostMapping(\"exchange\")\n    public Object exchange(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        String code = JacksonUtil.parseString(body, \"code\");\n        if(code == null){\n            return ResponseUtil.badArgument();\n        }\n\n        LitemallCoupon coupon = couponService.findByCode(code);\n        if(coupon == null){\n            return ResponseUtil.fail(WxResponseCode.COUPON_CODE_INVALID, \"优惠券不正确\");\n        }\n        Integer couponId = coupon.getId();\n\n        // 当前已领取数量和总数量比较\n        Integer total = coupon.getTotal();\n        Integer totalCoupons = couponUserService.countCoupon(couponId);\n        if((total != 0) && (totalCoupons >= total)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已兑换\");\n        }\n\n        // 当前用户已领取数量和用户限领数量比较\n        Integer limit = coupon.getLimit().intValue();\n        Integer userCounpons = couponUserService.countUserAndCoupon(userId, couponId);\n        if((limit != 0) && (userCounpons >= limit)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已兑换\");\n        }\n\n        // 优惠券分发类型\n        // 例如注册赠券类型的优惠券不能领取\n        Short type = coupon.getType();\n        if(type.equals(CouponConstant.TYPE_REGISTER)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"新用户优惠券自动发送\");\n        }\n        else if(type.equals(CouponConstant.TYPE_COMMON)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券只能领取，不能兑换\");\n        }\n        else if(!type.equals(CouponConstant.TYPE_CODE)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券类型不支持\");\n        }\n\n        // 优惠券状态，已下架或者过期不能领取\n        Short status = coupon.getStatus();\n        if(status.equals(CouponConstant.STATUS_OUT)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_EXCEED_LIMIT, \"优惠券已兑换\");\n        }\n        else if(status.equals(CouponConstant.STATUS_EXPIRED)){\n            return ResponseUtil.fail(WxResponseCode.COUPON_RECEIVE_FAIL, \"优惠券已经过期\");\n        }\n\n        // 用户领券记录\n        LitemallCouponUser couponUser = new LitemallCouponUser();\n        couponUser.setCouponId(couponId);\n        couponUser.setUserId(userId);\n        Short timeType = coupon.getTimeType();\n        if (timeType.equals(CouponConstant.TIME_TYPE_TIME)) {\n            couponUser.setStartTime(coupon.getStartTime());\n            couponUser.setEndTime(coupon.getEndTime());\n        }\n        else{\n            LocalDateTime now = LocalDateTime.now();\n            couponUser.setStartTime(now);\n            couponUser.setEndTime(now.plusDays(coupon.getDays()));\n        }\n        couponUserService.add(couponUser);\n\n        return ResponseUtil.ok();\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxFeedbackController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.lang3.StringUtils;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.RegexUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallFeedback;\nimport org.linlinjava.litemall.db.domain.LitemallUser;\nimport org.linlinjava.litemall.db.service.LitemallFeedbackService;\nimport org.linlinjava.litemall.db.service.LitemallUserService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.PostMapping;\nimport org.springframework.web.bind.annotation.RequestBody;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * 意见反馈服务\n *\n * @author Yogeek\n * @date 2018/8/25 14:10\n */\n@RestController\n@RequestMapping(\"/wx/feedback\")\n@Validated\npublic class WxFeedbackController {\n    private final Log logger = LogFactory.getLog(WxFeedbackController.class);\n\n    @Autowired\n    private LitemallFeedbackService feedbackService;\n    @Autowired\n    private LitemallUserService userService;\n\n    private Object validate(LitemallFeedback feedback) {\n        String content = feedback.getContent();\n        if (StringUtils.isEmpty(content)) {\n            return ResponseUtil.badArgument();\n        }\n\n        String type = feedback.getFeedType();\n        if (StringUtils.isEmpty(type)) {\n            return ResponseUtil.badArgument();\n        }\n\n        Boolean hasPicture = feedback.getHasPicture();\n        if (hasPicture == null || !hasPicture) {\n            feedback.setPicUrls(new String[0]);\n        }\n\n        // 测试手机号码是否正确\n        String mobile = feedback.getMobile();\n        if (StringUtils.isEmpty(mobile)) {\n            return ResponseUtil.badArgument();\n        }\n        if (!RegexUtil.isMobileSimple(mobile)) {\n            return ResponseUtil.badArgument();\n        }\n        return null;\n    }\n\n    /**\n     * 添加意见反馈\n     *\n     * @param userId   用户ID\n     * @param feedback 意见反馈\n     * @return 操作结果\n     */\n    @PostMapping(\"submit\")\n    public Object submit(@LoginUser Integer userId, @RequestBody LitemallFeedback feedback) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        Object error = validate(feedback);\n        if (error != null) {\n            return error;\n        }\n\n        LitemallUser user = userService.findById(userId);\n        String username = user.getUsername();\n        feedback.setId(null);\n        feedback.setUserId(userId);\n        feedback.setUsername(username);\n        //状态默认是0，1表示状态已发生变化\n        feedback.setStatus(1);\n        feedbackService.add(feedback);\n\n        return ResponseUtil.ok();\n    }\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxFootprintController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport com.github.pagehelper.PageInfo;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.JacksonUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallFootprint;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.service.LitemallFootprintService;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.time.LocalDateTime;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 用户访问足迹服务\n */\n@RestController\n@RequestMapping(\"/wx/footprint\")\n@Validated\npublic class WxFootprintController {\n    private final Log logger = LogFactory.getLog(WxFootprintController.class);\n\n    @Autowired\n    private LitemallFootprintService footprintService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n\n    /**\n     * 删除用户足迹\n     *\n     * @param userId 用户ID\n     * @param body   请求内容， { id: xxx }\n     * @return 删除操作结果\n     */\n    @PostMapping(\"delete\")\n    public Object delete(@LoginUser Integer userId, @RequestBody String body) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n        if (body == null) {\n            return ResponseUtil.badArgument();\n        }\n\n        Integer footprintId = JacksonUtil.parseInteger(body, \"id\");\n        if (footprintId == null) {\n            return ResponseUtil.badArgument();\n        }\n        LitemallFootprint footprint = footprintService.findById(userId, footprintId);\n\n        if (footprint == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n        if (!footprint.getUserId().equals(userId)) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        footprintService.deleteById(footprintId);\n        return ResponseUtil.ok();\n    }\n\n    /**\n     * 用户足迹列表\n     *\n     * @param page 分页页数\n     * @param limit 分页大小\n     * @return 用户足迹列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@LoginUser Integer userId,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallFootprint> footprintList = footprintService.queryByAddTime(userId, page, limit);\n\n        List<Object> footprintVoList = new ArrayList<>(footprintList.size());\n        for (LitemallFootprint footprint : footprintList) {\n            Map<String, Object> c = new HashMap<String, Object>();\n            c.put(\"id\", footprint.getId());\n            c.put(\"goodsId\", footprint.getGoodsId());\n            c.put(\"addTime\", footprint.getAddTime());\n\n            LitemallGoods goods = goodsService.findById(footprint.getGoodsId());\n            c.put(\"name\", goods.getName());\n            c.put(\"brief\", goods.getBrief());\n            c.put(\"picUrl\", goods.getPicUrl());\n            c.put(\"retailPrice\", goods.getRetailPrice());\n\n            footprintVoList.add(c);\n        }\n\n        return ResponseUtil.okList(footprintVoList, footprintList);\n    }\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGoodsController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport com.github.pagehelper.PageInfo;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.util.StringUtils;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.*;\n\n/**\n * 商品服务\n */\n@RestController\n@RequestMapping(\"/wx/goods\")\n@Validated\npublic class WxGoodsController {\n\tprivate final Log logger = LogFactory.getLog(WxGoodsController.class);\n\n\t@Autowired\n\tprivate LitemallGoodsService goodsService;\n\n\t@Autowired\n\tprivate LitemallGoodsProductService productService;\n\n\t@Autowired\n\tprivate LitemallIssueService goodsIssueService;\n\n\t@Autowired\n\tprivate LitemallGoodsAttributeService goodsAttributeService;\n\n\t@Autowired\n\tprivate LitemallBrandService brandService;\n\n\t@Autowired\n\tprivate LitemallCommentService commentService;\n\n\t@Autowired\n\tprivate LitemallUserService userService;\n\n\t@Autowired\n\tprivate LitemallCollectService collectService;\n\n\t@Autowired\n\tprivate LitemallFootprintService footprintService;\n\n\t@Autowired\n\tprivate LitemallCategoryService categoryService;\n\n\t@Autowired\n\tprivate LitemallSearchHistoryService searchHistoryService;\n\n\t@Autowired\n\tprivate LitemallGoodsSpecificationService goodsSpecificationService;\n\n\t@Autowired\n\tprivate LitemallGrouponRulesService rulesService;\n\n\tprivate final static ArrayBlockingQueue<Runnable> WORK_QUEUE = new ArrayBlockingQueue<>(9);\n\n\tprivate final static RejectedExecutionHandler HANDLER = new ThreadPoolExecutor.CallerRunsPolicy();\n\n\tprivate static ThreadPoolExecutor executorService = new ThreadPoolExecutor(16, 16, 1000, TimeUnit.MILLISECONDS, WORK_QUEUE, HANDLER);\n\n\t/**\n\t * 商品详情\n\t * <p>\n\t * 用户可以不登录。\n\t * 如果用户登录，则记录用户足迹以及返回用户收藏信息。\n\t *\n\t * @param userId 用户ID\n\t * @param id     商品ID\n\t * @return 商品详情\n\t */\n\t@GetMapping(\"detail\")\n\tpublic Object detail(@LoginUser Integer userId, @NotNull Integer id) {\n\t\t// 商品信息\n\t\tLitemallGoods info = goodsService.findById(id);\n\n\t\t// 商品属性\n\t\tCallable<List> goodsAttributeListCallable = () -> goodsAttributeService.queryByGid(id);\n\n\t\t// 商品规格 返回的是定制的GoodsSpecificationVo\n\t\tCallable<Object> objectCallable = () -> goodsSpecificationService.getSpecificationVoList(id);\n\n\t\t// 商品规格对应的数量和价格\n\t\tCallable<List> productListCallable = () -> productService.queryByGid(id);\n\n\t\t// 商品问题，这里是一些通用问题\n\t\tCallable<List> issueCallable = () -> goodsIssueService.querySelective(\"\", 1, 4, \"\", \"\");\n\n\t\t// 商品品牌商\n\t\tCallable<LitemallBrand> brandCallable = ()->{\n\t\t\tInteger brandId = info.getBrandId();\n\t\t\tLitemallBrand brand;\n\t\t\tif (brandId == 0) {\n\t\t\t\tbrand = new LitemallBrand();\n\t\t\t} else {\n\t\t\t\tbrand = brandService.findById(info.getBrandId());\n\t\t\t}\n\t\t\treturn brand;\n\t\t};\n\n\t\t// 评论\n\t\tCallable<Map> commentsCallable = () -> {\n\t\t\tList<LitemallComment> comments = commentService.queryGoodsByGid(id, 0, 2);\n\t\t\tList<Map<String, Object>> commentsVo = new ArrayList<>(comments.size());\n\t\t\tlong commentCount = PageInfo.of(comments).getTotal();\n\t\t\tfor (LitemallComment comment : comments) {\n\t\t\t\tMap<String, Object> c = new HashMap<>();\n\t\t\t\tc.put(\"id\", comment.getId());\n\t\t\t\tc.put(\"addTime\", comment.getAddTime());\n\t\t\t\tc.put(\"content\", comment.getContent());\n\t\t\t\tc.put(\"adminContent\", comment.getAdminContent());\n\t\t\t\tLitemallUser user = userService.findById(comment.getUserId());\n\t\t\t\tc.put(\"nickname\", user == null ? \"\" : user.getNickname());\n\t\t\t\tc.put(\"avatar\", user == null ? \"\" : user.getAvatar());\n\t\t\t\tc.put(\"picList\", comment.getPicUrls());\n\t\t\t\tcommentsVo.add(c);\n\t\t\t}\n\t\t\tMap<String, Object> commentList = new HashMap<>();\n\t\t\tcommentList.put(\"count\", commentCount);\n\t\t\tcommentList.put(\"data\", commentsVo);\n\t\t\treturn commentList;\n\t\t};\n\n\t\t//团购信息\n\t\tCallable<List> grouponRulesCallable = () ->rulesService.queryByGoodsId(id);\n\n\t\t// 用户收藏\n\t\tint userHasCollect = 0;\n\t\tif (userId != null) {\n\t\t\tuserHasCollect = collectService.count(userId, (byte)0, id);\n\t\t}\n\n\t\t// 记录用户的足迹 异步处理\n\t\tif (userId != null) {\n\t\t\texecutorService.execute(()->{\n\t\t\t\tLitemallFootprint footprint = new LitemallFootprint();\n\t\t\t\tfootprint.setUserId(userId);\n\t\t\t\tfootprint.setGoodsId(id);\n\t\t\t\tfootprintService.add(footprint);\n\t\t\t});\n\t\t}\n\t\tFutureTask<List> goodsAttributeListTask = new FutureTask<>(goodsAttributeListCallable);\n\t\tFutureTask<Object> objectCallableTask = new FutureTask<>(objectCallable);\n\t\tFutureTask<List> productListCallableTask = new FutureTask<>(productListCallable);\n\t\tFutureTask<List> issueCallableTask = new FutureTask<>(issueCallable);\n\t\tFutureTask<Map> commentsCallableTsk = new FutureTask<>(commentsCallable);\n\t\tFutureTask<LitemallBrand> brandCallableTask = new FutureTask<>(brandCallable);\n        FutureTask<List> grouponRulesCallableTask = new FutureTask<>(grouponRulesCallable);\n\n\t\texecutorService.submit(goodsAttributeListTask);\n\t\texecutorService.submit(objectCallableTask);\n\t\texecutorService.submit(productListCallableTask);\n\t\texecutorService.submit(issueCallableTask);\n\t\texecutorService.submit(commentsCallableTsk);\n\t\texecutorService.submit(brandCallableTask);\n\t\texecutorService.submit(grouponRulesCallableTask);\n\n\t\tMap<String, Object> data = new HashMap<>();\n\n\t\ttry {\n\t\t\tdata.put(\"info\", info);\n\t\t\tdata.put(\"userHasCollect\", userHasCollect);\n\t\t\tdata.put(\"issue\", issueCallableTask.get());\n\t\t\tdata.put(\"comment\", commentsCallableTsk.get());\n\t\t\tdata.put(\"specificationList\", objectCallableTask.get());\n\t\t\tdata.put(\"productList\", productListCallableTask.get());\n\t\t\tdata.put(\"attribute\", goodsAttributeListTask.get());\n\t\t\tdata.put(\"brand\", brandCallableTask.get());\n\t\t\tdata.put(\"groupon\", grouponRulesCallableTask.get());\n\t\t\t//SystemConfig.isAutoCreateShareImage()\n\t\t\tdata.put(\"share\", SystemConfig.isAutoCreateShareImage());\n\n\t\t}\n\t\tcatch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\n\t\t//商品分享图片地址\n\t\tdata.put(\"shareImage\", info.getShareUrl());\n\t\treturn ResponseUtil.ok(data);\n\t}\n\n\t/**\n\t * 商品分类类目\n\t *\n\t * @param id 分类类目ID\n\t * @return 商品分类类目\n\t */\n\t@GetMapping(\"category\")\n\tpublic Object category(@NotNull Integer id) {\n\t\tLitemallCategory cur = categoryService.findById(id);\n\t\tLitemallCategory parent = null;\n\t\tList<LitemallCategory> children = null;\n\n\t\tif (cur.getPid() == 0) {\n\t\t\tparent = cur;\n\t\t\tchildren = categoryService.queryByPid(cur.getId());\n\t\t\tcur = children.size() > 0 ? children.get(0) : cur;\n\t\t} else {\n\t\t\tparent = categoryService.findById(cur.getPid());\n\t\t\tchildren = categoryService.queryByPid(cur.getPid());\n\t\t}\n\t\tMap<String, Object> data = new HashMap<>();\n\t\tdata.put(\"currentCategory\", cur);\n\t\tdata.put(\"parentCategory\", parent);\n\t\tdata.put(\"brotherCategory\", children);\n\t\treturn ResponseUtil.ok(data);\n\t}\n\n\t/**\n\t * 根据条件搜素商品\n\t * <p>\n\t * 1. 这里的前五个参数都是可选的，甚至都是空\n\t * 2. 用户是可选登录，如果登录，则记录用户的搜索关键字\n\t *\n\t * @param categoryId 分类类目ID，可选\n\t * @param brandId    品牌商ID，可选\n\t * @param keyword    关键字，可选\n\t * @param isNew      是否新品，可选\n\t * @param isHot      是否热买，可选\n\t * @param userId     用户ID\n\t * @param page       分页页数\n\t * @param limit       分页大小\n\t * @param sort       排序方式，支持\"add_time\", \"retail_price\"或\"name\"\n\t * @param order      排序类型，顺序或者降序\n\t * @return 根据条件搜素的商品详情\n\t */\n\t@GetMapping(\"list\")\n\tpublic Object list(\n\t\tInteger categoryId,\n\t\tInteger brandId,\n\t\tString keyword,\n\t\tBoolean isNew,\n\t\tBoolean isHot,\n\t\t@LoginUser Integer userId,\n\t\t@RequestParam(defaultValue = \"1\") Integer page,\n\t\t@RequestParam(defaultValue = \"10\") Integer limit,\n\t\t@Sort(accepts = {\"add_time\", \"retail_price\", \"name\"}) @RequestParam(defaultValue = \"add_time\") String sort,\n\t\t@Order @RequestParam(defaultValue = \"desc\") String order) {\n\n\t\t//添加到搜索历史\n\t\tif (userId != null && !StringUtils.isEmpty(keyword)) {\n\t\t\tLitemallSearchHistory searchHistoryVo = new LitemallSearchHistory();\n\t\t\tsearchHistoryVo.setKeyword(keyword);\n\t\t\tsearchHistoryVo.setUserId(userId);\n\t\t\tsearchHistoryVo.setFrom(\"wx\");\n\t\t\tsearchHistoryService.save(searchHistoryVo);\n\t\t}\n\n\t\t//查询列表数据\n\t\tList<LitemallGoods> goodsList = goodsService.querySelective(categoryId, brandId, keyword, isHot, isNew, page, limit, sort, order);\n\n\t\t// 查询商品所属类目列表。\n\t\tList<Integer> goodsCatIds = goodsService.getCatIds(brandId, keyword, isHot, isNew);\n\t\tList<LitemallCategory> categoryList = null;\n\t\tif (goodsCatIds.size() != 0) {\n\t\t\tcategoryList = categoryService.queryL2ByIds(goodsCatIds);\n\t\t} else {\n\t\t\tcategoryList = new ArrayList<>(0);\n\t\t}\n\n\t\tPageInfo<LitemallGoods> pagedList = PageInfo.of(goodsList);\n\n\t\tMap<String, Object> entity = new HashMap<>();\n\t\tentity.put(\"list\", goodsList);\n\t\tentity.put(\"total\", pagedList.getTotal());\n\t\tentity.put(\"page\", pagedList.getPageNum());\n\t\tentity.put(\"limit\", pagedList.getPageSize());\n\t\tentity.put(\"pages\", pagedList.getPages());\n\t\tentity.put(\"filterCategoryList\", categoryList);\n\n\t\t// 因为这里需要返回额外的filterCategoryList参数，因此不能方便使用ResponseUtil.okList\n\t\treturn ResponseUtil.ok(entity);\n\t}\n\n\t/**\n\t * 商品详情页面“大家都在看”推荐商品\n\t *\n\t * @param id, 商品ID\n\t * @return 商品详情页面推荐商品\n\t */\n\t@GetMapping(\"related\")\n\tpublic Object related(@NotNull Integer id) {\n\t\tLitemallGoods goods = goodsService.findById(id);\n\t\tif (goods == null) {\n\t\t\treturn ResponseUtil.badArgumentValue();\n\t\t}\n\n\t\t// 目前的商品推荐算法仅仅是推荐同类目的其他商品\n\t\tint cid = goods.getCategoryId();\n\n\t\t// 查找六个相关商品\n\t\tint related = 6;\n\t\tList<LitemallGoods> goodsList = goodsService.queryByCategory(cid, 0, related);\n\t\treturn ResponseUtil.okList(goodsList);\n\t}\n\n\t/**\n\t * 在售的商品总数\n\t *\n\t * @return 在售的商品总数\n\t */\n\t@GetMapping(\"count\")\n\tpublic Object count() {\n\t\tInteger goodsCount = goodsService.queryOnSale();\n\t\treturn ResponseUtil.ok(goodsCount);\n\t}\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxGrouponController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.express.ExpressService;\nimport org.linlinjava.litemall.core.express.dao.ExpressInfo;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.*;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.db.util.OrderUtil;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.service.WxGrouponRuleService;\nimport org.linlinjava.litemall.wx.vo.GrouponRuleVo;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\nimport static org.linlinjava.litemall.wx.util.WxResponseCode.*;\n\n/**\n * 团购服务\n * <p>\n * 需要注意这里团购规则和团购活动的关系和区别。\n */\n@RestController\n@RequestMapping(\"/wx/groupon\")\n@Validated\npublic class WxGrouponController {\n    private final Log logger = LogFactory.getLog(WxGrouponController.class);\n\n    @Autowired\n    private LitemallGrouponRulesService rulesService;\n    @Autowired\n    private WxGrouponRuleService wxGrouponRuleService;\n    @Autowired\n    private LitemallGrouponService grouponService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n    @Autowired\n    private LitemallOrderService orderService;\n    @Autowired\n    private LitemallOrderGoodsService orderGoodsService;\n    @Autowired\n    private LitemallUserService userService;\n    @Autowired\n    private ExpressService expressService;\n    @Autowired\n    private LitemallGrouponRulesService grouponRulesService;\n\n    /**\n     * 团购规则列表\n     *\n     * @param page 分页页数\n     * @param limit 分页大小\n     * @return 团购规则列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<GrouponRuleVo> grouponRuleVoList = wxGrouponRuleService.queryList(page, limit, sort, order);\n        return ResponseUtil.okList(grouponRuleVoList);\n    }\n\n    /**\n     * 团购活动详情\n     *\n     * @param userId    用户ID\n     * @param grouponId 团购活动ID\n     * @return 团购活动详情\n     */\n    @GetMapping(\"detail\")\n    public Object detail(@LoginUser Integer userId, @NotNull Integer grouponId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        LitemallGroupon groupon = grouponService.queryById(userId, grouponId);\n        if (groupon == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        LitemallGrouponRules rules = rulesService.findById(groupon.getRulesId());\n        if (rules == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        // 订单信息\n        LitemallOrder order = orderService.findById(userId, groupon.getOrderId());\n        if (null == order) {\n            return ResponseUtil.fail(ORDER_UNKNOWN, \"订单不存在\");\n        }\n        if (!order.getUserId().equals(userId)) {\n            return ResponseUtil.fail(ORDER_INVALID, \"不是当前用户的订单\");\n        }\n        Map<String, Object> orderVo = new HashMap<String, Object>();\n        orderVo.put(\"id\", order.getId());\n        orderVo.put(\"orderSn\", order.getOrderSn());\n        orderVo.put(\"addTime\", order.getAddTime());\n        orderVo.put(\"consignee\", order.getConsignee());\n        orderVo.put(\"mobile\", order.getMobile());\n        orderVo.put(\"address\", order.getAddress());\n        orderVo.put(\"goodsPrice\", order.getGoodsPrice());\n        orderVo.put(\"freightPrice\", order.getFreightPrice());\n        orderVo.put(\"actualPrice\", order.getActualPrice());\n        orderVo.put(\"orderStatusText\", OrderUtil.orderStatusText(order));\n        orderVo.put(\"handleOption\", OrderUtil.build(order));\n        orderVo.put(\"expCode\", order.getShipChannel());\n        orderVo.put(\"expNo\", order.getShipSn());\n\n        List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(order.getId());\n        List<Map<String, Object>> orderGoodsVoList = new ArrayList<>(orderGoodsList.size());\n        for (LitemallOrderGoods orderGoods : orderGoodsList) {\n            Map<String, Object> orderGoodsVo = new HashMap<>();\n            orderGoodsVo.put(\"id\", orderGoods.getId());\n            orderGoodsVo.put(\"orderId\", orderGoods.getOrderId());\n            orderGoodsVo.put(\"goodsId\", orderGoods.getGoodsId());\n            orderGoodsVo.put(\"goodsName\", orderGoods.getGoodsName());\n            orderGoodsVo.put(\"number\", orderGoods.getNumber());\n            orderGoodsVo.put(\"retailPrice\", orderGoods.getPrice());\n            orderGoodsVo.put(\"picUrl\", orderGoods.getPicUrl());\n            orderGoodsVo.put(\"goodsSpecificationValues\", orderGoods.getSpecifications());\n            orderGoodsVoList.add(orderGoodsVo);\n        }\n\n        Map<String, Object> result = new HashMap<>();\n        result.put(\"orderInfo\", orderVo);\n        result.put(\"orderGoods\", orderGoodsVoList);\n\n        // 订单状态为已发货且物流信息不为空\n        //\"YTO\", \"800669400640887922\"\n        if (order.getOrderStatus().equals(OrderUtil.STATUS_SHIP)) {\n            ExpressInfo ei = expressService.getExpressInfo(order.getShipChannel(), order.getShipSn());\n            result.put(\"expressInfo\", ei);\n        }\n\n        UserVo creator = userService.findUserVoById(groupon.getCreatorUserId());\n        List<UserVo> joiners = new ArrayList<>();\n        joiners.add(creator);\n        int linkGrouponId;\n        // 这是一个团购发起记录\n        if (groupon.getGrouponId() == 0) {\n            linkGrouponId = groupon.getId();\n        } else {\n            linkGrouponId = groupon.getGrouponId();\n\n        }\n        List<LitemallGroupon> groupons = grouponService.queryJoinRecord(linkGrouponId);\n\n        UserVo joiner;\n        for (LitemallGroupon grouponItem : groupons) {\n            joiner = userService.findUserVoById(grouponItem.getUserId());\n            joiners.add(joiner);\n        }\n\n        result.put(\"linkGrouponId\", linkGrouponId);\n        result.put(\"creator\", creator);\n        result.put(\"joiners\", joiners);\n        result.put(\"groupon\", groupon);\n        result.put(\"rules\", rules);\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 参加团购\n     *\n     * @param grouponId 团购活动ID\n     * @return 操作结果\n     */\n    @GetMapping(\"join\")\n    public Object join(@NotNull Integer grouponId) {\n        LitemallGroupon groupon = grouponService.queryById(grouponId);\n        if (groupon == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        LitemallGrouponRules rules = rulesService.findById(groupon.getRulesId());\n        if (rules == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        LitemallGoods goods = goodsService.findById(rules.getGoodsId());\n        if (goods == null) {\n            return ResponseUtil.badArgumentValue();\n        }\n\n        Map<String, Object> result = new HashMap<>();\n        result.put(\"groupon\", groupon);\n        result.put(\"goods\", goods);\n\n        return ResponseUtil.ok(result);\n    }\n\n    /**\n     * 用户开团或入团情况\n     *\n     * @param userId 用户ID\n     * @param showType 显示类型，如果是0，则是当前用户开的团购；否则，则是当前用户参加的团购\n     * @return 用户开团或入团情况\n     */\n    @GetMapping(\"my\")\n    public Object my(@LoginUser Integer userId, @RequestParam(defaultValue = \"0\") Integer showType) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        List<LitemallGroupon> myGroupons;\n        if (showType == 0) {\n            myGroupons = grouponService.queryMyGroupon(userId);\n        } else {\n            myGroupons = grouponService.queryMyJoinGroupon(userId);\n        }\n\n        List<Map<String, Object>> grouponVoList = new ArrayList<>(myGroupons.size());\n\n        LitemallOrder order;\n        LitemallGrouponRules rules;\n        LitemallUser creator;\n        for (LitemallGroupon groupon : myGroupons) {\n            order = orderService.findById(userId, groupon.getOrderId());\n            rules = rulesService.findById(groupon.getRulesId());\n            creator = userService.findById(groupon.getCreatorUserId());\n\n            Map<String, Object> grouponVo = new HashMap<>();\n            //填充团购信息\n            grouponVo.put(\"id\", groupon.getId());\n            grouponVo.put(\"groupon\", groupon);\n            grouponVo.put(\"rules\", rules);\n            grouponVo.put(\"creator\", creator.getNickname());\n\n            int linkGrouponId;\n            // 这是一个团购发起记录\n            if (groupon.getGrouponId() == 0) {\n                linkGrouponId = groupon.getId();\n                grouponVo.put(\"isCreator\", creator.getId() == userId);\n            } else {\n                linkGrouponId = groupon.getGrouponId();\n                grouponVo.put(\"isCreator\", false);\n            }\n            int joinerCount = grouponService.countGroupon(linkGrouponId);\n            grouponVo.put(\"joinerCount\", joinerCount + 1);\n\n            //填充订单信息\n            grouponVo.put(\"orderId\", order.getId());\n            grouponVo.put(\"orderSn\", order.getOrderSn());\n            grouponVo.put(\"actualPrice\", order.getActualPrice());\n            grouponVo.put(\"orderStatusText\", OrderUtil.orderStatusText(order));\n\n            List<LitemallOrderGoods> orderGoodsList = orderGoodsService.queryByOid(order.getId());\n            List<Map<String, Object>> orderGoodsVoList = new ArrayList<>(orderGoodsList.size());\n            for (LitemallOrderGoods orderGoods : orderGoodsList) {\n                Map<String, Object> orderGoodsVo = new HashMap<>();\n                orderGoodsVo.put(\"id\", orderGoods.getId());\n                orderGoodsVo.put(\"goodsName\", orderGoods.getGoodsName());\n                orderGoodsVo.put(\"number\", orderGoods.getNumber());\n                orderGoodsVo.put(\"picUrl\", orderGoods.getPicUrl());\n                orderGoodsVoList.add(orderGoodsVo);\n            }\n            grouponVo.put(\"goodsList\", orderGoodsVoList);\n            grouponVoList.add(grouponVo);\n        }\n\n        Map<String, Object> result = new HashMap<>();\n        result.put(\"total\", grouponVoList.size());\n        result.put(\"list\", grouponVoList);\n\n        return ResponseUtil.ok(result);\n    }\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxHomeController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.system.SystemConfig;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallCategory;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.service.*;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.service.HomeCacheManager;\nimport org.linlinjava.litemall.wx.service.WxGrouponRuleService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\nimport java.util.concurrent.*;\n\n/**\n * 首页服务\n */\n@RestController\n@RequestMapping(\"/wx/home\")\n@Validated\npublic class WxHomeController {\n    private final Log logger = LogFactory.getLog(WxHomeController.class);\n\n    @Autowired\n    private LitemallAdService adService;\n\n    @Autowired\n    private LitemallGoodsService goodsService;\n\n    @Autowired\n    private LitemallBrandService brandService;\n\n    @Autowired\n    private LitemallTopicService topicService;\n\n    @Autowired\n    private LitemallCategoryService categoryService;\n\n    @Autowired\n    private WxGrouponRuleService grouponService;\n\n    @Autowired\n    private LitemallCouponService couponService;\n\n    private final static ArrayBlockingQueue<Runnable> WORK_QUEUE = new ArrayBlockingQueue<>(9);\n\n    private final static RejectedExecutionHandler HANDLER = new ThreadPoolExecutor.CallerRunsPolicy();\n\n    private static ThreadPoolExecutor executorService = new ThreadPoolExecutor(9, 9, 1000, TimeUnit.MILLISECONDS, WORK_QUEUE, HANDLER);\n\n    @GetMapping(\"/cache\")\n    public Object cache(@NotNull String key) {\n        if (!key.equals(\"litemall_cache\")) {\n            return ResponseUtil.fail();\n        }\n\n        // 清除缓存\n        HomeCacheManager.clearAll();\n        return ResponseUtil.ok(\"缓存已清除\");\n    }\n\n    /**\n     * 首页数据\n     * @param userId 当用户已经登录时，非空。为登录状态为null\n     * @return 首页数据\n     */\n    @GetMapping(\"/index\")\n    public Object index(@LoginUser Integer userId) {\n        //优先从缓存中读取\n        if (HomeCacheManager.hasData(HomeCacheManager.INDEX)) {\n            return ResponseUtil.ok(HomeCacheManager.getCacheData(HomeCacheManager.INDEX));\n        }\n        //相当于每次都是new的线程池 没意义\n        //ExecutorService executorService = Executors.newFixedThreadPool(10);\n\n        Callable<List> bannerListCallable = () -> adService.queryIndex();\n\n        Callable<List> channelListCallable = () -> categoryService.queryChannel();\n\n        Callable<List> couponListCallable;\n        if(userId == null){\n            couponListCallable = () -> couponService.queryList(0, 3);\n        } else {\n            couponListCallable = () -> couponService.queryAvailableList(userId,0, 3);\n        }\n\n\n        Callable<List> newGoodsListCallable = () -> goodsService.queryByNew(0, SystemConfig.getNewLimit());\n\n        Callable<List> hotGoodsListCallable = () -> goodsService.queryByHot(0, SystemConfig.getHotLimit());\n\n        Callable<List> brandListCallable = () -> brandService.query(0, SystemConfig.getBrandLimit());\n\n        Callable<List> topicListCallable = () -> topicService.queryList(0, SystemConfig.getTopicLimit());\n\n        //团购专区\n        Callable<List> grouponListCallable = () -> grouponService.queryList(0, 5);\n\n        Callable<List> floorGoodsListCallable = this::getCategoryList;\n\n        FutureTask<List> bannerTask = new FutureTask<>(bannerListCallable);\n        FutureTask<List> channelTask = new FutureTask<>(channelListCallable);\n        FutureTask<List> couponListTask = new FutureTask<>(couponListCallable);\n        FutureTask<List> newGoodsListTask = new FutureTask<>(newGoodsListCallable);\n        FutureTask<List> hotGoodsListTask = new FutureTask<>(hotGoodsListCallable);\n        FutureTask<List> brandListTask = new FutureTask<>(brandListCallable);\n        FutureTask<List> topicListTask = new FutureTask<>(topicListCallable);\n        FutureTask<List> grouponListTask = new FutureTask<>(grouponListCallable);\n        FutureTask<List> floorGoodsListTask = new FutureTask<>(floorGoodsListCallable);\n\n        executorService.submit(bannerTask);\n        executorService.submit(channelTask);\n        executorService.submit(couponListTask);\n        executorService.submit(newGoodsListTask);\n        executorService.submit(hotGoodsListTask);\n        executorService.submit(brandListTask);\n        executorService.submit(topicListTask);\n        executorService.submit(grouponListTask);\n        executorService.submit(floorGoodsListTask);\n\n        Map<String, Object> entity = new HashMap<>();\n        try {\n            entity.put(\"banner\", bannerTask.get());\n            entity.put(\"channel\", channelTask.get());\n            entity.put(\"couponList\", couponListTask.get());\n            entity.put(\"newGoodsList\", newGoodsListTask.get());\n            entity.put(\"hotGoodsList\", hotGoodsListTask.get());\n            entity.put(\"brandList\", brandListTask.get());\n            entity.put(\"topicList\", topicListTask.get());\n            entity.put(\"grouponList\", grouponListTask.get());\n            entity.put(\"floorGoodsList\", floorGoodsListTask.get());\n            //缓存数据\n            HomeCacheManager.loadData(HomeCacheManager.INDEX, entity);\n        }\n        catch (Exception e) {\n            e.printStackTrace();\n        }\n//        finally {\n//            executorService.shutdown();\n//        }\n        return ResponseUtil.ok(entity);\n    }\n\n    private List<Map> getCategoryList() {\n        List<Map> categoryList = new ArrayList<>();\n        List<LitemallCategory> catL1List = categoryService.queryL1WithoutRecommend(0, SystemConfig.getCatlogListLimit());\n        for (LitemallCategory catL1 : catL1List) {\n            List<LitemallCategory> catL2List = categoryService.queryByPid(catL1.getId());\n            List<Integer> l2List = new ArrayList<>();\n            for (LitemallCategory catL2 : catL2List) {\n                l2List.add(catL2.getId());\n            }\n\n            List<LitemallGoods> categoryGoods;\n            if (l2List.size() == 0) {\n                categoryGoods = new ArrayList<>();\n            } else {\n                categoryGoods = goodsService.queryByCategory(l2List, 0, SystemConfig.getCatlogMoreLimit());\n            }\n\n            Map<String, Object> catGoods = new HashMap<>();\n            catGoods.put(\"id\", catL1.getId());\n            catGoods.put(\"name\", catL1.getName());\n            catGoods.put(\"goodsList\", categoryGoods);\n            categoryList.add(catGoods);\n        }\n        return categoryList;\n    }\n\n    /**\n     * 商城介绍信息\n     * @return 商城介绍信息\n     */\n    @GetMapping(\"/about\")\n    public Object about() {\n        Map<String, Object> about = new HashMap<>();\n        about.put(\"name\", SystemConfig.getMallName());\n        about.put(\"address\", SystemConfig.getMallAddress());\n        about.put(\"phone\", SystemConfig.getMallPhone());\n        about.put(\"qq\", SystemConfig.getMallQQ());\n        about.put(\"longitude\", SystemConfig.getMallLongitude());\n        about.put(\"latitude\", SystemConfig.getMallLatitude());\n        return ResponseUtil.ok(about);\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxIndexController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\n/**\n * 测试服务\n */\n@RestController\n@RequestMapping(\"/wx/index\")\npublic class WxIndexController {\n    private final Log logger = LogFactory.getLog(WxIndexController.class);\n\n    /**\n     * 测试数据\n     *\n     * @return 测试数据\n     */\n    @GetMapping(\"/index\")\n    public Object index() {\n        return ResponseUtil.ok(\"hello world, this is wx service\");\n    }\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxIssueController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport com.github.pagehelper.PageInfo;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallIssue;\nimport org.linlinjava.litemall.db.service.LitemallIssueService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n@RestController\n@RequestMapping(\"/wx/issue\")\n@Validated\npublic class WxIssueController {\n    private final Log logger = LogFactory.getLog(WxIssueController.class);\n\n    @Autowired\n    private LitemallIssueService issueService;\n\n    /**\n     * 帮助中心\n     */\n    @GetMapping(\"/list\")\n    public Object list(String question,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer size,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallIssue> issueList = issueService.querySelective(question, page, size, sort, order);\n        return ResponseUtil.okList(issueList);\n    }\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxMsgController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport cn.binarywang.wx.miniapp.api.WxMaService;\nimport cn.binarywang.wx.miniapp.bean.WxMaKefuMessage;\nimport cn.binarywang.wx.miniapp.bean.WxMaMessage;\nimport cn.binarywang.wx.miniapp.message.WxMaXmlOutMessage;\nimport me.chanjar.weixin.common.error.WxErrorException;\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport java.io.IOException;\n\n/**\n * @author liyang\n * @Description 微信消息推送配置\n * @date 2021-11-10 17:32:25\n */\n@RestController\n@RequestMapping(value = \"/wx/msg\")\npublic class WxMsgController {\n\n    private final Log logger = LogFactory.getLog(WxMsgController.class);\n\n    @Autowired\n    private WxMaService wxMaService;\n\n    /**\n     * token校验\n     *\n     * @param signature\n     * @param timestamp\n     * @param nonce\n     * @param echostr\n     * @return\n     */\n    @GetMapping(value = \"/config\", produces = \"text/plain;charset=utf-8\")\n    public String config(@RequestParam(required = false) String signature,\n                         @RequestParam(required = false) String timestamp,\n                         @RequestParam(required = false) String nonce,\n                         @RequestParam(required = false) String echostr) {\n        return !wxMaService.checkSignature(timestamp, nonce, signature) ? \"fail\" : echostr;\n    }\n\n    /**\n     * 消息回复\n     *\n     * @param request\n     * @param response\n     * @return\n     */\n    @PostMapping(value = \"/config\", produces = \"application/xml;charset=utf-8\")\n    public String config(HttpServletRequest request, HttpServletResponse response) {\n        WxMaMessage wxMaMessage = null;\n        try {\n            wxMaMessage = WxMaMessage.fromXml(request.getInputStream());\n        } catch (IOException e) {\n            e.printStackTrace();\n        }\n        if (wxMaMessage != null) {\n            String msgType = wxMaMessage.getMsgType();\n            if (\"text\".equals(msgType)) {\n                try {\n                    wxMaService.getMsgService().sendKefuMsg(WxMaKefuMessage.newTextBuilder().content(wxMaMessage.getContent()).toUser(wxMaMessage.getFromUser()).build());\n                } catch (WxErrorException e) {\n                    logger.error(\"消息自动回复失败\");\n                }\n            }\n            WxMaXmlOutMessage wxMaXmlOutMessage = new WxMaXmlOutMessage();\n            wxMaXmlOutMessage.setMsgType(\"transfer_customer_service\");\n            wxMaXmlOutMessage.setToUserName(wxMaMessage.getFromUser());\n            wxMaXmlOutMessage.setFromUserName(wxMaMessage.getToUser());\n            wxMaXmlOutMessage.setCreateTime(wxMaMessage.getCreateTime().longValue());\n            final String xml = wxMaXmlOutMessage.toXml();\n            logger.info(xml);\n            return xml;\n        }\n        return null;\n    }\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxOrderController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.linlinjava.litemall.wx.service.WxOrderService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.servlet.http.HttpServletRequest;\nimport javax.servlet.http.HttpServletResponse;\nimport javax.validation.constraints.NotNull;\n\n@RestController\n@RequestMapping(\"/wx/order\")\n@Validated\npublic class WxOrderController {\n    private final Log logger = LogFactory.getLog(WxOrderController.class);\n\n    @Autowired\n    private WxOrderService wxOrderService;\n\n    /**\n     * 订单列表\n     *\n     * @param userId   用户ID\n     * @param showType 显示类型，如果是0则是全部订单\n     * @param page     分页页数\n     * @param limit     分页大小\n     * @param sort     排序字段\n     * @param order     排序方式\n     * @return 订单列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@LoginUser Integer userId,\n                       @RequestParam(defaultValue = \"0\") Integer showType,\n                       @RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        return wxOrderService.list(userId, showType, page, limit, sort, order);\n    }\n\n    /**\n     * 订单详情\n     *\n     * @param userId  用户ID\n     * @param orderId 订单ID\n     * @return 订单详情\n     */\n    @GetMapping(\"detail\")\n    public Object detail(@LoginUser Integer userId, @NotNull Integer orderId) {\n        return wxOrderService.detail(userId, orderId);\n    }\n\n    /**\n     * 提交订单\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ cartId：xxx, addressId: xxx, couponId: xxx, message: xxx, grouponRulesId: xxx,  grouponLinkId: xxx}\n     * @return 提交订单操作结果\n     */\n    @PostMapping(\"submit\")\n    public Object submit(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.submit(userId, body);\n    }\n\n    /**\n     * 取消订单\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 取消订单操作结果\n     */\n    @PostMapping(\"cancel\")\n    public Object cancel(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.cancel(userId, body);\n    }\n\n    /**\n     * 付款订单的预支付会话标识\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 支付订单ID\n     */\n    @PostMapping(\"prepay\")\n    public Object prepay(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {\n        return wxOrderService.prepay(userId, body, request);\n    }\n\n    /**\n     * 微信H5支付\n     * @param userId\n     * @param body\n     * @param request\n     * @return\n     */\n    @PostMapping(\"h5pay\")\n    public Object h5pay(@LoginUser Integer userId, @RequestBody String body, HttpServletRequest request) {\n        return wxOrderService.h5pay(userId, body, request);\n    }\n\n    /**\n     * 微信付款成功或失败回调接口\n     * <p>\n     *  TODO\n     *  注意，这里pay-notify是示例地址，建议开发者应该设立一个隐蔽的回调地址\n     *\n     * @param request 请求内容\n     * @param response 响应内容\n     * @return 操作结果\n     */\n    @PostMapping(\"pay-notify\")\n    public Object payNotify(HttpServletRequest request, HttpServletResponse response) {\n        return wxOrderService.payNotify(request, response);\n    }\n\n    /**\n     * 订单申请退款\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单退款操作结果\n     */\n    @PostMapping(\"refund\")\n    public Object refund(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.refund(userId, body);\n    }\n\n    /**\n     * 确认收货\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    @PostMapping(\"confirm\")\n    public Object confirm(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.confirm(userId, body);\n    }\n\n    /**\n     * 删除订单\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    @PostMapping(\"delete\")\n    public Object delete(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.delete(userId, body);\n    }\n\n    /**\n     * 待评价订单商品信息\n     *\n     * @param userId  用户ID\n     * @param ogid 订单商品ID\n     * @return 待评价订单商品信息\n     */\n    @GetMapping(\"goods\")\n    public Object goods(@LoginUser Integer userId,\n                        @NotNull Integer ogid) {\n        return wxOrderService.goods(userId, ogid);\n    }\n\n    /**\n     * 评价订单商品\n     *\n     * @param userId 用户ID\n     * @param body   订单信息，{ orderId：xxx }\n     * @return 订单操作结果\n     */\n    @PostMapping(\"comment\")\n    public Object comment(@LoginUser Integer userId, @RequestBody String body) {\n        return wxOrderService.comment(userId, body);\n    }\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxSearchController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallKeyword;\nimport org.linlinjava.litemall.db.domain.LitemallSearchHistory;\nimport org.linlinjava.litemall.db.service.LitemallKeywordService;\nimport org.linlinjava.litemall.db.service.LitemallSearchHistoryService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\n\nimport javax.validation.constraints.NotEmpty;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 商品搜索服务\n * <p>\n * 注意：目前搜索功能非常简单，只是基于关键字匹配。\n */\n@RestController\n@RequestMapping(\"/wx/search\")\n@Validated\npublic class WxSearchController {\n    private final Log logger = LogFactory.getLog(WxSearchController.class);\n\n    @Autowired\n    private LitemallKeywordService keywordsService;\n    @Autowired\n    private LitemallSearchHistoryService searchHistoryService;\n\n    /**\n     * 搜索页面信息\n     * <p>\n     * 如果用户已登录，则给出用户历史搜索记录；\n     * 如果没有登录，则给出空历史搜索记录。\n     *\n     * @param userId 用户ID，可选\n     * @return 搜索页面信息\n     */\n    @GetMapping(\"index\")\n    public Object index(@LoginUser Integer userId) {\n        //取出输入框默认的关键词\n        LitemallKeyword defaultKeyword = keywordsService.queryDefault();\n        //取出热闹关键词\n        List<LitemallKeyword> hotKeywordList = keywordsService.queryHots();\n\n        List<LitemallSearchHistory> historyList = null;\n        if (userId != null) {\n            //取出用户历史关键字\n            historyList = searchHistoryService.queryByUid(userId);\n        } else {\n            historyList = new ArrayList<>(0);\n        }\n\n        Map<String, Object> data = new HashMap<String, Object>();\n        data.put(\"defaultKeyword\", defaultKeyword);\n        data.put(\"historyKeywordList\", historyList);\n        data.put(\"hotKeywordList\", hotKeywordList);\n        return ResponseUtil.ok(data);\n    }\n\n    /**\n     * 关键字提醒\n     * <p>\n     * 当用户输入关键字一部分时，可以推荐系统中合适的关键字。\n     *\n     * @param keyword 关键字\n     * @return 合适的关键字\n     */\n    @GetMapping(\"helper\")\n    public Object helper(@NotEmpty String keyword,\n                         @RequestParam(defaultValue = \"1\") Integer page,\n                         @RequestParam(defaultValue = \"10\") Integer limit) {\n        List<LitemallKeyword> keywordsList = keywordsService.queryByKeyword(keyword, page, limit);\n        String[] keys = new String[keywordsList.size()];\n        int index = 0;\n        for (LitemallKeyword key : keywordsList) {\n            keys[index++] = key.getKeyword();\n        }\n        return ResponseUtil.ok(keys);\n    }\n\n    /**\n     * 清除用户搜索历史\n     *\n     * @param userId 用户ID\n     * @return 清理是否成功\n     */\n    @PostMapping(\"clearhistory\")\n    public Object clearhistory(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        searchHistoryService.deleteByUid(userId);\n        return ResponseUtil.ok();\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxStorageController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.storage.StorageService;\nimport org.linlinjava.litemall.core.util.CharUtil;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.domain.LitemallStorage;\nimport org.linlinjava.litemall.db.service.LitemallStorageService;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.core.io.Resource;\nimport org.springframework.http.HttpHeaders;\nimport org.springframework.http.MediaType;\nimport org.springframework.http.ResponseEntity;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.*;\nimport org.springframework.web.multipart.MultipartFile;\n\nimport java.io.IOException;\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * 对象存储服务\n */\n@RestController\n@RequestMapping(\"/wx/storage\")\n@Validated\npublic class WxStorageController {\n    private final Log logger = LogFactory.getLog(WxStorageController.class);\n\n    @Autowired\n    private StorageService storageService;\n    @Autowired\n    private LitemallStorageService litemallStorageService;\n\n    private String generateKey(String originalFilename) {\n        int index = originalFilename.lastIndexOf('.');\n        String suffix = originalFilename.substring(index);\n\n        String key = null;\n        LitemallStorage storageInfo = null;\n\n        do {\n            key = CharUtil.getRandomString(20) + suffix;\n            storageInfo = litemallStorageService.findByKey(key);\n        }\n        while (storageInfo != null);\n\n        return key;\n    }\n\n    @PostMapping(\"/upload\")\n    public Object upload(@RequestParam(\"file\") MultipartFile file) throws IOException {\n        String originalFilename = file.getOriginalFilename();\n        LitemallStorage litemallStorage = storageService.store(file.getInputStream(), file.getSize(), file.getContentType(), originalFilename);\n        return ResponseUtil.ok(litemallStorage);\n    }\n\n    /**\n     * 访问存储对象\n     *\n     * @param key 存储对象key\n     * @return\n     */\n    @GetMapping(\"/fetch/{key:.+}\")\n    public ResponseEntity<Resource> fetch(@PathVariable String key) {\n        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);\n        if (litemallStorage==null||key == null) {\n            return ResponseEntity.notFound().build();\n        }\n        if (key.contains(\"../\")) {\n            return ResponseEntity.badRequest().build();\n        }\n        String type = litemallStorage.getType();\n        MediaType mediaType = MediaType.parseMediaType(type);\n\n        Resource file = storageService.loadAsResource(key);\n        if (file == null) {\n            return ResponseEntity.notFound().build();\n        }\n        return ResponseEntity.ok().contentType(mediaType).body(file);\n    }\n\n    /**\n     * 访问存储对象\n     *\n     * @param key 存储对象key\n     * @return\n     */\n    @GetMapping(\"/download/{key:.+}\")\n    public ResponseEntity<Resource> download(@PathVariable String key) {\n        LitemallStorage litemallStorage = litemallStorageService.findByKey(key);\n        if (litemallStorage==null||key == null) {\n            return ResponseEntity.notFound().build();\n        }\n        if (key.contains(\"../\")) {\n            return ResponseEntity.badRequest().build();\n        }\n\n        String type = litemallStorage.getType();\n        MediaType mediaType = MediaType.parseMediaType(type);\n\n        Resource file = storageService.loadAsResource(key);\n        if (file == null) {\n            return ResponseEntity.notFound().build();\n        }\n        return ResponseEntity.ok().contentType(mediaType).header(HttpHeaders.CONTENT_DISPOSITION,\n                \"attachment; filename=\\\"\" + file.getFilename() + \"\\\"\").body(file);\n    }\n\n}\n"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxTopicController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.core.validator.Order;\nimport org.linlinjava.litemall.core.validator.Sort;\nimport org.linlinjava.litemall.db.domain.LitemallGoods;\nimport org.linlinjava.litemall.db.domain.LitemallTopic;\nimport org.linlinjava.litemall.db.service.LitemallCollectService;\nimport org.linlinjava.litemall.db.service.LitemallGoodsService;\nimport org.linlinjava.litemall.db.service.LitemallTopicService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RequestParam;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport javax.validation.constraints.NotNull;\nimport java.util.ArrayList;\nimport java.util.HashMap;\nimport java.util.List;\nimport java.util.Map;\n\n/**\n * 专题服务\n */\n@RestController\n@RequestMapping(\"/wx/topic\")\n@Validated\npublic class WxTopicController {\n    private final Log logger = LogFactory.getLog(WxTopicController.class);\n\n    @Autowired\n    private LitemallTopicService topicService;\n    @Autowired\n    private LitemallGoodsService goodsService;\n\t@Autowired\n\tprivate LitemallCollectService collectService;\n\n    /**\n     * 专题列表\n     *\n     * @param page 分页页数\n     * @param limit 分页大小\n     * @return 专题列表\n     */\n    @GetMapping(\"list\")\n    public Object list(@RequestParam(defaultValue = \"1\") Integer page,\n                       @RequestParam(defaultValue = \"10\") Integer limit,\n                       @Sort @RequestParam(defaultValue = \"add_time\") String sort,\n                       @Order @RequestParam(defaultValue = \"desc\") String order) {\n        List<LitemallTopic> topicList = topicService.queryList(page, limit, sort, order);\n        return ResponseUtil.okList(topicList);\n    }\n\n    /**\n     * 专题详情\n     *\n     * @param id 专题ID\n     * @return 专题详情\n     */\n    @GetMapping(\"detail\")\n    public Object detail(@LoginUser Integer userId, @NotNull Integer id) {\n        LitemallTopic topic = topicService.findById(id);\n        List<LitemallGoods> goods = new ArrayList<>();\n        for (Integer i : topic.getGoods()) {\n            LitemallGoods good = goodsService.findByIdVO(i);\n            if (null != good)\n                goods.add(good);\n        }\n        \n\t\t// 用户收藏\n\t\tint userHasCollect = 0;\n\t\tif (userId != null) {\n\t\t\tuserHasCollect = collectService.count(userId, (byte)1, id);\n\t\t}\n\n        Map<String, Object> entity = new HashMap<String, Object>();\n        entity.put(\"topic\", topic);\n        entity.put(\"goods\", goods);\n        entity.put(\"userHasCollect\", userHasCollect);\n        return ResponseUtil.ok(entity);\n    }\n\n    /**\n     * 相关专题\n     *\n     * @param id 专题ID\n     * @return 相关专题\n     */\n    @GetMapping(\"related\")\n    public Object related(@NotNull Integer id) {\n        List<LitemallTopic> topicRelatedList = topicService.queryRelatedList(id, 0, 4);\n        return ResponseUtil.okList(topicRelatedList);\n    }\n}"
  },
  {
    "path": "litemall-wx-api/src/main/java/org/linlinjava/litemall/wx/web/WxUserController.java",
    "content": "package org.linlinjava.litemall.wx.web;\n\nimport org.apache.commons.logging.Log;\nimport org.apache.commons.logging.LogFactory;\nimport org.linlinjava.litemall.core.util.ResponseUtil;\nimport org.linlinjava.litemall.db.service.LitemallOrderService;\nimport org.linlinjava.litemall.wx.annotation.LoginUser;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.validation.annotation.Validated;\nimport org.springframework.web.bind.annotation.GetMapping;\nimport org.springframework.web.bind.annotation.RequestMapping;\nimport org.springframework.web.bind.annotation.RestController;\n\nimport java.util.HashMap;\nimport java.util.Map;\n\n/**\n * 用户服务\n */\n@RestController\n@RequestMapping(\"/wx/user\")\n@Validated\npublic class WxUserController {\n    private final Log logger = LogFactory.getLog(WxUserController.class);\n\n    @Autowired\n    private LitemallOrderService orderService;\n\n    /**\n     * 用户个人页面数据\n     * <p>\n     * 目前是用户订单统计信息\n     *\n     * @param userId 用户ID\n     * @return 用户个人页面数据\n     */\n    @GetMapping(\"index\")\n    public Object list(@LoginUser Integer userId) {\n        if (userId == null) {\n            return ResponseUtil.unlogin();\n        }\n\n        Map<Object, Object> data = new HashMap<Object, Object>();\n        data.put(\"order\", orderService.orderInfo(userId));\n        return ResponseUtil.ok(data);\n    }\n\n}"
  },
  {
    "path": "litemall-wx-api/src/main/resources/application-wx.yml",
    "content": ""
  },
  {
    "path": "litemall-wx-api/src/main/resources/application.yml",
    "content": "spring:\n  profiles:\n    active: db, core, wx\n  messages:\n    encoding: UTF-8\n\nserver:\n  port: 8082\n\nlogging:\n  level:\n    root:  ERROR\n    org.springframework:  ERROR\n    org.mybatis:  ERROR\n    org.linlinjava.litemall.wx:  DEBUG\n    org.linlinjava.litemall:  ERROR\n\nswagger:\n  production: false"
  },
  {
    "path": "litemall-wx-api/src/test/java/org/linlinjava/litemall/wx/BigDecimalTest.java",
    "content": "package org.linlinjava.litemall.wx;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\n\nimport java.math.BigDecimal;\n\n@RunWith(SpringJUnit4ClassRunner.class)\npublic class BigDecimalTest {\n\n    @Test\n    public void test() {\n        BigDecimal a = new BigDecimal(0);\n        BigDecimal b = new BigDecimal(1);\n        BigDecimal c = a.subtract(b);\n        BigDecimal d = c.max(new BigDecimal(0));\n\n        System.out.println(c);\n        System.out.println(d);\n    }\n}\n"
  },
  {
    "path": "litemall-wx-api/src/test/java/org/linlinjava/litemall/wx/WxConfigTest.java",
    "content": "package org.linlinjava.litemall.wx;\n\nimport org.junit.Test;\nimport org.junit.runner.RunWith;\nimport org.springframework.beans.factory.annotation.Autowired;\nimport org.springframework.boot.test.context.SpringBootTest;\nimport org.springframework.core.env.Environment;\nimport org.springframework.test.context.junit4.SpringJUnit4ClassRunner;\nimport org.springframework.test.context.web.WebAppConfiguration;\n\n@WebAppConfiguration\n@RunWith(SpringJUnit4ClassRunner.class)\n@SpringBootTest\npublic class WxConfigTest {\n    @Autowired\n    private Environment environment;\n\n    @Test\n    public void test() {\n        // 测试获取application-core.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.express.appId\"));\n        // 测试获取application-db.yml配置信息\n        System.out.println(environment.getProperty(\"spring.datasource.druid.url\"));\n        // 测试获取application-wx.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.wx.app-id\"));\n        // 测试获取application-wx.yml配置信息\n        System.out.println(environment.getProperty(\"litemall.wx.notify-url\"));\n        // 测试获取application.yml配置信息\n        System.out.println(environment.getProperty(\"logging.level.org.linlinjava.litemall.wx\"));\n    }\n\n}\n"
  },
  {
    "path": "pom.xml",
    "content": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project xmlns=\"http://maven.apache.org/POM/4.0.0\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:schemaLocation=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\">\n    <modelVersion>4.0.0</modelVersion>\n    <groupId>org.linlinjava</groupId>\n    <artifactId>litemall</artifactId>\n    <version>0.1.0</version>\n    <packaging>pom</packaging>\n\n    <parent>\n        <groupId>org.springframework.boot</groupId>\n        <artifactId>spring-boot-starter-parent</artifactId>\n        <version>2.1.5.RELEASE</version>\n        <relativePath/>\n    </parent>\n\n    <properties>\n        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>\n        <java.version>1.8</java.version>\n        <maven.test.skip>true</maven.test.skip>\n    </properties>\n\n    <modules>\n        <module>litemall-core</module>\n        <module>litemall-db</module>\n        <module>litemall-wx-api</module>\n        <module>litemall-admin-api</module>\n        <module>litemall-all</module>\n        <module>litemall-all-war</module>\n    </modules>\n\n    <dependencyManagement>\n        <dependencies>\n            <dependency>\n                <groupId>org.linlinjava</groupId>\n                <artifactId>litemall-core</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.linlinjava</groupId>\n                <artifactId>litemall-db</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.linlinjava</groupId>\n                <artifactId>litemall-wx-api</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.linlinjava</groupId>\n                <artifactId>litemall-admin-api</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n            <dependency>\n                <groupId>org.linlinjava</groupId>\n                <artifactId>litemall-all</artifactId>\n                <version>${project.version}</version>\n            </dependency>\n\n            <!-- Spring Boot Mybatis 依赖 -->\n            <dependency>\n                <groupId>org.mybatis.spring.boot</groupId>\n                <artifactId>mybatis-spring-boot-starter</artifactId>\n                <version>1.3.2</version>\n            </dependency>\n\n            <!-- Spring Boot pagehelper 依赖 -->\n            <dependency>\n                <groupId>com.github.pagehelper</groupId>\n                <artifactId>pagehelper-spring-boot-starter</artifactId>\n                <version>1.2.5</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.apache.shiro</groupId>\n                <artifactId>shiro-spring-boot-web-starter</artifactId>\n                <version>1.6.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.hibernate.validator</groupId>\n                <artifactId>hibernate-validator</artifactId>\n                <version>6.2.0.Final</version>\n            </dependency>\n\n            <!-- MySQL 连接驱动依赖 -->\n            <dependency>\n                <groupId>mysql</groupId>\n                <artifactId>mysql-connector-java</artifactId>\n                <version>8.0.28</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.alibaba</groupId>\n                <artifactId>druid-spring-boot-starter</artifactId>\n                <version>1.2.1</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.github.binarywang</groupId>\n                <artifactId>weixin-java-pay</artifactId>\n                <version>4.1.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.github.binarywang</groupId>\n                <artifactId>weixin-java-miniapp</artifactId>\n                <version>4.1.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.github.qcloudsms</groupId>\n                <artifactId>qcloudsms</artifactId>\n                <version>1.0.5</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.qcloud</groupId>\n                <artifactId>cos_api</artifactId>\n                <version>5.6.24</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.aliyun.oss</groupId>\n                <artifactId>aliyun-sdk-oss</artifactId>\n                <version>2.5.0</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.qiniu</groupId>\n                <artifactId>qiniu-java-sdk</artifactId>\n                <version>[7.2.0, 7.2.99]</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-starter-json</artifactId>\n                <version>2.1.5.RELEASE</version>\n            </dependency>\n\n            <dependency>\n                <groupId>org.springframework.boot</groupId>\n                <artifactId>spring-boot-starter-mail</artifactId>\n                <version>2.1.5.RELEASE</version>\n            </dependency>\n\n            <dependency>\n\t\t       <groupId>io.springfox</groupId>\n\t\t\t   <artifactId>springfox-swagger2</artifactId>\n\t\t\t   <version>2.9.2</version>\n\t\t   </dependency>\n\t\t\n\t\t<dependency>\n\t\t\t  <groupId>io.springfox</groupId>\n\t\t\t  <artifactId>springfox-swagger-ui</artifactId>\n\t\t\t  <version>2.10.0</version>\n\t\t</dependency>\n\n        <dependency>\n            <groupId>com.github.penggle</groupId>\n            <artifactId>kaptcha</artifactId>\n            <version>2.3.2</version>\n        </dependency>\n\n\t\t<!--引入ui包-->\n\t\t<dependency>\n\t \t\t <groupId>com.github.xiaoymin</groupId>\n\t \t\t <artifactId>swagger-bootstrap-ui</artifactId>\n\t \t\t<version>1.9.6</version>\n\t\t</dependency>\n\t\t<dependency>\n            <groupId>com.google.guava</groupId>\n            <artifactId>guava</artifactId>\n            <version>32.0.0-jre</version>\n        </dependency>\n\n            <dependency>\n                <groupId>com.auth0</groupId>\n                <artifactId>java-jwt</artifactId>\n                <version>3.4.1</version>\n            </dependency>\n\n            <dependency>\n                <groupId>com.aliyun</groupId>\n                <artifactId>aliyun-java-sdk-core</artifactId>\n                <version>4.0.3</version>\n            </dependency>\n        </dependencies>\n    </dependencyManagement>\n\n    <dependencies>\n\n        <!-- 热部署模块 -->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-devtools</artifactId>\n            <optional>true</optional>\n        </dependency>\n\n        <!-- 测试模块 -->\n        <dependency>\n            <groupId>org.springframework.boot</groupId>\n            <artifactId>spring-boot-starter-test</artifactId>\n            <scope>test</scope>\n            <exclusions>\n                <exclusion>\n                    <groupId>com.vaadin.external.google</groupId>\n                    <artifactId>android-json</artifactId>\n                </exclusion>\n            </exclusions>\n        </dependency>\n\n        <dependency>\n            <groupId>org.powermock</groupId>\n            <artifactId>powermock-api-mockito</artifactId>\n            <version>1.6.6</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.powermock</groupId>\n            <artifactId>powermock-module-junit4</artifactId>\n            <version>1.6.6</version>\n            <scope>test</scope>\n        </dependency>\n        <dependency>\n            <groupId>org.mockito</groupId>\n            <artifactId>mockito-core</artifactId>\n            <version>1.10.19</version>\n            <scope>test</scope>\n        </dependency>\n    </dependencies>\n\n\n    <build>\n        <plugins>\n            <plugin>\n                <groupId>org.apache.maven.plugins</groupId>\n                <artifactId>maven-compiler-plugin</artifactId>\n                <version>3.1</version>\n                <configuration>\n                    <source>1.8</source>\n                    <target>1.8</target>\n                </configuration>\n            </plugin>\n        </plugins>\n    </build>\n\n</project>"
  },
  {
    "path": "renard-wx/app.js",
    "content": "var util = require('./utils/util.js');\nvar api = require('./config/api.js');\nvar user = require('./utils/user.js');\n\nApp({\n  onLaunch: function() {\n    Promise.prototype.finally = function(callback){\n      let P = this.constructor;\n      return this.then(\n              value => {\n                   P.resolve(callback()).then(() => value)\n               },\n               reason => {\n                   P.resolve(callback()).then(() => { throw reason })\n               }\n           )\n    }\n\n    const updateManager = wx.getUpdateManager();\n    \n    wx.getUpdateManager().onUpdateReady(function() {\n      wx.showModal({\n        title: '更新提示',\n        content: '新版本已经准备好，是否重启应用？',\n        success: function(res) {\n          if (res.confirm) {\n            // 新的版本已经下载好，调用 applyUpdate 应用新版本并重启\n            updateManager.applyUpdate()\n          }\n        }\n      })\n    })\n  },\n  onShow: function(options) {\n    user.checkLogin().then(res => {\n      this.globalData.hasLogin = true;\n    }).catch(() => {\n      this.globalData.hasLogin = false;\n    });\n  },\n  globalData: {\n    hasLogin: false\n  }\n})"
  },
  {
    "path": "renard-wx/app.json",
    "content": "{\n  \"pages\": [\n    \"pages/index/index\",\n    \"pages/catalog/catalog\",\n    \"pages/newGoods/newGoods\",\n    \"pages/hotGoods/hotGoods\",\n    \"pages/ucenter/index/index\",\n    \"pages/ucenter/address/address\",\n    \"pages/ucenter/addressAdd/addressAdd\",\n    \"pages/ucenter/order/order\",\n    \"pages/ucenter/orderDetail/orderDetail\",\n    \"pages/ucenter/coupon/coupon\",\n    \"pages/auth/login/login\",\n    \"pages/payResult/payResult\",\n    \"pages/commentPost/commentPost\",\n    \"pages/topic/topic\",\n    \"pages/topicDetail/topicDetail\",\n    \"pages/brand/brand\",\n    \"pages/brandDetail/brandDetail\",\n    \"pages/search/search\",\n    \"pages/category/category\",\n    \"pages/cart/cart\",\n    \"pages/shopping/checkout/checkout\",\n    \"pages/goods/goods\",\n    \"pages/groupon/myGroupon/myGroupon\",\n    \"pages/groupon/grouponDetail/grouponDetail\",\n    \"pages/groupon/grouponList/grouponList\"\n  ],\n  \"window\": {\n    \"navigationBarTitleText\": \"Renard\",\n    \"enablePullDownRefresh\": true,\n    \"backgroundTextStyle\": \"light\",\n    \"navigationBarBackgroundColor\": \"#fff\",\n    \"navigationBarTextStyle\": \"black\"\n  },\n  \"tabBar\": {\n    \"color\": \"#6e6d6b\",\n    \"selectedColor\": \"#e64340\",\n    \"borderStyle\": \"white\",\n    \"backgroundColor\": \"#fff\",\n    \"box-shadow\": \"0 0 6px 0\",\n    \"list\": [\n      {\n        \"pagePath\": \"pages/index/index\",\n        \"iconPath\": \"images/tabbar/like-f.png\",\n        \"selectedIconPath\": \"images/tabbar/like-o.png\"\n      },\n      {\n        \"pagePath\": \"pages/catalog/catalog\",\n        \"iconPath\": \"images/tabbar/menu-f.png\",\n        \"selectedIconPath\": \"images/tabbar/menu-o.png\"\n      },\n      {\n        \"pagePath\": \"pages/cart/cart\",\n        \"iconPath\": \"images/tabbar/cart-f.png\",\n        \"selectedIconPath\": \"images/tabbar/cart-o.png\"\n      },\n      {\n        \"pagePath\": \"pages/ucenter/index/index\",\n        \"iconPath\": \"images/tabbar/user-f.png\",\n        \"selectedIconPath\": \"images/tabbar/user-o.png\"\n      }\n    ]\n  },\n  \"networkTimeout\": {\n    \"request\": 10000,\n    \"connectSocket\": 10000,\n    \"uploadFile\": 10000,\n    \"downloadFile\": 10000\n  },\n  \"debug\": true,\n  \"sitemapLocation\": \"sitemap.json\"\n}"
  },
  {
    "path": "renard-wx/app.wxss",
    "content": "/**app.wxss**/\n\n.container {\n  box-sizing: border-box;\n  font-family: PingFangSC-Light, helvetica, 'Heiti SC';\n  width: 100%;\n  height: 100%;\n}\n\nview, image, text, navigator {\n  box-sizing: border-box;\n  padding: 0;\n  margin: 0;\n}\n\nview, text {\n  font-family: PingFangSC-Light, helvetica, 'Heiti SC';\n  font-size: 29rpx;\n  color: #a78845;\n}\n\n.wxParse-img {\n  display: block !important;\n}\n"
  },
  {
    "path": "renard-wx/components/capsule/index.js",
    "content": "'use strict';\n\nComponent({\n  externalClasses: ['custom-class'],\n  /**\n   * 组件的属性列表\n   * 用于组件自定义设置\n   */\n  properties: {\n    // 颜色状态\n    type: {\n      type: String,\n      value: ''\n    },\n    // 自定义颜色\n    color: {\n      type: String,\n      value: ''\n    },\n    // 左侧内容\n    leftText: {\n      type: String,\n      value: ''\n    },\n    // 右侧内容\n    rightText: {\n      type: String,\n      value: ''\n    }\n  }\n});"
  },
  {
    "path": "renard-wx/components/capsule/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "renard-wx/components/capsule/index.wxml",
    "content": "<view class=\"custom-class zan-capsule zan-capsule--{{type}}\">\n <block wx:if=\"{{color}}\">\n  <view class=\"zan-capsule__left\" style=\"background: {{ color }}; border-color: {{ color }}\">{{ leftText }}</view>\n  <view class=\"zan-capsule__right\" style=\"color: {{ color }}; border-color: {{ color }}\">{{ rightText }}</view>\n </block>\n <block wx:else>\n  <view class=\"zan-capsule__left\">{{ leftText }}</view>\n  <view class=\"zan-capsule__right\">{{ rightText }}</view>\n </block>\n</view>"
  },
  {
    "path": "renard-wx/components/capsule/index.wxss",
    "content": ".zan-capsule {\n display: inline-block;\n font-size: 12px;\n vertical-align: middle;\n line-height: 19px;\n -webkit-transform: scale(0.83);\n transform: scale(0.83);\n}\n\n.zan-capsule__left, .zan-capsule__right {\n display: inline-block;\n line-height: 17px;\n height: 19px;\n vertical-align: middle;\n box-sizing: border-box;\n}\n\n.zan-capsule__left {\n padding: 0 2px;\n color: #fff;\n background: #999;\n border-radius: 2px 0 0 2px;\n border: 1rpx solid #999;\n}\n\n.zan-capsule__right {\n padding: 0 5px;\n color: #999;\n border-radius: 0 2px 2px 0;\n border: 1rpx solid #999;\n}\n\n.zan-capsule--danger .zan-capsule__left {\n color: #fff;\n background: #f24544;\n border-color: #f24544;\n}\n\n.zan-capsule--danger .zan-capsule__right {\n color: #f24544;\n border-color: #f24544;\n}\n"
  },
  {
    "path": "renard-wx/components/good/good.js",
    "content": "// components/good/good.js\nComponent({\n /**\n  * 组件的属性列表\n  */\n properties: {\n  title: { // 属性名\n   type: String, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）\n   value: '标题' // 属性初始值（可选），如果未指定则会根据类型选择一个\n  },\n  imageUrl: {\n   type: String,\n   value: ''\n  },\n  counterPrice: {\n   type: Number,\n   value: 0\n  },\n  retailPrice: {\n   type: Number,\n   value: 0\n  },\n },\n\n /**\n  * 组件的初始数据\n  */\n data: {\n\n },\n\n /**\n  * 组件的方法列表\n  */\n methods: {\n\n }\n})"
  },
  {
    "path": "renard-wx/components/good/good.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {}\n}"
  },
  {
    "path": "renard-wx/components/good/good.wxml",
    "content": "<view class=\"good\">\n <image class=\"img\" src=\"{{imageUrl}}\" background-size=\"cover\"></image>\n <view class=\"name\">{{title}}</view>\n <view class=\"price\">\n  <view class=\"counterPrice\" wx:if=\"{{counterPrice > retailPrice}}\">原价：￥{{counterPrice}}</view>\n  <view class=\"retailPrice\">现价：￥{{retailPrice}}</view>\n </view>\n</view>"
  },
  {
    "path": "renard-wx/components/good/good.wxss",
    "content": ".good {\n height: 480rpx;\n width: 372rpx;\n align-content: center;\n}\n\n.good .img {\n width: 302rpx;\n height: 302rpx;\n z-index: 1;\n}\n\n.good .name {\n text-align: center;\n /* display: block; */\n width: 372rpx;\n height: 35rpx;\n margin-bottom: 14rpx;\n overflow: hidden;\n font-size: 28rpx;\n color: #333;\n}\n\n.good .price {\n /* display: block; */\n text-align: center;\n line-height: 30rpx;\n font-size: 28rpx;\n color: #a78845;\n}\n\n.good .counterPrice {\n text-decoration: line-through;\n font-size: 24rpx;\n color: #999;\n}\n\n.good .retailPrice {\n font-size: 24rpx;\n color: #a78845;\n}"
  },
  {
    "path": "renard-wx/components/goodList/goodList.js",
    "content": "// components/goodList/goodList.js\nComponent({\n /**\n  * 组件的属性列表\n  */\n properties: {\n  goods: { // 属性名\n   type: Array, // 类型（必填），目前接受的类型包括：String, Number, Boolean, Object, Array, null（表示任意类型）\n   value: [] // 属性初始值（可选），如果未指定则会根据类型选择一个\n  },\n },\n\n /**\n  * 组件的初始数据\n  */\n data: {\n\n },\n\n /**\n  * 组件的方法列表\n  */\n methods: {\n\n }\n})"
  },
  {
    "path": "renard-wx/components/goodList/goodList.json",
    "content": "{\n \"component\": true,\n \"usingComponents\": {\n  \"good\": \"../good/good\"\n }\n}"
  },
  {
    "path": "renard-wx/components/goodList/goodList.wxml",
    "content": "<view class=\"b\" wx:if=\"{{goods.length > 0}}\">\n <block wx:for=\"{{goods}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n  <view class=\"item {{iindex % 2 == 0 ? '' : 'item-b'}}\">\n   <navigator url=\"../goods/goods?id={{iitem.id}}\" class=\"a\">\n    <good imageUrl='{{iitem.picUrl}}' title='{{iitem.name}}' retailPrice='{{iitem.retailPrice}}' counterPrice='{{iitem.counterPrice}}'></good>\n   </navigator>\n  </view>\n </block>\n</view>"
  },
  {
    "path": "renard-wx/components/goodList/goodList.wxss",
    "content": ".b {\n width: 750rpx;\n padding: 0 6.25rpx;\n height: auto;\n overflow: hidden;\n z-index: 1;\n}\n\n.b .good {\n z-index: 1;\n}\n\n.b .item {\n float: left;\n background: #fff;\n width: 365rpx;\n margin-bottom: 6.25rpx;\n height: 482rpx;\n overflow: hidden;\n text-align: center;\n z-index: 1;\n}\n\n.b .item .a {\n height: 452rpx;\n width: 100%;\n z-index: 1;\n}\n\n.b .item-b {\n margin-left: 6.25rpx;\n z-index: 1;\n}\n"
  },
  {
    "path": "renard-wx/components/icon/index.js",
    "content": "Component({\n  externalClasses: ['custom-class'],\n\n  properties: {\n    info: null,\n    name: String,\n    size: String,\n    color: String\n  },\n\n  methods: {\n    onClick() {\n      this.triggerEvent('click');\n    }\n  }\n});\n"
  },
  {
    "path": "renard-wx/components/icon/index.json",
    "content": "{\n  \"component\": true\n}\n"
  },
  {
    "path": "renard-wx/components/icon/index.wxml",
    "content": "<view\n  class=\"custom-class van-icon van-icon-{{ name }}\"\n  style=\"{{ color ? 'color: ' + color : '' }}; {{ size ? 'font-size: ' + size : '' }}\"\n  bind:tap=\"onClick\"\n>\n  <view wx:if=\"{{ info !== null }}\" class=\"van-icon__info\">{{ info }}</view>\n</view>\n"
  },
  {
    "path": "renard-wx/components/icon/index.wxss",
    "content": "@font-face{font-style:normal;font-weight:400;font-family:vant-icon;src:url(https://img.yzcdn.cn/vant/vant-icon-eb8c95.ttf) format('truetype')}.van-icon{position:relative;display:inline-block;font:normal normal normal 14px/1 vant-icon;font-size:inherit;text-rendering:auto}.van-icon__info{color:#fff;left:100%;top:-.5em;font-size:.5em;padding:0 .3em;text-align:center;min-width:1.2em;line-height:1.2;position:absolute;border-radius:.6em;box-sizing:border-box;background-color:#f44;-webkit-transform:translateX(-50%);transform:translateX(-50%);font-family:PingFang SC,Helvetica Neue,Arial,sans-serif}.van-icon::before{display:inline-block}.van-icon-add-o::before{content:\"\\F000\"}.van-icon-add::before{content:\"\\F001\"}.van-icon-add2::before{content:\"\\F002\"}.van-icon-after-sale::before{content:\"\\F003\"}.van-icon-alipay::before{content:\"\\F004\"}.van-icon-arrow-left::before{content:\"\\F005\"}.van-icon-arrow::before{content:\"\\F006\"}.van-icon-balance-pay::before{content:\"\\F007\"}.van-icon-browsing-history::before{content:\"\\F008\"}.van-icon-card::before{content:\"\\F009\"}.van-icon-cart::before{content:\"\\F00A\"}.van-icon-cash-back-record::before{content:\"\\F00B\"}.van-icon-cash-on-deliver::before{content:\"\\F00C\"}.van-icon-certificate::before{content:\"\\F00D\"}.van-icon-chat::before{content:\"\\F00E\"}.van-icon-check::before{content:\"\\F00F\"}.van-icon-checked::before{content:\"\\F010\"}.van-icon-clear::before{content:\"\\F011\"}.van-icon-clock::before{content:\"\\F012\"}.van-icon-close::before{content:\"\\F013\"}.van-icon-completed::before{content:\"\\F014\"}.van-icon-contact::before{content:\"\\F015\"}.van-icon-coupon::before{content:\"\\F016\"}.van-icon-credit-pay::before{content:\"\\F017\"}.van-icon-debit-pay::before{content:\"\\F018\"}.van-icon-delete::before{content:\"\\F019\"}.van-icon-description::before{content:\"\\F01A\"}.van-icon-discount::before{content:\"\\F01B\"}.van-icon-ecard-pay::before{content:\"\\F01C\"}.van-icon-edit-data::before{content:\"\\F01D\"}.van-icon-edit::before{content:\"\\F01E\"}.van-icon-exchange-record::before{content:\"\\F01F\"}.van-icon-exchange::before{content:\"\\F020\"}.van-icon-fail::before{content:\"\\F021\"}.van-icon-free-postage::before{content:\"\\F022\"}.van-icon-gift-card-pay::before{content:\"\\F023\"}.van-icon-gift-card::before{content:\"\\F024\"}.van-icon-gift::before{content:\"\\F025\"}.van-icon-gold-coin::before{content:\"\\F026\"}.van-icon-goods-collect::before{content:\"\\F027\"}.van-icon-home::before{content:\"\\F028\"}.van-icon-hot-sale::before{content:\"\\F029\"}.van-icon-hot::before{content:\"\\F02A\"}.van-icon-idcard::before{content:\"\\F02B\"}.van-icon-info-o::before{content:\"\\F02C\"}.van-icon-like-o::before{content:\"\\F02D\"}.van-icon-like::before{content:\"\\F02E\"}.van-icon-location::before{content:\"\\F02F\"}.van-icon-logistics::before{content:\"\\F030\"}.van-icon-more-o::before{content:\"\\F031\"}.van-icon-more::before{content:\"\\F032\"}.van-icon-new-arrival::before{content:\"\\F033\"}.van-icon-new::before{content:\"\\F034\"}.van-icon-other-pay::before{content:\"\\F035\"}.van-icon-passed::before{content:\"\\F036\"}.van-icon-password-not-view::before{content:\"\\F037\"}.van-icon-password-view::before{content:\"\\F038\"}.van-icon-pause::before{content:\"\\F039\"}.van-icon-peer-pay::before{content:\"\\F03A\"}.van-icon-pending-deliver::before{content:\"\\F03B\"}.van-icon-pending-evaluate::before{content:\"\\F03C\"}.van-icon-pending-orders::before{content:\"\\F03D\"}.van-icon-pending-payment::before{content:\"\\F03E\"}.van-icon-phone::before{content:\"\\F03F\"}.van-icon-photo::before{content:\"\\F040\"}.van-icon-photograph::before{content:\"\\F041\"}.van-icon-play::before{content:\"\\F042\"}.van-icon-point-gift::before{content:\"\\F043\"}.van-icon-points-mall::before{content:\"\\F044\"}.van-icon-points::before{content:\"\\F045\"}.van-icon-qr-invalid::before{content:\"\\F046\"}.van-icon-qr::before{content:\"\\F047\"}.van-icon-question::before{content:\"\\F048\"}.van-icon-receive-gift::before{content:\"\\F049\"}.van-icon-records::before{content:\"\\F04A\"}.van-icon-search::before{content:\"\\F04B\"}.van-icon-send-gift::before{content:\"\\F04C\"}.van-icon-setting::before{content:\"\\F04D\"}.van-icon-share::before{content:\"\\F04E\"}.van-icon-shop-collect::before{content:\"\\F04F\"}.van-icon-shop::before{content:\"\\F050\"}.van-icon-shopping-cart::before{content:\"\\F051\"}.van-icon-sign::before{content:\"\\F052\"}.van-icon-stop::before{content:\"\\F053\"}.van-icon-success::before{content:\"\\F054\"}.van-icon-tosend::before{content:\"\\F055\"}.van-icon-underway::before{content:\"\\F056\"}.van-icon-upgrade::before{content:\"\\F057\"}.van-icon-value-card::before{content:\"\\F058\"}.van-icon-wap-home::before{content:\"\\F059\"}.van-icon-wap-nav::before{content:\"\\F05A\"}.van-icon-warn::before{content:\"\\F05B\"}.van-icon-wechat::before{content:\"\\F05C\"}"
  },
  {
    "path": "renard-wx/components/notice-bar/index.js",
    "content": "const VALID_MODE = ['closeable', 'link'];\nconst FONT_COLOR = '#f60';\nconst BG_COLOR = '#fff7cc';\n\nComponent({\n  externalClasses: ['custom-class'],\n\n  properties: {\n    text: {\n      type: String,\n      value: '',\n      observer() {\n        this.setData({}, this._init);\n      }\n    },\n    mode: {\n      type: String,\n      value: ''\n    },\n    url: {\n      type: String,\n      value: ''\n    },\n    openType: {\n      type: String,\n      value: 'navigate'\n    },\n    delay: {\n      type: Number,\n      value: 0\n    },\n    speed: {\n      type: Number,\n      value: 50\n    },\n    scrollable: {\n      type: Boolean,\n      value: true\n    },\n    leftIcon: {\n      type: String,\n      value: ''\n    },\n    color: {\n      type: String,\n      value: FONT_COLOR\n    },\n    backgroundColor: {\n      type: String,\n      value: BG_COLOR\n    }\n  },\n\n  data: {\n    show: true,\n    hasRightIcon: false,\n    width: undefined,\n    wrapWidth: undefined,\n    elapse: undefined,\n    animation: null,\n    resetAnimation: null,\n    timer: null\n  },\n\n  attached() {\n    const { mode } = this.data;\n    if (mode && this._checkMode(mode)) {\n      this.setData({\n        hasRightIcon: true\n      });\n    }\n  },\n\n  detached() {\n    const { timer } = this.data;\n    timer && clearTimeout(timer);\n  },\n\n  methods: {\n    _checkMode(val) {\n      const isValidMode = ~VALID_MODE.indexOf(val);\n      if (!isValidMode) {\n        console.warn(`mode only accept value of ${VALID_MODE}, now get ${val}.`);\n      }\n      return isValidMode;\n    },\n\n    _init() {\n      wx.createSelectorQuery()\n        .in(this)\n        .select('.van-notice-bar__content')\n        .boundingClientRect((rect) => {\n          if (!rect || !rect.width) {\n            return;\n          }\n          this.setData({\n            width: rect.width\n          });\n\n          wx.createSelectorQuery()\n            .in(this)\n            .select('.van-notice-bar__content-wrap')\n            .boundingClientRect((rect) => {\n              if (!rect || !rect.width) {\n                return;\n              }\n\n              const wrapWidth = rect.width;\n              const {\n                width, speed, scrollable, delay\n              } = this.data;\n\n              if (scrollable && wrapWidth < width) {\n                const elapse = width / speed * 1000;\n                const animation = wx.createAnimation({\n                  duration: elapse,\n                  timeingFunction: 'linear',\n                  delay\n                });\n                const resetAnimation = wx.createAnimation({\n                  duration: 0,\n                  timeingFunction: 'linear'\n                });\n\n                this.setData({\n                  elapse,\n                  wrapWidth,\n                  animation,\n                  resetAnimation\n                }, () => {\n                  this._scroll();\n                });\n              }\n            })\n            .exec();\n        })\n        .exec();\n    },\n\n    _scroll() {\n      const {\n        animation, resetAnimation, wrapWidth, elapse, speed\n      } = this.data;\n      resetAnimation.translateX(wrapWidth).step();\n      const animationData = animation.translateX(-(elapse * speed) / 1000).step();\n      this.setData({\n        animationData: resetAnimation.export()\n      });\n      setTimeout(() => {\n        this.setData({\n          animationData: animationData.export()\n        });\n      }, 100);\n\n      const timer = setTimeout(() => {\n        this._scroll();\n      }, elapse);\n\n      this.setData({\n        timer\n      });\n    },\n\n    _handleButtonClick() {\n      const { timer } = this.data;\n      timer && clearTimeout(timer);\n      this.setData({\n        show: false,\n        timer: null\n      });\n    },\n\n    onClick(event) {\n      this.triggerEvent('click', event);\n    }\n  }\n});\n"
  },
  {
    "path": "renard-wx/components/notice-bar/index.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {\n    \"van-icon\": \"../icon/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/components/notice-bar/index.wxml",
    "content": "<view\n  wx:if=\"{{ show }}\"\n  class=\"custom-class van-notice-bar {{ hasRightIcon ? 'van-notice-bar--within-icon' : '' }}\"\n  style=\"color: {{ color }};background-color: {{ backgroundColor }}\"\n  bind:tap=\"onClick\"\n>\n  <view wx:if=\"{{ leftIcon }}\" class=\"van-notice-bar__left-icon\">\n    <image src=\"{{ leftIcon }}\" />\n  </view>\n  <view class=\"van-notice-bar__content-wrap\">\n    <view class=\"van-notice-bar__content\" animation=\"{{ animationData }}\">\n      {{ text }}\n    </view>\n  </view>\n\n  <block wx:if=\"{{ mode }}\">\n    <van-icon\n      wx:if=\"{{ mode === 'closeable' }}\"\n      class=\"van-notice-bar__right-icon\"\n      name=\"close\"\n      bind:tap=\"_handleButtonClick\"\n    />\n    <navigator\n      wx:if=\"{{ mode === 'link' }}\"\n      url=\"{{ url }}\"\n      open-type=\"{{ openType }}\"\n    >\n      <van-icon class=\"van-notice-bar__right-icon\" name=\"arrow\" />\n    </navigator>\n  </block>\n</view>\n"
  },
  {
    "path": "renard-wx/components/notice-bar/index.wxss",
    "content": ".van-notice-bar{display:-webkit-box;display:-webkit-flex;display:flex;padding:9px 10px;font-size:12px;line-height:1}.van-notice-bar--within-icon{position:relative;padding-right:30px}.van-notice-bar__left-icon{height:18px;min-width:20px;padding-top:1px;box-sizing:border-box}.van-notice-bar__left-icon>image{width:16px;height:16px}.van-notice-bar__right-icon{position:absolute;top:10px;right:10px;font-size:15px;line-height:1}.van-notice-bar__content-wrap{position:relative;-webkit-box-flex:1;-webkit-flex:1;flex:1;height:18px;overflow:hidden}.van-notice-bar__content{position:absolute;white-space:nowrap}\n"
  },
  {
    "path": "renard-wx/components/notify/index.js",
    "content": "Component({\n  properties: {\n    text: String,\n    color: {\n      type: String,\n      value: '#fff'\n    },\n    backgroundColor: {\n      type: String,\n      value: '#e64340'\n    },\n    duration: {\n      type: Number,\n      value: 3000\n    }\n  },\n\n  methods: {\n    show() {\n      const { duration } = this.data;\n\n      clearTimeout(this.timer);\n      this.setData({\n        show: true\n      });\n\n      if (duration > 0 && duration !== Infinity) {\n        this.timer = setTimeout(() => {\n          this.hide();\n        }, duration);\n      }\n    },\n\n    hide() {\n      clearTimeout(this.timer);\n      this.setData({\n        show: false\n      });\n    }\n  }\n});\n\nconst defaultOptions = {\n  selector: '#van-notify',\n  duration: 3000\n};\n\nfunction Notify(options = {}) {\n  const pages = getCurrentPages();\n  const ctx = pages[pages.length - 1];\n\n  options = Object.assign({}, defaultOptions, parseParam(options));\n\n  const el = ctx.selectComponent(options.selector);\n  delete options.selector;\n\n  if (el) {\n    el.setData({\n      ...options\n    });\n    el.show();\n  }\n}\n\nfunction parseParam(params = '') {\n  return typeof params === 'object' ? params : { text: params };\n}\n\nmodule.exports = Notify;\n"
  },
  {
    "path": "renard-wx/components/notify/index.json",
    "content": "{\n  \"component\": true\n}"
  },
  {
    "path": "renard-wx/components/notify/index.wxml",
    "content": "<view\n  class=\"van-notify {{ show ? 'van-notify--show' : '' }}\"\n  style=\"background-color:{{ backgroundColor }}\"\n>\n  {{ text }}\n</view>\n"
  },
  {
    "path": "renard-wx/components/notify/index.wxss",
    "content": ".van-notify{top:0;opacity:0;width:100%;z-index:110;color:#fff;position:fixed;min-height:32px;line-height:2.3;font-size:14px;text-align:center;background-color:#e64340;-webkit-transition:all .4s ease;transition:all .4s ease;-webkit-transform:translateZ(0) translateY(-100%);transform:translateZ(0) translateY(-100%)}.van-notify--show{opacity:1;-webkit-transform:translateZ(0) translateY(0);transform:translateZ(0) translateY(0)}"
  },
  {
    "path": "renard-wx/components/sharePop/sharePop.js",
    "content": "// components/sharePop/sharePop.js\nComponent({\n /**\n  * 组件的属性列表\n  */\n properties: {\n  url: {\n   type: String,\n   value: '', // 属性值 （可选）\n  },\n  bottom:{\n   type: Number,\n   value: 0, // 属性值 （可选）\n  }\n },\n\n /**\n  * 组件的初始数据\n  */\n data: {\n  // 弹窗显示控制\n  showPop: false,\n },\n\n /**\n  * 组件的方法列表\n  */\n methods: {\n  closeShare: function() {\n   this.setData({\n    showPop: false,\n   });\n  },\n\n  togglePopup: function() {\n   let that = this;\n   this.setData({\n    showPop: !this.data.showPop,\n   });\n  },\n\n  // 保存分享图\n  _saveShare: function() {\n   wx.showLoading({\n    title: '加载中',\n   });\n\n   setTimeout(function() {\n    wx.hideLoading()\n   }, 2000);\n\n   let that = this;\n   wx.downloadFile({\n    url: that.data.url,\n    success: function(res) {\n     console.log(res)\n     wx.saveImageToPhotosAlbum({\n      filePath: res.tempFilePath,\n      success: function(res) {\n       wx.showModal({\n        title: '存图成功',\n        content: '图片成功保存到相册了，可以分享到朋友圈了',\n        showCancel: false,\n        confirmText: '好的',\n        confirmColor: '#a78845',\n        success: function(res) {\n         if (res.confirm) {\n          console.log('用户点击确定');\n         }\n        }\n       });\n       wx.hideLoading();\n      },\n      fail: function(res) {\n       console.log('fail')\n      }\n     })\n    },\n    fail: function() {\n     console.log('fail')\n    }\n   })\n  },\n\n }\n})"
  },
  {
    "path": "renard-wx/components/sharePop/sharePop.json",
    "content": "{\n  \"component\": true,\n  \"usingComponents\": {}\n}"
  },
  {
    "path": "renard-wx/components/sharePop/sharePop.wxml",
    "content": "<view class=\"share-pop-box\" hidden=\"{{!showPop}}\">\n <view class=\"share-pop\" style='bottom:{{bottom}}rpx;'>\n  <view class=\"close\" bindtap=\"closeShare\">\n   <image class=\"icon\" src=\"/static/images/icon_close.png\"></image>\n  </view>\n  <view class=\"share-items\">\n   <view class='share-touser'>\n    <button style=\"opacity:0;height: 160rpx;width: 160rpx;\" open-type=\"share\">分享给朋友\n    </button>\n   </view>\n   <view class='share-friend'>\n    <button style=\"opacity:0;height: 160rpx;width: 160rpx;\" bindtap=\"_saveShare\">分享朋友圈\n    </button>\n   </view>\n  </view>\n </view>\n</view>"
  },
  {
    "path": "renard-wx/components/sharePop/sharePop.wxss",
    "content": ".share-pop-box {\n width: 100%;\n height: 100%;\n position: fixed;\n background: rgba(0, 0, 0, 0.5);\n z-index: 8;\n bottom: 0;\n /* display: none; */\n}\n\n.share-pop {\n width: 100%;\n height: 400rpx;\n max-height: 780rpx;\n padding: 31.25rpx;\n background: #fff;\n position: fixed;\n z-index: 9;\n bottom: 0rpx;\n}\n\n.share-pop .close {\n position: absolute;\n width: 48rpx;\n height: 48rpx;\n right: 31.25rpx;\n overflow: hidden;\n top: 31.25rpx;\n}\n\n.share-pop .close .icon {\n width: 48rpx;\n height: 48rpx;\n}\n\n.share-pop .share-items {\n margin-top: 80rpx;\n flex-flow: row;\n display: flex;\n justify-content: space-around;\n}\n\n.share-pop .share-touser {\n height: 160rpx;\n width: 160rpx;\n background: url(\"https://litemall-1256968571.file.myqcloud.com/icon/%E5%88%86%E4%BA%AB_%E5%BE%AE%E4%BF%A1.png\") no-repeat center 1rpx;\n background-size: 160rpx auto;\n border-radius: 80rpx;\n}\n\n.share-pop .share-friend {\n height: 160rpx;\n width: 160rpx;\n background: url(\"https://litemall-1256968571.file.myqcloud.com/icon/%E5%88%86%E4%BA%AB_%E5%BE%AE%E4%BF%A1%E6%9C%8B%E5%8F%8B%E5%9C%88.png\") no-repeat center 1rpx;\n background-size: 160rpx auto;\n border-radius: 10rpx;\n}\n\n.share-pop image {\n height: 120rpx;\n width: 120rpx;\n}"
  },
  {
    "path": "renard-wx/config/api.js",
    "content": "// 以下是业务服务器API地址\n// 本机开发时使用\nvar WxApiRoot = 'http://localhost:8080/wx/';\n// 局域网测试使用\n// var WxApiRoot = 'http://192.168.0.101:8080/wx/';\n// 云平台上线时使用\n// var WxApiRoot = 'https://litemall.menethil.com.cn/wx/';\n// var WxApiRoot = 'https://www.menethil.com.cn/wx/';\n\nmodule.exports = {\n  IndexUrl: WxApiRoot + 'home/index', //首页数据接口\n  CatalogList: WxApiRoot + 'catalog/index', //分类目录全部分类数据接口\n  CatalogCurrent: WxApiRoot + 'catalog/current', //分类目录当前分类数据接口\n\n  CatalogAll: WxApiRoot + 'catalog/all', //分类目录当前分类数据接口\n\n  AuthLoginByWeixin: WxApiRoot + 'auth/login_by_weixin', //微信登录\n\n  GoodsCount: WxApiRoot + 'goods/count', //统计商品总数\n  GoodsList: WxApiRoot + 'goods/list', //获得商品列表\n  GoodsCategory: WxApiRoot + 'goods/category', //获得分类数据\n  GoodsDetail: WxApiRoot + 'goods/detail', //获得商品的详情\n  GoodsRelated: WxApiRoot + 'goods/related', //商品详情页的关联商品（大家都在看）\n\n  BrandList: WxApiRoot + 'brand/list', //品牌列表\n  BrandDetail: WxApiRoot + 'brand/detail', //品牌详情\n\n  CartList: WxApiRoot + 'cart/index', //获取购物车的数据\n  CartAdd: WxApiRoot + 'cart/add', // 添加商品到购物车\n  CartFastAdd: WxApiRoot + 'cart/fastadd', // 立即购买商品\n  CartUpdate: WxApiRoot + 'cart/update', // 更新购物车的商品\n  CartDelete: WxApiRoot + 'cart/delete', // 删除购物车的商品\n  CartChecked: WxApiRoot + 'cart/checked', // 选择或取消选择商品\n  CartGoodsCount: WxApiRoot + 'cart/goodscount', // 获取购物车商品件数\n  CartCheckout: WxApiRoot + 'cart/checkout', // 下单前信息确认\n\n  CommentPost: WxApiRoot + 'comment/post', //发表评论\n\n  TopicList: WxApiRoot + 'topic/list', //专题列表\n  TopicDetail: WxApiRoot + 'topic/detail', //专题详情\n  TopicRelated: WxApiRoot + 'topic/related', //相关专题\n\n  SearchIndex: WxApiRoot + 'search/index', //搜索关键字\n  SearchResult: WxApiRoot + 'search/result', //搜索结果\n  SearchHelper: WxApiRoot + 'search/helper', //搜索帮助\n  SearchClearHistory: WxApiRoot + 'search/clearhistory', //搜索历史清楚\n\n  AddressList: WxApiRoot + 'address/list', //收货地址列表\n  AddressDetail: WxApiRoot + 'address/detail', //收货地址详情\n  AddressSave: WxApiRoot + 'address/save', //保存收货地址\n  AddressDelete: WxApiRoot + 'address/delete', //保存收货地址\n\n  OrderSubmit: WxApiRoot + 'order/submit', // 提交订单\n  OrderPrepay: WxApiRoot + 'order/prepay', // 订单的预支付会话\n  OrderList: WxApiRoot + 'order/list', //订单列表\n  OrderDetail: WxApiRoot + 'order/detail', //订单详情\n  OrderCancel: WxApiRoot + 'order/cancel', //取消订单\n  OrderRefund: WxApiRoot + 'order/refund', //退款取消订单\n  OrderDelete: WxApiRoot + 'order/delete', //删除订单\n  OrderConfirm: WxApiRoot + 'order/confirm', //确认收货\n  OrderGoods: WxApiRoot + 'order/goods', // 代评价商品信息\n  OrderComment: WxApiRoot + 'order/comment', // 评价订单商品信息\n\n  FootprintList: WxApiRoot + 'footprint/list', //足迹列表\n  FootprintDelete: WxApiRoot + 'footprint/delete', //删除足迹\n\n  GroupOnList: WxApiRoot + 'groupon/list', //团购列表\n  GroupOnMy: WxApiRoot + 'groupon/my', //团购API-我的团购\n  GroupOnDetail: WxApiRoot + 'groupon/detail', //团购API-详情\n  GroupOnJoin: WxApiRoot + 'groupon/join', //团购API-详情\n\n  StorageUpload: WxApiRoot + 'storage/upload' //图片上传\n};"
  },
  {
    "path": "renard-wx/lib/wxParse/html2json.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\nvar __placeImgeUrlHttps = \"https\";\nvar __emojisReg = '';\nvar __emojisBaseSrc = '';\nvar __emojis = {};\nvar wxDiscode = require('wxDiscode.js');\nvar HTMLParser = require('htmlparser.js');\n// Empty Elements - HTML 5\nvar empty = makeMap(\"area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr\");\n// Block Elements - HTML 5\nvar block = makeMap(\"br,a,code,address,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video\");\n\n// Inline Elements - HTML 5\nvar inline = makeMap(\"abbr,acronym,applet,b,basefont,bdo,big,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var\");\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar closeSelf = makeMap(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr\");\n\n// Attributes that have their values filled in disabled=\"disabled\"\nvar fillAttrs = makeMap(\"checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected\");\n\n// Special Elements (can contain anything)\nvar special = makeMap(\"wxxxcode-style,script,style,view,scroll-view,block\");\nfunction makeMap(str) {\n    var obj = {}, items = str.split(\",\");\n    for (var i = 0; i < items.length; i++)\n        obj[items[i]] = true;\n    return obj;\n}\n\nfunction q(v) {\n    return '\"' + v + '\"';\n}\n\nfunction removeDOCTYPE(html) {\n    return html\n        .replace(/<\\?xml.*\\?>\\n/, '')\n        .replace(/<!doctype.*\\>\\n/, '')\n        .replace(/<!DOCTYPE.*\\>\\n/, '');\n}\n\n\nfunction html2json(html, bindName) {\n    //处理字符串\n    html = removeDOCTYPE(html);\n    html = wxDiscode.strDiscode(html);\n    //生成node节点\n    var bufArray = [];\n    var results = {\n        node: bindName,\n        nodes: [],\n        images:[],\n        imageUrls:[]\n    };\n    HTMLParser(html, {\n        start: function (tag, attrs, unary) {\n            //debug(tag, attrs, unary);\n            // node for this element\n            var node = {\n                node: 'element',\n                tag: tag,\n            };\n\n            if (block[tag]) {\n                node.tagType = \"block\";\n            } else if (inline[tag]) {\n                node.tagType = \"inline\";\n            } else if (closeSelf[tag]) {\n                node.tagType = \"closeSelf\";\n            }\n\n            if (attrs.length !== 0) {\n                node.attr = attrs.reduce(function (pre, attr) {\n                    var name = attr.name;\n                    var value = attr.value;\n                    if (name == 'class') {\n                        // console.dir(value);\n                        //  value = value.join(\"\")\n                        node.classStr = value;\n                    }\n                    // has multi attibutes\n                    // make it array of attribute\n                    if (name == 'style') {\n                        // console.dir(value);\n                        //  value = value.join(\"\")\n                        node.styleStr = value;\n                    }\n                    if (value.match(/ /)) {\n                        value = value.split(' ');\n                    }\n                    \n\n                    // if attr already exists\n                    // merge it\n                    if (pre[name]) {\n                        if (Array.isArray(pre[name])) {\n                            // already array, push to last\n                            pre[name].push(value);\n                        } else {\n                            // single value, make it array\n                            pre[name] = [pre[name], value];\n                        }\n                    } else {\n                        // not exist, put it\n                        pre[name] = value;\n                    }\n\n                    return pre;\n                }, {});\n            }\n\n            //对img添加额外数据\n            if (node.tag === 'img') {\n                node.imgIndex = results.images.length;\n                var imgUrl = node.attr.src;\n                imgUrl = wxDiscode.urlToHttpUrl(imgUrl, __placeImgeUrlHttps);\n                node.attr.src = imgUrl;\n                node.from = bindName;\n                results.images.push(node);\n                results.imageUrls.push(imgUrl);\n            }\n\n            if (unary) {\n                // if this tag dosen't have end tag\n                // like <img src=\"hoge.png\"/>\n                // add to parents\n                var parent = bufArray[0] || results;\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            } else {\n                bufArray.unshift(node);\n            }\n        },\n        end: function (tag) {\n            //debug(tag);\n            // merge into parent tag\n            var node = bufArray.shift();\n            if (node.tag !== tag) console.error('invalid state: mismatch end tag');\n\n            if (bufArray.length === 0) {\n                results.nodes.push(node);\n            } else {\n                var parent = bufArray[0];\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            }\n        },\n        chars: function (text) {\n            //debug(text);\n            var node = {\n                node: 'text',\n                text: text,\n                textArray:transEmojiStr(text)\n            };\n            \n            if (bufArray.length === 0) {\n                results.nodes.push(node);\n            } else {\n                var parent = bufArray[0];\n                if (parent.nodes === undefined) {\n                    parent.nodes = [];\n                }\n                parent.nodes.push(node);\n            }\n        },\n        comment: function (text) {\n            //debug(text);\n            var node = {\n                node: 'comment',\n                text: text,\n            };\n            var parent = bufArray[0];\n            if (parent.nodes === undefined) {\n                parent.nodes = [];\n            }\n            parent.nodes.push(node);\n        },\n    });\n    return results;\n};\n\nfunction transEmojiStr(str){\n  // var eReg = new RegExp(\"[\"+__reg+' '+\"]\");\n//   str = str.replace(/\\[([^\\[\\]]+)\\]/g,':$1:')\n  \n  var emojiObjs = [];\n  //如果正则表达式为空\n  if(__emojisReg.length == 0 || !__emojis){\n      var emojiObj = {}\n      emojiObj.node = \"text\";\n      emojiObj.text = str;\n      array = [emojiObj];\n      return array;\n  }\n  //这个地方需要调整\n  str = str.replace(/\\[([^\\[\\]]+)\\]/g,':$1:')\n  var eReg = new RegExp(\"[:]\");\n  var array = str.split(eReg);\n  for(var i = 0; i < array.length; i++){\n    var ele = array[i];\n    var emojiObj = {};\n    if(__emojis[ele]){\n      emojiObj.node = \"element\";\n      emojiObj.tag = \"emoji\";\n      emojiObj.text = __emojis[ele];\n      emojiObj.baseSrc= __emojisBaseSrc;\n    }else{\n      emojiObj.node = \"text\";\n      emojiObj.text = ele;\n    }\n    emojiObjs.push(emojiObj);\n  }\n  \n  return emojiObjs;\n}\n\nfunction emojisInit(reg='',baseSrc=\"/wxParse/emojis/\",emojis){\n    __emojisReg = reg;\n    __emojisBaseSrc=baseSrc;\n    __emojis=emojis;\n}\n\nmodule.exports = {\n    html2json: html2json,\n    emojisInit:emojisInit\n};\n\n"
  },
  {
    "path": "renard-wx/lib/wxParse/htmlparser.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n// Regular Expressions for parsing tags and attributes\nvar startTag = /^<([-A-Za-z0-9_]+)((?:\\s+[a-zA-Z_:][-a-zA-Z0-9_:.]*(?:\\s*=\\s*(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>\\s]+))?)*)\\s*(\\/?)>/,\n\tendTag = /^<\\/([-A-Za-z0-9_]+)[^>]*>/,\n\tattr = /([a-zA-Z_:][-a-zA-Z0-9_:.]*)(?:\\s*=\\s*(?:(?:\"((?:\\\\.|[^\"])*)\")|(?:'((?:\\\\.|[^'])*)')|([^>\\s]+)))?/g;\n\n// Empty Elements - HTML 5\nvar empty = makeMap(\"area,base,basefont,br,col,frame,hr,img,input,link,meta,param,embed,command,keygen,source,track,wbr\");\n\n// Block Elements - HTML 5\nvar block = makeMap(\"a,address,code,article,applet,aside,audio,blockquote,button,canvas,center,dd,del,dir,div,dl,dt,fieldset,figcaption,figure,footer,form,frameset,h1,h2,h3,h4,h5,h6,header,hgroup,hr,iframe,ins,isindex,li,map,menu,noframes,noscript,object,ol,output,p,pre,section,script,table,tbody,td,tfoot,th,thead,tr,ul,video\");\n\n// Inline Elements - HTML 5\nvar inline = makeMap(\"abbr,acronym,applet,b,basefont,bdo,big,br,button,cite,del,dfn,em,font,i,iframe,img,input,ins,kbd,label,map,object,q,s,samp,script,select,small,span,strike,strong,sub,sup,textarea,tt,u,var\");\n\n// Elements that you can, intentionally, leave open\n// (and which close themselves)\nvar closeSelf = makeMap(\"colgroup,dd,dt,li,options,p,td,tfoot,th,thead,tr\");\n\n// Attributes that have their values filled in disabled=\"disabled\"\nvar fillAttrs = makeMap(\"checked,compact,declare,defer,disabled,ismap,multiple,nohref,noresize,noshade,nowrap,readonly,selected\");\n\n// Special Elements (can contain anything)\nvar special = makeMap(\"wxxxcode-style,script,style,view,scroll-view,block\");\n\nfunction HTMLParser(html, handler) {\n\tvar index, chars, match, stack = [], last = html;\n\tstack.last = function () {\n\t\treturn this[this.length - 1];\n\t};\n\n\twhile (html) {\n\t\tchars = true;\n\n\t\t// Make sure we're not in a script or style element\n\t\tif (!stack.last() || !special[stack.last()]) {\n\n\t\t\t// Comment\n\t\t\tif (html.indexOf(\"<!--\") == 0) {\n\t\t\t\tindex = html.indexOf(\"-->\");\n\n\t\t\t\tif (index >= 0) {\n\t\t\t\t\tif (handler.comment)\n\t\t\t\t\t\thandler.comment(html.substring(4, index));\n\t\t\t\t\thtml = html.substring(index + 3);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\n\t\t\t\t// end tag\n\t\t\t} else if (html.indexOf(\"</\") == 0) {\n\t\t\t\tmatch = html.match(endTag);\n\n\t\t\t\tif (match) {\n\t\t\t\t\thtml = html.substring(match[0].length);\n\t\t\t\t\tmatch[0].replace(endTag, parseEndTag);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\n\t\t\t\t// start tag\n\t\t\t} else if (html.indexOf(\"<\") == 0) {\n\t\t\t\tmatch = html.match(startTag);\n\n\t\t\t\tif (match) {\n\t\t\t\t\thtml = html.substring(match[0].length);\n\t\t\t\t\tmatch[0].replace(startTag, parseStartTag);\n\t\t\t\t\tchars = false;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (chars) {\n\t\t\t\tindex = html.indexOf(\"<\");\n\n\t\t\t\tvar text = index < 0 ? html : html.substring(0, index);\n\t\t\t\thtml = index < 0 ? \"\" : html.substring(index);\n\n\t\t\t\tif (handler.chars)\n\t\t\t\t\thandler.chars(text);\n\t\t\t}\n\n\t\t} else {\n\n\t\t\thtml = html.replace(new RegExp(\"([\\\\s\\\\S]*?)<\\/\" + stack.last() + \"[^>]*>\"), function (all, text) {\n\t\t\t\ttext = text.replace(/<!--([\\s\\S]*?)-->|<!\\[CDATA\\[([\\s\\S]*?)]]>/g, \"$1$2\");\n\t\t\t\tif (handler.chars)\n\t\t\t\t\thandler.chars(text);\n\n\t\t\t\treturn \"\";\n\t\t\t});\n\n\n\t\t\tparseEndTag(\"\", stack.last());\n\t\t}\n\n\t\tif (html == last)\n\t\t\tthrow \"Parse Error: \" + html;\n\t\tlast = html;\n\t}\n\n\t// Clean up any remaining tags\n\tparseEndTag();\n\n\tfunction parseStartTag(tag, tagName, rest, unary) {\n\t\ttagName = tagName.toLowerCase();\n\n\t\tif (block[tagName]) {\n\t\t\twhile (stack.last() && inline[stack.last()]) {\n\t\t\t\tparseEndTag(\"\", stack.last());\n\t\t\t}\n\t\t}\n\n\t\tif (closeSelf[tagName] && stack.last() == tagName) {\n\t\t\tparseEndTag(\"\", tagName);\n\t\t}\n\n\t\tunary = empty[tagName] || !!unary;\n\n\t\tif (!unary)\n\t\t\tstack.push(tagName);\n\n\t\tif (handler.start) {\n\t\t\tvar attrs = [];\n\n\t\t\trest.replace(attr, function (match, name) {\n\t\t\t\tvar value = arguments[2] ? arguments[2] :\n\t\t\t\t\targuments[3] ? arguments[3] :\n\t\t\t\t\t\targuments[4] ? arguments[4] :\n\t\t\t\t\t\t\tfillAttrs[name] ? name : \"\";\n\n\t\t\t\tattrs.push({\n\t\t\t\t\tname: name,\n\t\t\t\t\tvalue: value,\n\t\t\t\t\tescaped: value.replace(/(^|[^\\\\])\"/g, '$1\\\\\\\"') //\"\n\t\t\t\t});\n\t\t\t});\n\n\t\t\tif (handler.start) {\n\t\t\t\thandler.start(tagName, attrs, unary);\n\t\t\t}\n\n\t\t}\n\t}\n\n\tfunction parseEndTag(tag, tagName) {\n\t\t// If no tag name is provided, clean shop\n\t\tif (!tagName)\n\t\t\tvar pos = 0;\n\n\t\t// Find the closest opened tag of the same type\n\t\telse\n\t\t\tfor (var pos = stack.length - 1; pos >= 0; pos--)\n\t\t\t\tif (stack[pos] == tagName)\n\t\t\t\t\tbreak;\n\n\t\tif (pos >= 0) {\n\t\t\t// Close all the open elements, up the stack\n\t\t\tfor (var i = stack.length - 1; i >= pos; i--)\n\t\t\t\tif (handler.end)\n\t\t\t\t\thandler.end(stack[i]);\n\n\t\t\t// Remove the open elements from the stack\n\t\t\tstack.length = pos;\n\t\t}\n\t}\n};\n\nfunction makeMap(str) {\n\tvar obj = {}, items = str.split(\",\");\n\tfor (var i = 0; i < items.length; i++)\n\t\tobj[items[i]] = true;\n\treturn obj;\n}\n\nmodule.exports = HTMLParser;\n"
  },
  {
    "path": "renard-wx/lib/wxParse/showdown.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\nfunction getDefaultOpts(simple) {\n  'use strict';\n\n  var defaultOptions = {\n    omitExtraWLInCodeBlocks: {\n      defaultValue: false,\n      describe: 'Omit the default extra whiteline added to code blocks',\n      type: 'boolean'\n    },\n    noHeaderId: {\n      defaultValue: false,\n      describe: 'Turn on/off generated header id',\n      type: 'boolean'\n    },\n    prefixHeaderId: {\n      defaultValue: false,\n      describe: 'Specify a prefix to generated header ids',\n      type: 'string'\n    },\n    headerLevelStart: {\n      defaultValue: false,\n      describe: 'The header blocks level start',\n      type: 'integer'\n    },\n    parseImgDimensions: {\n      defaultValue: false,\n      describe: 'Turn on/off image dimension parsing',\n      type: 'boolean'\n    },\n    simplifiedAutoLink: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM autolink style',\n      type: 'boolean'\n    },\n    literalMidWordUnderscores: {\n      defaultValue: false,\n      describe: 'Parse midword underscores as literal underscores',\n      type: 'boolean'\n    },\n    strikethrough: {\n      defaultValue: false,\n      describe: 'Turn on/off strikethrough support',\n      type: 'boolean'\n    },\n    tables: {\n      defaultValue: false,\n      describe: 'Turn on/off tables support',\n      type: 'boolean'\n    },\n    tablesHeaderId: {\n      defaultValue: false,\n      describe: 'Add an id to table headers',\n      type: 'boolean'\n    },\n    ghCodeBlocks: {\n      defaultValue: true,\n      describe: 'Turn on/off GFM fenced code blocks support',\n      type: 'boolean'\n    },\n    tasklists: {\n      defaultValue: false,\n      describe: 'Turn on/off GFM tasklist support',\n      type: 'boolean'\n    },\n    smoothLivePreview: {\n      defaultValue: false,\n      describe: 'Prevents weird effects in live previews due to incomplete input',\n      type: 'boolean'\n    },\n    smartIndentationFix: {\n      defaultValue: false,\n      description: 'Tries to smartly fix identation in es6 strings',\n      type: 'boolean'\n    }\n  };\n  if (simple === false) {\n    return JSON.parse(JSON.stringify(defaultOptions));\n  }\n  var ret = {};\n  for (var opt in defaultOptions) {\n    if (defaultOptions.hasOwnProperty(opt)) {\n      ret[opt] = defaultOptions[opt].defaultValue;\n    }\n  }\n  return ret;\n}\n\n/**\n * Created by Tivie on 06-01-2015.\n */\n\n// Private properties\nvar showdown = {},\n    parsers = {},\n    extensions = {},\n    globalOptions = getDefaultOpts(true),\n    flavor = {\n      github: {\n        omitExtraWLInCodeBlocks:   true,\n        prefixHeaderId:            'user-content-',\n        simplifiedAutoLink:        true,\n        literalMidWordUnderscores: true,\n        strikethrough:             true,\n        tables:                    true,\n        tablesHeaderId:            true,\n        ghCodeBlocks:              true,\n        tasklists:                 true\n      },\n      vanilla: getDefaultOpts(true)\n    };\n\n/**\n * helper namespace\n * @type {{}}\n */\nshowdown.helper = {};\n\n/**\n * TODO LEGACY SUPPORT CODE\n * @type {{}}\n */\nshowdown.extensions = {};\n\n/**\n * Set a global option\n * @static\n * @param {string} key\n * @param {*} value\n * @returns {showdown}\n */\nshowdown.setOption = function (key, value) {\n  'use strict';\n  globalOptions[key] = value;\n  return this;\n};\n\n/**\n * Get a global option\n * @static\n * @param {string} key\n * @returns {*}\n */\nshowdown.getOption = function (key) {\n  'use strict';\n  return globalOptions[key];\n};\n\n/**\n * Get the global options\n * @static\n * @returns {{}}\n */\nshowdown.getOptions = function () {\n  'use strict';\n  return globalOptions;\n};\n\n/**\n * Reset global options to the default values\n * @static\n */\nshowdown.resetOptions = function () {\n  'use strict';\n  globalOptions = getDefaultOpts(true);\n};\n\n/**\n * Set the flavor showdown should use as default\n * @param {string} name\n */\nshowdown.setFlavor = function (name) {\n  'use strict';\n  if (flavor.hasOwnProperty(name)) {\n    var preset = flavor[name];\n    for (var option in preset) {\n      if (preset.hasOwnProperty(option)) {\n        globalOptions[option] = preset[option];\n      }\n    }\n  }\n};\n\n/**\n * Get the default options\n * @static\n * @param {boolean} [simple=true]\n * @returns {{}}\n */\nshowdown.getDefaultOptions = function (simple) {\n  'use strict';\n  return getDefaultOpts(simple);\n};\n\n/**\n * Get or set a subParser\n *\n * subParser(name)       - Get a registered subParser\n * subParser(name, func) - Register a subParser\n * @static\n * @param {string} name\n * @param {function} [func]\n * @returns {*}\n */\nshowdown.subParser = function (name, func) {\n  'use strict';\n  if (showdown.helper.isString(name)) {\n    if (typeof func !== 'undefined') {\n      parsers[name] = func;\n    } else {\n      if (parsers.hasOwnProperty(name)) {\n        return parsers[name];\n      } else {\n        throw Error('SubParser named ' + name + ' not registered!');\n      }\n    }\n  }\n};\n\n/**\n * Gets or registers an extension\n * @static\n * @param {string} name\n * @param {object|function=} ext\n * @returns {*}\n */\nshowdown.extension = function (name, ext) {\n  'use strict';\n\n  if (!showdown.helper.isString(name)) {\n    throw Error('Extension \\'name\\' must be a string');\n  }\n\n  name = showdown.helper.stdExtName(name);\n\n  // Getter\n  if (showdown.helper.isUndefined(ext)) {\n    if (!extensions.hasOwnProperty(name)) {\n      throw Error('Extension named ' + name + ' is not registered!');\n    }\n    return extensions[name];\n\n    // Setter\n  } else {\n    // Expand extension if it's wrapped in a function\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    // Ensure extension is an array\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExtension = validate(ext, name);\n\n    if (validExtension.valid) {\n      extensions[name] = ext;\n    } else {\n      throw Error(validExtension.error);\n    }\n  }\n};\n\n/**\n * Gets all extensions registered\n * @returns {{}}\n */\nshowdown.getAllExtensions = function () {\n  'use strict';\n  return extensions;\n};\n\n/**\n * Remove an extension\n * @param {string} name\n */\nshowdown.removeExtension = function (name) {\n  'use strict';\n  delete extensions[name];\n};\n\n/**\n * Removes all extensions\n */\nshowdown.resetExtensions = function () {\n  'use strict';\n  extensions = {};\n};\n\n/**\n * Validate extension\n * @param {array} extension\n * @param {string} name\n * @returns {{valid: boolean, error: string}}\n */\nfunction validate(extension, name) {\n  'use strict';\n\n  var errMsg = (name) ? 'Error in ' + name + ' extension->' : 'Error in unnamed extension',\n    ret = {\n      valid: true,\n      error: ''\n    };\n\n  if (!showdown.helper.isArray(extension)) {\n    extension = [extension];\n  }\n\n  for (var i = 0; i < extension.length; ++i) {\n    var baseMsg = errMsg + ' sub-extension ' + i + ': ',\n        ext = extension[i];\n    if (typeof ext !== 'object') {\n      ret.valid = false;\n      ret.error = baseMsg + 'must be an object, but ' + typeof ext + ' given';\n      return ret;\n    }\n\n    if (!showdown.helper.isString(ext.type)) {\n      ret.valid = false;\n      ret.error = baseMsg + 'property \"type\" must be a string, but ' + typeof ext.type + ' given';\n      return ret;\n    }\n\n    var type = ext.type = ext.type.toLowerCase();\n\n    // normalize extension type\n    if (type === 'language') {\n      type = ext.type = 'lang';\n    }\n\n    if (type === 'html') {\n      type = ext.type = 'output';\n    }\n\n    if (type !== 'lang' && type !== 'output' && type !== 'listener') {\n      ret.valid = false;\n      ret.error = baseMsg + 'type ' + type + ' is not recognized. Valid values: \"lang/language\", \"output/html\" or \"listener\"';\n      return ret;\n    }\n\n    if (type === 'listener') {\n      if (showdown.helper.isUndefined(ext.listeners)) {\n        ret.valid = false;\n        ret.error = baseMsg + '. Extensions of type \"listener\" must have a property called \"listeners\"';\n        return ret;\n      }\n    } else {\n      if (showdown.helper.isUndefined(ext.filter) && showdown.helper.isUndefined(ext.regex)) {\n        ret.valid = false;\n        ret.error = baseMsg + type + ' extensions must define either a \"regex\" property or a \"filter\" method';\n        return ret;\n      }\n    }\n\n    if (ext.listeners) {\n      if (typeof ext.listeners !== 'object') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"listeners\" property must be an object but ' + typeof ext.listeners + ' given';\n        return ret;\n      }\n      for (var ln in ext.listeners) {\n        if (ext.listeners.hasOwnProperty(ln)) {\n          if (typeof ext.listeners[ln] !== 'function') {\n            ret.valid = false;\n            ret.error = baseMsg + '\"listeners\" property must be an hash of [event name]: [callback]. listeners.' + ln +\n              ' must be a function but ' + typeof ext.listeners[ln] + ' given';\n            return ret;\n          }\n        }\n      }\n    }\n\n    if (ext.filter) {\n      if (typeof ext.filter !== 'function') {\n        ret.valid = false;\n        ret.error = baseMsg + '\"filter\" must be a function, but ' + typeof ext.filter + ' given';\n        return ret;\n      }\n    } else if (ext.regex) {\n      if (showdown.helper.isString(ext.regex)) {\n        ext.regex = new RegExp(ext.regex, 'g');\n      }\n      if (!ext.regex instanceof RegExp) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" property must either be a string or a RegExp object, but ' + typeof ext.regex + ' given';\n        return ret;\n      }\n      if (showdown.helper.isUndefined(ext.replace)) {\n        ret.valid = false;\n        ret.error = baseMsg + '\"regex\" extensions must implement a replace string or function';\n        return ret;\n      }\n    }\n  }\n  return ret;\n}\n\n/**\n * Validate extension\n * @param {object} ext\n * @returns {boolean}\n */\nshowdown.validateExtension = function (ext) {\n  'use strict';\n\n  var validateExtension = validate(ext, null);\n  if (!validateExtension.valid) {\n    console.warn(validateExtension.error);\n    return false;\n  }\n  return true;\n};\n\n/**\n * showdownjs helper functions\n */\n\nif (!showdown.hasOwnProperty('helper')) {\n  showdown.helper = {};\n}\n\n/**\n * Check if var is string\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isString = function isString(a) {\n  'use strict';\n  return (typeof a === 'string' || a instanceof String);\n};\n\n/**\n * Check if var is a function\n * @static\n * @param {string} a\n * @returns {boolean}\n */\nshowdown.helper.isFunction = function isFunction(a) {\n  'use strict';\n  var getType = {};\n  return a && getType.toString.call(a) === '[object Function]';\n};\n\n/**\n * ForEach helper function\n * @static\n * @param {*} obj\n * @param {function} callback\n */\nshowdown.helper.forEach = function forEach(obj, callback) {\n  'use strict';\n  if (typeof obj.forEach === 'function') {\n    obj.forEach(callback);\n  } else {\n    for (var i = 0; i < obj.length; i++) {\n      callback(obj[i], i, obj);\n    }\n  }\n};\n\n/**\n * isArray helper function\n * @static\n * @param {*} a\n * @returns {boolean}\n */\nshowdown.helper.isArray = function isArray(a) {\n  'use strict';\n  return a.constructor === Array;\n};\n\n/**\n * Check if value is undefined\n * @static\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n */\nshowdown.helper.isUndefined = function isUndefined(value) {\n  'use strict';\n  return typeof value === 'undefined';\n};\n\n/**\n * Standardidize extension name\n * @static\n * @param {string} s extension name\n * @returns {string}\n */\nshowdown.helper.stdExtName = function (s) {\n  'use strict';\n  return s.replace(/[_-]||\\s/g, '').toLowerCase();\n};\n\nfunction escapeCharactersCallback(wholeMatch, m1) {\n  'use strict';\n  var charCodeToEscape = m1.charCodeAt(0);\n  return '~E' + charCodeToEscape + 'E';\n}\n\n/**\n * Callback used to escape characters when passing through String.replace\n * @static\n * @param {string} wholeMatch\n * @param {string} m1\n * @returns {string}\n */\nshowdown.helper.escapeCharactersCallback = escapeCharactersCallback;\n\n/**\n * Escape characters in a string\n * @static\n * @param {string} text\n * @param {string} charsToEscape\n * @param {boolean} afterBackslash\n * @returns {XML|string|void|*}\n */\nshowdown.helper.escapeCharacters = function escapeCharacters(text, charsToEscape, afterBackslash) {\n  'use strict';\n  // First we have to escape the escape characters so that\n  // we can build a character class out of them\n  var regexString = '([' + charsToEscape.replace(/([\\[\\]\\\\])/g, '\\\\$1') + '])';\n\n  if (afterBackslash) {\n    regexString = '\\\\\\\\' + regexString;\n  }\n\n  var regex = new RegExp(regexString, 'g');\n  text = text.replace(regex, escapeCharactersCallback);\n\n  return text;\n};\n\nvar rgxFindMatchPos = function (str, left, right, flags) {\n  'use strict';\n  var f = flags || '',\n    g = f.indexOf('g') > -1,\n    x = new RegExp(left + '|' + right, 'g' + f.replace(/g/g, '')),\n    l = new RegExp(left, f.replace(/g/g, '')),\n    pos = [],\n    t, s, m, start, end;\n\n  do {\n    t = 0;\n    while ((m = x.exec(str))) {\n      if (l.test(m[0])) {\n        if (!(t++)) {\n          s = x.lastIndex;\n          start = s - m[0].length;\n        }\n      } else if (t) {\n        if (!--t) {\n          end = m.index + m[0].length;\n          var obj = {\n            left: {start: start, end: s},\n            match: {start: s, end: m.index},\n            right: {start: m.index, end: end},\n            wholeMatch: {start: start, end: end}\n          };\n          pos.push(obj);\n          if (!g) {\n            return pos;\n          }\n        }\n      }\n    }\n  } while (t && (x.lastIndex = s));\n\n  return pos;\n};\n\n/**\n * matchRecursiveRegExp\n *\n * (c) 2007 Steven Levithan <stevenlevithan.com>\n * MIT License\n *\n * Accepts a string to search, a left and right format delimiter\n * as regex patterns, and optional regex flags. Returns an array\n * of matches, allowing nested instances of left/right delimiters.\n * Use the \"g\" flag to return all matches, otherwise only the\n * first is returned. Be careful to ensure that the left and\n * right format delimiters produce mutually exclusive matches.\n * Backreferences are not supported within the right delimiter\n * due to how it is internally combined with the left delimiter.\n * When matching strings whose format delimiters are unbalanced\n * to the left or right, the output is intentionally as a\n * conventional regex library with recursion support would\n * produce, e.g. \"<<x>\" and \"<x>>\" both produce [\"x\"] when using\n * \"<\" and \">\" as the delimiters (both strings contain a single,\n * balanced instance of \"<x>\").\n *\n * examples:\n * matchRecursiveRegExp(\"test\", \"\\\\(\", \"\\\\)\")\n * returns: []\n * matchRecursiveRegExp(\"<t<<e>><s>>t<>\", \"<\", \">\", \"g\")\n * returns: [\"t<<e>><s>\", \"\"]\n * matchRecursiveRegExp(\"<div id=\\\"x\\\">test</div>\", \"<div\\\\b[^>]*>\", \"</div>\", \"gi\")\n * returns: [\"test\"]\n */\nshowdown.helper.matchRecursiveRegExp = function (str, left, right, flags) {\n  'use strict';\n\n  var matchPos = rgxFindMatchPos (str, left, right, flags),\n    results = [];\n\n  for (var i = 0; i < matchPos.length; ++i) {\n    results.push([\n      str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n      str.slice(matchPos[i].match.start, matchPos[i].match.end),\n      str.slice(matchPos[i].left.start, matchPos[i].left.end),\n      str.slice(matchPos[i].right.start, matchPos[i].right.end)\n    ]);\n  }\n  return results;\n};\n\n/**\n *\n * @param {string} str\n * @param {string|function} replacement\n * @param {string} left\n * @param {string} right\n * @param {string} flags\n * @returns {string}\n */\nshowdown.helper.replaceRecursiveRegExp = function (str, replacement, left, right, flags) {\n  'use strict';\n\n  if (!showdown.helper.isFunction(replacement)) {\n    var repStr = replacement;\n    replacement = function () {\n      return repStr;\n    };\n  }\n\n  var matchPos = rgxFindMatchPos(str, left, right, flags),\n      finalStr = str,\n      lng = matchPos.length;\n\n  if (lng > 0) {\n    var bits = [];\n    if (matchPos[0].wholeMatch.start !== 0) {\n      bits.push(str.slice(0, matchPos[0].wholeMatch.start));\n    }\n    for (var i = 0; i < lng; ++i) {\n      bits.push(\n        replacement(\n          str.slice(matchPos[i].wholeMatch.start, matchPos[i].wholeMatch.end),\n          str.slice(matchPos[i].match.start, matchPos[i].match.end),\n          str.slice(matchPos[i].left.start, matchPos[i].left.end),\n          str.slice(matchPos[i].right.start, matchPos[i].right.end)\n        )\n      );\n      if (i < lng - 1) {\n        bits.push(str.slice(matchPos[i].wholeMatch.end, matchPos[i + 1].wholeMatch.start));\n      }\n    }\n    if (matchPos[lng - 1].wholeMatch.end < str.length) {\n      bits.push(str.slice(matchPos[lng - 1].wholeMatch.end));\n    }\n    finalStr = bits.join('');\n  }\n  return finalStr;\n};\n\n/**\n * POLYFILLS\n */\nif (showdown.helper.isUndefined(console)) {\n  console = {\n    warn: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    log: function (msg) {\n      'use strict';\n      alert(msg);\n    },\n    error: function (msg) {\n      'use strict';\n      throw msg;\n    }\n  };\n}\n\n/**\n * Created by Estevao on 31-05-2015.\n */\n\n/**\n * Showdown Converter class\n * @class\n * @param {object} [converterOptions]\n * @returns {Converter}\n */\nshowdown.Converter = function (converterOptions) {\n  'use strict';\n\n  var\n      /**\n       * Options used by this converter\n       * @private\n       * @type {{}}\n       */\n      options = {},\n\n      /**\n       * Language extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      langExtensions = [],\n\n      /**\n       * Output modifiers extensions used by this converter\n       * @private\n       * @type {Array}\n       */\n      outputModifiers = [],\n\n      /**\n       * Event listeners\n       * @private\n       * @type {{}}\n       */\n      listeners = {};\n\n  _constructor();\n\n  /**\n   * Converter constructor\n   * @private\n   */\n  function _constructor() {\n    converterOptions = converterOptions || {};\n\n    for (var gOpt in globalOptions) {\n      if (globalOptions.hasOwnProperty(gOpt)) {\n        options[gOpt] = globalOptions[gOpt];\n      }\n    }\n\n    // Merge options\n    if (typeof converterOptions === 'object') {\n      for (var opt in converterOptions) {\n        if (converterOptions.hasOwnProperty(opt)) {\n          options[opt] = converterOptions[opt];\n        }\n      }\n    } else {\n      throw Error('Converter expects the passed parameter to be an object, but ' + typeof converterOptions +\n      ' was passed instead.');\n    }\n\n    if (options.extensions) {\n      showdown.helper.forEach(options.extensions, _parseExtension);\n    }\n  }\n\n  /**\n   * Parse extension\n   * @param {*} ext\n   * @param {string} [name='']\n   * @private\n   */\n  function _parseExtension(ext, name) {\n\n    name = name || null;\n    // If it's a string, the extension was previously loaded\n    if (showdown.helper.isString(ext)) {\n      ext = showdown.helper.stdExtName(ext);\n      name = ext;\n\n      // LEGACY_SUPPORT CODE\n      if (showdown.extensions[ext]) {\n        console.warn('DEPRECATION WARNING: ' + ext + ' is an old extension that uses a deprecated loading method.' +\n          'Please inform the developer that the extension should be updated!');\n        legacyExtensionLoading(showdown.extensions[ext], ext);\n        return;\n      // END LEGACY SUPPORT CODE\n\n      } else if (!showdown.helper.isUndefined(extensions[ext])) {\n        ext = extensions[ext];\n\n      } else {\n        throw Error('Extension \"' + ext + '\" could not be loaded. It was either not found or is not a valid extension.');\n      }\n    }\n\n    if (typeof ext === 'function') {\n      ext = ext();\n    }\n\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n\n    var validExt = validate(ext, name);\n    if (!validExt.valid) {\n      throw Error(validExt.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n      }\n      if (ext[i].hasOwnProperty(listeners)) {\n        for (var ln in ext[i].listeners) {\n          if (ext[i].listeners.hasOwnProperty(ln)) {\n            listen(ln, ext[i].listeners[ln]);\n          }\n        }\n      }\n    }\n\n  }\n\n  /**\n   * LEGACY_SUPPORT\n   * @param {*} ext\n   * @param {string} name\n   */\n  function legacyExtensionLoading(ext, name) {\n    if (typeof ext === 'function') {\n      ext = ext(new showdown.Converter());\n    }\n    if (!showdown.helper.isArray(ext)) {\n      ext = [ext];\n    }\n    var valid = validate(ext, name);\n\n    if (!valid.valid) {\n      throw Error(valid.error);\n    }\n\n    for (var i = 0; i < ext.length; ++i) {\n      switch (ext[i].type) {\n        case 'lang':\n          langExtensions.push(ext[i]);\n          break;\n        case 'output':\n          outputModifiers.push(ext[i]);\n          break;\n        default:// should never reach here\n          throw Error('Extension loader error: Type unrecognized!!!');\n      }\n    }\n  }\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   */\n  function listen(name, callback) {\n    if (!showdown.helper.isString(name)) {\n      throw Error('Invalid argument in converter.listen() method: name must be a string, but ' + typeof name + ' given');\n    }\n\n    if (typeof callback !== 'function') {\n      throw Error('Invalid argument in converter.listen() method: callback must be a function, but ' + typeof callback + ' given');\n    }\n\n    if (!listeners.hasOwnProperty(name)) {\n      listeners[name] = [];\n    }\n    listeners[name].push(callback);\n  }\n\n  function rTrimInputText(text) {\n    var rsp = text.match(/^\\s*/)[0].length,\n        rgx = new RegExp('^\\\\s{0,' + rsp + '}', 'gm');\n    return text.replace(rgx, '');\n  }\n\n  /**\n   * Dispatch an event\n   * @private\n   * @param {string} evtName Event name\n   * @param {string} text Text\n   * @param {{}} options Converter Options\n   * @param {{}} globals\n   * @returns {string}\n   */\n  this._dispatch = function dispatch (evtName, text, options, globals) {\n    if (listeners.hasOwnProperty(evtName)) {\n      for (var ei = 0; ei < listeners[evtName].length; ++ei) {\n        var nText = listeners[evtName][ei](evtName, text, this, options, globals);\n        if (nText && typeof nText !== 'undefined') {\n          text = nText;\n        }\n      }\n    }\n    return text;\n  };\n\n  /**\n   * Listen to an event\n   * @param {string} name\n   * @param {function} callback\n   * @returns {showdown.Converter}\n   */\n  this.listen = function (name, callback) {\n    listen(name, callback);\n    return this;\n  };\n\n  /**\n   * Converts a markdown string into HTML\n   * @param {string} text\n   * @returns {*}\n   */\n  this.makeHtml = function (text) {\n    //check if text is not falsy\n    if (!text) {\n      return text;\n    }\n\n    var globals = {\n      gHtmlBlocks:     [],\n      gHtmlMdBlocks:   [],\n      gHtmlSpans:      [],\n      gUrls:           {},\n      gTitles:         {},\n      gDimensions:     {},\n      gListLevel:      0,\n      hashLinkCounts:  {},\n      langExtensions:  langExtensions,\n      outputModifiers: outputModifiers,\n      converter:       this,\n      ghCodeBlocks:    []\n    };\n\n    // attacklab: Replace ~ with ~T\n    // This lets us use tilde as an escape char to avoid md5 hashes\n    // The choice of character is arbitrary; anything that isn't\n    // magic in Markdown will work.\n    text = text.replace(/~/g, '~T');\n\n    // attacklab: Replace $ with ~D\n    // RegExp interprets $ as a special character\n    // when it's in a replacement string\n    text = text.replace(/\\$/g, '~D');\n\n    // Standardize line endings\n    text = text.replace(/\\r\\n/g, '\\n'); // DOS to Unix\n    text = text.replace(/\\r/g, '\\n'); // Mac to Unix\n\n    if (options.smartIndentationFix) {\n      text = rTrimInputText(text);\n    }\n\n    // Make sure text begins and ends with a couple of newlines:\n    //text = '\\n\\n' + text + '\\n\\n';\n    text = text;\n    // detab\n    text = showdown.subParser('detab')(text, options, globals);\n\n    // stripBlankLines\n    text = showdown.subParser('stripBlankLines')(text, options, globals);\n\n    //run languageExtensions\n    showdown.helper.forEach(langExtensions, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n\n    // run the sub parsers\n    text = showdown.subParser('hashPreCodeTags')(text, options, globals);\n    text = showdown.subParser('githubCodeBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n    text = showdown.subParser('hashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('stripLinkDefinitions')(text, options, globals);\n    text = showdown.subParser('blockGamut')(text, options, globals);\n    text = showdown.subParser('unhashHTMLSpans')(text, options, globals);\n    text = showdown.subParser('unescapeSpecialChars')(text, options, globals);\n\n    // attacklab: Restore dollar signs\n    text = text.replace(/~D/g, '$$');\n\n    // attacklab: Restore tildes\n    text = text.replace(/~T/g, '~');\n\n    // Run output modifiers\n    showdown.helper.forEach(outputModifiers, function (ext) {\n      text = showdown.subParser('runExtension')(ext, text, options, globals);\n    });\n    return text;\n  };\n\n  /**\n   * Set an option of this Converter instance\n   * @param {string} key\n   * @param {*} value\n   */\n  this.setOption = function (key, value) {\n    options[key] = value;\n  };\n\n  /**\n   * Get the option of this Converter instance\n   * @param {string} key\n   * @returns {*}\n   */\n  this.getOption = function (key) {\n    return options[key];\n  };\n\n  /**\n   * Get the options of this Converter instance\n   * @returns {{}}\n   */\n  this.getOptions = function () {\n    return options;\n  };\n\n  /**\n   * Add extension to THIS converter\n   * @param {{}} extension\n   * @param {string} [name=null]\n   */\n  this.addExtension = function (extension, name) {\n    name = name || null;\n    _parseExtension(extension, name);\n  };\n\n  /**\n   * Use a global registered extension with THIS converter\n   * @param {string} extensionName Name of the previously registered extension\n   */\n  this.useExtension = function (extensionName) {\n    _parseExtension(extensionName);\n  };\n\n  /**\n   * Set the flavor THIS converter should use\n   * @param {string} name\n   */\n  this.setFlavor = function (name) {\n    if (flavor.hasOwnProperty(name)) {\n      var preset = flavor[name];\n      for (var option in preset) {\n        if (preset.hasOwnProperty(option)) {\n          options[option] = preset[option];\n        }\n      }\n    }\n  };\n\n  /**\n   * Remove an extension from THIS converter.\n   * Note: This is a costly operation. It's better to initialize a new converter\n   * and specify the extensions you wish to use\n   * @param {Array} extension\n   */\n  this.removeExtension = function (extension) {\n    if (!showdown.helper.isArray(extension)) {\n      extension = [extension];\n    }\n    for (var a = 0; a < extension.length; ++a) {\n      var ext = extension[a];\n      for (var i = 0; i < langExtensions.length; ++i) {\n        if (langExtensions[i] === ext) {\n          langExtensions[i].splice(i, 1);\n        }\n      }\n      for (var ii = 0; ii < outputModifiers.length; ++i) {\n        if (outputModifiers[ii] === ext) {\n          outputModifiers[ii].splice(i, 1);\n        }\n      }\n    }\n  };\n\n  /**\n   * Get all extension of THIS converter\n   * @returns {{language: Array, output: Array}}\n   */\n  this.getAllExtensions = function () {\n    return {\n      language: langExtensions,\n      output: outputModifiers\n    };\n  };\n};\n\n/**\n * Turn Markdown link shortcuts into XHTML <a> tags.\n */\nshowdown.subParser('anchors', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('anchors.before', text, options, globals);\n\n  var writeAnchorTag = function (wholeMatch, m1, m2, m3, m4, m5, m6, m7) {\n    if (showdown.helper.isUndefined(m7)) {\n      m7 = '';\n    }\n    wholeMatch = m1;\n    var linkText = m2,\n        linkId = m3.toLowerCase(),\n        url = m4,\n        title = m7;\n\n    if (!url) {\n      if (!linkId) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = linkText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(globals.gUrls[linkId])) {\n        url = globals.gUrls[linkId];\n        if (!showdown.helper.isUndefined(globals.gTitles[linkId])) {\n          title = globals.gTitles[linkId];\n        }\n      } else {\n        if (wholeMatch.search(/\\(\\s*\\)$/m) > -1) {\n          // Special case for explicit empty url\n          url = '';\n        } else {\n          return wholeMatch;\n        }\n      }\n    }\n\n    url = showdown.helper.escapeCharacters(url, '*_', false);\n    var result = '<a href=\"' + url + '\"';\n\n    if (title !== '' && title !== null) {\n      title = title.replace(/\"/g, '&quot;');\n      title = showdown.helper.escapeCharacters(title, '*_', false);\n      result += ' title=\"' + title + '\"';\n    }\n\n    result += '>' + linkText + '</a>';\n\n    return result;\n  };\n\n  // First, handle reference-style links: [link text] [id]\n  text = text.replace(/(\\[[^\\]\\n]+\\]\\s*){2}/g, writeAnchorTag);\n\n  //\n  // Next, inline-style links: [link text](url \"optional title\")\n  //\n\n  /*\n   text = text.replace(/\n   (\t\t\t\t\t\t// wrap whole match in $1\n   \\[\n   (\n   (?:\n   \\[[^\\]]*\\]\t// allow brackets nested one level\n   |\n   [^\\[\\]]\t\t\t// or anything else\n   )\n   )\n   \\]\n   \\(\t\t\t\t\t\t// literal paren\n   [ \\t]*\n   ()\t\t\t\t\t\t// no id, so leave $3 empty\n   <?(.*?)>?\t\t\t\t// href = $4\n   [ \\t]*\n   (\t\t\t\t\t\t// $5\n   (['\"])\t\t\t\t// quote char = $6\n   (.*?)\t\t\t\t// Title = $7\n   \\6\t\t\t\t\t// matching quote\n   [ \\t]*\t\t\t\t// ignore any spaces/tabs between closing quote and )\n   )?\t\t\t\t\t\t// title is optional\n   \\)\n   )\n   /g,writeAnchorTag);\n   */\n  text = text.replace(/(\\[((?:\\[[^\\]]*]|[^\\[\\]])*)]\\([ \\t]*()<?(.*?(?:\\(.*?\\).*?)?)>?[ \\t]*((['\"])(.*?)\\6[ \\t]*)?\\))/g,\n                      writeAnchorTag);\n\n  //\n  // Last, handle reference-style shortcuts: [link text]\n  // These must come last in case you've also got [link test][1]\n  // or [link test](/foo)\n  //\n\n  /*\n   text = text.replace(/\n   (                // wrap whole match in $1\n   \\[\n   ([^\\[\\]]+)       // link text = $2; can't contain '[' or ']'\n   \\]\n   )()()()()()      // pad rest of backreferences\n   /g, writeAnchorTag);\n   */\n  text = text.replace(/(\\[([^\\[\\]]+)])()()()()()/g, writeAnchorTag);\n\n  text = globals.converter._dispatch('anchors.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('autoLinks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('autoLinks.before', text, options, globals);\n\n  var simpleURLRegex  = /\\b(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+\\.[^'\">\\s]+)(?=\\b)(?![^<>]*>)/gi,\n      delimUrlRegex   = /<(((https?|ftp|dict):\\/\\/|www\\.)[^'\">\\s]+)>/gi,\n      simpleMailRegex = /(?:\\b)([\\w\\d\\.\\-\\+]{1,256}\\@[\\w\\d\\.\\-\\+]{1,256}\\.\\w{1,24}+)(?:\\b)/gi,\n      delimMailRegex  = /<(?:mailto:)?([\\w\\d\\.\\-\\+]{1,256}\\@[\\w\\d\\.\\-\\+]{1,256}\\.\\w{1,24})>/gi;\n\n  text = text.replace(delimUrlRegex, replaceLink);\n  text = text.replace(delimMailRegex, replaceMail);\n  // simpleURLRegex  = /\\b(((https?|ftp|dict):\\/\\/|www\\.)[-.+~:?#@!$&'()*,;=[\\]\\w]+)\\b/gi,\n  // Email addresses: <address@domain.foo>\n\n  if (options.simplifiedAutoLink) {\n    text = text.replace(simpleURLRegex, replaceLink);\n    text = text.replace(simpleMailRegex, replaceMail);\n  }\n\n  function replaceLink(wm, link) {\n    var lnkTxt = link;\n    if (/^www\\./i.test(link)) {\n      link = link.replace(/^www\\./i, 'http://www.');\n    }\n    return '<a href=\"' + link + '\">' + lnkTxt + '</a>';\n  }\n\n  function replaceMail(wholeMatch, m1) {\n    var unescapedStr = showdown.subParser('unescapeSpecialChars')(m1);\n    return showdown.subParser('encodeEmailAddress')(unescapedStr);\n  }\n\n  text = globals.converter._dispatch('autoLinks.after', text, options, globals);\n\n  return text;\n});\n\n/**\n * These are all the transformations that form block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('blockGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockGamut.before', text, options, globals);\n\n  // we parse blockquotes first so that we can have headings and hrs\n  // inside blockquotes\n  text = showdown.subParser('blockQuotes')(text, options, globals);\n  text = showdown.subParser('headers')(text, options, globals);\n\n  // Do Horizontal Rules:\n  var key = showdown.subParser('hashBlock')('<hr />', options, globals);\n  text = text.replace(/^[ ]{0,2}([ ]?\\*[ ]?){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^[ ]{0,2}([ ]?\\-[ ]?){3,}[ \\t]*$/gm, key);\n  text = text.replace(/^[ ]{0,2}([ ]?_[ ]?){3,}[ \\t]*$/gm, key);\n\n  text = showdown.subParser('lists')(text, options, globals);\n  text = showdown.subParser('codeBlocks')(text, options, globals);\n  text = showdown.subParser('tables')(text, options, globals);\n\n  // We already ran _HashHTMLBlocks() before, in Markdown(), but that\n  // was to escape raw HTML in the original Markdown source. This time,\n  // we're escaping the markup we've just created, so that we don't wrap\n  // <p> tags around block-level tags.\n  text = showdown.subParser('hashHTMLBlocks')(text, options, globals);\n  text = showdown.subParser('paragraphs')(text, options, globals);\n\n  text = globals.converter._dispatch('blockGamut.after', text, options, globals);\n\n  return text;\n});\n\nshowdown.subParser('blockQuotes', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('blockQuotes.before', text, options, globals);\n  /*\n   text = text.replace(/\n   (\t\t\t\t\t\t\t\t// Wrap whole match in $1\n   (\n   ^[ \\t]*>[ \\t]?\t\t\t// '>' at the start of a line\n   .+\\n\t\t\t\t\t// rest of the first line\n   (.+\\n)*\t\t\t\t\t// subsequent consecutive lines\n   \\n*\t\t\t\t\t\t// blanks\n   )+\n   )\n   /gm, function(){...});\n   */\n\n  text = text.replace(/((^[ \\t]{0,3}>[ \\t]?.+\\n(.+\\n)*\\n*)+)/gm, function (wholeMatch, m1) {\n    var bq = m1;\n\n    // attacklab: hack around Konqueror 3.5.4 bug:\n    // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n    bq = bq.replace(/^[ \\t]*>[ \\t]?/gm, '~0'); // trim one level of quoting\n\n    // attacklab: clean up hack\n    bq = bq.replace(/~0/g, '');\n\n    bq = bq.replace(/^[ \\t]+$/gm, ''); // trim whitespace-only lines\n    bq = showdown.subParser('githubCodeBlocks')(bq, options, globals);\n    bq = showdown.subParser('blockGamut')(bq, options, globals); // recurse\n\n    bq = bq.replace(/(^|\\n)/g, '$1  ');\n    // These leading spaces screw with <pre> content, so we need to fix that:\n    bq = bq.replace(/(\\s*<pre>[^\\r]+?<\\/pre>)/gm, function (wholeMatch, m1) {\n      var pre = m1;\n      // attacklab: hack around Konqueror 3.5.4 bug:\n      pre = pre.replace(/^  /mg, '~0');\n      pre = pre.replace(/~0/g, '');\n      return pre;\n    });\n\n    return showdown.subParser('hashBlock')('<blockquote>\\n' + bq + '\\n</blockquote>', options, globals);\n  });\n\n  text = globals.converter._dispatch('blockQuotes.after', text, options, globals);\n  return text;\n});\n\n/**\n * Process Markdown `<pre><code>` blocks.\n */\nshowdown.subParser('codeBlocks', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeBlocks.before', text, options, globals);\n  /*\n   text = text.replace(text,\n   /(?:\\n\\n|^)\n   (\t\t\t\t\t\t\t\t// $1 = the code block -- one or more lines, starting with a space/tab\n   (?:\n   (?:[ ]{4}|\\t)\t\t\t// Lines must start with a tab or a tab-width of spaces - attacklab: g_tab_width\n   .*\\n+\n   )+\n   )\n   (\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))\t// attacklab: g_tab_width\n   /g,function(){...});\n   */\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '~0';\n\n  var pattern = /(?:\\n\\n|^)((?:(?:[ ]{4}|\\t).*\\n+)+)(\\n*[ ]{0,3}[^ \\t\\n]|(?=~0))/g;\n  text = text.replace(pattern, function (wholeMatch, m1, m2) {\n    var codeblock = m1,\n        nextChar = m2,\n        end = '\\n';\n\n    codeblock = showdown.subParser('outdent')(codeblock);\n    codeblock = showdown.subParser('encodeCode')(codeblock);\n    codeblock = showdown.subParser('detab')(codeblock);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing newlines\n\n    if (options.omitExtraWLInCodeBlocks) {\n      end = '';\n    }\n\n    codeblock = '<pre><code>' + codeblock + end + '</code></pre>';\n\n    return showdown.subParser('hashBlock')(codeblock, options, globals) + nextChar;\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  text = globals.converter._dispatch('codeBlocks.after', text, options, globals);\n  return text;\n});\n\n/**\n *\n *   *  Backtick quotes are used for <code></code> spans.\n *\n *   *  You can use multiple backticks as the delimiters if you want to\n *     include literal backticks in the code span. So, this input:\n *\n *         Just type ``foo `bar` baz`` at the prompt.\n *\n *       Will translate to:\n *\n *         <p>Just type <code>foo `bar` baz</code> at the prompt.</p>\n *\n *    There's no arbitrary limit to the number of backticks you\n *    can use as delimters. If you need three consecutive backticks\n *    in your code, use four for delimiters, etc.\n *\n *  *  You can use spaces to get literal backticks at the edges:\n *\n *         ... type `` `bar` `` ...\n *\n *       Turns to:\n *\n *         ... type <code>`bar`</code> ...\n */\nshowdown.subParser('codeSpans', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('codeSpans.before', text, options, globals);\n\n  /*\n   text = text.replace(/\n   (^|[^\\\\])\t\t\t\t\t// Character before opening ` can't be a backslash\n   (`+)\t\t\t\t\t\t// $2 = Opening run of `\n   (\t\t\t\t\t\t\t// $3 = The code block\n   [^\\r]*?\n   [^`]\t\t\t\t\t// attacklab: work around lack of lookbehind\n   )\n   \\2\t\t\t\t\t\t\t// Matching closer\n   (?!`)\n   /gm, function(){...});\n   */\n\n  if (typeof(text) === 'undefined') {\n    text = '';\n  }\n  text = text.replace(/(^|[^\\\\])(`+)([^\\r]*?[^`])\\2(?!`)/gm,\n    function (wholeMatch, m1, m2, m3) {\n      var c = m3;\n      c = c.replace(/^([ \\t]*)/g, '');\t// leading whitespace\n      c = c.replace(/[ \\t]*$/g, '');\t// trailing whitespace\n      c = showdown.subParser('encodeCode')(c);\n      return m1 + '<code>' + c + '</code>';\n    }\n  );\n\n  text = globals.converter._dispatch('codeSpans.after', text, options, globals);\n  return text;\n});\n\n/**\n * Convert all tabs to spaces\n */\nshowdown.subParser('detab', function (text) {\n  'use strict';\n\n  // expand first n-1 tabs\n  text = text.replace(/\\t(?=\\t)/g, '    '); // g_tab_width\n\n  // replace the nth with two sentinels\n  text = text.replace(/\\t/g, '~A~B');\n\n  // use the sentinel to anchor our regex so it doesn't explode\n  text = text.replace(/~B(.+?)~A/g, function (wholeMatch, m1) {\n    var leadingText = m1,\n        numSpaces = 4 - leadingText.length % 4;  // g_tab_width\n\n    // there *must* be a better way to do this:\n    for (var i = 0; i < numSpaces; i++) {\n      leadingText += ' ';\n    }\n\n    return leadingText;\n  });\n\n  // clean up sentinels\n  text = text.replace(/~A/g, '    ');  // g_tab_width\n  text = text.replace(/~B/g, '');\n\n  return text;\n\n});\n\n/**\n * Smart processing for ampersands and angle brackets that need to be encoded.\n */\nshowdown.subParser('encodeAmpsAndAngles', function (text) {\n  'use strict';\n  // Ampersand-encoding based entirely on Nat Irons's Amputator MT plugin:\n  // http://bumppo.net/projects/amputator/\n  text = text.replace(/&(?!#?[xX]?(?:[0-9a-fA-F]+|\\w+);)/g, '&amp;');\n\n  // Encode naked <'s\n  text = text.replace(/<(?![a-z\\/?\\$!])/gi, '&lt;');\n\n  return text;\n});\n\n/**\n * Returns the string, with after processing the following backslash escape sequences.\n *\n * attacklab: The polite way to do this is with the new escapeCharacters() function:\n *\n *    text = escapeCharacters(text,\"\\\\\",true);\n *    text = escapeCharacters(text,\"`*_{}[]()>#+-.!\",true);\n *\n * ...but we're sidestepping its use of the (slow) RegExp constructor\n * as an optimization for Firefox.  This function gets called a LOT.\n */\nshowdown.subParser('encodeBackslashEscapes', function (text) {\n  'use strict';\n  text = text.replace(/\\\\(\\\\)/g, showdown.helper.escapeCharactersCallback);\n  text = text.replace(/\\\\([`*_{}\\[\\]()>#+-.!])/g, showdown.helper.escapeCharactersCallback);\n  return text;\n});\n\n/**\n * Encode/escape certain characters inside Markdown code runs.\n * The point is that in code, these characters are literals,\n * and lose their special Markdown meanings.\n */\nshowdown.subParser('encodeCode', function (text) {\n  'use strict';\n\n  // Encode all ampersands; HTML entities are not\n  // entities within a Markdown code span.\n  text = text.replace(/&/g, '&amp;');\n\n  // Do the angle bracket song and dance:\n  text = text.replace(/</g, '&lt;');\n  text = text.replace(/>/g, '&gt;');\n\n  // Now, escape characters that are magic in Markdown:\n  text = showdown.helper.escapeCharacters(text, '*_{}[]\\\\', false);\n\n  // jj the line above breaks this:\n  //---\n  //* Item\n  //   1. Subitem\n  //            special char: *\n  // ---\n\n  return text;\n});\n\n/**\n *  Input: an email address, e.g. \"foo@example.com\"\n *\n *  Output: the email address as a mailto link, with each character\n *    of the address encoded as either a decimal or hex entity, in\n *    the hopes of foiling most address harvesting spam bots. E.g.:\n *\n *    <a href=\"&#x6D;&#97;&#105;&#108;&#x74;&#111;:&#102;&#111;&#111;&#64;&#101;\n *       x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;\">&#102;&#111;&#111;\n *       &#64;&#101;x&#x61;&#109;&#x70;&#108;&#x65;&#x2E;&#99;&#111;&#109;</a>\n *\n *  Based on a filter by Matthew Wickline, posted to the BBEdit-Talk\n *  mailing list: <http://tinyurl.com/yu7ue>\n *\n */\nshowdown.subParser('encodeEmailAddress', function (addr) {\n  'use strict';\n\n  var encode = [\n    function (ch) {\n      return '&#' + ch.charCodeAt(0) + ';';\n    },\n    function (ch) {\n      return '&#x' + ch.charCodeAt(0).toString(16) + ';';\n    },\n    function (ch) {\n      return ch;\n    }\n  ];\n\n  addr = 'mailto:' + addr;\n\n  addr = addr.replace(/./g, function (ch) {\n    if (ch === '@') {\n      // this *must* be encoded. I insist.\n      ch = encode[Math.floor(Math.random() * 2)](ch);\n    } else if (ch !== ':') {\n      // leave ':' alone (to spot mailto: later)\n      var r = Math.random();\n      // roughly 10% raw, 45% hex, 45% dec\n      ch = (\n        r > 0.9 ? encode[2](ch) : r > 0.45 ? encode[1](ch) : encode[0](ch)\n      );\n    }\n    return ch;\n  });\n\n  addr = '<a href=\"' + addr + '\">' + addr + '</a>';\n  addr = addr.replace(/\">.+:/g, '\">'); // strip the mailto: from the visible part\n\n  return addr;\n});\n\n/**\n * Within tags -- meaning between < and > -- encode [\\ ` * _] so they\n * don't conflict with their use in Markdown for code, italics and strong.\n */\nshowdown.subParser('escapeSpecialCharsWithinTagAttributes', function (text) {\n  'use strict';\n\n  // Build a regex to find HTML tags and comments.  See Friedl's\n  // \"Mastering Regular Expressions\", 2nd Ed., pp. 200-201.\n  var regex = /(<[a-z\\/!$](\"[^\"]*\"|'[^']*'|[^'\">])*>|<!(--.*?--\\s*)+>)/gi;\n\n  text = text.replace(regex, function (wholeMatch) {\n    var tag = wholeMatch.replace(/(.)<\\/?code>(?=.)/g, '$1`');\n    tag = showdown.helper.escapeCharacters(tag, '\\\\`*_', false);\n    return tag;\n  });\n\n  return text;\n});\n\n/**\n * Handle github codeblocks prior to running HashHTML so that\n * HTML contained within the codeblock gets escaped properly\n * Example:\n * ```ruby\n *     def hello_world(x)\n *       puts \"Hello, #{x}\"\n *     end\n * ```\n */\nshowdown.subParser('githubCodeBlocks', function (text, options, globals) {\n  'use strict';\n\n  // early exit if option is not enabled\n  if (!options.ghCodeBlocks) {\n    return text;\n  }\n\n  text = globals.converter._dispatch('githubCodeBlocks.before', text, options, globals);\n\n  text += '~0';\n\n  text = text.replace(/(?:^|\\n)```(.*)\\n([\\s\\S]*?)\\n```/g, function (wholeMatch, language, codeblock) {\n    var end = (options.omitExtraWLInCodeBlocks) ? '' : '\\n';\n\n    // First parse the github code block\n    codeblock = showdown.subParser('encodeCode')(codeblock);\n    codeblock = showdown.subParser('detab')(codeblock);\n    codeblock = codeblock.replace(/^\\n+/g, ''); // trim leading newlines\n    codeblock = codeblock.replace(/\\n+$/g, ''); // trim trailing whitespace\n\n    codeblock = '<pre><code' + (language ? ' class=\"' + language + ' language-' + language + '\"' : '') + '>' + codeblock + end + '</code></pre>';\n\n    codeblock = showdown.subParser('hashBlock')(codeblock, options, globals);\n\n    // Since GHCodeblocks can be false positives, we need to\n    // store the primitive text and the parsed text in a global var,\n    // and then return a token\n    return '\\n\\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  return globals.converter._dispatch('githubCodeBlocks.after', text, options, globals);\n});\n\nshowdown.subParser('hashBlock', function (text, options, globals) {\n  'use strict';\n  text = text.replace(/(^\\n+|\\n+$)/g, '');\n  return '\\n\\n~K' + (globals.gHtmlBlocks.push(text) - 1) + 'K\\n\\n';\n});\n\nshowdown.subParser('hashElement', function (text, options, globals) {\n  'use strict';\n\n  return function (wholeMatch, m1) {\n    var blockText = m1;\n\n    // Undo double lines\n    blockText = blockText.replace(/\\n\\n/g, '\\n');\n    blockText = blockText.replace(/^\\n/, '');\n\n    // strip trailing blank lines\n    blockText = blockText.replace(/\\n+$/g, '');\n\n    // Replace the element text with a marker (\"~KxK\" where x is its key)\n    blockText = '\\n\\n~K' + (globals.gHtmlBlocks.push(blockText) - 1) + 'K\\n\\n';\n\n    return blockText;\n  };\n});\n\nshowdown.subParser('hashHTMLBlocks', function (text, options, globals) {\n  'use strict';\n\n  var blockTags = [\n      'pre',\n      'div',\n      'h1',\n      'h2',\n      'h3',\n      'h4',\n      'h5',\n      'h6',\n      'blockquote',\n      'table',\n      'dl',\n      'ol',\n      'ul',\n      'script',\n      'noscript',\n      'form',\n      'fieldset',\n      'iframe',\n      'math',\n      'style',\n      'section',\n      'header',\n      'footer',\n      'nav',\n      'article',\n      'aside',\n      'address',\n      'audio',\n      'canvas',\n      'figure',\n      'hgroup',\n      'output',\n      'video',\n      'p'\n    ],\n    repFunc = function (wholeMatch, match, left, right) {\n      var txt = wholeMatch;\n      // check if this html element is marked as markdown\n      // if so, it's contents should be parsed as markdown\n      if (left.search(/\\bmarkdown\\b/) !== -1) {\n        txt = left + globals.converter.makeHtml(match) + right;\n      }\n      return '\\n\\n~K' + (globals.gHtmlBlocks.push(txt) - 1) + 'K\\n\\n';\n    };\n\n  for (var i = 0; i < blockTags.length; ++i) {\n    text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\\\t){0,3}<' + blockTags[i] + '\\\\b[^>]*>', '</' + blockTags[i] + '>', 'gim');\n  }\n\n  // HR SPECIAL CASE\n  text = text.replace(/(\\n[ ]{0,3}(<(hr)\\b([^<>])*?\\/?>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // Special case for standalone HTML comments:\n  text = text.replace(/(<!--[\\s\\S]*?-->)/g,\n    showdown.subParser('hashElement')(text, options, globals));\n\n  // PHP and ASP-style processor instructions (<?...?> and <%...%>)\n  text = text.replace(/(?:\\n\\n)([ ]{0,3}(?:<([?%])[^\\r]*?\\2>)[ \\t]*(?=\\n{2,}))/g,\n    showdown.subParser('hashElement')(text, options, globals));\n  return text;\n});\n\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashHTMLSpans', function (text, config, globals) {\n  'use strict';\n\n  var matches = showdown.helper.matchRecursiveRegExp(text, '<code\\\\b[^>]*>', '</code>', 'gi');\n\n  for (var i = 0; i < matches.length; ++i) {\n    text = text.replace(matches[i][0], '~L' + (globals.gHtmlSpans.push(matches[i][0]) - 1) + 'L');\n  }\n  return text;\n});\n\n/**\n * Unhash HTML spans\n */\nshowdown.subParser('unhashHTMLSpans', function (text, config, globals) {\n  'use strict';\n\n  for (var i = 0; i < globals.gHtmlSpans.length; ++i) {\n    text = text.replace('~L' + i + 'L', globals.gHtmlSpans[i]);\n  }\n\n  return text;\n});\n\n/**\n * Hash span elements that should not be parsed as markdown\n */\nshowdown.subParser('hashPreCodeTags', function (text, config, globals) {\n  'use strict';\n\n  var repFunc = function (wholeMatch, match, left, right) {\n    // encode html entities\n    var codeblock = left + showdown.subParser('encodeCode')(match) + right;\n    return '\\n\\n~G' + (globals.ghCodeBlocks.push({text: wholeMatch, codeblock: codeblock}) - 1) + 'G\\n\\n';\n  };\n\n  text = showdown.helper.replaceRecursiveRegExp(text, repFunc, '^(?: |\\\\t){0,3}<pre\\\\b[^>]*>\\\\s*<code\\\\b[^>]*>', '^(?: |\\\\t){0,3}</code>\\\\s*</pre>', 'gim');\n  return text;\n});\n\nshowdown.subParser('headers', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('headers.before', text, options, globals);\n\n  var prefixHeader = options.prefixHeaderId,\n      headerLevelStart = (isNaN(parseInt(options.headerLevelStart))) ? 1 : parseInt(options.headerLevelStart),\n\n  // Set text-style headers:\n  //\tHeader 1\n  //\t========\n  //\n  //\tHeader 2\n  //\t--------\n  //\n      setextRegexH1 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n={2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n=+[ \\t]*\\n+/gm,\n      setextRegexH2 = (options.smoothLivePreview) ? /^(.+)[ \\t]*\\n-{2,}[ \\t]*\\n+/gm : /^(.+)[ \\t]*\\n-+[ \\t]*\\n+/gm;\n\n  text = text.replace(setextRegexH1, function (wholeMatch, m1) {\n\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart,\n        hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  text = text.replace(setextRegexH2, function (matchFound, m1) {\n    var spanGamut = showdown.subParser('spanGamut')(m1, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m1) + '\"',\n        hLevel = headerLevelStart + 1,\n      hashBlock = '<h' + hLevel + hID + '>' + spanGamut + '</h' + hLevel + '>';\n    return showdown.subParser('hashBlock')(hashBlock, options, globals);\n  });\n\n  // atx-style headers:\n  //  # Header 1\n  //  ## Header 2\n  //  ## Header 2 with closing hashes ##\n  //  ...\n  //  ###### Header 6\n  //\n  text = text.replace(/^(#{1,6})[ \\t]*(.+?)[ \\t]*#*\\n+/gm, function (wholeMatch, m1, m2) {\n    var span = showdown.subParser('spanGamut')(m2, options, globals),\n        hID = (options.noHeaderId) ? '' : ' id=\"' + headerId(m2) + '\"',\n        hLevel = headerLevelStart - 1 + m1.length,\n        header = '<h' + hLevel + hID + '>' + span + '</h' + hLevel + '>';\n\n    return showdown.subParser('hashBlock')(header, options, globals);\n  });\n\n  function headerId(m) {\n    var title, escapedId = m.replace(/[^\\w]/g, '').toLowerCase();\n\n    if (globals.hashLinkCounts[escapedId]) {\n      title = escapedId + '-' + (globals.hashLinkCounts[escapedId]++);\n    } else {\n      title = escapedId;\n      globals.hashLinkCounts[escapedId] = 1;\n    }\n\n    // Prefix id to prevent causing inadvertent pre-existing style matches.\n    if (prefixHeader === true) {\n      prefixHeader = 'section';\n    }\n\n    if (showdown.helper.isString(prefixHeader)) {\n      return prefixHeader + title;\n    }\n    return title;\n  }\n\n  text = globals.converter._dispatch('headers.after', text, options, globals);\n  return text;\n});\n\n/**\n * Turn Markdown image shortcuts into <img> tags.\n */\nshowdown.subParser('images', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('images.before', text, options, globals);\n\n  var inlineRegExp    = /!\\[(.*?)]\\s?\\([ \\t]*()<?(\\S+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*(?:(['\"])(.*?)\\6[ \\t]*)?\\)/g,\n      referenceRegExp = /!\\[([^\\]]*?)] ?(?:\\n *)?\\[(.*?)]()()()()()/g;\n\n  function writeImageTag (wholeMatch, altText, linkId, url, width, height, m5, title) {\n\n    var gUrls   = globals.gUrls,\n        gTitles = globals.gTitles,\n        gDims   = globals.gDimensions;\n\n    linkId = linkId.toLowerCase();\n\n    if (!title) {\n      title = '';\n    }\n\n    if (url === '' || url === null) {\n      if (linkId === '' || linkId === null) {\n        // lower-case and turn embedded newlines into spaces\n        linkId = altText.toLowerCase().replace(/ ?\\n/g, ' ');\n      }\n      url = '#' + linkId;\n\n      if (!showdown.helper.isUndefined(gUrls[linkId])) {\n        url = gUrls[linkId];\n        if (!showdown.helper.isUndefined(gTitles[linkId])) {\n          title = gTitles[linkId];\n        }\n        if (!showdown.helper.isUndefined(gDims[linkId])) {\n          width = gDims[linkId].width;\n          height = gDims[linkId].height;\n        }\n      } else {\n        return wholeMatch;\n      }\n    }\n\n    altText = altText.replace(/\"/g, '&quot;');\n    altText = showdown.helper.escapeCharacters(altText, '*_', false);\n    url = showdown.helper.escapeCharacters(url, '*_', false);\n    var result = '<img src=\"' + url + '\" alt=\"' + altText + '\"';\n\n    if (title) {\n      title = title.replace(/\"/g, '&quot;');\n      title = showdown.helper.escapeCharacters(title, '*_', false);\n      result += ' title=\"' + title + '\"';\n    }\n\n    if (width && height) {\n      width  = (width === '*') ? 'auto' : width;\n      height = (height === '*') ? 'auto' : height;\n\n      result += ' width=\"' + width + '\"';\n      result += ' height=\"' + height + '\"';\n    }\n\n    result += ' />';\n    return result;\n  }\n\n  // First, handle reference-style labeled images: ![alt text][id]\n  text = text.replace(referenceRegExp, writeImageTag);\n\n  // Next, handle inline images:  ![alt text](url =<width>x<height> \"optional title\")\n  text = text.replace(inlineRegExp, writeImageTag);\n\n  text = globals.converter._dispatch('images.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('italicsAndBold', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('italicsAndBold.before', text, options, globals);\n\n  if (options.literalMidWordUnderscores) {\n    //underscores\n    // Since we are consuming a \\s character, we need to add it\n    text = text.replace(/(^|\\s|>|\\b)__(?=\\S)([\\s\\S]+?)__(?=\\b|<|\\s|$)/gm, '$1<strong>$2</strong>');\n    text = text.replace(/(^|\\s|>|\\b)_(?=\\S)([\\s\\S]+?)_(?=\\b|<|\\s|$)/gm, '$1<em>$2</em>');\n    //asterisks\n    text = text.replace(/(\\*\\*)(?=\\S)([^\\r]*?\\S[*]*)\\1/g, '<strong>$2</strong>');\n    text = text.replace(/(\\*)(?=\\S)([^\\r]*?\\S)\\1/g, '<em>$2</em>');\n\n  } else {\n    // <strong> must go first:\n    text = text.replace(/(\\*\\*|__)(?=\\S)([^\\r]*?\\S[*_]*)\\1/g, '<strong>$2</strong>');\n    text = text.replace(/(\\*|_)(?=\\S)([^\\r]*?\\S)\\1/g, '<em>$2</em>');\n  }\n\n  text = globals.converter._dispatch('italicsAndBold.after', text, options, globals);\n  return text;\n});\n\n/**\n * Form HTML ordered (numbered) and unordered (bulleted) lists.\n */\nshowdown.subParser('lists', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('lists.before', text, options, globals);\n  /**\n   * Process the contents of a single ordered or unordered list, splitting it\n   * into individual list items.\n   * @param {string} listStr\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function processListItems (listStr, trimTrailing) {\n    // The $g_list_level global keeps track of when we're inside a list.\n    // Each time we enter a list, we increment it; when we leave a list,\n    // we decrement. If it's zero, we're not in a list anymore.\n    //\n    // We do this because when we're not inside a list, we want to treat\n    // something like this:\n    //\n    //    I recommend upgrading to version\n    //    8. Oops, now this line is treated\n    //    as a sub-list.\n    //\n    // As a single paragraph, despite the fact that the second line starts\n    // with a digit-period-space sequence.\n    //\n    // Whereas when we're inside a list (or sub-list), that line will be\n    // treated as the start of a sub-list. What a kludge, huh? This is\n    // an aspect of Markdown's syntax that's hard to parse perfectly\n    // without resorting to mind-reading. Perhaps the solution is to\n    // change the syntax rules such that sub-lists must start with a\n    // starting cardinal number; e.g. \"1.\" or \"a.\".\n    globals.gListLevel++;\n\n    // trim trailing blank lines:\n    listStr = listStr.replace(/\\n{2,}$/, '\\n');\n\n    // attacklab: add sentinel to emulate \\z\n    listStr += '~0';\n\n    var rgx = /(\\n)?(^[ \\t]*)([*+-]|\\d+[.])[ \\t]+((\\[(x|X| )?])?[ \\t]*[^\\r]+?(\\n{1,2}))(?=\\n*(~0|\\2([*+-]|\\d+[.])[ \\t]+))/gm,\n        isParagraphed = (/\\n[ \\t]*\\n(?!~0)/.test(listStr));\n\n    listStr = listStr.replace(rgx, function (wholeMatch, m1, m2, m3, m4, taskbtn, checked) {\n      checked = (checked && checked.trim() !== '');\n      var item = showdown.subParser('outdent')(m4, options, globals),\n          bulletStyle = '';\n\n      // Support for github tasklists\n      if (taskbtn && options.tasklists) {\n        bulletStyle = ' class=\"task-list-item\" style=\"list-style-type: none;\"';\n        item = item.replace(/^[ \\t]*\\[(x|X| )?]/m, function () {\n          var otp = '<input type=\"checkbox\" disabled style=\"margin: 0px 0.35em 0.25em -1.6em; vertical-align: middle;\"';\n          if (checked) {\n            otp += ' checked';\n          }\n          otp += '>';\n          return otp;\n        });\n      }\n      // m1 - Leading line or\n      // Has a double return (multi paragraph) or\n      // Has sublist\n      if (m1 || (item.search(/\\n{2,}/) > -1)) {\n        item = showdown.subParser('githubCodeBlocks')(item, options, globals);\n        item = showdown.subParser('blockGamut')(item, options, globals);\n      } else {\n        // Recursion for sub-lists:\n        item = showdown.subParser('lists')(item, options, globals);\n        item = item.replace(/\\n$/, ''); // chomp(item)\n        if (isParagraphed) {\n          item = showdown.subParser('paragraphs')(item, options, globals);\n        } else {\n          item = showdown.subParser('spanGamut')(item, options, globals);\n        }\n      }\n      item =  '\\n<li' + bulletStyle + '>' + item + '</li>\\n';\n      return item;\n    });\n\n    // attacklab: strip sentinel\n    listStr = listStr.replace(/~0/g, '');\n\n    globals.gListLevel--;\n\n    if (trimTrailing) {\n      listStr = listStr.replace(/\\s+$/, '');\n    }\n\n    return listStr;\n  }\n\n  /**\n   * Check and parse consecutive lists (better fix for issue #142)\n   * @param {string} list\n   * @param {string} listType\n   * @param {boolean} trimTrailing\n   * @returns {string}\n   */\n  function parseConsecutiveLists(list, listType, trimTrailing) {\n    // check if we caught 2 or more consecutive lists by mistake\n    // we use the counterRgx, meaning if listType is UL we look for UL and vice versa\n    var counterRxg = (listType === 'ul') ? /^ {0,2}\\d+\\.[ \\t]/gm : /^ {0,2}[*+-][ \\t]/gm,\n      subLists = [],\n      result = '';\n\n    if (list.search(counterRxg) !== -1) {\n      (function parseCL(txt) {\n        var pos = txt.search(counterRxg);\n        if (pos !== -1) {\n          // slice\n          result += '\\n\\n<' + listType + '>' + processListItems(txt.slice(0, pos), !!trimTrailing) + '</' + listType + '>\\n\\n';\n\n          // invert counterType and listType\n          listType = (listType === 'ul') ? 'ol' : 'ul';\n          counterRxg = (listType === 'ul') ? /^ {0,2}\\d+\\.[ \\t]/gm : /^ {0,2}[*+-][ \\t]/gm;\n\n          //recurse\n          parseCL(txt.slice(pos));\n        } else {\n          result += '\\n\\n<' + listType + '>' + processListItems(txt, !!trimTrailing) + '</' + listType + '>\\n\\n';\n        }\n      })(list);\n      for (var i = 0; i < subLists.length; ++i) {\n\n      }\n    } else {\n      result = '\\n\\n<' + listType + '>' + processListItems(list, !!trimTrailing) + '</' + listType + '>\\n\\n';\n    }\n\n    return result;\n  }\n\n  // attacklab: add sentinel to hack around khtml/safari bug:\n  // http://bugs.webkit.org/show_bug.cgi?id=11231\n  text += '~0';\n\n  // Re-usable pattern to match any entire ul or ol list:\n  var wholeList = /^(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n\n  if (globals.gListLevel) {\n    text = text.replace(wholeList, function (wholeMatch, list, m2) {\n      var listType = (m2.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n      return parseConsecutiveLists(list, listType, true);\n    });\n  } else {\n    wholeList = /(\\n\\n|^\\n?)(([ ]{0,3}([*+-]|\\d+[.])[ \\t]+)[^\\r]+?(~0|\\n{2,}(?=\\S)(?![ \\t]*(?:[*+-]|\\d+[.])[ \\t]+)))/gm;\n    //wholeList = /(\\n\\n|^\\n?)( {0,3}([*+-]|\\d+\\.)[ \\t]+[\\s\\S]+?)(?=(~0)|(\\n\\n(?!\\t| {2,}| {0,3}([*+-]|\\d+\\.)[ \\t])))/g;\n    text = text.replace(wholeList, function (wholeMatch, m1, list, m3) {\n\n      var listType = (m3.search(/[*+-]/g) > -1) ? 'ul' : 'ol';\n      return parseConsecutiveLists(list, listType);\n    });\n  }\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  text = globals.converter._dispatch('lists.after', text, options, globals);\n  return text;\n});\n\n/**\n * Remove one level of line-leading tabs or spaces\n */\nshowdown.subParser('outdent', function (text) {\n  'use strict';\n\n  // attacklab: hack around Konqueror 3.5.4 bug:\n  // \"----------bug\".replace(/^-/g,\"\") == \"bug\"\n  text = text.replace(/^(\\t|[ ]{1,4})/gm, '~0'); // attacklab: g_tab_width\n\n  // attacklab: clean up hack\n  text = text.replace(/~0/g, '');\n\n  return text;\n});\n\n/**\n *\n */\nshowdown.subParser('paragraphs', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('paragraphs.before', text, options, globals);\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n\n  var grafs = text.split(/\\n{2,}/g),\n      grafsOut = [],\n      end = grafs.length; // Wrap <p> tags\n\n  for (var i = 0; i < end; i++) {\n    var str = grafs[i];\n    // if this is an HTML marker, copy it\n    if (str.search(/~(K|G)(\\d+)\\1/g) >= 0) {\n      grafsOut.push(str);\n    } else {\n      str = showdown.subParser('spanGamut')(str, options, globals);\n      str = str.replace(/^([ \\t]*)/g, '<p>');\n      str += '</p>';\n      grafsOut.push(str);\n    }\n  }\n\n  /** Unhashify HTML blocks */\n  end = grafsOut.length;\n  for (i = 0; i < end; i++) {\n    var blockText = '',\n        grafsOutIt = grafsOut[i],\n        codeFlag = false;\n    // if this is a marker for an html block...\n    while (grafsOutIt.search(/~(K|G)(\\d+)\\1/) >= 0) {\n      var delim = RegExp.$1,\n          num   = RegExp.$2;\n\n      if (delim === 'K') {\n        blockText = globals.gHtmlBlocks[num];\n      } else {\n        // we need to check if ghBlock is a false positive\n        if (codeFlag) {\n          // use encoded version of all text\n          blockText = showdown.subParser('encodeCode')(globals.ghCodeBlocks[num].text);\n        } else {\n          blockText = globals.ghCodeBlocks[num].codeblock;\n        }\n      }\n      blockText = blockText.replace(/\\$/g, '$$$$'); // Escape any dollar signs\n\n      grafsOutIt = grafsOutIt.replace(/(\\n\\n)?~(K|G)\\d+\\2(\\n\\n)?/, blockText);\n      // Check if grafsOutIt is a pre->code\n      if (/^<pre\\b[^>]*>\\s*<code\\b[^>]*>/.test(grafsOutIt)) {\n        codeFlag = true;\n      }\n    }\n    grafsOut[i] = grafsOutIt;\n  }\n  text = grafsOut.join('\\n\\n');\n  // Strip leading and trailing lines:\n  text = text.replace(/^\\n+/g, '');\n  text = text.replace(/\\n+$/g, '');\n  return globals.converter._dispatch('paragraphs.after', text, options, globals);\n});\n\n/**\n * Run extension\n */\nshowdown.subParser('runExtension', function (ext, text, options, globals) {\n  'use strict';\n\n  if (ext.filter) {\n    text = ext.filter(text, globals.converter, options);\n\n  } else if (ext.regex) {\n    // TODO remove this when old extension loading mechanism is deprecated\n    var re = ext.regex;\n    if (!re instanceof RegExp) {\n      re = new RegExp(re, 'g');\n    }\n    text = text.replace(re, ext.replace);\n  }\n\n  return text;\n});\n\n/**\n * These are all the transformations that occur *within* block-level\n * tags like paragraphs, headers, and list items.\n */\nshowdown.subParser('spanGamut', function (text, options, globals) {\n  'use strict';\n\n  text = globals.converter._dispatch('spanGamut.before', text, options, globals);\n  text = showdown.subParser('codeSpans')(text, options, globals);\n  text = showdown.subParser('escapeSpecialCharsWithinTagAttributes')(text, options, globals);\n  text = showdown.subParser('encodeBackslashEscapes')(text, options, globals);\n\n  // Process anchor and image tags. Images must come first,\n  // because ![foo][f] looks like an anchor.\n  text = showdown.subParser('images')(text, options, globals);\n  text = showdown.subParser('anchors')(text, options, globals);\n\n  // Make links out of things like `<http://example.com/>`\n  // Must come after _DoAnchors(), because you can use < and >\n  // delimiters in inline links like [this](<url>).\n  text = showdown.subParser('autoLinks')(text, options, globals);\n  text = showdown.subParser('encodeAmpsAndAngles')(text, options, globals);\n  text = showdown.subParser('italicsAndBold')(text, options, globals);\n  text = showdown.subParser('strikethrough')(text, options, globals);\n\n  // Do hard breaks:\n  text = text.replace(/  +\\n/g, ' <br />\\n');\n\n  text = globals.converter._dispatch('spanGamut.after', text, options, globals);\n  return text;\n});\n\nshowdown.subParser('strikethrough', function (text, options, globals) {\n  'use strict';\n\n  if (options.strikethrough) {\n    text = globals.converter._dispatch('strikethrough.before', text, options, globals);\n    text = text.replace(/(?:~T){2}([\\s\\S]+?)(?:~T){2}/g, '<del>$1</del>');\n    text = globals.converter._dispatch('strikethrough.after', text, options, globals);\n  }\n\n  return text;\n});\n\n/**\n * Strip any lines consisting only of spaces and tabs.\n * This makes subsequent regexs easier to write, because we can\n * match consecutive blank lines with /\\n+/ instead of something\n * contorted like /[ \\t]*\\n+/\n */\nshowdown.subParser('stripBlankLines', function (text) {\n  'use strict';\n  return text.replace(/^[ \\t]+$/mg, '');\n});\n\n/**\n * Strips link definitions from text, stores the URLs and titles in\n * hash references.\n * Link defs are in the form: ^[id]: url \"optional title\"\n *\n * ^[ ]{0,3}\\[(.+)\\]: // id = $1  attacklab: g_tab_width - 1\n * [ \\t]*\n * \\n?                  // maybe *one* newline\n * [ \\t]*\n * <?(\\S+?)>?          // url = $2\n * [ \\t]*\n * \\n?                // maybe one newline\n * [ \\t]*\n * (?:\n * (\\n*)              // any lines skipped = $3 attacklab: lookbehind removed\n * [\"(]\n * (.+?)              // title = $4\n * [\")]\n * [ \\t]*\n * )?                 // title is optional\n * (?:\\n+|$)\n * /gm,\n * function(){...});\n *\n */\nshowdown.subParser('stripLinkDefinitions', function (text, options, globals) {\n  'use strict';\n\n  var regex = /^ {0,3}\\[(.+)]:[ \\t]*\\n?[ \\t]*<?(\\S+?)>?(?: =([*\\d]+[A-Za-z%]{0,4})x([*\\d]+[A-Za-z%]{0,4}))?[ \\t]*\\n?[ \\t]*(?:(\\n*)[\"|'(](.+?)[\"|')][ \\t]*)?(?:\\n+|(?=~0))/gm;\n\n  // attacklab: sentinel workarounds for lack of \\A and \\Z, safari\\khtml bug\n  text += '~0';\n\n  text = text.replace(regex, function (wholeMatch, linkId, url, width, height, blankLines, title) {\n    linkId = linkId.toLowerCase();\n    globals.gUrls[linkId] = showdown.subParser('encodeAmpsAndAngles')(url);  // Link IDs are case-insensitive\n\n    if (blankLines) {\n      // Oops, found blank lines, so it's not a title.\n      // Put back the parenthetical statement we stole.\n      return blankLines + title;\n\n    } else {\n      if (title) {\n        globals.gTitles[linkId] = title.replace(/\"|'/g, '&quot;');\n      }\n      if (options.parseImgDimensions && width && height) {\n        globals.gDimensions[linkId] = {\n          width:  width,\n          height: height\n        };\n      }\n    }\n    // Completely remove the definition from the text\n    return '';\n  });\n\n  // attacklab: strip sentinel\n  text = text.replace(/~0/, '');\n\n  return text;\n});\n\nshowdown.subParser('tables', function (text, options, globals) {\n  'use strict';\n\n  if (!options.tables) {\n    return text;\n  }\n\n  var tableRgx = /^[ \\t]{0,3}\\|?.+\\|.+\\n[ \\t]{0,3}\\|?[ \\t]*:?[ \\t]*(?:-|=){2,}[ \\t]*:?[ \\t]*\\|[ \\t]*:?[ \\t]*(?:-|=){2,}[\\s\\S]+?(?:\\n\\n|~0)/gm;\n\n  function parseStyles(sLine) {\n    if (/^:[ \\t]*--*$/.test(sLine)) {\n      return ' style=\"text-align:left;\"';\n    } else if (/^--*[ \\t]*:[ \\t]*$/.test(sLine)) {\n      return ' style=\"text-align:right;\"';\n    } else if (/^:[ \\t]*--*[ \\t]*:$/.test(sLine)) {\n      return ' style=\"text-align:center;\"';\n    } else {\n      return '';\n    }\n  }\n\n  function parseHeaders(header, style) {\n    var id = '';\n    header = header.trim();\n    if (options.tableHeaderId) {\n      id = ' id=\"' + header.replace(/ /g, '_').toLowerCase() + '\"';\n    }\n    header = showdown.subParser('spanGamut')(header, options, globals);\n\n    return '<th' + id + style + '>' + header + '</th>\\n';\n  }\n\n  function parseCells(cell, style) {\n    var subText = showdown.subParser('spanGamut')(cell, options, globals);\n    return '<td' + style + '>' + subText + '</td>\\n';\n  }\n\n  function buildTable(headers, cells) {\n    var tb = '<table>\\n<thead>\\n<tr>\\n',\n        tblLgn = headers.length;\n\n    for (var i = 0; i < tblLgn; ++i) {\n      tb += headers[i];\n    }\n    tb += '</tr>\\n</thead>\\n<tbody>\\n';\n\n    for (i = 0; i < cells.length; ++i) {\n      tb += '<tr>\\n';\n      for (var ii = 0; ii < tblLgn; ++ii) {\n        tb += cells[i][ii];\n      }\n      tb += '</tr>\\n';\n    }\n    tb += '</tbody>\\n</table>\\n';\n    return tb;\n  }\n\n  text = globals.converter._dispatch('tables.before', text, options, globals);\n\n  text = text.replace(tableRgx, function (rawTable) {\n\n    var i, tableLines = rawTable.split('\\n');\n\n    // strip wrong first and last column if wrapped tables are used\n    for (i = 0; i < tableLines.length; ++i) {\n      if (/^[ \\t]{0,3}\\|/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/^[ \\t]{0,3}\\|/, '');\n      }\n      if (/\\|[ \\t]*$/.test(tableLines[i])) {\n        tableLines[i] = tableLines[i].replace(/\\|[ \\t]*$/, '');\n      }\n    }\n\n    var rawHeaders = tableLines[0].split('|').map(function (s) { return s.trim();}),\n        rawStyles = tableLines[1].split('|').map(function (s) { return s.trim();}),\n        rawCells = [],\n        headers = [],\n        styles = [],\n        cells = [];\n\n    tableLines.shift();\n    tableLines.shift();\n\n    for (i = 0; i < tableLines.length; ++i) {\n      if (tableLines[i].trim() === '') {\n        continue;\n      }\n      rawCells.push(\n        tableLines[i]\n          .split('|')\n          .map(function (s) {\n            return s.trim();\n          })\n      );\n    }\n\n    if (rawHeaders.length < rawStyles.length) {\n      return rawTable;\n    }\n\n    for (i = 0; i < rawStyles.length; ++i) {\n      styles.push(parseStyles(rawStyles[i]));\n    }\n\n    for (i = 0; i < rawHeaders.length; ++i) {\n      if (showdown.helper.isUndefined(styles[i])) {\n        styles[i] = '';\n      }\n      headers.push(parseHeaders(rawHeaders[i], styles[i]));\n    }\n\n    for (i = 0; i < rawCells.length; ++i) {\n      var row = [];\n      for (var ii = 0; ii < headers.length; ++ii) {\n        if (showdown.helper.isUndefined(rawCells[i][ii])) {\n\n        }\n        row.push(parseCells(rawCells[i][ii], styles[ii]));\n      }\n      cells.push(row);\n    }\n\n    return buildTable(headers, cells);\n  });\n\n  text = globals.converter._dispatch('tables.after', text, options, globals);\n\n  return text;\n});\n\n/**\n * Swap back in all the special characters we've hidden.\n */\nshowdown.subParser('unescapeSpecialChars', function (text) {\n  'use strict';\n\n  text = text.replace(/~E(\\d+)E/g, function (wholeMatch, m1) {\n    var charCodeToReplace = parseInt(m1);\n    return String.fromCharCode(charCodeToReplace);\n  });\n  return text;\n});\nmodule.exports = showdown;\n"
  },
  {
    "path": "renard-wx/lib/wxParse/wxDiscode.js",
    "content": "// HTML 支持的数学符号\nfunction strNumDiscode(str){\n    str = str.replace(/&forall;/g, '∀');\n    str = str.replace(/&part;/g, '∂');\n    str = str.replace(/&exists;/g, '∃');\n    str = str.replace(/&empty;/g, '∅');\n    str = str.replace(/&nabla;/g, '∇');\n    str = str.replace(/&isin;/g, '∈');\n    str = str.replace(/&notin;/g, '∉');\n    str = str.replace(/&ni;/g, '∋');\n    str = str.replace(/&prod;/g, '∏');\n    str = str.replace(/&sum;/g, '∑');\n    str = str.replace(/&minus;/g, '−');\n    str = str.replace(/&lowast;/g, '∗');\n    str = str.replace(/&radic;/g, '√');\n    str = str.replace(/&prop;/g, '∝');\n    str = str.replace(/&infin;/g, '∞');\n    str = str.replace(/&ang;/g, '∠');\n    str = str.replace(/&and;/g, '∧');\n    str = str.replace(/&or;/g, '∨');\n    str = str.replace(/&cap;/g, '∩');\n    str = str.replace(/&cap;/g, '∪');\n    str = str.replace(/&int;/g, '∫');\n    str = str.replace(/&there4;/g, '∴');\n    str = str.replace(/&sim;/g, '∼');\n    str = str.replace(/&cong;/g, '≅');\n    str = str.replace(/&asymp;/g, '≈');\n    str = str.replace(/&ne;/g, '≠');\n    str = str.replace(/&le;/g, '≤');\n    str = str.replace(/&ge;/g, '≥');\n    str = str.replace(/&sub;/g, '⊂');\n    str = str.replace(/&sup;/g, '⊃');\n    str = str.replace(/&nsub;/g, '⊄');\n    str = str.replace(/&sube;/g, '⊆');\n    str = str.replace(/&supe;/g, '⊇');\n    str = str.replace(/&oplus;/g, '⊕');\n    str = str.replace(/&otimes;/g, '⊗');\n    str = str.replace(/&perp;/g, '⊥');\n    str = str.replace(/&sdot;/g, '⋅');\n    return str;\n}\n\n//HTML 支持的希腊字母\nfunction strGreeceDiscode(str){\n    str = str.replace(/&Alpha;/g, 'Α');\n    str = str.replace(/&Beta;/g, 'Β');\n    str = str.replace(/&Gamma;/g, 'Γ');\n    str = str.replace(/&Delta;/g, 'Δ');\n    str = str.replace(/&Epsilon;/g, 'Ε');\n    str = str.replace(/&Zeta;/g, 'Ζ');\n    str = str.replace(/&Eta;/g, 'Η');\n    str = str.replace(/&Theta;/g, 'Θ');\n    str = str.replace(/&Iota;/g, 'Ι');\n    str = str.replace(/&Kappa;/g, 'Κ');\n    str = str.replace(/&Lambda;/g, 'Λ');\n    str = str.replace(/&Mu;/g, 'Μ');\n    str = str.replace(/&Nu;/g, 'Ν');\n    str = str.replace(/&Xi;/g, 'Ν');\n    str = str.replace(/&Omicron;/g, 'Ο');\n    str = str.replace(/&Pi;/g, 'Π');\n    str = str.replace(/&Rho;/g, 'Ρ');\n    str = str.replace(/&Sigma;/g, 'Σ');\n    str = str.replace(/&Tau;/g, 'Τ');\n    str = str.replace(/&Upsilon;/g, 'Υ');\n    str = str.replace(/&Phi;/g, 'Φ');\n    str = str.replace(/&Chi;/g, 'Χ');\n    str = str.replace(/&Psi;/g, 'Ψ');\n    str = str.replace(/&Omega;/g, 'Ω');\n\n    str = str.replace(/&alpha;/g, 'α');\n    str = str.replace(/&beta;/g, 'β');\n    str = str.replace(/&gamma;/g, 'γ');\n    str = str.replace(/&delta;/g, 'δ');\n    str = str.replace(/&epsilon;/g, 'ε');\n    str = str.replace(/&zeta;/g, 'ζ');\n    str = str.replace(/&eta;/g, 'η');\n    str = str.replace(/&theta;/g, 'θ');\n    str = str.replace(/&iota;/g, 'ι');\n    str = str.replace(/&kappa;/g, 'κ');\n    str = str.replace(/&lambda;/g, 'λ');\n    str = str.replace(/&mu;/g, 'μ');\n    str = str.replace(/&nu;/g, 'ν');\n    str = str.replace(/&xi;/g, 'ξ');\n    str = str.replace(/&omicron;/g, 'ο');\n    str = str.replace(/&pi;/g, 'π');\n    str = str.replace(/&rho;/g, 'ρ');\n    str = str.replace(/&sigmaf;/g, 'ς');\n    str = str.replace(/&sigma;/g, 'σ');\n    str = str.replace(/&tau;/g, 'τ');\n    str = str.replace(/&upsilon;/g, 'υ');\n    str = str.replace(/&phi;/g, 'φ');\n    str = str.replace(/&chi;/g, 'χ');\n    str = str.replace(/&psi;/g, 'ψ');\n    str = str.replace(/&omega;/g, 'ω');\n    str = str.replace(/&thetasym;/g, 'ϑ');\n    str = str.replace(/&upsih;/g, 'ϒ');\n    str = str.replace(/&piv;/g, 'ϖ');\n    str = str.replace(/&middot;/g, '·');\n    return str;\n}\n\n// \n\nfunction strcharacterDiscode(str){\n    // 加入常用解析\n    str = str.replace(/&nbsp;/g, ' ');\n    str = str.replace(/&quot;/g, '\"');\n    str = str.replace(/&amp;/g, '&');\n    // str = str.replace(/&lt;/g, '‹');\n    // str = str.replace(/&gt;/g, '›');\n\n    str = str.replace(/&lt;/g, '<');\n    str = str.replace(/&gt;/g, '>');\n\n    return str;\n}\n\n// HTML 支持的其他实体\nfunction strOtherDiscode(str){\n    str = str.replace(/&OElig;/g, 'Œ');\n    str = str.replace(/&oelig;/g, 'œ');\n    str = str.replace(/&Scaron;/g, 'Š');\n    str = str.replace(/&scaron;/g, 'š');\n    str = str.replace(/&Yuml;/g, 'Ÿ');\n    str = str.replace(/&fnof;/g, 'ƒ');\n    str = str.replace(/&circ;/g, 'ˆ');\n    str = str.replace(/&tilde;/g, '˜');\n    str = str.replace(/&ensp;/g, '');\n    str = str.replace(/&emsp;/g, '');\n    str = str.replace(/&thinsp;/g, '');\n    str = str.replace(/&zwnj;/g, '');\n    str = str.replace(/&zwj;/g, '');\n    str = str.replace(/&lrm;/g, '');\n    str = str.replace(/&rlm;/g, '');\n    str = str.replace(/&ndash;/g, '–');\n    str = str.replace(/&mdash;/g, '—');\n    str = str.replace(/&lsquo;/g, '‘');\n    str = str.replace(/&rsquo;/g, '’');\n    str = str.replace(/&sbquo;/g, '‚');\n    str = str.replace(/&ldquo;/g, '“');\n    str = str.replace(/&rdquo;/g, '”');\n    str = str.replace(/&bdquo;/g, '„');\n    str = str.replace(/&dagger;/g, '†');\n    str = str.replace(/&Dagger;/g, '‡');\n    str = str.replace(/&bull;/g, '•');\n    str = str.replace(/&hellip;/g, '…');\n    str = str.replace(/&permil;/g, '‰');\n    str = str.replace(/&prime;/g, '′');\n    str = str.replace(/&Prime;/g, '″');\n    str = str.replace(/&lsaquo;/g, '‹');\n    str = str.replace(/&rsaquo;/g, '›');\n    str = str.replace(/&oline;/g, '‾');\n    str = str.replace(/&euro;/g, '€');\n    str = str.replace(/&trade;/g, '™');\n\n    str = str.replace(/&larr;/g, '←');\n    str = str.replace(/&uarr;/g, '↑');\n    str = str.replace(/&rarr;/g, '→');\n    str = str.replace(/&darr;/g, '↓');\n    str = str.replace(/&harr;/g, '↔');\n    str = str.replace(/&crarr;/g, '↵');\n    str = str.replace(/&lceil;/g, '⌈');\n    str = str.replace(/&rceil;/g, '⌉');\n\n    str = str.replace(/&lfloor;/g, '⌊');\n    str = str.replace(/&rfloor;/g, '⌋');\n    str = str.replace(/&loz;/g, '◊');\n    str = str.replace(/&spades;/g, '♠');\n    str = str.replace(/&clubs;/g, '♣');\n    str = str.replace(/&hearts;/g, '♥');\n\n    str = str.replace(/&diams;/g, '♦');\n\n    return str;\n}\n\nfunction strMoreDiscode(str){\n    str = str.replace(/\\r\\n/g,\"\");  \n    str = str.replace(/\\n/g,\"\");\n\n    str = str.replace(/code/g,\"wxxxcode-style\");\n    return str;\n}\n\nfunction strDiscode(str){\n    str = strNumDiscode(str);\n    str = strGreeceDiscode(str);\n    str = strcharacterDiscode(str);\n    str = strOtherDiscode(str);\n    str = strMoreDiscode(str);\n    return str;\n}\nfunction urlToHttpUrl(url,rep){\n    \n    var patt1 = new RegExp(\"^//\");\n    var result = patt1.test(url);\n    if(result){\n        url = rep+\":\"+url;\n    }\n    return  url;\n}\n\nmodule.exports = {\n    strDiscode:strDiscode,\n    urlToHttpUrl:urlToHttpUrl\n}"
  },
  {
    "path": "renard-wx/lib/wxParse/wxParse.js",
    "content": "/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\n/**\n * utils函数引入\n **/\nimport showdown from 'showdown.js';\nimport HtmlToJson from 'html2json.js';\n/**\n * 配置及公有属性\n **/\n/**\n * 主函数入口区\n **/\nfunction wxParse(bindName = 'wxParseData', type='html', data='<div class=\"color:red;\">数据不能为空</div>', target,imagePadding) {\n  var that = target;\n  var transData = {};//存放转化后的数据\n  if (type == 'html') {\n    transData = HtmlToJson.html2json(data, bindName);\n    // console.log(JSON.stringify(transData, ' ', ' '));\n  } else if (type == 'md' || type == 'markdown') {\n    var converter = new showdown.Converter();\n    var html = converter.makeHtml(data);\n    transData = HtmlToJson.html2json(html, bindName);\n    // console.log(JSON.stringify(transData, ' ', ' '));\n  }\n  transData.view = {};\n  transData.view.imagePadding = 0;\n  if(typeof(imagePadding) != 'undefined'){\n    transData.view.imagePadding = imagePadding\n  }\n  var bindData = {};\n  bindData[bindName] = transData;\n  that.setData(bindData)\n  that.wxParseImgLoad = wxParseImgLoad;\n  that.wxParseImgTap = wxParseImgTap;\n}\n// 图片点击事件\nfunction wxParseImgTap(e) {\n  var that = this;\n  var nowImgUrl = e.target.dataset.src;\n  var tagFrom = e.target.dataset.from;\n  if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {\n    wx.previewImage({\n      current: nowImgUrl, // 当前显示图片的http链接\n      urls: that.data[tagFrom].imageUrls // 需要预览的图片http链接列表\n    })\n  }\n}\n\n/**\n * 图片视觉宽高计算函数区 \n **/\nfunction wxParseImgLoad(e) {\n  var that = this;\n  var tagFrom = e.target.dataset.from;\n  var idx = e.target.dataset.idx;\n  if (typeof (tagFrom) != 'undefined' && tagFrom.length > 0) {\n    calMoreImageInfo(e, idx, that, tagFrom)\n  } \n}\n// 假循环获取计算图片视觉最佳宽高\nfunction calMoreImageInfo(e, idx, that, bindName) {\n  var temData = that.data[bindName];\n  if (temData.images.length == 0) {\n    return;\n  }\n  var temImages = temData.images;\n  //因为无法获取view宽度 需要自定义padding进行计算，稍后处理\n  var recal = wxAutoImageCal(e.detail.width, e.detail.height,that,bindName); \n  temImages[idx].width = recal.imageWidth;\n  temImages[idx].height = recal.imageheight; \n  temData.images = temImages;\n  var bindData = {};\n  bindData[bindName] = temData;\n  that.setData(bindData);\n}\n\n// 计算视觉优先的图片宽高\nfunction wxAutoImageCal(originalWidth, originalHeight,that,bindName) {\n  //获取图片的原始长宽\n  var windowWidth = 0, windowHeight = 0;\n  var autoWidth = 0, autoHeight = 0;\n  var results = {};\n  wx.getSystemInfo({\n    success: function (res) {\n      var padding = that.data[bindName].view.imagePadding;\n      windowWidth = res.windowWidth-2*padding;\n      windowHeight = res.windowHeight;\n      //判断按照那种方式进行缩放\n      // console.log(\"windowWidth\" + windowWidth);\n      if (originalWidth > windowWidth) {//在图片width大于手机屏幕width时候\n        autoWidth = windowWidth;\n        // console.log(\"autoWidth\" + autoWidth);\n        autoHeight = (autoWidth * originalHeight) / originalWidth;\n        // console.log(\"autoHeight\" + autoHeight);\n        results.imageWidth = autoWidth;\n        results.imageheight = autoHeight;\n      } else {//否则展示原来的数据\n        results.imageWidth = originalWidth;\n        results.imageheight = originalHeight;\n      }\n    }\n  })\n  return results;\n}\n\nfunction wxParseTemArray(temArrayName,bindNameReg,total,that){\n  var array = [];\n  var temData = that.data;\n  var obj = null;\n  for(var i = 0; i < total; i++){\n    var simArr = temData[bindNameReg+i].nodes;\n    array.push(simArr);\n  }\n\n  temArrayName = temArrayName || 'wxParseTemArray';\n  obj = JSON.parse('{\"'+ temArrayName +'\":\"\"}');\n  obj[temArrayName] = array;\n  that.setData(obj);\n}\n\n/**\n * 配置emojis\n * \n */\n\nfunction emojisInit(reg='',baseSrc=\"/wxParse/emojis/\",emojis){\n   HtmlToJson.emojisInit(reg,baseSrc,emojis);\n}\n\nmodule.exports = {\n  wxParse: wxParse,\n  wxParseTemArray:wxParseTemArray,\n  emojisInit:emojisInit\n}\n\n\n"
  },
  {
    "path": "renard-wx/lib/wxParse/wxParse.wxml",
    "content": "\n<!--**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */-->\n\n <!--基础元素-->\n<template name=\"wxParseVideo\">\n    <!--增加video标签支持，并循环添加-->\n    <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n        <video class=\"{{item.classStr}} wxParse-{{item.tag}}-video\" src=\"{{item.attr.src}}\"></video>\n    </view>\n</template>\n\n<template name=\"wxParseImg\">\n    <image class=\"{{item.classStr}} wxParse-{{item.tag}}\" data-from=\"{{item.from}}\" data-src=\"{{item.attr.src}}\"  data-idx=\"{{item.imgIndex}}\"  src=\"{{item.attr.src}}\" mode=\"aspectFit\" bindload=\"wxParseImgLoad\" bindtap=\"wxParseImgTap\" style=\"width:{{item.width}}px;height:{{item.height}}px;{{item.attr.style}}\"   />\n</template>\n\n<template name=\"WxEmojiView\">\n  <view class=\"WxEmojiView wxParse-inline\" style=\"{{item.styleStr}}\">\n    <block wx:for=\"{{item.textArray}}\" wx:key=\"\">\n      <block class=\"{{item.text == '\\\\n' ? 'wxParse-hide':''}}\" wx:if=\"{{item.node == 'text'}}\">{{item.text}}</block>\n      <block wx:elif=\"{{item.node == 'element'}}\">\n        <image class=\"wxEmoji\" src=\"{{item.baseSrc}}{{item.text}}\" />\n      </block>\n    </block>\n  </view>\n</template>\n\n<!--入口模版-->\n\n<template name=\"wxParse\">\n    <block wx:for=\"{{wxParseData}}\" wx:key=\"\">\n        <template is=\"wxParse0\" data=\"{{item}}\"/>\n    </block>\n</template>\n\n\n<!--循环模版-->\n<template name=\"wxParse0\">\n    <!--<template is=\"wxParse1\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse1\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse1\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-c=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse1\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        <block wx:elif=\"{{item.tag == 'table'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse1\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n\n\n<!--循环模版-->\n<template name=\"wxParse1\">\n    <!--<template is=\"wxParse2\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse2\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse2\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse2\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse2\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse2\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n\n<!--循环模版-->\n<template name=\"wxParse2\">\n    <!--<template is=\"wxParse3\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse3\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse3\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse3\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse3\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse3\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse3\">\n    <!--<template is=\"wxParse4\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse4\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse4\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse4\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse4\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse4\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse4\">\n    <!--<template is=\"wxParse5\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse5\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse5\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse5\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse5\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse5\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse5\">\n    <!--<template is=\"wxParse6\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse6\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse6\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse6\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse6\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse6\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse6\">\n    <!--<template is=\"wxParse7\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse7\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse7\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse7\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse7\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse7\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n<!--循环模版-->\n<template name=\"wxParse7\">\n    <!--<template is=\"wxParse8\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse8\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse8\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse8\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse8\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse8\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse8\">\n    <!--<template is=\"wxParse9\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse9\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse9\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse9\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse9\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse9\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse9\">\n    <!--<template is=\"wxParse10\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse10\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse10\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse10\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse10\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse10\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse10\">\n    <!--<template is=\"wxParse11\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse11\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse11\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse11\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse11\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse11\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>\n\n<!--循环模版-->\n<template name=\"wxParse11\">\n    <!--<template is=\"wxParse12\" data=\"{{item}}\" />-->\n    <!--判断是否是标签节点-->\n    <block wx:if=\"{{item.node == 'element'}}\">\n        <block wx:if=\"{{item.tag == 'button'}}\">\n            <button type=\"default\" size=\"mini\" >\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse12\" data=\"{{item}}\"/>\n                </block>\n             </button>\n        </block>\n        <!--li类型-->\n        <block wx:elif=\"{{item.tag == 'li'}}\">\n            <view class=\"{{item.classStr}} wxParse-li\">\n                <view class=\"{{item.classStr}} wxParse-li-inner\">\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <view class=\"{{item.classStr}} wxParse-li-circle\"></view>\n                    </view>\n                    <view class=\"{{item.classStr}} wxParse-li-text\">\n                        <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                            <template is=\"wxParse12\" data=\"{{item}}\"/>\n                        </block>\n                    </view>\n                </view>\n            </view>\n        </block>\n\n        <!--video类型-->\n        <block wx:elif=\"{{item.tag == 'video'}}\">\n            <template is=\"wxParseVideo\" data=\"{{item}}\"/>  \n        </block>\n\n        <!--img类型-->\n        <block wx:elif=\"{{item.tag == 'img'}}\">\n            <template is=\"wxParseImg\" data=\"{{item}}\"/>\n        </block>\n\n        <!--a类型-->\n        <block wx:elif=\"{{item.tag == 'a'}}\">\n            <view bindtap=\"wxParseTagATap\" class=\"wxParse-inline {{item.classStr}} wxParse-{{item.tag}}\" data-src=\"{{item.attr.href}}\"  style=\"{{item.styleStr}}\">\n                <block wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">\n                    <template is=\"wxParse12\" data=\"{{item}}\"/>\n                </block>\n            </view>\n        </block>\n        \n        <!--其他块级标签-->\n        <block wx:elif=\"{{item.tagType == 'block'}}\">\n            <view class=\"{{item.classStr}} wxParse-{{item.tag}}\" style=\"{{item.styleStr}}\">\n                <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                    <template is=\"wxParse12\" data=\"{{item}}\"/>                 \n                </block>\n            </view>\n        </block>\n\n        <!--内联标签-->\n        <view wx:else class=\"{{item.classStr}} wxParse-{{item.tag}} wxParse-{{item.tagType}}\" style=\"{{item.styleStr}}\">\n            <block  wx:for=\"{{item.nodes}}\" wx:for-item=\"item\" wx:key=\"\">       \n                <template is=\"wxParse12\" data=\"{{item}}\"/>                 \n            </block>\n        </view>\n\n    </block>\n\n    <!--判断是否是文本节点-->\n    <block wx:elif=\"{{item.node == 'text'}}\">\n        <!--如果是，直接进行-->\n        <template is=\"WxEmojiView\" data=\"{{item}}\"/>\n    </block>\n\n</template>"
  },
  {
    "path": "renard-wx/lib/wxParse/wxParse.wxss",
    "content": "\n/**\n * author: Di (微信小程序开发工程师)\n * organization: WeAppDev(微信小程序开发论坛)(http://weappdev.com)\n *               垂直微信小程序开发交流社区\n * \n * github地址: https://github.com/icindy/wxParse\n * \n * for: 微信小程序富文本解析\n * detail : http://weappdev.com/t/wxparse-alpha0-1-html-markdown/184\n */\n\n.wxParse{\n    margin: 0 5px;\n    font-family: Helvetica,sans-serif;\n    font-size: 28rpx;\n    color: #666;\n    line-height: 1.8;\n}\nview{\n    word-break:break-all; overflow:auto;\n}\n.wxParse-inline{\n    display: inline;\n    margin: 0;\n    padding: 0;\n}\n/*//标题 */\n.wxParse-div{margin: 0;padding: 0;}\n.wxParse-h1{ font-size:2em; margin: .67em 0 }\n.wxParse-h2{ font-size:1.5em; margin: .75em 0 }\n.wxParse-h3{ font-size:1.17em; margin: .83em 0 }\n.wxParse-h4{ margin: 1.12em 0}\n.wxParse-h5 { font-size:.83em; margin: 1.5em 0 }\n.wxParse-h6{ font-size:.75em; margin: 1.67em 0 }\n\n.wxParse-h1 {\n  font-size: 18px;\n  font-weight: 400;\n  margin-bottom: .9em;\n}\n.wxParse-h2 {\n  font-size: 16px;\n  font-weight: 400;\n  margin-bottom: .34em;\n}\n.wxParse-h3 {\n  font-weight: 400;\n  font-size: 15px;\n  margin-bottom: .34em;\n}\n.wxParse-h4 {\n  font-weight: 400;\n  font-size: 14px;\n  margin-bottom: .24em;\n}\n.wxParse-h5 {\n  font-weight: 400;\n  font-size: 13px;\n  margin-bottom: .14em;\n}\n.wxParse-h6 {\n  font-weight: 400;\n  font-size: 12px;\n  margin-bottom: .04em;\n}\n\n.wxParse-h1, .wxParse-h2, .wxParse-h3, .wxParse-h4, .wxParse-h5, .wxParse-h6, .wxParse-b, .wxParse-strong  { font-weight: bolder }\n\n.wxParse-i,.wxParse-cite,.wxParse-em,.wxParse-var,.wxParse-address{font-style:italic}\n.wxParse-pre,.wxParse-tt,.wxParse-code,.wxParse-kbd,.wxParse-samp{font-family:monospace}\n.wxParse-pre{white-space:pre}\n.wxParse-big{font-size:1.17em}\n.wxParse-small,.wxParse-sub,.wxParse-sup{font-size:.83em}\n.wxParse-sub{vertical-align:sub}\n.wxParse-sup{vertical-align:super}\n.wxParse-s,.wxParse-strike,.wxParse-del{text-decoration:line-through}\n/*wxparse-自定义个性化的css样式*/\n/*增加video的css样式*/\n.wxParse-strong,wxParse-s{display: inline}\n.wxParse-a{\n    color: deepskyblue;\n    word-break:break-all;\n    overflow:auto;\n}\n\n.wxParse-video{\n    text-align: center;\n    margin: 10px 0;\n}\n\n.wxParse-video-video{\n    width:100%;\n}\n\n.wxParse-img{\n    background-color: #efefef;\n    overflow: hidden;\n    width:40px;\n    height: 40px;\n}\n\n.wxParse-blockquote {\n    margin: 0;\n    padding:10px 0 10px 5px;\n    font-family:Courier, Calibri,\"宋体\";\n    background:#f5f5f5;\n    border-left: 3px solid #dbdbdb;\n}\n\n.wxParse-code,.wxParse-wxxxcode-style{\n    display: inline;\n    background:#f5f5f5;\n}\n.wxParse-ul{\n    margin: 20rpx 10rpx;\n}\n\n.wxParse-li,.wxParse-li-inner{\n    display: flex;\n    align-items: baseline;\n    margin: 10rpx 0;\n}\n.wxParse-li-text{\n    \n    align-items: center;\n    line-height: 20px;\n}\n\n.wxParse-li-circle{\n    display: inline-flex;\n    width: 5px;\n    height: 5px;\n    background-color: #333;\n    margin-right: 5px;\n}\n\n.wxParse-li-square{\n    display: inline-flex;\n    width: 10rpx;\n    height: 10rpx;\n    background-color: #333;\n    margin-right: 5px;\n}\n.wxParse-li-ring{\n    display: inline-flex;\n    width: 10rpx;\n    height: 10rpx;\n    border: 2rpx solid #333;\n    border-radius: 50%;\n    background-color: #fff;\n    margin-right: 5px;\n}\n\n/*.wxParse-table{\n    width: 100%;\n    height: 400px;\n}\n.wxParse-thead,.wxParse-tfoot,.wxParse-tr{\n    display: flex;\n    flex-direction: row;\n}\n.wxParse-th,.wxParse-td{\n    display: flex;\n    width: 580px;\n    overflow: auto;\n}*/\n\n.wxParse-u {\n  text-decoration: underline;\n}\n.wxParse-hide{\n    display: none;\n}\n.WxEmojiView{\n    align-items: center;\n}\n.wxEmoji{\n    width: 16px;\n    height:16px;\n}\n.wxParse-tr{\n\tdisplay: flex;\n\tborder-right:1px solid #e0e0e0;\n\tborder-bottom:1px solid #e0e0e0;\n}\n.wxParse-th,\n.wxParse-td{\n\tflex:1;\n\tpadding:5px;\n\tfont-size:28rpx;\n\tborder-left:1px solid #e0e0e0;\n\tword-break: break-all;\n}\n.wxParse-td:last{\n\tborder-top:1px solid #e0e0e0;\n}\n.wxParse-th{\n\tbackground:#f0f0f0;\n\tborder-top:1px solid #e0e0e0;\n}\n\n"
  },
  {
    "path": "renard-wx/pages/auth/login/login.js",
    "content": "var api = require('../../../config/api.js');\nvar util = require('../../../utils/util.js');\nvar user = require('../../../utils/user.js');\n\nvar app = getApp();\nPage({\n  data: {\n    canIUseGetUserProfile: false,\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    // 页面渲染完成\n    if (wx.getUserProfile) {\n      this.setData({\n        canIUseGetUserProfile: true\n      })\n    }\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  wxLogin: function(e) {\n    if (this.data.canIUseGetUserProfile) {\n      wx.getUserProfile({\n        desc: '用于完善会员资料', // 声明获取用户个人信息后的用途，后续会展示在弹窗中，请谨慎填写\n        success: (res) => {\n          this.doLogin(res.userInfo)\n        },\n        fail: () => {\n          util.showErrorToast('微信登录失败');\n        }\n      })\n    }\n    else {\n      if (e.detail.userInfo == undefined) {\n        app.globalData.hasLogin = false;\n        util.showErrorToast('微信登录失败');\n        return;\n      }\n      this.doLogin(e.detail.userInfo)\n    }\n  },\n  doLogin: function(userInfo) {\n    user.checkLogin().catch(() => {\n      user.loginByWeixin(userInfo).then(res => {\n        app.globalData.hasLogin = true;\n        wx.navigateBack({\n          delta: 1\n        })\n      }).catch((err) => {\n        app.globalData.hasLogin = false;\n        util.showErrorToast('微信登录失败');\n      });\n\n    });\n  }\n})"
  },
  {
    "path": "renard-wx/pages/auth/login/login.json",
    "content": "{\n  \"navigationBarTitleText\": \"登录\"\n}"
  },
  {
    "path": "renard-wx/pages/auth/login/login.wxml",
    "content": "<view class=\"container\">\n  <view class=\"form-box\">\n\n    <button wx:if=\"{{canIUseGetUserProfile}}\" type=\"primary\" class=\"login-btn\" bindtap=\"wxLogin\">微信直接登录</button>\n    <button wx:else type=\"primary\" open-type=\"getUserInfo\" class=\"login-btn\" bindgetuserinfo=\"wxLogin\">微信直接登录</button>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/auth/login/login.wxss",
    "content": ".form-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 0 40rpx;\n  margin-top: 96rpx;\n  background: #fff;\n}\n\n.form-item {\n  position: relative;\n  background: #fff;\n  height: 96rpx;\n  border-bottom: 1px solid #a78845;\n}\n\n.form-item .username, .form-item .password, .form-item .code {\n  position: absolute;\n  top: 26rpx;\n  left: 0;\n  display: block;\n  width: 100%;\n  height: 44rpx;\n  background: #fff;\n  color: #a78845;\n  font-size: 30rpx;\n}\n\n.form-item-code {\n  margin-top: 32rpx;\n  height: auto;\n  overflow: hidden;\n  width: 100%;\n}\n\n.form-item-code .form-item {\n  float: left;\n  width: 350rpx;\n}\n\n.form-item-code .code-img {\n  float: right;\n  margin-top: 4rpx;\n  height: 88rpx;\n  width: 236rpx;\n}\n\n.form-item .clear {\n  position: absolute;\n  top: 26rpx;\n  right: 18rpx;\n  z-index: 2;\n  display: block;\n  background: #fff;\n  height: 44rpx;\n  width: 44rpx;\n}\n\n.login-btn {\n  margin: 60rpx 0 40rpx 0;\n  height: 96rpx;\n  line-height: 96rpx;\n  color: #a78845;\n  font-size: 30rpx;\n  width: 100%;\n  background: #b4282d;\n  border-radius: 6rpx;\n}\n\n.form-item-text {\n  height: 35rpx;\n  width: 100%;\n  color: #a78845;\n}\n\n.form-item-text .register {\n  display: block;\n  height: 34rpx;\n  float: left;\n  font-size: 28rpx;\n  color: #a78845;\n}\n\n.form-item-text .reset {\n  display: block;\n  height: 34rpx;\n  float: right;\n  font-size: 28rpx;\n  color: #a78845;\n}\n"
  },
  {
    "path": "renard-wx/pages/brand/brand.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\nPage({\n  data: {\n    brandList: [],\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getBrandList();\n  },\n  getBrandList: function() {\n    wx.showLoading({\n      title: '加载中...',\n    });\n    let that = this;\n    util.request(api.BrandList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          brandList: that.data.brandList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n      }\n      wx.hideLoading();\n    });\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n    } else {\n      return false;\n    }\n\n    this.getBrandList();\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/brand/brand.json",
    "content": "{\n  \"navigationBarTitleText\": \"品牌商直供\"\n}"
  },
  {
    "path": "renard-wx/pages/brand/brand.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-list\">\n    <navigator url=\"../brandDetail/brandDetail?id={{item.id}}\" class=\"item\" wx:for=\"{{brandList}}\" wx:key=\"id\">\n      <view class=\"img-bg\">\n        <image src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n      </view>\n      <view class=\"txt-box\">\n        <view class=\"line\">\n          <text class=\"name\">{{item.name}}</text>\n        </view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/brand/brand.wxss",
    "content": ".brand-list .item {\n  display: block;\n  width: 750rpx;\n  height: 416rpx;\n  position: relative;\n  margin-bottom: 4rpx;\n}\n\n.brand-list .item .img-bg {\n  position: absolute;\n  left: 0;\n  top: 0;\n  z-index: 0;\n  width: 750rpx;\n  height: 417rpx;\n  overflow: hidden;\n}\n\n.brand-list .item .img-bg image {\n  width: 750rpx;\n  height: 416rpx;\n}\n\n.brand-list .item .txt-box {\n  position: absolute;\n  left: 0;\n  top: 0;\n  display: table;\n  z-index: 0;\n  width: 750rpx;\n  height: 417rpx;\n}\n\n.brand-list .item .line {\n  display: table-cell;\n  vertical-align: middle;\n  text-align: center;\n  height: 63rpx;\n  line-height: 63rpx;\n}\n\n.brand-list .item .line text {\n  font-size: 35rpx;\n  font-weight: 700;\n  text-shadow: 1rpx 1rpx rgba(0, 0, 0, 0.32);\n  color: #fff;\n}\n\n.brand-list .item .line .s {\n  padding: 0 10rpx;\n  font-size: 40rpx;\n}\n"
  },
  {
    "path": "renard-wx/pages/brandDetail/brandDetail.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    id: 0,\n    brand: {},\n    goodsList: [],\n    page: 1,\n    limit: 10\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    that.setData({\n      id: parseInt(options.id)\n    });\n    this.getBrand();\n  },\n  getBrand: function() {\n    let that = this;\n    util.request(api.BrandDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          brand: res.data\n        });\n\n        that.getGoodsList();\n      }\n    });\n  },\n  getGoodsList() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        brandId: that.data.id,\n        page: that.data.page,\n        limit: that.data.limit\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list\n          });\n        }\n      });\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/brandDetail/brandDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"品牌商详情\",\n  \"usingComponents\": {\n    \"goodList\": \"/components/goodList/goodList\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/brandDetail/brandDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{brand.picUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{brand.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n    <view class=\"desc\">\n      {{brand.desc}}\n    </view>\n  </view>\n\n  <view class=\"cate-item\">\n    <goodList calss=\"goodList\" goods=\"{{goodsList}}\"></goodList>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/brandDetail/brandDetail.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 290rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 290rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 290rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 37.5rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.brand-info .desc {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 41.5rpx 31.25rpx;\n  font-size: 30rpx;\n  color: #666;\n  line-height: 41.5rpx;\n  text-align: center;\n}\n"
  },
  {
    "path": "renard-wx/pages/cart/cart.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar user = require('../../utils/user.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    cartGoods: [],\n    cartTotal: {\n      \"goodsCount\": 0,\n      \"goodsAmount\": 0.00,\n      \"checkedGoodsCount\": 0,\n      \"checkedGoodsAmount\": 0.00\n    },\n    isEditCart: false,\n    checkedAllStatus: true,\n    editCartList: [],\n    hasLogin: false\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    if (app.globalData.hasLogin) {\n      this.getCartList();\n    }\n\n    this.setData({\n      hasLogin: app.globalData.hasLogin\n    });\n\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  goLogin() {\n    wx.navigateTo({\n      url: \"/pages/auth/login/login\"\n    });\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCartList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getCartList: function() {\n    let that = this;\n    util.request(api.CartList).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          cartGoods: res.data.cartList,\n          cartTotal: res.data.cartTotal\n        });\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      }\n    });\n  },\n  isCheckedAll: function() {\n    //判断购物车商品已全选\n    return this.data.cartGoods.every(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n  doCheckedAll: function() {\n    let checkedAll = this.isCheckedAll()\n    this.setData({\n      checkedAllStatus: this.isCheckedAll()\n    });\n  },\n  checkedItem: function(event) {\n    let itemIndex = event.target.dataset.itemIndex;\n    let that = this;\n\n    let productIds = [];\n    productIds.push(that.data.cartGoods[itemIndex].productId);\n    if (!this.data.isEditCart) {\n      util.request(api.CartChecked, {\n        productIds: productIds,\n        isChecked: that.data.cartGoods[itemIndex].checked ? 0 : 1\n      }, 'POST').then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            cartGoods: res.data.cartList,\n            cartTotal: res.data.cartTotal\n          });\n        }\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      });\n    } else {\n      //编辑状态\n      let tmpCartData = this.data.cartGoods.map(function(element, index, array) {\n        if (index == itemIndex) {\n          element.checked = !element.checked;\n        }\n\n        return element;\n      });\n\n      that.setData({\n        cartGoods: tmpCartData,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n  },\n  getCheckedGoodsCount: function() {\n    let checkedGoodsCount = 0;\n    this.data.cartGoods.forEach(function(v) {\n      if (v.checked === true) {\n        checkedGoodsCount += v.number;\n      }\n    });\n    console.log(checkedGoodsCount);\n    return checkedGoodsCount;\n  },\n  checkedAll: function() {\n    let that = this;\n\n    if (!this.data.isEditCart) {\n      var productIds = this.data.cartGoods.map(function(v) {\n        return v.productId;\n      });\n      util.request(api.CartChecked, {\n        productIds: productIds,\n        isChecked: that.isCheckedAll() ? 0 : 1\n      }, 'POST').then(function(res) {\n        if (res.errno === 0) {\n          console.log(res.data);\n          that.setData({\n            cartGoods: res.data.cartList,\n            cartTotal: res.data.cartTotal\n          });\n        }\n\n        that.setData({\n          checkedAllStatus: that.isCheckedAll()\n        });\n      });\n    } else {\n      //编辑状态\n      let checkedAllStatus = that.isCheckedAll();\n      let tmpCartData = this.data.cartGoods.map(function(v) {\n        v.checked = !checkedAllStatus;\n        return v;\n      });\n\n      that.setData({\n        cartGoods: tmpCartData,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n\n  },\n  editCart: function() {\n    var that = this;\n    if (this.data.isEditCart) {\n      this.getCartList();\n      this.setData({\n        isEditCart: !this.data.isEditCart\n      });\n    } else {\n      //编辑状态\n      let tmpCartList = this.data.cartGoods.map(function(v) {\n        v.checked = false;\n        return v;\n      });\n      this.setData({\n        editCartList: this.data.cartGoods,\n        cartGoods: tmpCartList,\n        isEditCart: !this.data.isEditCart,\n        checkedAllStatus: that.isCheckedAll(),\n        'cartTotal.checkedGoodsCount': that.getCheckedGoodsCount()\n      });\n    }\n\n  },\n  updateCart: function(productId, goodsId, number, id) {\n    let that = this;\n\n    util.request(api.CartUpdate, {\n      productId: productId,\n      goodsId: goodsId,\n      number: number,\n      id: id\n    }, 'POST').then(function(res) {\n      that.setData({\n        checkedAllStatus: that.isCheckedAll()\n      });\n    });\n\n  },\n  cutNumber: function(event) {\n\n    let itemIndex = event.target.dataset.itemIndex;\n    let cartItem = this.data.cartGoods[itemIndex];\n    let number = (cartItem.number - 1 > 1) ? cartItem.number - 1 : 1;\n    cartItem.number = number;\n    this.setData({\n      cartGoods: this.data.cartGoods\n    });\n    this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id);\n  },\n  addNumber: function(event) {\n    let itemIndex = event.target.dataset.itemIndex;\n    let cartItem = this.data.cartGoods[itemIndex];\n    let number = cartItem.number + 1;\n    cartItem.number = number;\n    this.setData({\n      cartGoods: this.data.cartGoods\n    });\n    this.updateCart(cartItem.productId, cartItem.goodsId, number, cartItem.id);\n\n  },\n  checkoutOrder: function() {\n    //获取已选择的商品\n    let that = this;\n\n    var checkedGoods = this.data.cartGoods.filter(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n\n    if (checkedGoods.length <= 0) {\n      return false;\n    }\n\n    // storage中设置了cartId，则是购物车购买\n    try {\n      wx.setStorageSync('cartId', 0);\n      wx.navigateTo({\n        url: '../shopping/checkout/checkout'\n      })\n    } catch (e) {}\n\n  },\n  deleteCart: function() {\n    //获取已选择的商品\n    let that = this;\n\n    let productIds = this.data.cartGoods.filter(function(element, index, array) {\n      if (element.checked == true) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n\n    if (productIds.length <= 0) {\n      return false;\n    }\n\n    productIds = productIds.map(function(element, index, array) {\n      if (element.checked == true) {\n        return element.productId;\n      }\n    });\n\n\n    util.request(api.CartDelete, {\n      productIds: productIds\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        let cartList = res.data.cartList.map(v => {\n          v.checked = false;\n          return v;\n        });\n\n        that.setData({\n          cartGoods: cartList,\n          cartTotal: res.data.cartTotal\n        });\n      }\n\n      that.setData({\n        checkedAllStatus: that.isCheckedAll()\n      });\n    });\n  }\n})"
  },
  {
    "path": "renard-wx/pages/cart/cart.json",
    "content": "{\n  \"backgroundColor\": \"#f4f4f4\",\n  \"navigationBarTitleText\": \"购物车\"\n}"
  },
  {
    "path": "renard-wx/pages/cart/cart.wxml",
    "content": "<view class=\"container\">\n  <view class=\"no-login\" wx:if=\"{{!hasLogin}}\">\n    <view class=\"c\">\n      <image src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/noCart-a8fe3f12e5.png\" />\n      <text>还没有登录</text>\n      <button plain=\"true\" bindtap=\"goLogin\">去登录</button>\n    </view>\n  </view>\n  <view class='login' wx:else>\n    <view class=\"service-policy\">\n      <view class=\"item\">30天无忧退货</view>\n      <view class=\"item\">48小时快速退款</view>\n      <view class=\"item\">满88元免邮费</view>\n    </view>\n    <view class=\"no-cart\" wx:if=\"{{cartGoods.length <= 0}}\">\n      <view class=\"c\">\n        <image src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/noCart-a8fe3f12e5.png\" />\n        <text>去添加点什么吧</text>\n      </view>\n    </view>\n    <view class=\"cart-view\" wx:else>\n      <view class=\"list\">\n        <view class=\"group-item\">\n          <view class=\"goods\">\n            <view class=\"item {{isEditCart ? 'edit' : ''}}\" wx:for=\"{{cartGoods}}\" wx:key=\"id\">\n              <view class=\"checkbox {{item.checked ? 'checked' : ''}}\" bindtap=\"checkedItem\" data-item-index=\"{{index}}\"></view>\n              <view class=\"cart-goods\">\n                <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n                <view class=\"info\">\n                  <view class=\"t\">\n                    <text class=\"name\">{{item.goodsName}}</text>\n                    <text class=\"num\">x{{item.number}}</text>\n                  </view>\n                  <view class=\"attr\">{{ isEditCart ? '已选择:' : ''}}{{item.specifications||''}}</view>\n                  <view class=\"b\">\n                    <text class=\"price\">￥{{item.price}}</text>\n                    <view class=\"selnum\">\n                      <view class=\"cut\" bindtap=\"cutNumber\" data-item-index=\"{{index}}\">-</view>\n                      <input value=\"{{item.number}}\" class=\"number\" disabled=\"true\" type=\"number\" />\n                      <view class=\"add\" bindtap=\"addNumber\" data-item-index=\"{{index}}\">+</view>\n                    </view>\n                  </view>\n                </view>\n              </view>\n            </view>\n          </view>\n        </view>\n\n      </view>\n      <view class=\"cart-bottom\">\n        <view class=\"checkbox {{checkedAllStatus ? 'checked' : ''}}\" bindtap=\"checkedAll\">全选({{cartTotal.checkedGoodsCount}})</view>\n        <view class=\"total\">{{!isEditCart ? '￥'+cartTotal.checkedGoodsAmount : ''}}</view>\n        <view class=\"delete\" bindtap=\"editCart\">{{!isEditCart ? '编辑' : '完成'}}</view>\n        <view class=\"checkout\" bindtap=\"deleteCart\" wx:if=\"{{isEditCart}}\">删除所选</view>\n        <view class=\"checkout\" bindtap=\"checkoutOrder\" wx:if=\"{{!isEditCart}}\">下单</view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/cart/cart.wxss",
    "content": "page {\n  height: 100%;\n  min-height: 100%;\n  background: #f4f4f4;\n}\n\n.container {\n  background: #f4f4f4;\n  width: 100%;\n  height: auto;\n  min-height: 100%;\n  overflow: hidden;\n}\n\n.service-policy {\n  width: 750rpx;\n  height: 73rpx;\n  background: #f4f4f4;\n  padding: 0 31.25rpx;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: space-between;\n}\n\n.service-policy .item {\n  /* background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/servicePolicyRed-518d32d74b.png) 0 center no-repeat; */\n  background-size: 10rpx;\n  padding-left: 15rpx;\n  display: flex;\n  align-items: center;\n  font-size: 25rpx;\n  color: #a78845;\n}\n\n.no-login {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n  color: #a78845;\n}\n\n.no-login .c {\n  width: 100%;\n  height: auto;\n  margin-top: 200rpx;\n  color: #a78845;\n}\n\n.no-login .c image {\n  margin: 0 auto;\n  display: block;\n  text-align: center;\n  width: 258rpx;\n  height: 258rpx;\n  color: #a78845;\n}\n\n.no-login .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 59rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 40rpx;\n  color: #a78845;\n}\n\n.no-login button {\n  width: 60%;\n  margin: 0 auto;\n  color: #a78845;\n  /* background-color: #FFF; */\n  border-color: #a78845;\n}\n\n.no-cart {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n  color: #a78845;\n}\n\n.no-cart .c {\n  width: 100%;\n  height: auto;\n  margin-top: 200rpx;\n}\n\n.no-cart .c image {\n  margin: 0 auto;\n  display: block;\n  text-align: center;\n  width: 258rpx;\n  height: 258rpx;\n}\n\n.no-cart .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.cart-view {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.cart-view .list {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n  margin-bottom: 120rpx;\n}\n\n.cart-view .group-item {\n  height: auto;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 18rpx;\n}\n\n.cart-view .item {\n  height: 164rpx;\n  width: 100%;\n  overflow: hidden;\n}\n\n.cart-view .item .checkbox {\n  float: left;\n  height: 34rpx;\n  width: 34rpx;\n  margin: 65rpx 18rpx 65rpx 26rpx;\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/checkbox-0e09baa37e.png) no-repeat;\n  background-size: 34rpx;\n}\n\n.cart-view .item .checkbox.checked {\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/checkbox-checked-822e54472a.png) no-repeat;\n  background-size: 34rpx;\n}\n\n.cart-view .item .cart-goods {\n  float: left;\n  height: 164rpx;\n  width: 672rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.cart-view .item .img {\n  float: left;\n  height: 125rpx;\n  width: 125rpx;\n  background: #f4f4f4;\n  margin: 19.5rpx 18rpx 19.5rpx 0;\n}\n\n.cart-view .item .info {\n  float: left;\n  height: 125rpx;\n  width: 503rpx;\n  margin: 19.5rpx 26rpx 19.5rpx 0;\n}\n\n.cart-view .item .t {\n  margin: 8rpx 0;\n  height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .name {\n  height: 28rpx;\n  max-width: 310rpx;\n  line-height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .num {\n  height: 28rpx;\n  line-height: 28rpx;\n  float: right;\n}\n\n.cart-view .item .attr {\n  margin-bottom: 17rpx;\n  height: 24rpx;\n  line-height: 24rpx;\n  font-size: 22rpx;\n  color: #666;\n  overflow: hidden;\n}\n\n.cart-view .item .b {\n  height: 28rpx;\n  line-height: 28rpx;\n  font-size: 25rpx;\n  color: #333;\n  overflow: hidden;\n}\n\n.cart-view .item .price {\n  float: left;\n  color: #a78845;\n}\n\n.cart-view .item .open {\n  height: 28rpx;\n  width: 150rpx;\n  display: block;\n  float: right;\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/arrowDown-d48093db25.png) right center no-repeat;\n  background-size: 25rpx;\n  font-size: 25rpx;\n  color: #333;\n}\n\n.cart-view .item.edit .t {\n  display: none;\n}\n\n.cart-view .item.edit .attr {\n  text-align: right;\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/arrow-right1-e9828c5b35.png) right center no-repeat;\n  padding-right: 25rpx;\n  background-size: 12rpx 20rpx;\n  margin-bottom: 24rpx;\n  height: 39rpx;\n  line-height: 39rpx;\n  font-size: 24rpx;\n  color: #999;\n  overflow: hidden;\n}\n\n.cart-view .item.edit .b {\n  display: flex;\n  height: 52rpx;\n  overflow: hidden;\n}\n\n.cart-view .item.edit .price {\n  line-height: 52rpx;\n  height: 52rpx;\n  flex: 1;\n}\n\n.cart-view .item .selnum {\n  display: none;\n}\n\n.cart-view .item.edit .selnum {\n  width: 235rpx;\n  height: 52rpx;\n  border: 1rpx solid #ccc;\n  display: flex;\n}\n\n.selnum .cut {\n  width: 70rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 50rpx;\n}\n\n.selnum .number {\n  flex: 1;\n  height: 100%;\n  text-align: center;\n  line-height: 68.75rpx;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #ccc;\n  float: left;\n}\n\n.selnum .add {\n  width: 80rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 50rpx;\n}\n\n.cart-view .group-item .header {\n  width: 100%;\n  height: 94rpx;\n  line-height: 94rpx;\n  padding: 0 26rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.cart-view .promotion .icon {\n  display: inline-block;\n  height: 24rpx;\n  width: 15rpx;\n}\n\n.cart-view .promotion {\n  margin-top: 25.5rpx;\n  float: left;\n  height: 43rpx;\n  width: 480rpx;\n  /*margin-right: 84rpx;*/\n  line-height: 43rpx;\n  font-size: 0;\n}\n\n.cart-view .promotion .tag {\n  border: 1px solid #f48f18;\n  height: 37rpx;\n  line-height: 31rpx;\n  padding: 0 9rpx;\n  margin-right: 10rpx;\n  color: #f48f18;\n  font-size: 24.5rpx;\n}\n\n.cart-view .promotion .txt {\n  height: 43rpx;\n  line-height: 43rpx;\n  padding-right: 10rpx;\n  color: #333;\n  font-size: 29rpx;\n  overflow: hidden;\n}\n\n.cart-view .get {\n  margin-top: 18rpx;\n  float: right;\n  height: 58rpx;\n  padding-left: 14rpx;\n  border-left: 1px solid #d9d9d9;\n  line-height: 58rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.cart-bottom {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  height: 100rpx;\n  width: 100%;\n  background: #fff;\n  display: flex;\n}\n\n.cart-bottom .checkbox {\n  height: 34rpx;\n  padding-left: 60rpx;\n  line-height: 34rpx;\n  margin: 33rpx 18rpx 33rpx 26rpx;\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/checkbox-0e09baa37e.png) no-repeat;\n  background-size: 34rpx;\n  font-size: 29rpx;\n}\n\n.cart-bottom .checkbox.checked {\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/checkbox-checked-822e54472a.png) no-repeat;\n  background-size: 34rpx;\n}\n\n.cart-bottom .total {\n  height: 34rpx;\n  flex: 1;\n  margin: 33rpx 10rpx;\n  font-size: 29rpx;\n  color: #a78845;\n}\n\n.cart-bottom .delete {\n  height: 34rpx;\n  width: auto;\n  margin: 33rpx 18rpx;\n  font-size: 29rpx;\n}\n\n.cart-bottom .checkout {\n  height: 100rpx;\n  width: 210rpx;\n  text-align: center;\n  line-height: 100rpx;\n  font-size: 29rpx;\n  background: #a78845;\n  color: #fff;\n}\n"
  },
  {
    "path": "renard-wx/pages/catalog/catalog.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    categoryList: [],\n    currentCategory: {},\n    currentSubCategoryList: {},\n    allList: {},\n    scrollLeft: 0,\n    scrollTop: 0,\n    goodsCount: 0,\n    scrollHeight: 0\n  },\n  onLoad: function(options) {\n    this.getCatalog();\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCatalog();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getCatalog: function() {\n    //CatalogList\n    let that = this;\n    wx.showLoading({\n      title: '加载中...',\n    });\n    util.request(api.CatalogAll).then(function(res) {\n      that.setData({\n        allList: res.data.allList,\n        categoryList: res.data.categoryList,\n        currentCategory: res.data.currentCategory,\n        currentSubCategoryList: res.data.currentSubCategory\n      });\n\n    });\n\n    wx.hideLoading();\n  },\n  getCurrentCategory: function(item) {\n    let that = this;\n\n    for (var key in that.data.allList) {\n      if (key == item.id) {\n        that.setData({\n          currentCategory: item,\n          currentSubCategoryList: that.data.allList[key]\n        });\n      }\n    }\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n\n  switchCate: function(event) {\n    if (this.data.currentCategory.id == event.currentTarget.dataset.id) {\n      return false;\n    }\n\n    this.getCurrentCategory(event.currentTarget.dataset.id);\n  },\n  levelClick: function(e) {\n    console.log(e.currentTarget.dataset.id)\n    wx.navigateTo({\n      url: \"/pages/category/category?id=\" + e.currentTarget.dataset.id\n    })\n  }\n})"
  },
  {
    "path": "renard-wx/pages/catalog/catalog.json",
    "content": "{\n  \"navigationBarTitleText\": \"分类\"\n}"
  },
  {
    "path": "renard-wx/pages/catalog/catalog.wxml",
    "content": "<view class=\"container\">\n  <view class=\"search\">\n    <navigator url=\"/pages/search/search\" class=\"input\">\n      <image class=\"icon\"></image>\n      <text class=\"txt\">搜索</text>\n    </navigator>\n  </view>\n  <view class=\"HotName\">分类\n    <text></text>\n  </view>\n  <view class=\"menu-box\">\n    <view wx:for-items=\"{{categoryList}}\" wx:key=\"id\" class=\"menu-box-list\">\n      <view class=\"menu-list-title {{currentCategory.id==item.id?'hover':''}}\" bindtap=\"switchCate\" id=\"{{item}}\" data-id=\"{{item}}\" data-index=\"{{index}}\">\n        <text class=\"{{currentCategory.id==item.id ?'l':''}}\"></text> {{item.name}}\n        <text class=\"{{currentCategory.id==item.id ?'r':''}}\"></text>\n      </view>\n      <view class=\"menu-list-pro\" if=\"{{item.level == 2}}\" id=\"{{item.id}}\">\n        <view class=\"menu-list-pro\" hidden=\"{{currentCategory.id==item.id ? '':'true'}}\">\n          <!--<navigator url=\"/pages/category/category?id={{item.id}}\" wx:key=\"id\" wx:for=\"{{currentSubCategoryList}}\">\n            <image class=\"icon\" src=\"{{item.wapBannerUrl}}\"></image>\n          </navigator>-->\n\n          <view class=\"menu-list-item\" wx:for-items=\"{{currentSubCategoryList}}\" wx:key=\"id\" bindtap=\"levelClick\" data-id=\"{{item.id}}\">\n            <image class=\"icon\" src=\"{{item.iconUrl}}\"></image>\n            <text class=\"txt\">{{item.name}}</text>\n\n          </view>\n        </view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/catalog/catalog.wxss",
    "content": ".HotName {\n  font-size: 80rpx;\n  margin-left: 40rpx;\n  color: #293539;\n  font-weight: 300;\n  position: relative;\n}\n\n.HotName text {\n  width: 14rpx;\n  height: 14rpx;\n  position: absolute;\n  border: 2px solid #a78845;\n  border-radius: 50%;\n}\n\n.menu-box {\n  width: 80%;\n  margin: 0 auto;\n  margin-top: 40rpx;\n}\n\n.menu-box-list {\n  text-align: center;\n  margin-bottom: 30rpx;\n}\n\n.menu-box-list .menu-list-title {\n  color: #6a7275;\n  font-size: 40rpx;\n  font-weight: 300;\n  letter-spacing: 20rpx;\n  position: relative;\n}\n\n.menu-box-list .hover {\n  color: #a78845;\n}\n\n.menu-box-list .hover .l {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 2rpx solid #a78845;\n  border-radius: 50%;\n  margin-left: -38rpx;\n  margin-top: 30rpx;\n}\n\n.menu-box-list .hover .r {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 2rpx solid #a78845;\n  border-radius: 50%;\n  margin-left: 6rpx;\n  margin-top: 30rpx;\n}\n\n.menu-list-pro {\n  overflow-x: scroll;\n  margin-top: 40rpx;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.menu-list-pro  .menu-list-item {\n  display: block;\n  float: left;\n  height: 240rpx;\n  width: 120rpx;\n  margin-right: 30rpx;\n}\n\n.menu-list-pro .icon {\n  height: 100rpx;\n  width: 100rpx;\n  border-radius: 12rpx;\n  box-shadow: 0px 4rpx 4rpx 0px #cfc9ca;\n}\n\n.menu-list-pro .txt {\n  display: block;\n  float: left;\n  width: 120rpx;\n  color: #a78845;\n}\n\n.search {\n  height: 88rpx;\n  width: 100%;\n  padding: 0 30rpx;\n  background: #fff;\n  display: flex;\n  align-items: center;\n}\n\n.search .input {\n  width: 690rpx;\n  height: 56rpx;\n  background: #ededed;\n  border-radius: 8rpx;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.search .icon {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/search2-2fb94833aa.png) center no-repeat;\n  background-size: 100%;\n  width: 28rpx;\n  height: 28rpx;\n}\n\n.search .txt {\n  height: 42rpx;\n  line-height: 42rpx;\n  color: #666;\n  padding-left: 10rpx;\n  font-size: 30rpx;\n}\n\n/* .menu-list-pro image{\n  height: 80px;\n  width: 80px;\n  margin-right: 34rpx;\n  margin-bottom: 34px;\n\n  background-color:#f5f5f5;\n  margin-right:10px; \n  border-radius:5px;\n}\n\n.menu-list-pro text{\n  text-align: center;\n  font-size: 24rpx;\n  color: #333;\n  height: 42rpx;\n  width: 80px;\n}  */\n"
  },
  {
    "path": "renard-wx/pages/category/category.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    navList: [],\n    goodsList: [],\n    id: 0,\n    currentCategory: {},\n    scrollLeft: 0,\n    scrollTop: 0,\n    scrollHeight: 0,\n    page: 1,\n    limit: 100\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    if (options.id) {\n      that.setData({\n        id: parseInt(options.id)\n      });\n    }\n\n    wx.getSystemInfo({\n      success: function(res) {\n        that.setData({\n          scrollHeight: res.windowHeight\n        });\n      }\n    });\n\n    this.getCategoryInfo();\n  },\n\n  onPullDownRefresh() {\n    // wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getCategoryInfo();\n    // wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getCategoryInfo: function() {\n    let that = this;\n    util.request(api.GoodsCategory, {\n        id: this.data.id\n      })\n      .then(function(res) {\n\n        if (res.errno == 0) {\n          that.setData({\n            navList: res.data.brotherCategory,\n            currentCategory: res.data.currentCategory\n          });\n\n          wx.setNavigationBarTitle({\n            title: res.data.parentCategory.name\n          })\n\n          //nav位置\n          let currentIndex = 0;\n          let navListCount = that.data.navList.length;\n          for (let i = 0; i < navListCount; i++) {\n            currentIndex += 1;\n            if (that.data.navList[i].id == that.data.id) {\n              break;\n            }\n          }\n          if (currentIndex > navListCount / 2 && navListCount > 5) {\n            that.setData({\n              scrollLeft: currentIndex * 60\n            });\n          }\n\n          that.getGoodsList();\n        } else {\n          //显示错误信息\n        }\n\n      });\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    console.log(1);\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  getGoodsList: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    var that = this;\n    util.request(api.GoodsList, {\n        categoryId: that.data.currentCategory.id,\n        page: that.data.page,\n        limit: that.data.limit\n      })\n      .then(function(res) {\n        that.setData({\n          goodsList: res.data.list,\n        });\n        wx.hideLoading();\n      });\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  switchCate: function(event) {\n    if (this.data.id == event.currentTarget.dataset.id) {\n      return false;\n    }\n    var that = this;\n    var clientX = event.detail.x;\n    var currentTarget = event.currentTarget;\n    if (clientX < 60) {\n      that.setData({\n        scrollLeft: currentTarget.offsetLeft - 60\n      });\n    } else if (clientX > 330) {\n      that.setData({\n        scrollLeft: currentTarget.offsetLeft\n      });\n    }\n    this.setData({\n      id: event.currentTarget.dataset.id\n    });\n\n    this.getCategoryInfo();\n  }\n})"
  },
  {
    "path": "renard-wx/pages/category/category.json",
    "content": "{\n  \"usingComponents\": {\n    \"goodList\": \"/components/goodList/goodList\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/category/category.wxml",
    "content": "<view class=\"container\">\n  <view class=\"cate-nav\">\n    <scroll-view scroll-x=\"true\" class=\"cate-nav-body\" style=\"width: 750rpx;\" scroll-left=\"{{scrollLeft}}\">\n      <view wx:for=\"{{navList}}\" class=\"item {{ id == item.id ? 'active' : ''}}\" wx:key=\"id\" data-id=\"{{item.id}}\" data-index=\"{{index}}\" bindtap=\"switchCate\">\n        <view class=\"name\">{{item.name}}</view>\n      </view>\n    </scroll-view>\n  </view>\n  <scroll-view scroll-y=\"true\" scroll-top=\"{{scrollTop}}\" style=\"height:{{scrollHeight}};\">\n\n    <view class=\"cate-item\">\n      <view class=\"h\">\n        <text class=\"name\">{{currentCategory.name}}</text>\n        <text class=\"desc\">{{currentCategory.frontName}}</text>\n      </view>\n      <goodList goods=\"{{goodsList}}\"></goodList>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "renard-wx/pages/category/category.wxss",
    "content": ".container {\n  background: #fff;\n}\n\n.cate-nav {\n  position: fixed;\n  left: 0;\n  top: 0;\n  z-index: 1000;\n}\n\n.cate-nav-body {\n  height: 84rpx;\n  white-space: nowrap;\n  background: #fff;\n  border-top: 1px solid rgba(0, 0, 0, 0.15);\n  overflow: hidden;\n}\n\n.cate-nav .item {\n  display: inline-block;\n  height: 84rpx;\n  min-width: 130rpx;\n  padding: 0 15rpx;\n}\n\n.cate-nav .item .name {\n  display: block;\n  height: 84rpx;\n  padding: 0 20rpx;\n  line-height: 84rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: auto;\n}\n\n.cate-nav .item.active .name {\n  color: #a78845;\n  border-bottom: 2px solid #a78845;\n}\n\n.cate-item {\n  margin-top: 94rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .h {\n  height: 145rpx;\n  width: 750rpx;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.cate-item .h .name {\n  display: block;\n  height: 35rpx;\n  margin-bottom: 18rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .h .desc {\n  display: block;\n  height: 24rpx;\n  font-size: 24rpx;\n  color: #999;\n}\n"
  },
  {
    "path": "renard-wx/pages/commentPost/commentPost.js",
    "content": "// 上传组件 基于https://github.com/Tencent/weui-wxss/tree/master/src/example/uploader\nvar app = getApp();\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nPage({\n  data: {\n    orderId: 0,\n    type: 0,\n    valueId: 0,\n    orderGoods: {},\n    content: '',\n    stars: [0, 1, 2, 3, 4],\n    star: 5,\n    starText: '十分满意',\n    hasPicture: false,\n    picUrls: [],\n    files: []\n  },\n  chooseImage: function(e) {\n    if (this.data.files.length >= 5) {\n      util.showErrorToast('只能上传五张图片')\n      return false;\n    }\n\n    var that = this;\n    wx.chooseImage({\n      count: 1,\n      sizeType: ['original', 'compressed'],\n      sourceType: ['album', 'camera'],\n      success: function(res) {\n        that.setData({\n          files: that.data.files.concat(res.tempFilePaths)\n        });\n        that.upload(res);\n      }\n    })\n  },\n  upload: function(res) {\n    var that = this;\n    const uploadTask = wx.uploadFile({\n      url: api.StorageUpload,\n      filePath: res.tempFilePaths[0],\n      name: 'file',\n      success: function(res) {\n        var _res = JSON.parse(res.data);\n        if (_res.errno === 0) {\n          var url = _res.data.url\n          that.data.picUrls.push(url)\n          that.setData({\n            hasPicture: true,\n            picUrls: that.data.picUrls\n          })\n        }\n      },\n      fail: function(e) {\n        wx.showModal({\n          title: '错误',\n          content: '上传失败',\n          showCancel: false\n        })\n      },\n    })\n\n    uploadTask.onProgressUpdate((res) => {\n      console.log('上传进度', res.progress)\n      console.log('已经上传的数据长度', res.totalBytesSent)\n      console.log('预期需要上传的数据总长度', res.totalBytesExpectedToSend)\n    })\n\n  },\n  previewImage: function(e) {\n    wx.previewImage({\n      current: e.currentTarget.id, // 当前显示图片的http链接\n      urls: this.data.files // 需要预览的图片http链接列表\n    })\n  },\n  selectRater: function(e) {\n    var star = e.currentTarget.dataset.star + 1;\n    var starText;\n    if (star == 1) {\n      starText = '很差';\n    } else if (star == 2) {\n      starText = '不太满意';\n    } else if (star == 3) {\n      starText = '满意';\n    } else if (star == 4) {\n      starText = '比较满意';\n    } else {\n      starText = '十分满意'\n    }\n    this.setData({\n      star: star,\n      starText: starText\n    })\n\n  },\n  onLoad: function(options) {\n    var that = this;\n    that.setData({\n      orderId: options.orderId,\n      type: options.type,\n      valueId: options.valueId\n    });\n    this.getOrderGoods();\n  },\n  getOrderGoods: function() {\n    let that = this;\n    util.request(api.OrderGoods, {\n      orderId: that.data.orderId,\n      goodsId: that.data.valueId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          orderGoods: res.data,\n        });\n      }\n    });\n  },\n  onClose: function() {\n    wx.navigateBack();\n  },\n  onPost: function() {\n    let that = this;\n\n    if (!this.data.content) {\n      util.showErrorToast('请填写评论')\n      return false;\n    }\n\n    util.request(api.CommentPost, {\n      type: that.data.type,\n      valueId: that.data.valueId,\n      content: that.data.content,\n      star: that.data.star,\n      hasPicture: that.data.hasPicture,\n      picUrls: that.data.picUrls\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        wx.showToast({\n          title: '评论成功',\n          complete: function() {\n            wx.navigateBack();\n          }\n        })\n      }\n    });\n  },\n  bindInputValue(event) {\n\n    let value = event.detail.value;\n\n    //判断是否超过140个字符\n    if (value && value.length > 140) {\n      return false;\n    }\n\n    this.setData({\n      content: event.detail.value,\n    })\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/commentPost/commentPost.json",
    "content": "{\n  \"navigationBarTitleText\": \"评价\"\n}"
  },
  {
    "path": "renard-wx/pages/commentPost/commentPost.wxml",
    "content": "<view class=\"container\">\n  <view class=\"post-comment\">\n    <view class=\"goods\">\n      <view class=\"img\">\n        <image src=\"{{orderGoods.picUrl}}\"></image>\n      </view>\n      <view class=\"info\">\n        <view class=\"t\">\n          <text class=\"name\">{{orderGoods.goodsName}} x{{orderGoods.number}}</text>\n        </view>\n        <view class=\"attr\">{{orderGoods.goodsSpecificationValues}}</view>\n      </view>\n    </view>\n    <view class=\"rater\">\n      <text class=\"rater-title\">评分</text>\n      <block wx:for=\"{{stars}}\" wx:key=\"*this\" wx:for-item=\"item\">\n        <image src=\"/static/images/icon_collect_checked.png\" bindtap=\"selectRater\" data-star=\"{{item}}\" wx:if=\"{{item < star}}\"></image>\n        <image src=\"/static/images/icon_collect.png\" bindtap=\"selectRater\" data-star=\"{{item}}\" wx:else></image>\n      </block>\n      <text class=\"rater-desc\">{{starText}}</text>\n    </view>\n    <view class=\"input-box\">\n      <textarea class=\"content\" focus=\"true\" bindinput=\"bindInputValue\" maxlength=\"140\" placeholder=\"留言经过筛选后，对所有人可见\" />\n      <text class=\"count\">{{140 - content.length}}</text>\n    </view>\n\n    <view class=\"weui-uploader\">\n      <view class=\"weui-uploader__hd\">\n        <view class=\"weui-uploader__title\">图片上传</view>\n        <view class=\"weui-uploader__info\">{{picUrls.length}}/{{files.length}}</view>\n      </view>\n      <view class=\"weui-uploader__bd\">\n        <view class=\"weui-uploader__files\" id=\"uploaderFiles\">\n          <block wx:for=\"{{files}}\" wx:key=\"*this\">\n            <view class=\"weui-uploader__file\" bindtap=\"previewImage\" id=\"{{item}}\">\n              <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n            </view>\n            <!-- <view class=\"weui-uploader__file weui-uploader__file_status\" bindtap=\"previewImage\" id=\"{{item}}\">\n              <image class=\"weui-uploader__img\" src=\"{{item}}\" mode=\"aspectFill\" />\n              <view class=\"weui-uploader__file-content\">50%</view>\n            </view> -->\n          </block>\n          <view class=\"weui-uploader__input-box\">\n            <view class=\"weui-uploader__input\" bindtap=\"chooseImage\"></view>\n          </view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"btns\">\n      <view class=\"close\" bindtap=\"onClose\">取消</view>\n      <view class=\"post\" bindtap=\"onPost\">发表</view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/commentPost/commentPost.wxss",
    "content": "page, .container {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.post-comment {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 30rpx;\n  background: #fff;\n}\n\n.post-comment .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.post-comment .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.post-comment .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.post-comment .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.post-comment .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.post-comment .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.post-comment .goods .status {\n  width: 105rpx;\n  color: #b4282d;\n  font-size: 25rpx;\n}\n\n.post-comment .rater {\n  display: flex;\n  flex-direction: row;\n  height: 55rpx;\n}\n\n.post-comment .rater .rater-title {\n  font-size: 29rpx;\n  padding-right: 10rpx;\n}\n\n.post-comment .rater image {\n  padding-left: 5rpx;\n  height: 50rpx;\n  width: 50rpx;\n}\n\n.post-comment .rater .rater-desc {\n  font-size: 29rpx;\n  padding-left: 10rpx;\n}\n\n.post-comment .input-box {\n  height: 337.5rpx;\n  width: 690rpx;\n  position: relative;\n  background: #fff;\n}\n\n.post-comment .input-box .content {\n  position: absolute;\n  top: 0;\n  left: 0;\n  display: block;\n  background: #fff;\n  font-size: 29rpx;\n  border: 5px solid #f4f4f4;\n  height: 300rpx;\n  width: 650rpx;\n  padding: 20rpx;\n}\n\n.post-comment .input-box .count {\n  position: absolute;\n  bottom: 20rpx;\n  right: 20rpx;\n  display: block;\n  height: 30rpx;\n  width: 50rpx;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.post-comment .btns {\n  height: 108rpx;\n}\n\n.post-comment .close {\n  float: left;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: left;\n  color: #666;\n  padding: 0 30rpx;\n}\n\n.post-comment .post {\n  float: right;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: right;\n  padding: 0 30rpx;\n}\n\n.weui-uploader {\n  margin-top: 50rpx;\n}\n\n.weui-uploader__hd {\n  display: -webkit-box;\n  display: -webkit-flex;\n  display: flex;\n  padding-bottom: 10px;\n  -webkit-box-align: center;\n  -webkit-align-items: center;\n  align-items: center;\n}\n\n.weui-uploader__title {\n  -webkit-box-flex: 1;\n  -webkit-flex: 1;\n  flex: 1;\n}\n\n.weui-uploader__info {\n  color: #b2b2b2;\n}\n\n.weui-uploader__bd {\n  margin-bottom: -4px;\n  margin-right: -9px;\n  overflow: hidden;\n}\n\n.weui-uploader__file {\n  float: left;\n  margin-right: 9px;\n  margin-bottom: 9px;\n}\n\n.weui-uploader__img {\n  display: block;\n  width: 79px;\n  height: 79px;\n}\n\n.weui-uploader__file_status {\n  position: relative;\n}\n\n.weui-uploader__file_status:before {\n  content: \" \";\n  position: absolute;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  background-color: rgba(0, 0, 0, 0.5);\n}\n\n.weui-uploader__file-content {\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  color: #fff;\n}\n\n.weui-uploader__input-box {\n  float: left;\n  position: relative;\n  margin-right: 9px;\n  margin-bottom: 9px;\n  width: 77px;\n  height: 77px;\n  border: 1px solid #d9d9d9;\n}\n\n.weui-uploader__input-box:after, .weui-uploader__input-box:before {\n  content: \" \";\n  position: absolute;\n  top: 50%;\n  left: 50%;\n  -webkit-transform: translate(-50%, -50%);\n  transform: translate(-50%, -50%);\n  background-color: #d9d9d9;\n}\n\n.weui-uploader__input-box:before {\n  width: 2px;\n  height: 39.5px;\n}\n\n.weui-uploader__input-box:after {\n  width: 39.5px;\n  height: 2px;\n}\n\n.weui-uploader__input-box:active {\n  border-color: #999;\n}\n\n.weui-uploader__input-box:active:after, .weui-uploader__input-box:active:before {\n  background-color: #999;\n}\n\n.weui-uploader__input {\n  position: absolute;\n  z-index: 1;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  opacity: 0;\n}\n"
  },
  {
    "path": "renard-wx/pages/goods/goods.js",
    "content": "import Notify from '../../components/notify/index';\nvar app = getApp();\nvar WxParse = require('../../lib/wxParse/wxParse.js');\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar user = require('../../utils/user.js');\n\nPage({\n  data: {\n    id: 0,\n    goods: {},\n    groupon: [], //该商品支持的团购规格\n    grouponLink: {}, //参与的团购\n    attribute: [],\n    issueList: [],\n    brand: {},\n    specificationList: [],\n    productList: [],\n    relatedGoods: [],\n    cartGoodsCount: 0,\n    userHasCollect: 0,\n    number: 1,\n    checkedSpecText: '规格数量选择',\n    tmpSpecText: '请选择规格数量',\n    checkedSpecPrice: 0,\n    openAttr: false,\n    shareImage: '',\n    isGroupon: false, //标识是否是一个参团购买\n    soldout: false,\n    canWrite: false\n  },\n\n  // 页面分享\n  onShareAppMessage: function() {\n    let that = this;\n    return {\n      title: that.data.goods.name,\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/index/index?goodId=' + this.data.id\n    }\n  },\n  handleSetting: function(e) {\n      var that = this;\n      // console.log(e)\n      if (!e.detail.authSetting['scope.writePhotosAlbum']) {\n          wx.showModal({\n              title: '警告',\n              content: '不授权无法保存',\n              showCancel: false\n          })\n          that.setData({\n              canWrite: false\n          })\n      } else {\n          wx.showToast({\n              title: '保存成功'\n          })\n          that.setData({\n              canWrite: true\n          })\n      }\n  },\n  showShare: function() {\n    this.sharePop.togglePopup();\n  },\n\n  //从分享的团购进入\n  getGrouponInfo: function(grouponId) {\n    let that = this;\n    util.request(api.GroupOnJoin, {\n      grouponId: grouponId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          grouponLink: res.data.groupon,\n          id: res.data.goods.id\n        });\n        //获取商品详情\n        that.getGoodsInfo();\n      }\n    });\n  },\n\n  // 获取商品信息\n  getGoodsInfo: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.GoodsDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        let _specificationList = res.data.specificationList\n        // 如果仅仅存在一种货品，那么商品页面初始化时默认checked\n        if (_specificationList.length == 1) {\n          if (_specificationList[0].valueList.length == 1) {\n            _specificationList[0].valueList[0].checked = true\n\n            // 如果仅仅存在一种货品，那么商品价格应该和货品价格一致\n            // 这里检测一下\n            let _productPrice = res.data.productList[0].price;\n            let _goodsPrice = res.data.info.retailPrice;\n            if (_productPrice != _goodsPrice) {\n              console.error('商品数量价格和货品不一致');\n            }\n\n            that.setData({\n              checkedSpecText: _specificationList[0].valueList[0].value,\n              tmpSpecText: '已选择：' + _specificationList[0].valueList[0].value,\n            });\n          }\n        }\n\n        that.setData({\n          goods: res.data.info,\n          attribute: res.data.attribute,\n          issueList: res.data.issue,\n          brand: res.data.brand,\n          specificationList: res.data.specificationList,\n          productList: res.data.productList,\n          userHasCollect: res.data.userHasCollect,\n          shareImage: res.data.shareImage,\n          checkedSpecPrice: res.data.info.retailPrice,\n          groupon: res.data.groupon\n        });\n\n        //如果是通过分享的团购参加团购，则团购项目应该与分享的一致并且不可更改\n        if (that.data.isGroupon) {\n          let groupons = that.data.groupon;\n          for (var i = 0; i < groupons.length; i++) {\n            if (groupons[i].id != that.data.grouponLink.rulesId) {\n              groupons.splice(i, 1);\n            }\n          }\n          groupons[0].checked = true;\n          //重设团购规格\n          that.setData({\n            groupon: groupons\n          });\n\n        }\n\n        WxParse.wxParse('goodsDetail', 'html', res.data.info.detail, that);\n        //获取推荐商品\n        that.getGoodsRelated();\n        wx.hideLoading();\n      }\n    });\n  },\n\n  // 获取推荐商品\n  getGoodsRelated: function() {\n    let that = this;\n    util.request(api.GoodsRelated, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          relatedGoods: res.data.list,\n        });\n      }\n    });\n  },\n\n  // 团购选择\n  clickGroupon: function(event) {\n    let that = this;\n\n    //参与团购，不可更改选择\n    if (that.data.isGroupon) {\n      return;\n    }\n\n    let specName = event.currentTarget.dataset.name;\n    let specValueId = event.currentTarget.dataset.valueId;\n\n    let _grouponList = this.data.groupon;\n    for (let i = 0; i < _grouponList.length; i++) {\n      if (_grouponList[i].id == specValueId) {\n        if (_grouponList[i].checked) {\n          _grouponList[i].checked = false;\n        } else {\n          _grouponList[i].checked = true;\n        }\n      } else {\n        _grouponList[i].checked = false;\n      }\n    }\n\n    this.setData({\n      groupon: _grouponList,\n    });\n  },\n\n  // 规格选择\n  clickSkuValue: function(event) {\n    let that = this;\n    let specName = event.currentTarget.dataset.name;\n    let specValueId = event.currentTarget.dataset.valueId;\n\n    //判断是否可以点击\n\n    //TODO 性能优化，可在wx:for中添加index，可以直接获取点击的属性名和属性值，不用循环\n    let _specificationList = this.data.specificationList;\n    for (let i = 0; i < _specificationList.length; i++) {\n      if (_specificationList[i].name === specName) {\n        for (let j = 0; j < _specificationList[i].valueList.length; j++) {\n          if (_specificationList[i].valueList[j].id == specValueId) {\n            //如果已经选中，则反选\n            if (_specificationList[i].valueList[j].checked) {\n              _specificationList[i].valueList[j].checked = false;\n            } else {\n              _specificationList[i].valueList[j].checked = true;\n            }\n          } else {\n            _specificationList[i].valueList[j].checked = false;\n          }\n        }\n      }\n    }\n    this.setData({\n      specificationList: _specificationList,\n    });\n    //重新计算spec改变后的信息\n    this.changeSpecInfo();\n\n    //重新计算哪些值不可以点击\n  },\n\n  //获取选中的团购信息\n  getCheckedGrouponValue: function() {\n    let checkedValues = {};\n    let _grouponList = this.data.groupon;\n    for (let i = 0; i < _grouponList.length; i++) {\n      if (_grouponList[i].checked) {\n        checkedValues = _grouponList[i];\n      }\n    }\n\n    return checkedValues;\n  },\n\n  //获取选中的规格信息\n  getCheckedSpecValue: function() {\n    let checkedValues = [];\n    let _specificationList = this.data.specificationList;\n    for (let i = 0; i < _specificationList.length; i++) {\n      let _checkedObj = {\n        name: _specificationList[i].name,\n        valueId: 0,\n        valueText: ''\n      };\n      for (let j = 0; j < _specificationList[i].valueList.length; j++) {\n        if (_specificationList[i].valueList[j].checked) {\n          _checkedObj.valueId = _specificationList[i].valueList[j].id;\n          _checkedObj.valueText = _specificationList[i].valueList[j].value;\n        }\n      }\n      checkedValues.push(_checkedObj);\n    }\n\n    return checkedValues;\n  },\n\n  //判断规格是否选择完整\n  isCheckedAllSpec: function() {\n    return !this.getCheckedSpecValue().some(function(v) {\n      if (v.valueId == 0) {\n        return true;\n      }\n    });\n  },\n\n  soldoutNotify: function() {\n    Notify(\"商品已售完\");\n  },\n\n  getCheckedSpecKey: function() {\n    let checkedValue = this.getCheckedSpecValue().map(function(v) {\n      return v.valueText;\n    });\n    return checkedValue;\n  },\n\n  // 规格改变时，重新计算价格及显示信息\n  changeSpecInfo: function() {\n    let checkedNameValue = this.getCheckedSpecValue();\n\n    //设置选择的信息\n    let checkedValue = checkedNameValue.filter(function(v) {\n      if (v.valueId != 0) {\n        return true;\n      } else {\n        return false;\n      }\n    }).map(function(v) {\n      return v.valueText;\n    });\n    if (checkedValue.length > 0) {\n      this.setData({\n        tmpSpecText: checkedValue.join('　')\n      });\n    } else {\n      this.setData({\n        tmpSpecText: '请选择规格数量'\n      });\n    }\n\n    if (this.isCheckedAllSpec()) {\n      this.setData({\n        checkedSpecText: this.data.tmpSpecText\n      });\n\n      // 规格所对应的货品选择以后\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        this.setData({\n          soldout: true\n        });\n        this.soldoutNotify();\n        console.error('规格所对应货品不存在');\n        return;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      if (checkedProduct.number > 0) {\n        this.setData({\n          checkedSpecPrice: checkedProduct.price,\n          soldout: false\n        });\n        this.notify.hide();\n      } else {\n        this.setData({\n          checkedSpecPrice: this.data.goods.retailPrice,\n          soldout: true\n        });\n        this.soldoutNotify();\n      }\n\n    } else {\n      this.setData({\n        checkedSpecText: '规格数量选择',\n        checkedSpecPrice: this.data.goods.retailPrice,\n        soldout: false\n      });\n      this.notify.hide();\n    }\n\n  },\n\n  // 获取选中的产品（根据规格）\n  getCheckedProductItem: function(key) {\n    return this.data.productList.filter(function(v) {\n      if (v.specifications.toString() == key.toString()) {\n        return true;\n      } else {\n        return false;\n      }\n    });\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.id) {\n      this.setData({\n        id: parseInt(options.id)\n      });\n      this.getGoodsInfo();\n    }\n\n    if (options.grouponId) {\n      this.setData({\n        isGroupon: true,\n      });\n      this.getGrouponInfo(options.grouponId);\n    }\n    let that = this;\n    wx.getSetting({\n        success: function (res) {\n            console.log(res)\n            //不存在相册授权\n            if (!res.authSetting['scope.writePhotosAlbum']) {\n                wx.authorize({\n                    scope: 'scope.writePhotosAlbum',\n                    success: function () {\n                        that.setData({\n                            canWrite: true\n                        })\n                    },\n                    fail: function (err) {\n                        that.setData({\n                            canWrite: false\n                        })\n                    }\n                })\n            } else {\n                that.setData({\n                    canWrite: true\n                });\n            }\n        }\n    })\n\n  },\n\n  onShow: function() {\n    // 页面显示\n    var that = this;\n    util.request(api.CartGoodsCount).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          cartGoodsCount: res.data\n        });\n      }\n    });\n  },\n\n  //立即购买（先自动加入购物车）\n  addFast: function() {\n    var that = this;\n    if (this.data.openAttr == false) {\n      //打开规格选择窗口\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    } else {\n\n      //提示选择完整规格\n      if (!this.isCheckedAllSpec()) {\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '请选择完整规格'\n        });\n        return false;\n      }\n\n      //根据选中的规格，判断是否有对应的sku信息\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        //找不到对应的product信息，提示没有库存\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '没有库存'\n        });\n        return false;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      //验证库存\n      if (checkedProduct.number <= 0) {\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '没有库存'\n        });\n        return false;\n      }\n\n      //验证团购是否有效\n      let checkedGroupon = this.getCheckedGrouponValue();\n\n      //立即购买\n      util.request(api.CartFastAdd, {\n          goodsId: this.data.goods.id,\n          number: this.data.number,\n          productId: checkedProduct.id\n        }, \"POST\")\n        .then(function(res) {\n          if (res.errno == 0) {\n            // 如果storage中设置了cartId，则是立即购买，否则是购物车购买\n            try {\n              wx.setStorageSync('cartId', res.data);\n              wx.setStorageSync('grouponRulesId', checkedGroupon.id);\n              wx.setStorageSync('grouponLinkId', that.data.grouponLink.id);\n              wx.navigateTo({\n                url: '/pages/shopping/checkout/checkout'\n              })\n            } catch (e) {}\n\n          } else {\n            wx.showToast({\n              image: '/static/images/icon_error.png',\n              title: res.errmsg,\n              mask: true\n            });\n          }\n        });\n    }\n\n\n  },\n\n  //添加到购物车\n  addToCart: function() {\n    var that = this;\n    if (this.data.openAttr == false) {\n      //打开规格选择窗口\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    } else {\n\n      //提示选择完整规格\n      if (!this.isCheckedAllSpec()) {\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '请选择完整规格'\n        });\n        return false;\n      }\n\n      //根据选中的规格，判断是否有对应的sku信息\n      let checkedProductArray = this.getCheckedProductItem(this.getCheckedSpecKey());\n      if (!checkedProductArray || checkedProductArray.length <= 0) {\n        //找不到对应的product信息，提示没有库存\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '没有库存'\n        });\n        return false;\n      }\n\n      let checkedProduct = checkedProductArray[0];\n      //验证库存\n      if (checkedProduct.number <= 0) {\n        wx.showToast({\n          image: '/static/images/icon_error.png',\n          title: '没有库存'\n        });\n        return false;\n      }\n\n      //添加到购物车\n      util.request(api.CartAdd, {\n          goodsId: this.data.goods.id,\n          number: this.data.number,\n          productId: checkedProduct.id\n        }, \"POST\")\n        .then(function(res) {\n          let _res = res;\n          if (_res.errno == 0) {\n            wx.showToast({\n              title: '添加成功'\n            });\n            that.setData({\n              openAttr: !that.data.openAttr,\n              cartGoodsCount: _res.data\n            });\n\n          } else {\n            wx.showToast({\n              image: '/static/images/icon_error.png',\n              title: _res.errmsg,\n              mask: true\n            });\n          }\n\n        });\n    }\n\n  },\n\n  cutNumber: function() {\n    this.setData({\n      number: (this.data.number - 1 > 1) ? this.data.number - 1 : 1\n    });\n  },\n  addNumber: function() {\n    this.setData({\n      number: this.data.number + 1\n    });\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  switchAttrPop: function() {\n    if (this.data.openAttr == false) {\n      this.setData({\n        openAttr: !this.data.openAttr\n      });\n    }\n  },\n\n  closeAttr: function() {\n    this.setData({\n      openAttr: false,\n    });\n  },\n  openCartPage: function() {\n    wx.switchTab({\n      url: '/pages/cart/cart'\n    });\n  },\n  onReady: function() {\n    // 页面渲染完成\n    this.sharePop = this.selectComponent(\"#sharePop\");\n    this.notify = this.selectComponent(\"#van-notify\");\n  }\n})"
  },
  {
    "path": "renard-wx/pages/goods/goods.json",
    "content": "{\n  \"navigationBarTitleText\": \"商品详情\",\n  \"usingComponents\": {\n    \"sharePop\": \"/components/sharePop/sharePop\",\n    \"goodList\": \"/components/goodList/goodList\",\n    \"van-notify\": \"/components/notify/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/goods/goods.wxml",
    "content": "<view class=\"container\">\n  <swiper class=\"goodsimgs\" indicator-dots=\"true\" autoplay=\"true\" interval=\"3000\" duration=\"1000\">\n    <swiper-item wx:for=\"{{goods.gallery}}\" wx:key=\"*this\">\n      <image src=\"{{item}}\" background-size=\"cover\"></image>\n    </swiper-item>\n  </swiper>\n\n  <!-- 商品信息 -->\n  <view class=\"goods-info\">\n    <view class=\"c\">\n      <text class=\"name\">{{goods.name}}</text>\n      <text class=\"desc\">{{goods.brief}}</text>\n      <view class=\"price\">\n        <view class=\"counterPrice\">原价：￥{{goods.counterPrice}}</view>\n        <view class=\"retailPrice\">现价：￥{{checkedSpecPrice}}</view>\n      </view>\n\n      <view class=\"brand\" wx:if=\"{{brand.name}}\">\n        <navigator url=\"../brandDetail/brandDetail?id={{brand.id}}\">\n          <text>{{brand.name}}</text>\n        </navigator>\n      </view>\n    </view>\n  </view>\n\n  <!-- 规格框体 -->\n  <view class=\"section-nav section-attr\" bindtap=\"switchAttrPop\">\n    <view class=\"t\">{{checkedSpecText}}</view>\n    <image class=\"i\" src=\"/static/images/address_right.png\" background-size=\"cover\"></image>\n  </view>\n\n  <view class=\"goods-attr\">\n    <view class=\"t\">商品参数</view>\n    <view class=\"l\">\n      <view class=\"item\" wx:for=\"{{attribute}}\" wx:key=\"name\">\n        <text class=\"left\">{{item.attribute}}</text>\n        <text class=\"right\">{{item.value}}</text>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"detail\">\n    <import src=\"/lib/wxParse/wxParse.wxml\" />\n    <template is=\"wxParse\" data=\"{{wxParseData:goodsDetail.nodes}}\" />\n  </view>\n\n  <view class=\"common-problem\">\n    <view class=\"h\">\n      <view class=\"line\"></view>\n      <text class=\"title\">常见问题</text>\n    </view>\n    <view class=\"b\">\n      <view class=\"item\" wx:for=\"{{issueList}}\" wx:key=\"id\">\n        <view class=\"question-box\">\n          <text class=\"spot\"></text>\n          <text class=\"question\">{{item.question}}</text>\n        </view>\n        <view class=\"answer\">\n          {{item.answer}}\n        </view>\n      </view>\n    </view>\n  </view>\n\n  <!-- 大家都在看 -->\n  <view class=\"related-goods\" wx:if=\"{{relatedGoods.length > 0}}\">\n    <view class=\"h\">\n      <view class=\"line\"></view>\n      <text class=\"title\">大家都在看</text>\n    </view>\n    <goodList goods=\"{{relatedGoods}}\"></goodList>\n  </view>\n</view>\n\n<!-- 规格选择界面 -->\n<view class=\"attr-pop-box\" hidden=\"{{!openAttr}}\">\n  <view class=\"attr-pop\">\n    <view class=\"close\" bindtap=\"closeAttr\">\n      <image class=\"icon\" src=\"/static/images/icon_close.png\"></image>\n    </view>\n    <view class=\"img-info\">\n      <image class=\"img\" src=\"{{goods.picUrl}}\"></image>\n      <view class=\"info\">\n        <view class=\"c\">\n          <view class=\"p\">价格：￥{{checkedSpecPrice}}</view>\n          <view class=\"a\">{{tmpSpecText}}</view>\n        </view>\n      </view>\n    </view>\n\n    <!-- 规格列表 -->\n    <view class=\"spec-con\">\n      <view class=\"spec-item\" wx:for=\"{{specificationList}}\" wx:key=\"name\">\n        <view class=\"name\">{{item.name}}</view>\n        <view class=\"values\">\n          <view class=\"value {{vitem.checked ? 'selected' : ''}}\" bindtap=\"clickSkuValue\" wx:for=\"{{item.valueList}}\" wx:for-item=\"vitem\" wx:key=\"{{vitem.id}}\" data-value-id=\"{{vitem.id}}\" data-name=\"{{vitem.specification}}\">{{vitem.value}}</view>\n        </view>\n      </view>\n\n      <view class=\"spec-con\" wx:if=\"{{groupon.length > 0}}\">\n        <view class=\"spec-item\">\n          <view class=\"name\">团购立减</view>\n          <view class=\"values\">\n            <view class=\"value {{vitem.checked ? 'selected' : ''}}\" bindtap=\"clickGroupon\" wx:for=\"{{groupon}}\" wx:for-item=\"vitem\" wx:key=\"{{vitem.id}}\" data-value-id=\"{{vitem.id}}\" data-name=\"{{vitem.specification}}\">￥-{{vitem.discount}} ({{vitem.discountMember}}人)</view>\n          </view>\n        </view>\n      </view>\n\n      <!-- 数量 -->\n      <view class=\"number-item\">\n        <view class=\"name\">数量</view>\n        <view class=\"selnum\">\n          <view class=\"cut\" bindtap=\"cutNumber\">-</view>\n          <input value=\"{{number}}\" class=\"number\" disabled=\"true\" type=\"number\" />\n          <view class=\"add\" bindtap=\"addNumber\">+</view>\n        </view>\n      </view>\n\n    </view>\n  </view>\n</view>\n\n<!-- 联系客服 -->\n<view class=\"contact\">\n  <contact-button style=\"opacity:0;position:absolute;\" type=\"default-dark\" session-from=\"weapp\" size=\"27\">\n  </contact-button>\n</view>\n\n<!-- 顶部提示 -->\n<van-notify id=\"van-notify\" />\n\n<!-- 分享框体界面 -->\n<sharePop id=\"sharePop\" bottom=\"80\" url=\"{{shareImage}}\"></sharePop>\n\n<!-- 底部按钮 -->\n<view class=\"bottom-btn\">\n  <view class=\"l l-collect\"open-type=\"openSetting\" bindopensetting=\"handleSetting\" wx:if=\"{{(!isGroupon) && (!canWrite) }}\">\n    <image class=\"icon\" src=\"../../images/goods-share.png\" />\n  </view>\n  <view class=\"l l-collect\" bindtap=\"showShare\" wx:if=\"{{!isGroupon && canWrite}}\">\n    <image class=\"icon\" src=\"../../images/goods-share.png\" />\n  </view>\n  <view class=\"l l-cart\" wx:if=\"{{!isGroupon}}\">\n    <view class=\"box\">\n      <text class=\"cart-count\">{{cartGoodsCount}}</text>\n      <image bindtap=\"openCartPage\" class=\"icon\" src=\"/static/images/ic_menu_shoping_nor.png\"></image>\n    </view>\n  </view>\n  <view class=\"r\" bindtap=\"addToCart\" wx:if=\"{{!soldout}}\" wx:if=\"{{!isGroupon}}\">加入购物车</view>\n  <view class=\"c\" bindtap=\"addFast\" wx:if=\"{{!soldout}}\">{{isGroupon?'参加团购':'立即购买'}}</view>\n  <view class=\"n\" wx:if=\"{{soldout}}\">商品已售空</view>\n</view>"
  },
  {
    "path": "renard-wx/pages/goods/goods.wxss",
    "content": ".container {\n  margin-bottom: 100rpx;\n}\n\n.goodsimgs {\n  width: 750rpx;\n  height: 750rpx;\n}\n\n.goodsimgs image {\n  width: 750rpx;\n  height: 750rpx;\n}\n\n.service-policy {\n  width: 100%;\n  height: 96rpx;\n  /* background: #d3b676; */\n  border: 2px solid #fff;\n  /* align-items: center; */\n}\n\n.goods-info {\n  width: 750rpx;\n  /* height: 406rpx; */\n  overflow: hidden;\n  background: #fff;\n}\n\n.goods-info .c {\n  display: block;\n  width: 718.75rpx;\n  height: 100%;\n  margin-left: 31.25rpx;\n  padding: 38rpx 31.25rpx 38rpx 0;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.goods-info .c text {\n  display: block;\n  width: 687.5rpx;\n  text-align: center;\n}\n\n.goods-info .name {\n  height: 64rpx;\n  /* width: 620rpx; */\n  font-size: 41rpx;\n}\n\n.goods-info .desc {\n  height: 43rpx;\n  margin-bottom: 30rpx;\n  font-size: 24rpx;\n  line-height: 36rpx;\n  color: #999;\n}\n\n.goods-info .price {\n  height: 50rpx;\n  align-content: center;\n}\n\n.goods-info .counterPrice {\n  float: left;\n  padding-left: 120rpx;\n  text-decoration: line-through;\n  font-size: 30rpx;\n  color: #999;\n}\n\n.goods-info .retailPrice {\n  /* float: right; */\n  padding-left: 60rpx;\n  font-size: 30rpx;\n  color: #a78845;\n}\n\n.goods-info .brand {\n  margin-top: 23rpx;\n  min-height: 40rpx;\n  text-align: center;\n}\n\n.goods-info .brand text {\n  display: inline-block;\n  width: auto;\n  padding: 2px 30rpx 2px 10.5rpx;\n  line-height: 35.5rpx;\n  border: 1px solid #a78845;\n  font-size: 28rpx;\n  color: #a78845;\n  border-radius: 4px;\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/detailTagArrow-18bee52dab.png) 95% center no-repeat;\n  background-size: 10.75rpx 18.75rpx;\n}\n\n.section-nav {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.section-nav .t {\n  float: left;\n  width: 600rpx;\n  height: 108rpx;\n  line-height: 108rpx;\n  font-size: 29rpx;\n  color: #a78845;\n  margin-left: 31.25rpx;\n}\n\n.section-nav .i {\n  float: right;\n  width: 52rpx;\n  height: 52rpx;\n  margin-right: 16rpx;\n  margin-top: 28rpx;\n}\n\n.section-act .t {\n  float: left;\n  display: flex;\n  align-items: center;\n  width: 600rpx;\n  height: 108rpx;\n  overflow: hidden;\n  line-height: 108rpx;\n  font-size: 29rpx;\n  color: #999;\n  margin-left: 31.25rpx;\n}\n\n.section-act .label {\n  color: #999;\n}\n\n.section-act .tag {\n  display: flex;\n  align-items: center;\n  padding: 0 10rpx;\n  border-radius: 3px;\n  height: 37rpx;\n  width: auto;\n  color: #a78845;\n  overflow: hidden;\n  border: 1px solid #a78845;\n  font-size: 25rpx;\n  margin: 0 10rpx;\n}\n\n.section-act .text {\n  display: flex;\n  align-items: center;\n  height: 37rpx;\n  width: auto;\n  overflow: hidden;\n  color: #a78845;\n  font-size: 29rpx;\n}\n\n.comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin: 20rpx 0;\n}\n\n.comments .h {\n  height: 102.5rpx;\n  line-height: 100.5rpx;\n  width: 718.75rpx;\n  padding-right: 16rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.comments .h .t {\n  display: block;\n  float: left;\n  width: 50%;\n  font-size: 38.5rpx;\n  color: #333;\n}\n\n.comments .h .i {\n  display: block;\n  float: right;\n  width: 164rpx;\n  height: 100.5rpx;\n  line-height: 100.5rpx;\n  background: url(http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/address-right-990628faa7.png) right center no-repeat;\n  background-size: 52rpx;\n}\n\n.comments .b {\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user image {\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user text {\n  display: inline-block;\n  width: auto;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .content {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  font-size: 29rpx;\n  margin-bottom: 24rpx;\n}\n\n.comments .imgs {\n  width: 720rpx;\n  height: auto;\n  margin-bottom: 25rpx;\n}\n\n.comments .imgs .img {\n  height: 150rpx;\n  width: 150rpx;\n  margin-right: 28rpx;\n}\n\n.comments .spec {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 30rpx;\n  font-size: 24rpx;\n  color: #999;\n  margin-bottom: 30rpx;\n}\n\n.goods-attr {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0 31.25rpx 25rpx 31.25rpx;\n  background: #fff;\n}\n\n.goods-attr .t {\n  width: 687.5rpx;\n  height: 104rpx;\n  line-height: 104rpx;\n  font-size: 38.5rpx;\n}\n\n.goods-attr .item {\n  width: 687.5rpx;\n  height: 68rpx;\n  padding: 11rpx 20rpx;\n  margin-bottom: 11rpx;\n  background: #f7f7f7;\n  font-size: 38.5rpx;\n}\n\n.goods-attr .left {\n  float: left;\n  font-size: 25rpx;\n  width: 134rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  overflow: hidden;\n  color: #999;\n}\n\n.goods-attr .right {\n  float: left;\n  font-size: 36.5rpx;\n  margin-left: 20rpx;\n  width: 480rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  overflow: hidden;\n  color: #333;\n}\n\n.detail {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.detail image {\n  width: 750rpx;\n  display: block;\n}\n\n.common-problem {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.common-problem .h {\n  position: relative;\n  height: 145.5rpx;\n  width: 750rpx;\n  padding: 56.25rpx 0;\n  background: #fff;\n  text-align: center;\n}\n\n.common-problem .h .line {\n  display: inline-block;\n  position: absolute;\n  top: 72rpx;\n  left: 0;\n  z-index: 2;\n  height: 1px;\n  margin-left: 225rpx;\n  width: 300rpx;\n  background: #ccc;\n}\n\n.common-problem .h .title {\n  display: inline-block;\n  position: absolute;\n  top: 56.125rpx;\n  left: 0;\n  z-index: 3;\n  height: 33rpx;\n  margin-left: 285rpx;\n  width: 180rpx;\n  background: #fff;\n}\n\n.common-problem .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding: 0rpx 30rpx;\n  background: #fff;\n}\n\n.common-problem .item {\n  height: auto;\n  overflow: hidden;\n  padding-bottom: 25rpx;\n}\n\n.common-problem .question-box .spot {\n  float: left;\n  display: block;\n  height: 8rpx;\n  width: 8rpx;\n  background: #b4282d;\n  border-radius: 50%;\n  margin-top: 11rpx;\n}\n\n.common-problem .question-box .question {\n  float: left;\n  line-height: 30rpx;\n  padding-left: 8rpx;\n  display: block;\n  font-size: 26rpx;\n  padding-bottom: 15rpx;\n  color: #303030;\n}\n\n.common-problem .answer {\n  line-height: 36rpx;\n  padding-left: 16rpx;\n  font-size: 26rpx;\n  color: #787878;\n}\n\n.related-goods {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding-bottom: 120rpx;\n}\n\n.related-goods .h {\n  position: relative;\n  height: 145.5rpx;\n  width: 750rpx;\n  padding: 56.25rpx 0;\n  background: #fff;\n  text-align: center;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.related-goods .h .line {\n  display: inline-block;\n  position: absolute;\n  top: 72rpx;\n  left: 0;\n  z-index: 2;\n  height: 1px;\n  margin-left: 225rpx;\n  width: 300rpx;\n  background: #ccc;\n}\n\n.related-goods .h .title {\n  display: inline-block;\n  position: absolute;\n  top: 56.125rpx;\n  left: 0;\n  z-index: 3;\n  height: 33rpx;\n  margin-left: 285rpx;\n  width: 180rpx;\n  background: #fff;\n}\n\n.bottom-btn {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  z-index: 10;\n  width: 750rpx;\n  height: 100rpx;\n  display: flex;\n  background: #fff;\n}\n\n.bottom-btn .l {\n  float: left;\n  height: 100rpx;\n  width: 162rpx;\n  border: 1px solid #f4f4f4;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.bottom-btn .l.l-collect {\n  border-right: none;\n  border-left: none;\n  text-align: center;\n  width: 162rpx;\n}\n\n.bottom-btn .l.l-kefu {\n  position: relative;\n  height: 54rpx;\n  width: 63rpx;\n}\n\n.bottom-btn .l.l-cart .box {\n  position: relative;\n  height: 60rpx;\n  width: 60rpx;\n}\n\n.bottom-btn .l.l-cart .cart-count {\n  height: 28rpx;\n  width: 28rpx;\n  z-index: 10;\n  position: absolute;\n  top: 0;\n  right: 0;\n  background: #a78845;\n  text-align: center;\n  font-size: 18rpx;\n  color: #fff;\n  line-height: 28rpx;\n  border-radius: 50%;\n}\n\n.bottom-btn .l.l-cart .icon {\n  position: absolute;\n  top: 10rpx;\n  left: 0;\n}\n\n.bottom-btn .l.l-kefu .kefu-count {\n  height: 28rpx;\n  width: 28rpx;\n  z-index: 10;\n  position: absolute;\n  top: 0;\n  right: 0;\n  /* background: #b4282d; */\n  text-align: center;\n  font-size: 18rpx;\n  color: #fff;\n  line-height: 28rpx;\n  border-radius: 50%;\n}\n\n.bottom-btn .l.l-kefu .icon {\n  position: absolute;\n  top: 10rpx;\n  left: 0;\n}\n\n.bottom-btn .l .icon {\n  display: block;\n  height: 44rpx;\n  width: 44rpx;\n}\n\n.bottom-btn .c {\n  border: 1px solid #a78845;\n  background: #a78845;\n  float: left;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: #fff;\n}\n\n.bottom-btn .r {\n  border: 1px solid #d3bd8f;\n  background: #d3bd8f;\n  float: left;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: #fff;\n}\n\n.bottom-btn .n {\n  border: 1px solid #d3bd8f;\n  background: #d3bd8f;\n  float: left;\n  height: 100rpx;\n  line-height: 96rpx;\n  flex: 1;\n  text-align: center;\n  color: #fff;\n}\n@import \"../../lib/wxParse/wxParse.wxss\";\n\n.attr-pop-box {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  background: rgba(0, 0, 0, 0.5);\n  z-index: 8;\n  bottom: 0;\n  /* display: none; */\n}\n\n.attr-pop {\n  width: 100%;\n  height: auto;\n  max-height: 780rpx;\n  padding: 31.25rpx;\n  background: #fff;\n  position: fixed;\n  z-index: 9;\n  bottom: 100rpx;\n}\n\n.attr-pop .close {\n  position: absolute;\n  width: 48rpx;\n  height: 48rpx;\n  right: 31.25rpx;\n  overflow: hidden;\n  top: 31.25rpx;\n}\n\n.attr-pop .close .icon {\n  width: 48rpx;\n  height: 48rpx;\n}\n\n.attr-pop .img-info {\n  width: 687.5rpx;\n  height: 177rpx;\n  overflow: hidden;\n  margin-bottom: 41.5rpx;\n}\n\n.attr-pop .img {\n  float: left;\n  height: 177rpx;\n  width: 177rpx;\n  background: #f4f4f4;\n  margin-right: 31.25rpx;\n}\n\n.attr-pop .info {\n  float: left;\n  height: 177rpx;\n  display: flex;\n  align-items: center;\n}\n\n.attr-pop .p {\n  font-size: 33rpx;\n  color: #333;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10rpx;\n}\n\n.attr-pop .a {\n  font-size: 29rpx;\n  color: #333;\n  height: 40rpx;\n  line-height: 40rpx;\n}\n\n.spec-con {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.spec-con .name {\n  height: 32rpx;\n  margin-bottom: 22rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.spec-con .values {\n  height: auto;\n  margin-bottom: 31.25rpx;\n  font-size: 0;\n}\n\n.spec-con .value {\n  display: inline-block;\n  height: 62rpx;\n  padding: 0 35rpx;\n  line-height: 56rpx;\n  text-align: center;\n  margin-right: 25rpx;\n  margin-bottom: 16.5rpx;\n  border: 1px solid #333;\n  font-size: 25rpx;\n  color: #333;\n}\n\n.spec-con .value.disable {\n  border: 1px solid #ccc;\n  color: #ccc;\n}\n\n.spec-con .value.selected {\n  border: 1px solid #b4282d;\n  color: #b4282d;\n}\n\n.number-item .selnum {\n  width: 322rpx;\n  height: 71rpx;\n  border: 1px solid #ccc;\n  display: flex;\n}\n\n.number-item .cut {\n  width: 93.75rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 65rpx;\n}\n\n.number-item .number {\n  flex: 1;\n  height: 100%;\n  text-align: center;\n  line-height: 68.75rpx;\n  border-left: 1px solid #ccc;\n  border-right: 1px solid #ccc;\n  float: left;\n}\n\n.number-item .add {\n  width: 93.75rpx;\n  height: 100%;\n  text-align: center;\n  line-height: 65rpx;\n}\n\n.contact {\n  height: 100rpx;\n  width: 100rpx;\n  background-color: #008000;\n  border-radius: 100%;\n  position: fixed;\n  bottom: 150rpx;\n  right: 20rpx;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  z-index: 9;\n  flex-direction: column;\n  /*line-height: 100rpx;\n  text-align: center;\n  padding-top: 26rpx;*/\n  font-size: 20rpx;\n  color: #008000;\n  box-sizing: border-box;\n  background: url(\"https://litemall.oss-cn-shenzhen.aliyuncs.com/kefu.png\") no-repeat center 21rpx;\n  background-size: 55rpx auto;\n}\n\n.contact .name {\n  font-size: 32rpx;\n  max-width: 80rpx;\n  color: #fff;\n  text-align: center;\n}\n"
  },
  {
    "path": "renard-wx/pages/groupon/grouponDetail/grouponDetail.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    id: 0,\n    orderId: 0,\n    groupon: {},\n    linkGrouponId: 0,\n    joiners: [],\n    orderInfo: {},\n    orderGoods: [],\n    expressInfo: {},\n    flag: false,\n    handleOption: {}\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      id: options.id\n    });\n    this.getOrderDetail();\n  },\n\n  // 页面分享\n  onShareAppMessage: function() {\n    let that = this;\n    return {\n      title: '邀请团购',\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/index/index?grouponId=' + this.data.linkGrouponId\n    }\n  },\n\n  showShare: function() {\n    this.sharePop.togglePopup();\n  },\n\n  onPullDownRefresh() {\n    this.getOrderDetail();\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  expandDetail: function() {\n    let that = this;\n    this.setData({\n      flag: !that.data.flag\n    })\n  },\n  getOrderDetail: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.GroupOnDetail, {\n      grouponId: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          joiners: res.data.joiners,\n          groupon: res.data.groupon,\n          linkGrouponId: res.data.linkGrouponId,\n          orderId: res.data.orderInfo.id,\n          orderInfo: res.data.orderInfo,\n          orderGoods: res.data.orderGoods,\n          handleOption: res.data.orderInfo.handleOption,\n          expressInfo: res.data.expressInfo\n        });\n\n        wx.hideLoading();\n      }\n    });\n  },\n\n  onReady: function() {\n    // 页面渲染完成\n    this.sharePop = this.selectComponent(\"#sharePop\");\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n});"
  },
  {
    "path": "renard-wx/pages/groupon/grouponDetail/grouponDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"团购详情\",\n  \"usingComponents\": {\n    \"sharePop\": \"/components/sharePop/sharePop\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/groupon/grouponDetail/grouponDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"order-info\">\n    <view class=\"item-a\">下单时间：{{orderInfo.addTime}}</view>\n    <view class=\"item-b\">订单编号：{{orderInfo.orderSn}}</view>\n    <view class=\"item-c\">\n      <view class=\"l\">实付：\n        <text class=\"cost\">￥{{orderInfo.actualPrice}}</text>\n      </view>\n      <view class=\"r\">\n        <view class=\"btn active\" bindtap=\"showShare\">邀请参团</view>\n      </view>\n    </view>\n  </view>\n\n  <sharePop id=\"sharePop\" url=\"{{groupon.shareUrl}}\"></sharePop>\n\n  <view class=\"menu-list-pro\">\n    <view class=\"h\">\n      <view class=\"label\">参与团购 ( {{joiners.length}}人)</view>\n      <!-- <view class=\"status\">查看全部</view> -->\n    </view>\n    <view class=\"menu-list-item\" wx:for-items=\"{{joiners}}\" wx:key=\"id\" data-id=\"{{item.id}}\">\n      <image class=\"icon\" src=\"{{item.avatar}}\"></image>\n      <text class=\"txt\">{{item.nickname}}</text>\n    </view>\n  </view>\n\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      <view class=\"label\">商品信息</view>\n      <view class=\"status\">{{orderInfo.orderStatusText}}</view>\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.goodsSpecificationValues}}</view>\n          <view class=\"price\">￥{{item.retailPrice}}</view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"order-bottom\">\n      <view class=\"address\">\n        <view class=\"t\">\n          <text class=\"name\">{{orderInfo.consignee}}</text>\n          <text class=\"mobile\">{{orderInfo.mobile}}</text>\n        </view>\n        <view class=\"b\">{{orderInfo.address}}</view>\n      </view>\n      <view class=\"total\">\n        <view class=\"t\">\n          <text class=\"label\">商品合计：</text>\n          <text class=\"txt\">￥{{orderInfo.goodsPrice}}</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">运费：</text>\n          <text class=\"txt\">￥{{orderInfo.freightPrice}}</text>\n        </view>\n      </view>\n      <view class=\"pay-fee\">\n        <text class=\"label\">实付：</text>\n        <text class=\"txt\">￥{{orderInfo.actualPrice}}</text>\n      </view>\n    </view>\n  </view>\n\n  <!-- 物流信息,仅收货状态下可见 -->\n  <view class=\"order-express\" bindtap=\"expandDetail\" wx:if=\"{{ handleOption.confirm }}\">\n    <view class=\"expand\">\n      <view class=\"title\">\n        <view class=\"t\">快递公司：{{expressInfo.shipperName}}</view>\n        <view class=\"b\">物流单号：{{expressInfo.logisticCode}}</view>\n      </view>\n      <image class=\"ti\" src=\"/static/images/address_right.png\" background-size=\"cover\"></image>\n    </view>\n\n    <!-- <view class=\"order-express\" > -->\n    <view class=\"traces\" wx:for=\"{{expressInfo.Traces}}\" wx:key=\"item\" wx:for-item=\"iitem\" wx:if=\"{{ flag }}\">\n      <view class=\"trace\">\n        <view class=\"acceptStation\">{{iitem.AcceptStation}}</view>\n        <view class=\"acceptTime\">{{iitem.AcceptTime}}</view>\n      </view>\n    </view>\n  </view>\n  <!-- </view> -->\n</view>"
  },
  {
    "path": "renard-wx/pages/groupon/grouponDetail/grouponDetail.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.order-info {\n  padding-top: 25rpx;\n  background: #fff;\n  height: auto;\n  overflow: hidden;\n}\n\n.item-a {\n  padding-left: 31.25rpx;\n  height: 42.5rpx;\n  padding-bottom: 12.5rpx;\n  line-height: 30rpx;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.item-b {\n  padding-left: 31.25rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  margin-top: 12.5rpx;\n  margin-bottom: 41.5rpx;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.item-c {\n  margin-left: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  height: 103rpx;\n  line-height: 103rpx;\n}\n\n.item-c .l {\n  float: left;\n}\n\n.item-c .r {\n  height: 103rpx;\n  float: right;\n  display: flex;\n  align-items: center;\n  padding-right: 16rpx;\n}\n\n.item-c .r .btn {\n  float: right;\n}\n\n.item-c .cost {\n  color: #b4282d;\n}\n\n.item-c .btn {\n  line-height: 66rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n  height: 66rpx;\n}\n\n.item-c .btn.active {\n  background: #a78845;\n  color: #fff;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .btn {\n  height: 50rpx;\n  line-height: 50rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  display: block;\n  float: right;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n}\n\n.order-goods .item .btn.active {\n  background: #b4282d;\n  color: #fff;\n}\n\n.order-bottom {\n  margin-top: 20rpx;\n  padding-left: 31.25rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-bottom .address {\n  height: 128rpx;\n  padding-top: 25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .address .t {\n  height: 35rpx;\n  line-height: 35rpx;\n  margin-bottom: 7.5rpx;\n}\n\n.order-bottom .address .name {\n  display: inline-block;\n  height: 35rpx;\n  width: 140rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .mobile {\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .b {\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total {\n  height: 106rpx;\n  padding-top: 20rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .total .t {\n  height: 30rpx;\n  line-height: 30rpx;\n  margin-bottom: 7.5rpx;\n  display: flex;\n}\n\n.order-bottom .total .label {\n  width: 150rpx;\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total .txt {\n  flex: 1;\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .pay-fee {\n  height: 81rpx;\n  line-height: 81rpx;\n}\n\n.order-bottom .pay-fee .label {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-bottom .pay-fee .txt {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-express {\n  margin-top: 20rpx;\n  width: 100%;\n  height: 100rpx;\n  background: #fff;\n}\n\n.order-express .expand {\n  /* margin-top: 20rpx; */\n  width: 100%;\n  height: 100rpx;\n  background: #fff;\n  /* border: 10rpx #a78845; */\n}\n\n.order-express .title {\n  float: left;\n  margin-bottom: 20rpx;\n  padding: 10rpx;\n}\n\n.order-express .ti {\n  float: right;\n  width: 52rpx;\n  height: 52rpx;\n  margin-right: 16rpx;\n  margin-top: 28rpx;\n}\n\n.order-express .t {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .b {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .traces {\n  padding: 17.5rpx;\n  background: #fff;\n  border-bottom: 1rpx solid #f1e6cdcc;\n}\n\n.order-express .trace {\n  padding-bottom: 17.5rpx;\n  padding-top: 17.5rpx;\n  background: #fff;\n}\n\n.order-express .acceptTime {\n  margin-top: 20rpx;\n  margin-right: 40rpx;\n  text-align: right;\n  font-size: 26rpx;\n}\n\n.order-express .acceptStation {\n  font-size: 26rpx;\n}\n\n.menu-list-pro {\n  margin-top: 20rpx;\n  overflow-x: scroll;\n  white-space: nowrap;\n  text-overflow: ellipsis;\n  height: 260rpx;\n  width: 100%;\n  overflow: hidden;\n  border-bottom: 1rpx #cfc9ca;\n  background-color: #fff;\n}\n\n.menu-list-pro .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.menu-list-pro .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.menu-list-pro .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #a78845;\n}\n\n.menu-list-pro  .menu-list-item {\n  display: block;\n  float: left;\n  height: 110rpx;\n  width: 80rpx;\n  margin-top: 30rpx;\n  margin-bottom: 30rpx;\n  margin-left: 40rpx;\n}\n\n.menu-list-pro .icon {\n  height: 80rpx;\n  width: 80rpx;\n  border-radius: 12rpx;\n  box-shadow: 0px 4rpx 4rpx 0px #cfc9ca;\n}\n\n.menu-list-pro .txt {\n  display: block;\n  float: left;\n  width: 80rpx;\n  margin-top: 5rpx;\n  font-size: 22rpx;\n  color: #a78845;\n}\n"
  },
  {
    "path": "renard-wx/pages/groupon/grouponList/grouponList.js",
    "content": "// pages/groupon/grouponList/grouponList.js\nvar util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar app = getApp();\n\nPage({\n\n  /**\n   * 页面的初始数据\n   */\n  data: {\n    grouponList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n\n  /**\n   * 生命周期函数--监听页面加载\n   */\n  onLoad: function(options) {\n    this.getGrouponList();\n  },\n\n  /**\n   * 生命周期函数--监听页面初次渲染完成\n   */\n  onReady: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面显示\n   */\n  onShow: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面隐藏\n   */\n  onHide: function() {\n\n  },\n\n  /**\n   * 生命周期函数--监听页面卸载\n   */\n  onUnload: function() {\n\n  },\n\n  /**\n   * 页面相关事件处理函数--监听用户下拉动作\n   */\n  onPullDownRefresh: function() {\n\n  },\n\n  /**\n   * 页面上拉触底事件的处理函数\n   */\n  onReachBottom: function() {\n\n  },\n\n  /**\n   * 用户点击右上角分享\n   */\n  onShareAppMessage: function() {\n\n  },\n  getGrouponList: function() {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      grouponList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.GroupOnList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          grouponList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  nextPage: function(event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.size) {\n      return true;\n    }\n\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getGrouponList();\n\n  },\n  prevPage: function(event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getGrouponList();\n  }\n})"
  },
  {
    "path": "renard-wx/pages/groupon/grouponList/grouponList.json",
    "content": "{\n  \"navigationBarTitleText\": \"团购专区\",\n  \"usingComponents\": {\n    \"zan-capsule\": \"/components/capsule/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/groupon/grouponList/grouponList.wxml",
    "content": "<view class=\"container\">\n  <scroll-view class=\"groupon-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n\n    <view class=\"item\" wx:for=\"{{grouponList}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n      <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n        <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n        <view class=\"right\">\n          <view class=\"text\">\n            <view class=\"header\">\n              <text class=\"name\">{{item.name}}</text>\n              <view class=\"capsule-tag\">\n                  <zan-capsule color=\"#a78845\" leftText=\"{{item.grouponMember}}人成团\" rightText=\"立减{{item.grouponDiscount}}\" />\n              </view>\n            </view>\n            <text class=\"desc\">{{item.brief}}</text>\n            <view class=\"price\">\n              <view class=\"counterPrice\">现价：￥{{item.retailPrice}}</view>\n              <view class=\"retailPrice\">团购价：￥{{item.grouponPrice}}</view>\n            </view>\n          </view>\n        </view>\n      </navigator>\n    </view>\n\n    <view class=\"page\" wx:if=\"{{showPage}}\">\n      <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n      <view class=\"next {{ (count / limit) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "renard-wx/pages/groupon/grouponList/grouponList.wxss",
    "content": "page, .container {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.groupon-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.groupon-list .item {\n  height: 244rpx;\n  width: 100%;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.groupon-list .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 220rpx;\n  height: 220rpx;\n}\n\n.groupon-list .right {\n  float: left;\n  height: 244rpx;\n  width: 476rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.groupon-list .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 244rpx;\n  width: 476rpx;\n}\n\n.groupon-list .name {\n  float: left;\n  width: 330rpx;\n  display: block;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 30rpx;\n}\n\n.groupon-list .capsule-tag {\n  float: right;\n  padding-right: 0rpx;\n  padding-top: 8rpx;\n}\n\n.groupon-list .zan-capsule + .zan-capsule {\n  margin-left: 10px;\n}\n\n.groupon-list .desc {\n  width: 476rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.groupon-list .price {\n  width: 476rpx;\n  display: flex;\n  color: #ab956d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.groupon-list .counterPrice {\n  text-decoration: line-through;\n  font-size: 28rpx;\n  color: #999;\n}\n\n.groupon-list .retailPrice {\n  margin-left: 30rpx;\n  font-size: 28rpx;\n  color: #a78845;\n}\n\n.page {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.page view {\n  height: 108rpx;\n  width: 50%;\n  float: left;\n  font-size: 29rpx;\n  color: #333;\n  text-align: center;\n  line-height: 108rpx;\n}\n\n.page .prev {\n  border-right: 1px solid #d9d9d9;\n}\n\n.page .disabled {\n  color: #ccc;\n}\n"
  },
  {
    "path": "renard-wx/pages/groupon/myGroupon/myGroupon.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderList: [],\n    showType: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n\n  onPullDownRefresh() {\n    // wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getOrderList();\n    // wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getOrderList() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.GroupOnMy, {\n      showType: that.data.showType\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          orderList: res.data.list\n        });\n        wx.hideLoading();\n      }\n    });\n  },\n  switchTab: function(event) {\n    let showType = event.currentTarget.dataset.index;\n    this.setData({\n      showType: showType\n    });\n    this.getOrderList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getOrderList();\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "renard-wx/pages/groupon/myGroupon/myGroupon.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的团购\",\n  \"usingComponents\": {\n    \"zan-capsule\": \"/components/capsule/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/groupon/myGroupon/myGroupon.wxml",
    "content": "<view class=\"container\">\n  <view class=\"orders-switch\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='0'>\n      <view class=\"txt\">发起的团购</view>\n    </view>\n    <view class=\"item {{ showType == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">参加的团购</view>\n    </view>\n  </view>\n  <view class=\"no-order\" wx:if=\"{{orderList.length <= 0}}\">\n    <view class=\"c\">\n      <image src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/noCart-a8fe3f12e5.png\" />\n      <text>尚未参加任何团购</text>\n    </view>\n  </view>\n\n  <view class=\"orders\">\n    <navigator url=\"../grouponDetail/grouponDetail?id={{item.id}}\" class=\"order\" open-type=\"navigate\" wx:for=\"{{orderList}}\" wx:key=\"id\">\n      <view class=\"h\">\n        <view class=\"l\">订单编号：{{item.orderSn}}</view>\n        <view class=\"r\">{{item.orderStatusText}}</view>\n      </view>\n      <view class=\"j\">\n        <view class=\"l\">团购立减：￥{{item.rules.discount}}</view>\n        <view class=\"r\">参与时间：{{item.groupon.addTime}}</view>\n      </view>\n      <view class=\"i\">\n        <view class=\"l\">团购要求：{{item.rules.discountMember}}人</view>\n        <view class=\"r\">当前参与：{{item.joinerCount}}</view>\n      </view>\n      <view class=\"goods\" wx:for=\"{{item.goodsList}}\" wx:key=\"id\" wx:for-item=\"gitem\">\n        <view class=\"img\">\n          <image src=\"{{gitem.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <text class=\"name\">{{gitem.goodsName}}</text>\n          <text class=\"number\">共{{gitem.number}}件商品</text>\n        </view>\n        <view class=\"status\"></view>\n      </view>\n      <view class=\"b\">\n        <view class=\"l\">实付：￥{{item.actualPrice}}</view>\n        <view class=\"capsule-tag\">\n          <zan-capsule color=\"#a78845\" leftText=\"状态\" rightText=\"{{item.joinerCount>=item.rules.discountMember?'已达成':'团购中'}}\" />\n        </view>\n        <view class=\"capsule-tag\">\n          <zan-capsule color=\"#a78845\" leftText=\"发起\" rightText=\"{{item.creator}}\" wx:if=\"{{!item.isCreator}}\" />\n        </view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/groupon/myGroupon/myGroupon.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.capsule-tag {\n  float: right;\n  /* padding-right: 10rpx; */\n}\n\n.zan-capsule + .zan-capsule {\n  margin-left: 5px;\n}\n\n.orders-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid #a78845;\n}\n\n.orders-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 50%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.orders-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 100%;\n}\n\n.orders-switch .item.active .txt {\n  color: #a78845;\n  border-bottom: 4rpx solid #a78845;\n}\n\n.no-order {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-order .c {\n  width: 100%;\n  height: auto;\n  margin-top: 200rpx;\n}\n\n.no-order .c image {\n  margin: 0 auto;\n  display: block;\n  text-align: center;\n  width: 258rpx;\n  height: 258rpx;\n}\n\n.no-order .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.orders {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.order {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order .h {\n  height: 83.3rpx;\n  line-height: 83.3rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order .h .l {\n  float: left;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .h .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .i {\n  height: 56rpx;\n  line-height: 56rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order .i .l {\n  float: left;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .i .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .j {\n  height: 56rpx;\n  line-height: 56rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n}\n\n.order .j .l {\n  float: left;\n  font-size: 26rpx;\n  color: #a78845;\n}\n\n.order .j .r {\n  float: right;\n  color: #a78845;\n  font-size: 26rpx;\n}\n\n.order .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.order .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.order .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.order .goods .status {\n  width: 105rpx;\n  color: #a78845;\n  font-size: 25rpx;\n}\n\n.order .b {\n  height: 103rpx;\n  line-height: 103rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .b .l {\n  float: left;\n}\n\n.order .b .r {\n  float: right;\n}\n\n.order .b .btn {\n  margin-top: 19rpx;\n  height: 64.5rpx;\n  line-height: 64.5rpx;\n  text-align: center;\n  padding: 0 20rpx;\n  border-radius: 5rpx;\n  font-size: 28rpx;\n  color: #fff;\n  background: #a78845;\n}\n"
  },
  {
    "path": "renard-wx/pages/hotGoods/hotGoods.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    bannerInfo: {\n      'imgUrl': 'http://yanxuan.nosdn.127.net/8976116db321744084774643a933c5ce.png',\n      'name': '大家都在买的'\n    },\n    categoryFilter: false,\n    filterCategory: [],\n    goodsList: [],\n    categoryId: 0,\n    currentSortType: 'default',\n    currentSort: 'add_time',\n    currentSortOrder: 'desc',\n    page: 1,\n    limit: 10\n  },\n  getCategoryList: function() {\n    var that = this;\n\n    util.request(api.GoodsFilter, {\n        isHot: 1\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            filterCategory: res.data.filterCategoryList,\n          });\n        }\n      });\n  },\n  getGoodsList: function() {\n    var that = this;\n\n    util.request(api.GoodsList, {\n        isHot: true,\n        page: that.data.page,\n        limit: that.data.limit,\n        order: that.data.currentSortOrder,\n        sort: that.data.currentSort,\n        categoryId: that.data.categoryId\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list,\n            filterCategory: res.data.filterCategoryList\n          });\n        }\n      });\n\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getGoodsList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0,\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    this.setData({\n      'categoryFilter': false,\n      'categoryId': this.data.filterCategory[currentIndex].id\n    });\n    this.getGoodsList();\n  }\n})"
  },
  {
    "path": "renard-wx/pages/hotGoods/hotGoods.json",
    "content": "{\n  \"navigationBarTitleText\": \"人气推荐\"\n}"
  },
  {
    "path": "renard-wx/pages/hotGoods/hotGoods.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{bannerInfo.imgUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{bannerInfo.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n  </view>\n  <view class=\"sort\">\n    <view class=\"sort-box\">\n      <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n        <text class=\"txt\">综合</text>\n      </view>\n      <view class=\"item by-price {{currentSortType == 'price' ? 'active' : ''}} {{currentSortOrder == 'asc'  ? 'asc' : 'desc'}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n        <text class=\"txt\">价格</text>\n      </view>\n      <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"categoryFilter\">\n        <text class=\"txt\">分类</text>\n      </view>\n    </view>\n    <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n      <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n    </view>\n  </view>\n  <view class=\"cate-item\">\n    <view class=\"b\">\n      <block wx:for=\"{{goodsList}}\" wx:for-index=\"iindex\" wx:for-item=\"iitem\" wx:key=\"id\">\n        <navigator class=\"item {{iindex % 2 == 0 ? 'item-b' : '' }}\" url=\"../goods/goods?id={{iitem.id}}\">\n          <image class=\"img\" src=\"{{iitem.picUrl}}\" background-size=\"cover\"></image>\n          <text class=\"name\">{{iitem.name}}</text>\n          <text class=\"price\">￥{{iitem.retailPrice}}</text>\n        </navigator>\n      </block>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/hotGoods/hotGoods.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 278rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 40rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.sort {\n  position: relative;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  display: block;\n  width: 100%;\n  height: 100%;\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #b4282d;\n}\n\n.sort-box .item.by-price {\n  background: url(//yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/no-3127092a69.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.asc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/up-636b92c0a5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.desc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/down-95e035f3e5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n}\n\n.sort-box-category .item.active {\n  color: #b4282d;\n  border: 1px solid #b4282d;\n}\n\n.cate-item .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  border-top: 1rpx solid #f4f4f4;\n  margin-top: 20rpx;\n}\n\n.cate-item .b .item {\n  float: left;\n  background: #fff;\n  width: 375rpx;\n  padding-bottom: 33.333rpx;\n  border-bottom: 1rpx solid #f4f4f4;\n  height: auto;\n  overflow: hidden;\n  text-align: center;\n}\n\n.cate-item .b .item-b {\n  border-right: 1rpx solid #f4f4f4;\n}\n\n.cate-item .item .img {\n  margin-top: 10rpx;\n  width: 302rpx;\n  height: 302rpx;\n}\n\n.cate-item .item .name {\n  display: block;\n  width: 365.625rpx;\n  height: 35rpx;\n  padding: 0 20rpx;\n  overflow: hidden;\n  margin: 11.5rpx 0 22rpx 0;\n  text-align: center;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .item .price {\n  display: block;\n  width: 365.625rpx;\n  height: 30rpx;\n  text-align: center;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n"
  },
  {
    "path": "renard-wx/pages/index/index.js",
    "content": "const util = require('../../utils/util.js');\nconst api = require('../../config/api.js');\nconst user = require('../../utils/user.js');\n\n//获取应用实例\nconst app = getApp();\n\nPage({\n  data: {\n    newGoods: [],\n    hotGoods: [],\n    topics: [],\n    brands: [],\n    groupons: [],\n    floorGoods: [],\n    // banner: [],\n    channel: []\n  },\n  onShareAppMessage: function() {\n    return {\n      title: 'Renard',\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/index/index'\n    }\n  },\n\n  onPullDownRefresh() {\n    this.getIndexData();\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getIndexData: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.IndexUrl).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          newGoods: res.data.newGoodsList,\n          hotGoods: res.data.hotGoodsList,\n          topics: res.data.topicList,\n          brands: res.data.brandList,\n          floorGoods: res.data.floorGoodsList,\n          // banner: res.data.banner,\n          groupons: res.data.grouponList,\n          channel: res.data.channel\n        });\n        wx.hideLoading();\n      }\n    });\n  },\n  onLoad: function(options) {\n    var that = this;\n    wx.getSystemInfo({\n      success: function(res) {\n        that.setData({\n          windowWidth: res.windowWidth,\n          windowHeight: res.windowHeight\n        });\n      }\n    });\n\n    if (options.scene) {\n      var scene = decodeURIComponent(options.scene);\n      console.log(\"scene:\" + scene);\n\n      let info_arr = [];\n      info_arr = scene.split(',');\n      let _type = info_arr[0];\n      let id = info_arr[1];\n\n      if (_type == 'goods') {\n        wx.navigateTo({\n          url: '../goods/goods?id=' + id\n        });\n      } else if (_type == 'groupon') {\n        wx.navigateTo({\n          url: '../goods/goods?grouponId=' + id\n        });\n      } else {\n        wx.navigateTo({\n          url: '../index/index'\n        });\n      }\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.grouponId) {\n      //这个pageId的值存在则证明首页的开启来源于用户点击来首页,同时可以通过获取到的pageId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../goods/goods?grouponId=' + options.grouponId\n      });\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.goodId) {\n      //这个pageId的值存在则证明首页的开启来源于用户点击来首页,同时可以通过获取到的pageId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../goods/goods?id=' + options.goodId\n      });\n    }\n\n    // 页面初始化 options为页面跳转所带来的参数\n    if (options.orderId) {\n      //这个pageId的值存在则证明首页的开启来源于用户点击来首页,同时可以通过获取到的pageId的值跳转导航到对应的详情页\n      wx.navigateTo({\n        url: '../ucenter/orderDetail/orderDetail?id=' + options.orderId\n      });\n    }\n\n    this.getIndexData();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n});"
  },
  {
    "path": "renard-wx/pages/index/index.json",
    "content": "{\n  \"navigationBarTitleText\": \"首页\",\n  \"usingComponents\": {\n    \"zan-capsule\": \"/components/capsule/index\",\n    \"goodList\": \"/components/goodList/goodList\",\n    \"van-notice-bar\": \"/components/notice-bar/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/index/index.wxml",
    "content": "<view class=\"container\">\n  <!-- 首页顶部通知消息 -->\n  <van-notice-bar scrollable=\"true\" text=\"目前上架的商品均可直接下单购买，欢迎大家购买支持我的工作！\" />\n\n  <view class=\"HotName\">今日推荐\n    <text></text>\n  </view>\n  <view class=\"HotMark\">唯爱与美食不可辜负</view>\n\n  <view class=\"HotSwiper\" style=\"margin-top:{{windowHeight/45}}px\">\n    <swiper circular=\"true\" autoplay=\"true\" interval=\"6000\" duration=\"500\" previous-margin=\"{{windowWidth/3.8}}rpx\" next-margin=\"{{windowWidth/3.8}}rpx\">\n      <block wx:for-items=\"{{hotGoods}}\" wx:key=\"{{id}}\">\n        <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n          <swiper-item>\n            <view class=\"swiper-box\">\n              <view class='form_class'>\n                <button formType=\"submit\" class='form_button'>\n                  <image src=\"{{item.picUrl}}\" mode=\"aspectFill\" data-id=\"{{item.id}}\" />\n                </button>\n              </view>\n              <view class=\"swiper-box-info\">\n                <view class=\"name\">{{item.name}}</view>\n                <view class=\"price\">\n                  <view class=\"counterPrice\" wx:if=\"{{item.counterPrice > item.retailPrice}}\">原价：￥{{item.counterPrice}}</view>\n                  <view class=\"retailPrice\">现价：￥{{item.retailPrice}}</view>\n                </view>\n                <view class=\"capsule-tag\" wx:if=\"{{item.isNew == true}}\">\n                  <zan-capsule color=\"#a78845\" leftText=\"N\" rightText=\"新 品\" />\n                </view>\n                <view class=\"capsule-tag\" wx:if=\"{{item.counterPrice > item.retailPrice}}\">\n                  <zan-capsule color=\"#b4282d\" leftText=\"H\" rightText=\"折 扣\" />\n                </view>\n              </view>\n            </view>\n          </swiper-item>\n        </navigator>\n      </block>\n    </swiper>\n  </view>\n\n  <view class=\"a-section a-groupon\" wx:if=\"{{groupons.length > 0}}\">\n    <view class=\"h\">\n      <view class=\"title\">\n        <view>\n          <navigator url=\"/pages/groupon/grouponList/grouponList\">\n            <text class=\"txt\">优惠专区</text>\n          </navigator>\n        </view>\n      </view>\n    </view>\n    <view class=\"b\">\n      <view class=\"item\" wx:for=\"{{groupons}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n        <navigator url=\"/pages/goods/goods?id={{item.id}}\">\n          <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n          <view class=\"right\">\n            <view class=\"text\">\n              <view class=\"header\">\n                <text class=\"name\">{{item.name}}</text>\n                <view class=\"capsule-tag\">\n                  <zan-capsule color=\"#a78845\" leftText=\"{{item.grouponMember}}人成团\" rightText=\"立减{{item.grouponDiscount}}\" />\n                </view>\n              </view>\n              <text class=\"desc\">{{item.brief}}</text>\n              <view class=\"price\">\n                <view class=\"counterPrice\">原价：￥{{item.retailPrice}}</view>\n                <view class=\"retailPrice\">团购价：￥{{item.grouponPrice}}</view>\n              </view>\n            </view>\n          </view>\n        </navigator>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"a-section a-new\" wx:if=\"{{newGoods.length > 0}}\">\n    <view class=\"h\">\n      <view class=\"title\">\n        <navigator url=\"../newGoods/newGoods\">\n          <text class=\"txt\">新品首发</text>\n        </navigator>\n      </view>\n    </view>\n    <goodList goods=\"{{newGoods}}\"></goodList>\n  </view>\n\n  <view class=\"a-section a-brand\">\n    <view class=\"h\">\n      <view class=\"title\">\n        <navigator url=\"../brand/brand\">\n          <text class=\"txt\">品牌制造商直供</text>\n        </navigator>\n      </view>\n    </view>\n    <view class=\"b\">\n      <view class=\"item item-1\" wx:for=\"{{brands}}\" wx:key=\"id\">\n        <navigator url=\"/pages/brandDetail/brandDetail?id={{item.id}}\">\n          <view class=\"wrap\">\n            <image class=\"img\" src=\"{{item.picUrl}}\" mode=\"aspectFill\"></image>\n            <view class=\"mt\">\n              <text class=\"brand\">{{item.name}}</text>\n            </view>\n          </view>\n        </navigator>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"good-grid\" wx:for=\"{{floorGoods}}\" wx:key=\"id\">\n    <navigator url=\"/pages/category/category?id={{item.id}}\" class=\"more-a\">\n      <view class=\"h\" wx:if=\"{{item.goodsList.length > 0}}\">\n        <text>{{item.name}}</text>\n      </view>\n    </navigator>\n    <goodList goods=\"{{item.goodsList}}\"></goodList>\n  </view>\n\n  <view class=\"a-section a-topic\" wx:if=\"topics.length > 0\">\n    <view class=\"h\">\n      <view class=\"title\">\n        <navigator url=\"/pages/topic/topic\">\n          <text class=\"txt\">专题精选</text>\n        </navigator>\n      </view>\n    </view>\n    <view class=\"b\">\n      <scroll-view scroll-x class=\"list\">\n        <view class=\"item\" wx:for=\"{{topics}}\" wx:for-index=\"index\" wx:for-item=\"item\" wx:key=\"id\">\n          <navigator url=\"../topicDetail/topicDetail?id={{item.id}}\">\n            <image class=\"img\" src=\"{{item.picUrl}}\" background-size=\"cover\"></image>\n            <view class=\"np\">\n              <text class=\"name\">{{item.title}}</text>\n            </view>\n            <text class=\"desc\">{{item.subtitle}}</text>\n          </navigator>\n        </view>\n      </scroll-view>\n    </view>\n  </view>\n\n</view>"
  },
  {
    "path": "renard-wx/pages/index/index.wxss",
    "content": ".HotName {\n  font-size: 50rpx;\n  margin-left: 40rpx;\n  margin-top: 30rpx;\n  color: #293539;\n  font-weight: 300;\n  position: relative;\n}\n\n.HotName text {\n  width: 14rpx;\n  height: 14rpx;\n  position: absolute;\n  border: 4rpx solid #a78845;\n  border-radius: 50%;\n}\n\n.HotMark {\n  margin-left: 50rpx;\n  color: #293539;\n  font-size: 36rpx;\n  margin-top: 10rpx;\n  text-align: center;\n  width: 350rpx;\n  border-bottom: 1rpx solid #a78845;\n}\n\n.HotSwiper swiper {\n  width: 100%;\n  height: 800rpx;\n}\n\n.swiper-box {\n  width: 520rpx;\n  margin: 0 auto;\n  position: relative;\n  height: 700rpx;\n  box-shadow: 0px 10rpx 30rpx 0px #cfc9ca;\n  margin-top: 40rpx;\n  border-radius: 20rpx;\n}\n\n.swiper-box image {\n  width: 100%;\n  height: 520rpx;\n  background-color: #f5f5f5;\n  border-top-left-radius: 10rpx;\n  border-top-right-radius: 10rpx;\n}\n\n.swiper-box-info {\n  position: absolute;\n  width: 100%;\n  height: 100rpx;\n  top: 520rpx;\n  background-color: #fff;\n  border-bottom-right-radius: 10rpx;\n  border-bottom-left-radius: 10rpx;\n}\n\n.swiper-box-info .name {\n  width: 90%;\n  margin: 0 auto;\n  margin-top: 20rpx;\n  font-size: 32rpx;\n  margin-left: 35rpx;\n  color: #293539;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.swiper-box-info .price {\n  float: left;\n  width: 60%;\n  margin-top: 10rpx;\n  margin-left: 30rpx;\n}\n\n.swiper-box-info .counterPrice {\n  text-decoration: line-through;\n  font-size: 30rpx;\n  color: #999;\n}\n\n.swiper-box-info .retailPrice {\n  font-size: 30rpx;\n  color: #a78845;\n}\n\n.capsule-tag {\n  float: right;\n  padding-right: 20rpx;\n  padding-top: 8rpx;\n}\n\n.zan-capsule + .zan-capsule {\n  margin-left: 10px;\n}\n\n.a-section .h {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: center;\n  height: 130rpx;\n}\n\n.a-section .h .title {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: center;\n  background-color: #a78845;\n  height: 75rpx;\n}\n\n.a-section .h .txt {\n  padding-left: 50rpx;\n  padding-right: 50rpx;\n  height: 75rpx;\n  color: #fff;\n  font-size: 33rpx;\n}\n\n.a-brand .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  position: relative;\n}\n\n.a-brand .wrap {\n  position: relative;\n}\n\n.a-brand .img {\n  position: absolute;\n  left: 0;\n  top: 0;\n}\n\n.a-brand .mt {\n  position: absolute;\n  z-index: 2;\n  padding: 4rpx 12rpx;\n  background-color: #a78845;\n  right: 0;\n  top: 0;\n}\n\n.a-brand .mt .brand {\n  display: block;\n  font-size: 24rpx;\n  height: 33rpx;\n  color: #fff;\n}\n\n.a-brand .mt .price, .a-brand .mt .unit {\n  font-size: 25rpx;\n  color: #fff;\n}\n\n.a-brand .item-1 {\n  float: left;\n  width: 375rpx;\n  height: 252rpx;\n  overflow: hidden;\n  border-top: 1rpx solid #fff;\n  margin-left: 1rpx;\n}\n\n.a-brand .item-1:nth-child(2n+1) {\n  margin-left: 0;\n  width: 374rpx;\n}\n\n.a-brand .item-1 .img {\n  width: 375rpx;\n  height: 253rpx;\n}\n\n.a-topic .b {\n  height: 533rpx;\n  width: 750rpx;\n  padding: 0 0 48rpx 0;\n}\n\n.a-topic .b .list {\n  height: 533rpx;\n  width: 750rpx;\n  white-space: nowrap;\n}\n\n.a-topic .b .item {\n  display: inline-block;\n  height: 533rpx;\n  width: 680.5rpx;\n  margin-left: 30rpx;\n  overflow: hidden;\n}\n\n.a-topic .b .item:last-child {\n  margin-right: 30rpx;\n}\n\n.a-topic .b .img {\n  height: 387.5rpx;\n  width: 680.5rpx;\n  margin-bottom: 30rpx;\n}\n\n.a-topic .b .np {\n  height: 35rpx;\n  margin-bottom: 13.5rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.a-topic .b .np .price {\n  margin-left: 20.8rpx;\n  color: #a78845;\n}\n\n.a-topic .b .desc {\n  display: block;\n  height: 30rpx;\n  color: #999;\n  font-size: 24rpx;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n\n.a-groupon {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.a-groupon .b .item {\n  border-top: 1px solid #d9d9d9;\n  margin: 0 20rpx;\n  height: 244rpx;\n  width: 710rpx;\n}\n\n.a-groupon .b .img {\n  margin-top: 12rpx;\n  margin-right: 12rpx;\n  float: left;\n  width: 220rpx;\n  height: 220rpx;\n}\n\n.a-groupon .b .right {\n  float: left;\n  height: 244rpx;\n  width: 476rpx;\n  display: flex;\n  flex-flow: row nowrap;\n}\n\n.a-groupon .b .text {\n  display: flex;\n  flex-wrap: nowrap;\n  flex-direction: column;\n  justify-content: center;\n  overflow: hidden;\n  height: 244rpx;\n  width: 476rpx;\n}\n\n.a-groupon .b .name {\n  float: left;\n  width: 330rpx;\n  display: block;\n  color: #333;\n  line-height: 50rpx;\n  font-size: 30rpx;\n}\n\n.a-groupon .capsule-tag {\n  float: right;\n  padding-right: 0rpx;\n  padding-top: 8rpx;\n}\n\n.a-groupon .zan-capsule + .zan-capsule {\n  margin-left: 10px;\n}\n\n.a-groupon .b .desc {\n  width: 476rpx;\n  display: block;\n  color: #999;\n  line-height: 50rpx;\n  font-size: 25rpx;\n}\n\n.a-groupon .b .price {\n  width: 476rpx;\n  display: flex;\n  color: #b4282d;\n  line-height: 50rpx;\n  font-size: 33rpx;\n}\n\n.a-groupon .b .counterPrice {\n  text-decoration: line-through;\n  font-size: 28rpx;\n  color: #999;\n}\n\n.a-groupon .b .retailPrice {\n  margin-left: 30rpx;\n  font-size: 28rpx;\n  color: #a78845;\n}\n\n.good-grid {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.good-grid .h {\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: center;\n  height: 130rpx;\n  font-size: 33rpx;\n  color: #333;\n  border: #a78845 1rpx;\n}\n"
  },
  {
    "path": "renard-wx/pages/newGoods/newGoods.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    bannerInfo: {\n      'imgUrl': 'http://yanxuan.nosdn.127.net/8976116db321744084774643a933c5ce.png',\n      'name': '大家都在买的'\n    },\n    categoryFilter: false,\n    filterCategory: [],\n    goodsList: [],\n    categoryId: 0,\n    currentSortType: 'default',\n    currentSort: 'add_time',\n    currentSortOrder: 'desc',\n    page: 1,\n    limit: 10\n  },\n\n  onPullDownRefresh() {\n    this.getGoodsList();\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n  getGoodsList: function() {\n    var that = this;\n    util.request(api.GoodsList, {\n        isNew: true,\n        page: that.data.page,\n        limit: that.data.limit,\n        order: that.data.currentSortOrder,\n        sort: that.data.currentSort,\n        categoryId: that.data.categoryId\n      })\n      .then(function(res) {\n        if (res.errno === 0) {\n          that.setData({\n            goodsList: res.data.list,\n            filterCategory: res.data.filterCategoryList\n          });\n        }\n      });\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getGoodsList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    this.setData({\n      'categoryFilter': false,\n      'categoryId': this.data.filterCategory[currentIndex].id\n    });\n    this.getGoodsList();\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/newGoods/newGoods.json",
    "content": "{\n  \"navigationBarTitleText\": \"新品首发\",\n  \"usingComponents\": {\n    \"goodList\": \"/components/goodList/goodList\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/newGoods/newGoods.wxml",
    "content": "<view class=\"container\">\n  <view class=\"brand-info\">\n    <view class=\"name\">\n      <image class=\"img\" src=\"{{bannerInfo.imgUrl}}\" background-size=\"cover\"></image>\n      <view class=\"info-box\">\n        <view class=\"info\">\n          <text class=\"txt\">{{bannerInfo.name}}</text>\n          <text class=\"line\"></text>\n        </view>\n      </view>\n    </view>\n  </view>\n  <view class=\"sort\">\n    <view class=\"sort-box\">\n      <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n        <text class=\"txt\">综合</text>\n      </view>\n      <view class=\"item by-price {{currentSortType == 'price' ? 'active' : ''}} {{currentSortOrder == 'asc'  ? 'asc' : 'desc'}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n        <text class=\"txt\">价格</text>\n      </view>\n      <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"categoryFilter\">\n        <text class=\"txt\">分类</text>\n      </view>\n    </view>\n    <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n      <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n    </view>\n  </view>\n  <view class=\"cate-item\" hidden='{{categoryFilter}}'>\n    <goodList calss=\"goodList\" goods=\"{{goodsList}}\"></goodList>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/newGoods/newGoods.wxss",
    "content": "page {\n  background: #f4f4f4;\n}\n\n.brand-info .name {\n  width: 100%;\n  height: 278rpx;\n  position: relative;\n}\n\n.brand-info .img {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n}\n\n.brand-info .info-box {\n  position: absolute;\n  top: 0;\n  left: 0;\n  width: 100%;\n  height: 278rpx;\n  text-align: center;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.brand-info .info {\n  display: block;\n}\n\n.brand-info .txt {\n  display: block;\n  height: 40rpx;\n  font-size: 37.5rpx;\n  color: #fff;\n}\n\n.brand-info .line {\n  margin: 0 auto;\n  margin-top: 16rpx;\n  display: block;\n  height: 2rpx;\n  width: 145rpx;\n  background: #fff;\n}\n\n.sort {\n  position: relative;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  display: block;\n  width: 100%;\n  height: 100%;\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #a78845;\n}\n\n.sort-box .item.by-price {\n  background: url(//yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/no-3127092a69.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.asc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/up-636b92c0a5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.desc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/down-95e035f3e5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.cate-item {\n  z-index: -1;\n}\n\n.goodList {\n  z-index: -1;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n  z-index: 5000;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n  z-index: 5000;\n}\n\n.sort-box-category .item.active {\n  color: #a78845;\n  border: 1px solid #a78845;\n  z-index: 5000;\n}\n"
  },
  {
    "path": "renard-wx/pages/payResult/payResult.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\nPage({\n  data: {\n    status: false,\n    orderId: 0\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.orderId,\n      status: options.status === '1' ? true : false\n    })\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  payOrder() {\n    let that = this;\n    util.request(api.OrderPrepay, {\n      orderId: that.data.orderId\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        const payParam = res.data;\n        console.log(\"支付过程开始\")\n        wx.requestPayment({\n          'timeStamp': payParam.timeStamp,\n          'nonceStr': payParam.nonceStr,\n          'package': payParam.packageValue,\n          'signType': payParam.signType,\n          'paySign': payParam.paySign,\n          'success': function(res) {\n            console.log(\"支付过程成功\")\n            that.setData({\n              status: true\n            });\n          },\n          'fail': function(res) {\n            console.log(\"支付过程失败\")\n            util.showErrorToast('支付失败');\n          },\n          'complete': function(res) {\n            console.log(\"支付过程结束\")\n          }\n        });\n      }\n    });\n  }\n})"
  },
  {
    "path": "renard-wx/pages/payResult/payResult.json",
    "content": "{\n  \"navigationBarTitleText\": \"付款结果\",\n  \"navigationBarBackgroundColor\": \"#fafafa\"\n}"
  },
  {
    "path": "renard-wx/pages/payResult/payResult.wxml",
    "content": "<view class=\"container\">\n  <view class=\"pay-result\">\n    <view class=\"success\" wx:if=\"{{status}}\">\n      <view class=\"msg\">付款成功</view>\n      <view class=\"btns\">\n        <navigator class=\"btn\" url=\"/pages/ucenter/order/order\" open-type=\"redirect\">查看订单</navigator>\n        <navigator class=\"btn\" url=\"/pages/index/index\" open-type=\"switchTab\">继续逛</navigator>\n      </view>\n    </view>\n    <view class=\"error\" wx:if=\"{{!status}}\">\n      <view class=\"msg\">付款失败</view>\n      <view class=\"tips\">\n        <view class=\"p\">请在\n          <text class=\"time\">半小时</text> 内完成付款</view>\n        <view class=\"p\">否则订单将会被系统取消</view>\n      </view>\n      <view class=\"btns\">\n        <navigator class=\"btn\" url=\"/pages/ucenter/order/order\" open-type=\"redirect\">查看订单</navigator>\n        <view class=\"btn\" bindtap='payOrder'>重新付款</view>\n      </view>\n    </view>\n  </view>\n\n</view>"
  },
  {
    "path": "renard-wx/pages/payResult/payResult.wxss",
    "content": "page {\n  min-height: 100%;\n  width: 100%;\n  background: #fff;\n}\n\n.container {\n  height: 100%;\n  background: #fff;\n}\n\n.pay-result {\n  background: #fff;\n}\n\n.pay-result .msg {\n  text-align: center;\n  margin: 100rpx auto;\n  color: #2bab25;\n  font-size: 36rpx;\n}\n\n.pay-result .btns {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n}\n\n.pay-result .btn {\n  text-align: center;\n  height: 80rpx;\n  margin: 0 20rpx;\n  width: 200rpx;\n  line-height: 78rpx;\n  border: 1px solid #868686;\n  color: #000;\n  border-radius: 5rpx;\n}\n\n.pay-result .error .msg {\n  color: #b4282d;\n  margin-bottom: 60rpx;\n}\n\n.pay-result .error .tips {\n  color: #7f7f7f;\n  margin-bottom: 70rpx;\n}\n\n.pay-result .error .tips .p {\n  font-size: 24rpx;\n  line-height: 42rpx;\n  text-align: center;\n}\n\n.pay-result .error .tips .p {\n  line-height: 42rpx;\n  text-align: center;\n}\n"
  },
  {
    "path": "renard-wx/pages/search/search.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nvar app = getApp();\nPage({\n  data: {\n    keywrod: '',\n    searchStatus: false,\n    goodsList: [],\n    helpKeyword: [],\n    historyKeyword: [],\n    categoryFilter: false,\n    currentSort: 'name',\n    currentSortType: 'default',\n    currentSortOrder: 'desc',\n    filterCategory: [],\n    defaultKeyword: {},\n    hotKeyword: [],\n    page: 1,\n    limit: 10,\n    categoryId: 0\n  },\n  //事件处理函数\n  closeSearch: function() {\n    wx.navigateBack()\n  },\n  clearKeyword: function() {\n    this.setData({\n      keyword: '',\n      searchStatus: false\n    });\n  },\n  onLoad: function() {\n    this.getSearchKeyword();\n  },\n\n  getSearchKeyword() {\n    let that = this;\n    util.request(api.SearchIndex).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          historyKeyword: res.data.historyKeywordList,\n          defaultKeyword: res.data.defaultKeyword,\n          hotKeyword: res.data.hotKeywordList\n        });\n      }\n    });\n  },\n\n  inputChange: function(e) {\n\n    this.setData({\n      keyword: e.detail.value,\n      searchStatus: false\n    });\n\n    if (e.detail.value) {\n      this.getHelpKeyword();\n    }\n  },\n\n  getHelpKeyword: function() {\n    let that = this;\n    util.request(api.SearchHelper, {\n      keyword: that.data.keyword\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          helpKeyword: res.data\n        });\n      }\n    });\n  },\n\n  inputFocus: function() {\n    this.setData({\n      searchStatus: false,\n      goodsList: []\n    });\n\n    if (this.data.keyword) {\n      this.getHelpKeyword();\n    }\n  },\n\n  clearHistory: function() {\n    this.setData({\n      historyKeyword: []\n    });\n\n    util.request(api.SearchClearHistory, {}, 'POST')\n      .then(function(res) {\n        console.log('清除成功');\n      });\n  },\n\n  getGoodsList: function() {\n    let that = this;\n    util.request(api.GoodsList, {\n      keyword: that.data.keyword,\n      page: that.data.page,\n      limit: that.data.limit,\n      sort: that.data.currentSort,\n      order: that.data.currentSortOrder,\n      categoryId: that.data.categoryId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          searchStatus: true,\n          categoryFilter: false,\n          goodsList: res.data.list,\n          filterCategory: res.data.filterCategoryList\n        });\n      }\n\n      //重新获取关键词\n      that.getSearchKeyword();\n    });\n  },\n  onKeywordTap: function(event) {\n\n    this.getSearchResult(event.target.dataset.keyword);\n\n  },\n  getSearchResult(keyword) {\n    if (keyword === '') {\n      keyword = this.data.defaultKeyword.keyword;\n    }\n    this.setData({\n      keyword: keyword,\n      page: 1,\n      categoryId: 0,\n      goodsList: []\n    });\n\n    this.getGoodsList();\n  },\n  openSortFilter: function(event) {\n    let currentId = event.currentTarget.id;\n    switch (currentId) {\n      case 'categoryFilter':\n        this.setData({\n          categoryFilter: !this.data.categoryFilter,\n          currentSortType: 'category',\n          currentSort: 'add_time',\n          currentSortOrder: 'desc'\n        });\n        break;\n      case 'priceSort':\n        let tmpSortOrder = 'asc';\n        if (this.data.currentSortOrder == 'asc') {\n          tmpSortOrder = 'desc';\n        }\n        this.setData({\n          currentSortType: 'price',\n          currentSort: 'retail_price',\n          currentSortOrder: tmpSortOrder,\n          categoryFilter: false\n        });\n\n        this.getGoodsList();\n        break;\n      default:\n        //综合排序\n        this.setData({\n          currentSortType: 'default',\n          currentSort: 'name',\n          currentSortOrder: 'desc',\n          categoryFilter: false,\n          categoryId: 0,\n        });\n        this.getGoodsList();\n    }\n  },\n  selectCategory: function(event) {\n    let currentIndex = event.target.dataset.categoryIndex;\n    let filterCategory = this.data.filterCategory;\n    let currentCategory = null;\n    for (let key in filterCategory) {\n      if (key == currentIndex) {\n        filterCategory[key].selected = true;\n        currentCategory = filterCategory[key];\n      } else {\n        filterCategory[key].selected = false;\n      }\n    }\n    this.setData({\n      filterCategory: filterCategory,\n      categoryFilter: false,\n      categoryId: currentCategory.id,\n      page: 1,\n      goodsList: []\n    });\n    this.getGoodsList();\n  },\n  onKeywordConfirm(event) {\n    this.getSearchResult(event.detail.value);\n  }\n});"
  },
  {
    "path": "renard-wx/pages/search/search.json",
    "content": "{\n  \"navigationBarTitleText\": \"搜索\",\n  \"usingComponents\": {\n    \"goodList\": \"/components/goodList/goodList\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/search/search.wxml",
    "content": "<scroll-view class=\"container\" style=\"height: 100%;\">\n  <view class=\"search-header\">\n    <view class=\"input-box\">\n      <image class=\"icon\" src=\"http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/search2-2fb94833aa.png\"></image>\n      <input name=\"input\" class=\"keywrod\" focus=\"true\" value=\"{{keyword}}\" confirm-type=\"search\" bindinput=\"inputChange\" bindfocus=\"inputFocus\" bindconfirm=\"onKeywordConfirm\" placeholder=\"{{defaultKeyword.keyword}}\" />\n      <image class=\"del\" wx:if=\"{{keyword}}\" bindtap=\"clearKeyword\" src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/clearIpt-f71b83e3c2.png\"></image>\n    </view>\n    <view class=\"right\" bindtap=\"closeSearch\">取消</view>\n  </view>\n  <view class=\"no-search\" wx:if=\"{{ !searchStatus}}\">\n    <view class=\"search-keywords search-history\" wx:if=\"{{!keyword  && historyKeyword.length}}\">\n      <view class=\"h\">\n        <text class=\"title\">历史记录</text>\n        <image class=\"icon\" bindtap=\"clearHistory\" src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/del1-93f0a4add4.png\"></image>\n      </view>\n      <view class=\"b\">\n        <view class=\"item\" bindtap=\"onKeywordTap\" data-keyword=\"{{item.keyword}}\" wx:for=\"{{historyKeyword}}\" wx:key=\"keyword\" hover-class=\"navigator-hover\">{{item.keyword}}</view>\n      </view>\n    </view>\n    <view class=\"search-keywords search-hot\" wx:if=\"{{!keyword && hotKeyword.length}}\">\n      <view class=\"h\">\n        <text class=\"title\">热门搜索</text>\n      </view>\n      <view class=\"b\">\n        <view class=\"item {{item.is_hot === 1 ? 'active' : ''}}\" hover-class=\"navigator-hover\" bindtap=\"onKeywordTap\" data-keyword=\"{{item.keyword}}\" wx:for=\"{{hotKeyword}}\" wx:key=\"id\">{{item.keyword}}</view>\n      </view>\n    </view>\n    <view class=\"shelper-list\" wx:if=\"{{keyword}}\">\n      <view class=\"item\" hover-class=\"navigator-hover\" wx:for=\"{{helpKeyword}}\" wx:key=\"id\" bindtap=\"onKeywordTap\" data-keyword=\"{{item}}\">{{item}}</view>\n    </view>\n  </view>\n\n  <view class=\"search-result\" wx:if=\"{{ searchStatus && goodsList.length}}\">\n    <view class=\"sort\">\n      <view class=\"sort-box\">\n        <view class=\"item {{currentSortType == 'default' ? 'active' : ''}}\" bindtap=\"openSortFilter\" id=\"defaultSort\">\n          <text class=\"txt\">综合</text>\n        </view>\n        <view class=\"item by-price {{currentSortType == 'price' ? 'active' : ''}} {{currentSortOrder == 'asc'  ? 'asc' : 'desc'}}\" bindtap=\"openSortFilter\" id=\"priceSort\">\n          <text class=\"txt\">价格</text>\n        </view>\n        <view class=\"item {{currentSortType == 'category' ? 'active' : ''}}\" id=\"categoryFilter\">\n          <text class=\"txt\">分类</text>\n        </view>\n      </view>\n      <view class=\"sort-box-category\" wx-if=\"{{categoryFilter}}\">\n        <view class=\"item {{item.checked ? 'active' : ''}}\" wx:for=\"{{filterCategory}}\" wx:key=\"id\" data-category-index=\"{{index}}\" bindtap=\"selectCategory\">{{item.name}}</view>\n      </view>\n    </view>\n    <view class=\"cate-item\">\n      <goodList calss=\"goodList\" goods=\"{{goodsList}}\"></goodList>\n    </view>\n  </view>\n\n  <view class=\"search-result-empty\" wx:if=\"{{!goodsList.length && searchStatus}}\">\n    <image class=\"icon\" src=\"http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/noSearchResult-7572a94f32.png\"></image>\n    <text class=\"text\">您寻找的商品还未上架</text>\n  </view>\n</scroll-view>"
  },
  {
    "path": "renard-wx/pages/search/search.wxss",
    "content": "page {\n  min-height: 100%;\n  background-color: #f4f4f4;\n}\n\n.container {\n  min-height: 100%;\n  background-color: #f4f4f4;\n}\n\n.search-header {\n  position: fixed;\n  top: 0;\n  width: 750rpx;\n  height: 91rpx;\n  display: flex;\n  background: #fff;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n  padding: 0 31.25rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.search-header .input-box {\n  position: relative;\n  margin-top: 16rpx;\n  float: left;\n  width: 0;\n  flex: 1;\n  height: 59rpx;\n  line-height: 59rpx;\n  padding: 0 20rpx;\n  background: #f4f4f4;\n}\n\n.search-header .icon {\n  position: absolute;\n  top: 14rpx;\n  left: 20rpx;\n  width: 31rpx;\n  height: 31rpx;\n}\n\n.search-header .del {\n  position: absolute;\n  top: 3rpx;\n  right: 10rpx;\n  width: 53rpx;\n  height: 53rpx;\n  z-index: 10;\n}\n\n.search-header .keywrod {\n  position: absolute;\n  top: 0;\n  left: 40rpx;\n  width: 506rpx;\n  height: 59rpx;\n  padding-left: 30rpx;\n}\n\n.search-header .right {\n  margin-top: 24rpx;\n  margin-left: 31rpx;\n  margin-right: 6rpx;\n  width: 58rpx;\n  height: 43rpx;\n  line-height: 43rpx;\n  float: right;\n}\n\n.no-search {\n  height: auto;\n  overflow: hidden;\n  margin-top: 91rpx;\n}\n\n.search-keywords {\n  background: #fff;\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  margin-bottom: 20rpx;\n}\n\n.search-keywords .h {\n  padding: 0 31.25rpx;\n  height: 93rpx;\n  line-height: 93rpx;\n  width: 100%;\n  color: #999;\n  font-size: 29rpx;\n}\n\n.search-keywords .title {\n  display: block;\n  width: 120rpx;\n  float: left;\n}\n\n.search-keywords .icon {\n  margin-top: 19rpx;\n  float: right;\n  display: block;\n  margin-left: 511rpx;\n  height: 55rpx;\n  width: 55rpx;\n}\n\n.search-keywords .b {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  padding-left: 31.25rpx;\n}\n\n.search-keywords .item {\n  display: inline-block;\n  width: auto;\n  height: 48rpx;\n  line-height: 48rpx;\n  padding: 0 15rpx;\n  border: 1px solid #999;\n  margin: 0 31.25rpx 31.25rpx 0;\n  font-size: 24rpx;\n  color: #333;\n}\n\n.search-keywords .item.active {\n  color: #a78845;\n  border: 1px solid #a78845;\n}\n\n.shelper-list {\n  width: 750rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding: 0 31.25rpx;\n}\n\n.shelper-list .item {\n  height: 93rpx;\n  width: 687.5rpx;\n  line-height: 93rpx;\n  font-size: 24rpx;\n  color: #333;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.sort {\n  position: fixed;\n  top: 91rpx;\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n}\n\n.sort-box {\n  background: #fff;\n  width: 100%;\n  height: 78rpx;\n  overflow: hidden;\n  padding: 0 30rpx;\n  display: flex;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box .item {\n  height: 78rpx;\n  line-height: 78rpx;\n  text-align: center;\n  flex: 1;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.sort-box .item .txt {\n  display: block;\n  width: 100%;\n  height: 100%;\n  color: #333;\n}\n\n.sort-box .item.active .txt {\n  color: #a78845;\n}\n\n.sort-box .item.by-price {\n  background: url(//yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/no-3127092a69.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.asc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/up-636b92c0a5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box .item.by-price.active.desc {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/down-95e035f3e5.png) 155rpx center no-repeat;\n  background-size: 15rpx 21rpx;\n}\n\n.sort-box-category {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding: 40rpx 40rpx 0 0;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.sort-box-category .item {\n  height: 54rpx;\n  line-height: 54rpx;\n  text-align: center;\n  float: left;\n  padding: 0 16rpx;\n  margin: 0 0 40rpx 40rpx;\n  border: 1px solid #666;\n  color: #333;\n  font-size: 24rpx;\n}\n\n.sort-box-category .item.active {\n  color: #a78845;\n  border: 1px solid #a78845;\n}\n\n.cate-item {\n  margin-top: 175rpx;\n  height: auto;\n  overflow: hidden;\n}\n\n.cate-item .h {\n  height: 145rpx;\n  width: 750rpx;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.cate-item .h .name {\n  display: block;\n  height: 35rpx;\n  margin-bottom: 18rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.cate-item .h .desc {\n  display: block;\n  height: 24rpx;\n  font-size: 24rpx;\n  color: #999;\n}\n\n.search-result-empty {\n  width: 100%;\n  height: 100%;\n  padding-top: 300rpx;\n}\n\n.search-result-empty .icon {\n  margin: 0 auto;\n  display: block;\n  width: 240rpx;\n  height: 240rpx;\n}\n\n.search-result-empty .text {\n  display: block;\n  width: 100%;\n  height: 40rpx;\n  font-size: 28rpx;\n  text-align: center;\n  color: #999;\n}\n"
  },
  {
    "path": "renard-wx/pages/shopping/checkout/checkout.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n    checkedGoodsList: [],\n    checkedAddress: {},\n    checkedCoupon: [],\n    goodsTotalPrice: 0.00, //商品总价\n    freightPrice: 0.00, //快递费\n    couponPrice: 0.00, //优惠券的价格\n    grouponPrice: 0.00, //团购优惠价格\n    orderTotalPrice: 0.00, //订单总价\n    actualPrice: 0.00, //实际需要支付的总价\n    cartId: 0,\n    addressId: 0,\n    couponId: 0,\n    grouponLinkId: 0, //参与的团购，如果是发起则为0\n    grouponRulesId: 0 //团购规则ID\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n\n  //获取checkou信息\n  getCheckoutInfo: function() {\n    let that = this;\n    util.request(api.CartCheckout, {\n      cartId: that.data.cartId,\n      addressId: that.data.addressId,\n      couponId: that.data.couponId,\n      grouponRulesId: that.data.grouponRulesId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          checkedGoodsList: res.data.checkedGoodsList,\n          checkedAddress: res.data.checkedAddress,\n          actualPrice: res.data.actualPrice,\n          checkedCoupon: res.data.checkedCoupon,\n          couponPrice: res.data.couponPrice,\n          grouponPrice: res.data.grouponPrice,\n          freightPrice: res.data.freightPrice,\n          goodsTotalPrice: res.data.goodsTotalPrice,\n          orderTotalPrice: res.data.orderTotalPrice,\n          addressId: res.data.addressId,\n          couponId: res.data.couponId,\n          grouponRulesId: res.data.grouponRulesId,\n        });\n      }\n      wx.hideLoading();\n    });\n  },\n  selectAddress() {\n    wx.navigateTo({\n      url: '/pages/ucenter/address/address',\n    })\n  },\n  onReady: function() {\n    // 页面渲染完成\n\n  },\n  onShow: function() {\n    // 页面显示\n    wx.showLoading({\n      title: '加载中...',\n    });\n    try {\n      var cartId = wx.getStorageSync('cartId');\n      if (cartId === \"\") {\n        cartId = 0;\n      }\n      var addressId = wx.getStorageSync('addressId');\n      if (addressId === \"\") {\n        addressId = 0;\n      }\n      var couponId = wx.getStorageSync('couponId');\n      if (couponId === \"\") {\n        couponId = 0;\n      }\n      var grouponRulesId = wx.getStorageSync('grouponRulesId');\n      if (grouponRulesId === \"\") {\n        grouponRulesId = 0;\n      }\n      var grouponLinkId = wx.getStorageSync('grouponLinkId');\n      if (grouponLinkId === \"\") {\n        grouponLinkId = 0;\n      }\n\n      this.setData({\n        cartId: cartId,\n        addressId: addressId,\n        couponId: couponId,\n        grouponRulesId: grouponRulesId,\n        grouponLinkId: grouponLinkId\n      });\n      \n    } catch (e) {\n      // Do something when catch error\n      console.log(e);\n    }\n\n    this.getCheckoutInfo();\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  },\n  submitOrder: function() {\n    if (this.data.addressId <= 0) {\n      util.showErrorToast('请选择收货地址');\n      return false;\n    }\n    util.request(api.OrderSubmit, {\n      cartId: this.data.cartId,\n      addressId: this.data.addressId,\n      couponId: this.data.couponId,\n      grouponRulesId: this.data.grouponRulesId,\n      grouponLinkId: this.data.grouponLinkId\n    }, 'POST').then(res => {\n      if (res.errno === 0) {\n        const orderId = res.data.orderId;\n        util.request(api.OrderPrepay, {\n          orderId: orderId\n        }, 'POST').then(function(res) {\n          if (res.errno === 0) {\n            const payParam = res.data;\n            console.log(\"支付过程开始\");\n            wx.requestPayment({\n              'timeStamp': payParam.timeStamp,\n              'nonceStr': payParam.nonceStr,\n              'package': payParam.packageValue,\n              'signType': payParam.signType,\n              'paySign': payParam.paySign,\n              'success': function(res) {\n                console.log(\"支付过程成功\");\n                wx.redirectTo({\n                  url: '/pages/payResult/payResult?status=1&orderId=' + orderId\n                });\n              },\n              'fail': function(res) {\n                console.log(\"支付过程失败\");\n                wx.redirectTo({\n                  url: '/pages/payResult/payResult?status=0&orderId=' + orderId\n                });\n              },\n              'complete': function(res) {\n                console.log(\"支付过程结束\")\n              }\n            });\n          } else {\n            wx.redirectTo({\n              url: '/pages/payResult/payResult?status=0&orderId=' + orderId\n            });\n          }\n        });\n\n      } else {\n        util.showErrorToast(res.errmsg);\n      }\n    });\n  }\n});"
  },
  {
    "path": "renard-wx/pages/shopping/checkout/checkout.json",
    "content": "{\n  \"navigationBarTitleText\": \"填写订单\"\n}"
  },
  {
    "path": "renard-wx/pages/shopping/checkout/checkout.wxml",
    "content": "<view class=\"container\">\n  <view class=\"address-box\">\n    <view class=\"address-item\" bindtap=\"selectAddress\" wx:if=\"{{checkedAddress.id > 0}}\">\n      <view class=\"l\">\n        <text class=\"name\">{{checkedAddress.name}}</text>\n        <text class=\"default\" wx:if=\"{{checkedAddress.isDefault}}\">默认</text>\n      </view>\n      <view class=\"m\">\n        <text class=\"mobile\">{{checkedAddress.tel}}</text>\n        <text class=\"address\">{{checkedAddress.addressDetail}}</text>\n      </view>\n      <view class=\"r\">\n        <image src=\"/static/images/address_right.png\"></image>\n      </view>\n    </view>\n    <view class=\"address-item address-empty\" bindtap=\"selectAddress\" wx:else>\n      <view class=\"m\">\n        还没有收货地址，去添加\n      </view>\n      <view class=\"r\">\n        <image src=\"/static/images/address_right.png\"></image>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-box\">\n    <view class=\"order-item\">\n      <view class=\"l\">\n        <text class=\"name\">商品合计</text>\n      </view>\n      <view class=\"r\">\n        <text class=\"txt\">￥ {{goodsTotalPrice}}元</text>\n      </view>\n    </view>\n    <view class=\"order-item\">\n      <view class=\"l\">\n        <text class=\"name\">运费</text>\n      </view>\n      <view class=\"r\">\n        <text class=\"txt\">￥ {{freightPrice}}元</text>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"goods-items\">\n    <view class=\"item\" wx:for=\"{{checkedGoodsList}}\" wx:key=\"id\">\n      <view class=\"img\">\n        <image src=\"{{item.picUrl}}\"></image>\n      </view>\n      <view class=\"info\">\n        <view class=\"t\">\n          <text class=\"name\">{{item.goodsName}}</text>\n          <text class=\"number\">x{{item.number}}</text>\n        </view>\n        <view class=\"m\">{{item.specifications}}</view>\n        <view class=\"b\">￥{{item.price}}</view>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-total\">\n    <view class=\"l\">实付：￥{{actualPrice}}</view>\n    <view class=\"r\" bindtap=\"submitOrder\">去付款</view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/shopping/checkout/checkout.wxss",
    "content": "page {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.address-box {\n  width: 100%;\n  height: 166.55rpx;\n  background: url('http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/address-bg-bd30f2bfeb.png') 0 0 repeat-x;\n  background-size: 62.5rpx 10.5rpx;\n  margin-bottom: 20rpx;\n  padding-top: 10.5rpx;\n}\n\n.address-item {\n  display: flex;\n  height: 155.55rpx;\n  background: #fff;\n  padding: 41.6rpx 0 41.6rpx 31.25rpx;\n}\n\n.address-item.address-empty {\n  line-height: 75rpx;\n  text-align: center;\n}\n\n.address-box .l {\n  width: 125rpx;\n  height: 100%;\n}\n\n.address-box .l .name {\n  margin-left: 6.25rpx;\n  margin-top: -7.25rpx;\n  display: block;\n  width: 125rpx;\n  height: 43rpx;\n  line-height: 43rpx;\n  font-size: 30rpx;\n  color: #333;\n  margin-bottom: 5rpx;\n}\n\n.address-box .l .default {\n  margin-left: 6.25rpx;\n  display: block;\n  width: 62rpx;\n  height: 33rpx;\n  border-radius: 5rpx;\n  border: 1px solid #b4282d;\n  font-size: 20.5rpx;\n  text-align: center;\n  line-height: 29rpx;\n  color: #b4282d;\n}\n\n.address-box .m {\n  flex: 1;\n  height: 72.25rpx;\n  color: #999;\n}\n\n.address-box .mobile {\n  display: block;\n  height: 29rpx;\n  line-height: 29rpx;\n  margin-bottom: 6.25rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.address-box .address {\n  display: block;\n  height: 37.5rpx;\n  line-height: 37.5rpx;\n  font-size: 25rpx;\n  color: #666;\n}\n\n.address-box .r {\n  width: 77rpx;\n  height: 77rpx;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.address-box .r image {\n  width: 52.078rpx;\n  height: 52.078rpx;\n}\n\n.coupon-box {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.coupon-box .coupon-item {\n  width: 100%;\n  height: 108.3rpx;\n  overflow: hidden;\n  background: #fff;\n  display: flex;\n  padding-left: 31.25rpx;\n}\n\n.coupon-box .l {\n  flex: 1;\n  height: 43rpx;\n  line-height: 43rpx;\n  padding-top: 35rpx;\n}\n\n.coupon-box .l .name {\n  float: left;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.coupon-box .l .txt {\n  float: right;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.coupon-box .r {\n  margin-top: 15.5rpx;\n  width: 77rpx;\n  height: 77rpx;\n  display: flex;\n  justify-content: center;\n  align-items: center;\n}\n\n.coupon-box .r image {\n  width: 52.078rpx;\n  height: 52.078rpx;\n}\n\n.order-box {\n  margin-top: 20rpx;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-box .order-item {\n  height: 104.3rpx;\n  overflow: hidden;\n  background: #fff;\n  display: flex;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  padding-top: 26rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.order-box .order-item .l {\n  float: left;\n  height: 52rpx;\n  width: 50%;\n  line-height: 52rpx;\n  overflow: hidden;\n}\n\n.order-box .order-item .r {\n  float: right;\n  text-align: right;\n  width: 50%;\n  height: 52rpx;\n  line-height: 52rpx;\n  overflow: hidden;\n}\n\n.order-box .order-item.no-border {\n  border-bottom: none;\n}\n\n.goods-items {\n  margin-top: 20rpx;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n  padding-left: 31.25rpx;\n  margin-bottom: 120rpx;\n}\n\n.goods-items .item {\n  height: 192rpx;\n  padding-right: 31.25rpx;\n  display: flex;\n  align-items: center;\n  border-bottom: 1px solid rgba(0, 0, 0, 0.15);\n}\n\n.goods-items .item.no-border {\n  border-bottom: none;\n}\n\n.goods-items .item:last-child {\n  border-bottom: none;\n}\n\n.goods-items .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background-color: #f4f4f4;\n  margin-right: 20rpx;\n}\n\n.goods-items .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.goods-items .info {\n  flex: 1;\n  height: 145.83rpx;\n  padding-top: 5rpx;\n}\n\n.goods-items .t {\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10rpx;\n  overflow: hidden;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.goods-items .t .name {\n  display: block;\n  float: left;\n}\n\n.goods-items .t .number {\n  display: block;\n  float: right;\n  text-align: right;\n}\n\n.goods-items .m {\n  height: 29rpx;\n  overflow: hidden;\n  line-height: 29rpx;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n  color: #666;\n}\n\n.goods-items .b {\n  height: 41rpx;\n  overflow: hidden;\n  line-height: 41rpx;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-total {\n  position: fixed;\n  left: 0;\n  bottom: 0;\n  height: 100rpx;\n  width: 100%;\n  display: flex;\n}\n\n.order-total .l {\n  flex: 1;\n  height: 100rpx;\n  line-height: 100rpx;\n  color: #a78845;\n  background: #fff;\n  font-size: 33rpx;\n  padding-left: 31.25rpx;\n  border-top: 1rpx solid rgba(0, 0, 0, 0.2);\n  border-bottom: 1rpx solid rgba(0, 0, 0, 0.2);\n}\n\n.order-total .r {\n  width: 233rpx;\n  height: 100rpx;\n  background: #a78845;\n  border: 1px solid #a78845;\n  line-height: 100rpx;\n  text-align: center;\n  color: #fff;\n  font-size: 30rpx;\n}\n"
  },
  {
    "path": "renard-wx/pages/topic/topic.js",
    "content": "var util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\nvar app = getApp()\nPage({\n  data: {\n    topicList: [],\n    page: 1,\n    limit: 10,\n    count: 0,\n    scrollTop: 0,\n    showPage: false\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.getTopic();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  nextPage: function(event) {\n    var that = this;\n    if (this.data.page > that.data.count / that.data.limit) {\n      return true;\n    }\n\n\n    that.setData({\n      page: that.data.page + 1\n    });\n\n    this.getTopic();\n\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getTopic();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getTopic: function() {\n\n    let that = this;\n    that.setData({\n      scrollTop: 0,\n      showPage: false,\n      topicList: []\n    });\n    // 页面渲染完成\n    wx.showToast({\n      title: '加载中...',\n      icon: 'loading',\n      duration: 2000\n    });\n\n    util.request(api.TopicList, {\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          scrollTop: 0,\n          topicList: res.data.list,\n          showPage: true,\n          count: res.data.total\n        });\n      }\n      wx.hideToast();\n    });\n\n  },\n  prevPage: function(event) {\n    if (this.data.page <= 1) {\n      return false;\n    }\n\n    var that = this;\n    that.setData({\n      page: that.data.page - 1\n    });\n    this.getTopic();\n  }\n})"
  },
  {
    "path": "renard-wx/pages/topic/topic.json",
    "content": "{\n  \"navigationBarTitleText\": \"专题\"\n}"
  },
  {
    "path": "renard-wx/pages/topic/topic.wxml",
    "content": "<view class=\"container\">\n  <scroll-view class=\"topic-list\" scroll-y=\"true\" scroll-top=\"{{scrollTop}}\">\n    <navigator class=\"item\" wx:for=\"{{topicList}}\" wx:key=\"id\" url=\"../topicDetail/topicDetail?id={{item.id}}\">\n      <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n      <view class=\"info\">\n        <text class=\"title\">{{item.title}}</text>\n        <text class=\"desc\">{{item.subtitle}}</text>\n      </view>\n    </navigator>\n    <view class=\"page\" wx:if=\"{{showPage}}\">\n      <view class=\"prev {{ page <= 1 ? 'disabled' : ''}}\" bindtap=\"prevPage\">上一页</view>\n      <view class=\"next {{ (count / size) < page ? 'disabled' : ''}}\" bindtap=\"nextPage\">下一页</view>\n    </view>\n  </scroll-view>\n</view>"
  },
  {
    "path": "renard-wx/pages/topic/topic.wxss",
    "content": "page, .container {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.topic-list {\n  width: 750rpx;\n  height: 100%;\n  overflow: hidden;\n  background: #f4f4f4;\n}\n\n.topic-list .item {\n  width: 100%;\n  height: 625rpx;\n  overflow: hidden;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.topic-list .img {\n  width: 100%;\n  height: 415rpx;\n}\n\n.topic-list .info {\n  width: 100%;\n  height: 210rpx;\n  overflow: hidden;\n}\n\n.topic-list .title {\n  display: block;\n  text-align: center;\n  width: 100%;\n  height: 33rpx;\n  line-height: 35rpx;\n  color: #a78845;\n  overflow: hidden;\n  font-size: 35rpx;\n  margin-top: 30rpx;\n}\n\n.topic-list .desc {\n  display: block;\n  text-align: center;\n  position: relative;\n  width: auto;\n  height: 24rpx;\n  line-height: 24rpx;\n  overflow: hidden;\n  color: #999;\n  font-size: 24rpx;\n  margin-top: 16rpx;\n  margin-bottom: 30rpx;\n}\n\n.topic-list .price {\n  display: block;\n  text-align: center;\n  width: 100%;\n  height: 27rpx;\n  line-height: 27rpx;\n  overflow: hidden;\n  color: #b4282d;\n  font-size: 27rpx;\n}\n\n.page {\n  width: 750rpx;\n  height: 108rpx;\n  background: #fff;\n  margin-bottom: 20rpx;\n}\n\n.page view {\n  height: 108rpx;\n  width: 50%;\n  float: left;\n  font-size: 29rpx;\n  color: #333;\n  text-align: center;\n  line-height: 108rpx;\n}\n\n.page .prev {\n  border-right: 1px solid #d9d9d9;\n}\n\n.page .disabled {\n  color: #ccc;\n}\n"
  },
  {
    "path": "renard-wx/pages/topicDetail/topicDetail.js",
    "content": "var app = getApp();\nvar WxParse = require('../../lib/wxParse/wxParse.js');\nvar util = require('../../utils/util.js');\nvar api = require('../../config/api.js');\n\nPage({\n  data: {\n    id: 0,\n    topic: {},\n    topicList: []\n  },\n\n  onShareAppMessage: function() {\n    return {\n      title: 'Renard 的甜品屋',\n      desc: '唯爱与美食不可辜负',\n      path: '/pages/topicDetail/topicDetail?id=' + this.data.id\n    }\n  },\n\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    var that = this;\n    that.setData({\n      id: options.id\n    });\n\n    util.request(api.TopicDetail, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n\n        that.setData({\n          topic: res.data.topic\n        });\n\n        WxParse.wxParse('topicDetail', 'html', res.data.topic.content, that);\n      }\n    });\n\n    util.request(api.TopicRelated, {\n      id: that.data.id\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          topicList: res.data.list\n        });\n      }\n    });\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/topicDetail/topicDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"专题详情\",\n  \"enablePullDownRefresh\": false\n}"
  },
  {
    "path": "renard-wx/pages/topicDetail/topicDetail.wxml",
    "content": "<scroll-view class=\"container\">\n  <scroll-view class=\"content\">\n    <import src=\"../../lib/wxParse/wxParse.wxml\" />\n    <template is=\"wxParse\" data=\"{{wxParseData:topicDetail.nodes}}\" />\n  </scroll-view>\n  <view class=\"topic-goods\">\n  </view>\n  <scroll-view class=\"rec-box\">\n    <view class=\"h\">\n      <text class=\"txt\">专题推荐</text>\n    </view>\n    <view class=\"b\">\n      <navigator class=\"item\" wx:for=\"{{topicList}}\" wx:key=\"id\" url=\"../topicDetail/topicDetail?id={{item.id}}\">\n        <image class=\"img\" src=\"{{item.picUrl}}\"></image>\n        <text class=\"title\">{{item.title}}</text>\n      </navigator>\n    </view>\n  </scroll-view>\n</scroll-view>"
  },
  {
    "path": "renard-wx/pages/topicDetail/topicDetail.wxss",
    "content": ".content {\n  width: 100%;\n  height: auto;\n  font-size: 0;\n}\n\n.content image {\n  display: inline-block;\n  width: 100%;\n}\n\n.comments {\n  width: 100%;\n  height: auto;\n  padding-left: 30rpx;\n  background: #fff;\n  margin-top: 20rpx;\n}\n\n.comments .h {\n  height: 93rpx;\n  line-height: 93rpx;\n  width: 720rpx;\n  padding-right: 30rpx;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.comments .h .t {\n  display: block;\n  float: left;\n  width: 50%;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.comments .h .i {\n  display: block;\n  float: right;\n  margin-top: 30rpx;\n  width: 33rpx;\n  height: 33rpx;\n}\n\n.comments .b {\n  height: auto;\n  width: 720rpx;\n}\n\n.comments .item {\n  height: auto;\n  width: 720rpx;\n  overflow: hidden;\n  border-bottom: 1px solid #d9d9d9;\n}\n\n.comments .info {\n  height: 127rpx;\n  width: 100%;\n  padding: 33rpx 0 27rpx 0;\n}\n\n.comments .user {\n  float: left;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  font-size: 0;\n}\n\n.comments .user .avatar {\n  display: block;\n  float: left;\n  width: 67rpx;\n  height: 67rpx;\n  margin-right: 17rpx;\n  border-radius: 50%;\n}\n\n.comments .user .nickname {\n  display: block;\n  width: auto;\n  float: left;\n  height: 66rpx;\n  overflow: hidden;\n  font-size: 29rpx;\n  line-height: 66rpx;\n}\n\n.comments .time {\n  display: block;\n  float: right;\n  width: auto;\n  height: 67rpx;\n  line-height: 67rpx;\n  color: #7f7f7f;\n  font-size: 25rpx;\n  margin-right: 30rpx;\n}\n\n.comments .comment {\n  width: 720rpx;\n  padding-right: 30rpx;\n  line-height: 45.8rpx;\n  margin-bottom: 30rpx;\n  font-size: 29rpx;\n  color: #333;\n}\n\n.comments .load {\n  width: 720rpx;\n  height: 108rpx;\n  line-height: 108rpx;\n  text-align: center;\n  font-size: 38.5rpx;\n}\n\n.no-comments {\n  height: 297rpx;\n}\n\n.no-comments .txt {\n  height: 43rpx;\n  line-height: 43rpx;\n  display: block;\n  width: 100%;\n  text-align: center;\n  font-size: 29rpx;\n  color: #7f7f7f;\n}\n\n.no-comments .icon {\n  margin: 48rpx auto 18rpx auto;\n  height: 130rpx;\n  display: block;\n  width: 115rpx;\n}\n\n.rec-box {\n  width: 690rpx;\n  height: auto;\n  margin: 0 30rpx;\n}\n\n.rec-box .h {\n  position: relative;\n  width: 690rpx;\n  height: 110rpx;\n  /*border-bottom: 1px solid #d0d0d0;*/\n  margin-bottom: 32rpx;\n}\n\n.rec-box .h .txt {\n  display: inline-block;\n  position: absolute;\n  background: #f4f4f4;\n  top: 59rpx;\n  left: 200rpx;\n  width: 290rpx;\n  height: 45rpx;\n  line-height: 45rpx;\n  font-size: 30rpx;\n  color: #999;\n  text-align: center;\n}\n\n.rec-box .b .item {\n  width: 690rpx;\n  height: auto;\n  padding: 24rpx 24rpx 30rpx 24rpx;\n  background: #fff;\n  margin-bottom: 30rpx;\n}\n\n.rec-box .b .item .img {\n  height: 355rpx;\n  width: 642rpx;\n}\n\n.rec-box .b .item .title {\n  display: block;\n  margin-top: 30rpx;\n  height: 30rpx;\n  width: 642rpx;\n  font-size: 28rpx;\n}\n@import \"../../lib/wxParse/wxParse.wxss\";\n"
  },
  {
    "path": "renard-wx/pages/ucenter/address/address.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar app = getApp();\n\nPage({\n  data: {\n    addressList: [],\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getAddressList();\n  },\n\n  onPullDownRefresh() {\n    wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getAddressList();\n    wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  getAddressList() {\n    let that = this;\n    util.request(api.AddressList).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          addressList: res.data.list\n        });\n      }\n    });\n  },\n\n  addressAddOrUpdate(event) {\n    //返回之前，先取出上一页对象，并设置addressId\n    var pages = getCurrentPages();\n    var prevPage = pages[pages.length - 2];\n\n    if (prevPage.route == \"pages/shopping/checkout/checkout\") {\n      try {\n        wx.setStorageSync('addressId', event.currentTarget.dataset.addressId);\n      } catch (e) {\n\n      }\n\n      let addressId = event.currentTarget.dataset.addressId;\n      if (addressId && addressId != 0) {\n        wx.navigateBack();\n      } else {\n        wx.navigateTo({\n          url: '/pages/ucenter/addressAdd/addressAdd?id=' + addressId\n        })\n      }\n    } else {\n      wx.navigateTo({\n        url: '/pages/ucenter/addressAdd/addressAdd?id=' + event.currentTarget.dataset.addressId\n      })\n    }\n  },\n  deleteAddress(event) {\n    console.log(event.target);\n    let that = this;\n    wx.showModal({\n      title: '',\n      content: '确定要删除地址？',\n      success: function(res) {\n        if (res.confirm) {\n          let addressId = event.target.dataset.addressId;\n          util.request(api.AddressDelete, {\n            id: addressId\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              that.getAddressList();\n              wx.removeStorage({\n                key: 'addressId',\n                success: function(res) {},\n              })\n            }\n          });\n          console.log('用户点击确定')\n        }\n      }\n    });\n    return false;\n\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n});"
  },
  {
    "path": "renard-wx/pages/ucenter/address/address.json",
    "content": "{\n  \"navigationBarTitleText\": \"地址管理\"\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/address/address.wxml",
    "content": "<view class=\"container\">\n  <view class=\"address-list\" wx:if=\"{{ addressList.length > 0 }}\">\n    <view class=\"item\" wx:for=\"{{addressList}}\" wx:key=\"id\" bindtap=\"addressAddOrUpdate\" data-address-id=\"{{item.id}}\">\n      <view class=\"l\">\n        <view class=\"name\">{{item.name}}</view>\n        <view class=\"default\" wx:if=\"{{item.isDefault}}\">默认</view>\n      </view>\n      <view class=\"c\">\n        <view class=\"mobile\">{{item.tel}}</view>\n        <view class=\"address\">{{item.addressDetail}}</view>\n      </view>\n      <view class=\"r\">\n        <image catchtap=\"deleteAddress\" data-address-id=\"{{item.id}}\" class=\"del\" src=\"/static/images/del-address.png\"></image>\n      </view>\n    </view>\n  </view>\n  <view class=\"empty-view\" wx:if=\"{{ addressList.length <= 0 }}\">\n    <image class=\"icon\" src=\"http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/noAddress-26d570cefa.png\"></image>\n    <text class=\"text\">收货地址在哪里</text>\n  </view>\n  <view class=\"add-address\" bindtap=\"addressAddOrUpdate\" data-address-id=\"0\">新建</view>\n</view>"
  },
  {
    "path": "renard-wx/pages/ucenter/address/address.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.container {\n  height: 100%;\n  width: 100%;\n}\n\n.address-list {\n  padding-left: 31.25rpx;\n  background: #fff url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/address-bg-bd30f2bfeb.png) 0 0 repeat-x;\n  background-size: auto 10.5rpx;\n  margin-bottom: 90rpx;\n}\n\n.address-list .item {\n  height: 156.55rpx;\n  align-items: center;\n  display: flex;\n  border-bottom: 1rpx solid #dcd9d9;\n}\n\n.address-list .l {\n  width: 125rpx;\n  height: 80rpx;\n  overflow: hidden;\n}\n\n.address-list .name {\n  width: 125rpx;\n  height: 43rpx;\n  font-size: 29rpx;\n  margin-bottom: 5.2rpx;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n  overflow: hidden;\n}\n\n.address-list .default {\n  width: 62.5rpx;\n  height: 33rpx;\n  line-height: 28rpx;\n  text-align: center;\n  font-size: 20rpx;\n  color: #a78845;\n  border: 1rpx solid #a78845;\n  visibility: visible;\n}\n\n.address-list .c {\n  flex: 1;\n  height: auto;\n  overflow: hidden;\n}\n\n.address-list .mobile {\n  height: 29rpx;\n  font-size: 29rpx;\n  line-height: 29rpx;\n  overflow: hidden;\n  margin-bottom: 6.25rpx;\n}\n\n.address-list .address {\n  height: 37rpx;\n  font-size: 25rpx;\n  line-height: 37rpx;\n  overflow: hidden;\n}\n\n.address-list .r {\n  width: 52rpx;\n  height: auto;\n  overflow: hidden;\n  margin-right: 16.5rpx;\n}\n\n.address-list .del {\n  display: block;\n  width: 52rpx;\n  height: 52rpx;\n}\n\n.add-address {\n  background: #a78845;\n  text-align: center;\n  width: 100%;\n  height: 99rpx;\n  line-height: 99rpx;\n  position: fixed;\n  border-radius: 0;\n  border: none;\n  color: #fff;\n  font-size: 29rpx;\n  bottom: 0;\n  left: 0;\n}\n\n.empty-view {\n  height: 100%;\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n}\n\n.empty-view .icon {\n  height: 248rpx;\n  width: 258rpx;\n  margin-bottom: 10rpx;\n}\n\n.empty-view .text {\n  width: auto;\n  font-size: 28rpx;\n  line-height: 35rpx;\n  color: #999;\n}\n"
  },
  {
    "path": "renard-wx/pages/ucenter/addressAdd/addressAdd.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar check = require('../../../utils/check.js');\nvar area = require('../../../utils/area.js');\n\nvar app = getApp();\nPage({\n  data: {\n    address: {\n      id: 0,\n      areaCode: 0,\n      address: '',\n      name: '',\n      tel: '',\n      isDefault: 0,\n      province: '',\n      city: '',\n      county: ''\n    },\n    addressId: 0,\n    openSelectRegion: false,\n    selectRegionList: [{\n      code: 0,\n      name: '省份'\n    },\n    {\n      code: 0,\n      name: '城市'\n    },\n    {\n      code: 0,\n      name: '区县'\n    }\n    ],\n    regionType: 1,\n    regionList: [],\n    selectRegionDone: false\n  },\n  bindinputMobile(event) {\n    let address = this.data.address;\n    address.tel = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindinputName(event) {\n    let address = this.data.address;\n    address.name = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindinputAddress(event) {\n    let address = this.data.address;\n    address.addressDetail = event.detail.value;\n    this.setData({\n      address: address\n    });\n  },\n  bindIsDefault() {\n    let address = this.data.address;\n    address.isDefault = !address.isDefault;\n    this.setData({\n      address: address\n    });\n  },\n  getAddressDetail() {\n    let that = this;\n    util.request(api.AddressDetail, {\n      id: that.data.addressId\n    }).then(function (res) {\n      if (res.errno === 0) {\n        if (res.data) {\n          that.setData({\n            address: res.data\n          });\n        }\n      }\n    });\n  },\n  setRegionDoneStatus() {\n    let that = this;\n    let doneStatus = that.data.selectRegionList.every(item => {\n      return item.code != 0;\n    });\n\n    that.setData({\n      selectRegionDone: doneStatus\n    })\n\n  },\n  chooseRegion() {\n    let that = this;\n    this.setData({\n      openSelectRegion: !this.data.openSelectRegion\n    });\n\n    //设置区域选择数据\n    let address = this.data.address;\n    if (address.areaCode > 0) {\n      let selectRegionList = this.data.selectRegionList;\n      selectRegionList[0].code = address.areaCode.slice(0, 2) + '0000';\n      selectRegionList[0].name = address.province;\n\n      selectRegionList[1].code = address.areaCode.slice(0, 4) + '00';\n      selectRegionList[1].name = address.city;\n\n      selectRegionList[2].code = address.areaCode;\n      selectRegionList[2].name = address.county;\n\n      let regionList = area.getList('county', address.areaCode.slice(0, 4));\n      regionList = regionList.map(item => {\n        //标记已选择的\n        if (address.areaCode === item.code) {\n          item.selected = true;\n        } else {\n          item.selected = false;\n        }\n        return item;\n      })\n\n      this.setData({\n        selectRegionList: selectRegionList,\n        regionType: 3,\n        regionList: regionList\n      });\n\n    } else {\n      let selectRegionList = [{\n        code: 0,\n        name: '省份',\n      },\n      {\n        code: 0,\n        name: '城市',\n      },\n      {\n        code: 0,\n        name: '区县',\n      }\n      ];\n\n      this.setData({\n        selectRegionList: selectRegionList,\n        regionType: 1,\n        regionList: area.getList('province')\n      });\n    }\n\n    this.setRegionDoneStatus();\n\n  },\n  onLoad: function (options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    console.log(options)\n    if (options.id && options.id != 0) {\n      this.setData({\n        addressId: options.id\n      });\n      this.getAddressDetail();\n    }\n  },\n  onReady: function () {\n\n  },\n  selectRegionType(event) {\n    let that = this;\n    let regionTypeIndex = event.target.dataset.regionTypeIndex;\n    let selectRegionList = that.data.selectRegionList;\n\n    //判断是否可点击\n    if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].code <= 0)) {\n      return false;\n    }\n\n    let selectRegionItem = selectRegionList[regionTypeIndex];\n    let code = selectRegionItem.code;\n    let regionList;\n    if (regionTypeIndex === 0) {\n      // 点击省级，取省级\n      regionList = area.getList('province');\n    }\n    else if (regionTypeIndex === 1) {\n      // 点击市级，取市级\n      regionList = area.getList('city', code.slice(0, 2));\n    }\n    else {\n      // 点击县级，取县级\n      regionList = area.getList('county', code.slice(0, 4));\n    }\n\n    regionList = regionList.map(item => {\n      //标记已选择的\n      if (that.data.selectRegionList[regionTypeIndex].code == item.code) {\n        item.selected = true;\n      } else {\n        item.selected = false;\n      }\n      return item;\n    })\n\n    this.setData({\n      regionList: regionList,\n      regionType: regionTypeIndex + 1\n    })\n\n    this.setRegionDoneStatus();\n  },\n  selectRegion(event) {\n    let that = this;\n    let regionIndex = event.target.dataset.regionIndex;\n    let regionItem = this.data.regionList[regionIndex];\n    let regionType = this.data.regionType;\n    let selectRegionList = this.data.selectRegionList;\n    selectRegionList[regionType - 1] = regionItem;\n\n    if (regionType == 3) {\n      this.setData({\n        selectRegionList: selectRegionList\n      })\n\n      let regionList = that.data.regionList.map(item => {\n        //标记已选择的\n        if (that.data.selectRegionList[that.data.regionType - 1].code == item.code) {\n          item.selected = true;\n        } else {\n          item.selected = false;\n        }\n        return item;\n      })\n\n      this.setData({\n        regionList: regionList\n      })\n\n      this.setRegionDoneStatus();\n      return\n    }\n\n    //重置下级区域为空\n    selectRegionList.map((item, index) => {\n      if (index > regionType - 1) {\n        item.code = 0;\n        item.name = index == 1 ? '城市' : '区县';\n      }\n      return item;\n    });\n\n    this.setData({\n      selectRegionList: selectRegionList,\n      regionType: regionType + 1\n    })\n\n    let code = regionItem.code;\n    let regionList = [];\n    if (regionType === 1) {\n      // 点击省级，取市级\n      regionList = area.getList('city', code.slice(0, 2))\n    }\n    else {\n      // 点击市级，取县级\n      regionList = area.getList('county', code.slice(0, 4))\n    }\n\n    this.setData({\n      regionList: regionList\n    })\n\n    this.setRegionDoneStatus();\n  },\n  doneSelectRegion() {\n    if (this.data.selectRegionDone === false) {\n      return false;\n    }\n\n    let address = this.data.address;\n    let selectRegionList = this.data.selectRegionList;\n    address.province = selectRegionList[0].name;\n    address.city = selectRegionList[1].name;\n    address.county = selectRegionList[2].name;\n    address.areaCode = selectRegionList[2].code;\n\n    this.setData({\n      address: address,\n      openSelectRegion: false\n    });\n\n  },\n  cancelSelectRegion() {\n    this.setData({\n      openSelectRegion: false,\n      regionType: this.data.regionDoneStatus ? 3 : 1\n    });\n\n  },\n  cancelAddress() {\n    wx.navigateBack();\n  },\n  saveAddress() {\n    console.log(this.data.address)\n    let address = this.data.address;\n\n    if (address.name == '') {\n      util.showErrorToast('请输入姓名');\n\n      return false;\n    }\n\n    if (address.tel == '') {\n      util.showErrorToast('请输入手机号码');\n      return false;\n    }\n\n\n    if (address.areaCode == 0) {\n      util.showErrorToast('请输入省市区');\n      return false;\n    }\n\n    if (address.addressDetail == '') {\n      util.showErrorToast('请输入详细地址');\n      return false;\n    }\n\n    let that = this;\n    util.request(api.AddressSave, {\n      id: address.id,\n      name: address.name,\n      tel: address.tel,\n      province: address.province,\n      city: address.city,\n      county: address.county,\n      areaCode: address.areaCode,\n      addressDetail: address.addressDetail,\n      isDefault: address.isDefault\n    }, 'POST').then(function (res) {\n      if (res.errno === 0) {\n        //返回之前，先取出上一页对象，并设置addressId\n        var pages = getCurrentPages();\n        var prevPage = pages[pages.length - 2];\n        console.log(prevPage);\n        if (prevPage.route == \"pages/checkout/checkout\") {\n          prevPage.setData({\n            addressId: res.data\n          })\n\n          try {\n            wx.setStorageSync('addressId', res.data);\n          } catch (e) {\n\n          }\n          console.log(\"set address\");\n        }\n        wx.navigateBack();\n      }\n    });\n\n  },\n  onShow: function () {\n    // 页面显示\n  },\n  onHide: function () {\n    // 页面隐藏\n\n  },\n  onUnload: function () {\n    // 页面关闭\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/ucenter/addressAdd/addressAdd.json",
    "content": "{\n  \"navigationBarTitleText\": \"编辑地址\"\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/addressAdd/addressAdd.wxml",
    "content": "<view class=\"add-address\">\n  <view class=\"add-form\">\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputName\" placeholder=\"姓名\" value=\"{{address.name}}\" auto-focus/>\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputMobile\" value=\"{{address.tel}}\" placeholder=\"手机号码\" />\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" value=\"{{address.province + address.city + address.county}}\" disabled=\"true\" bindtap=\"chooseRegion\" placeholder=\"省份、城市、区县\" />\n    </view>\n    <view class=\"form-item\">\n      <input class=\"input\" bindinput=\"bindinputAddress\" value=\"{{address.addressDetail}}\" placeholder=\"详细地址, 如街道、楼盘号等\" />\n    </view>\n    <view class=\"form-default\">\n      <text bindtap=\"bindIsDefault\" class=\"default-input {{address.isDefault == 1 ? 'selected' : ''}}\">设为默认地址</text>\n    </view>\n  </view>\n\n  <view class=\"btns\">\n    <button class=\"cannel\" bindtap=\"cancelAddress\">取消</button>\n    <button class=\"save\" bindtap=\"saveAddress\">保存</button>\n  </view>\n\n  <view class=\"region-select\" wx:if=\"{{openSelectRegion}}\">\n    <view class=\"hd\">\n      <view class=\"region-selected\">\n        <view class=\"item {{item.code == 0 ? 'disabled' : ''}} {{(regionType -1) === index ? 'selected' : ''}}\" bindtap=\"selectRegionType\" data-region-type-index=\"{{index}}\" wx:for=\"{{selectRegionList}}\" wx:key=\"code\">{{item.name}}</view>\n      </view>\n      <view class=\"done {{selectRegionDone ? '' : 'disabled'}}\" bindtap=\"doneSelectRegion\">确定</view>\n    </view>\n    <view class=\"bd\">\n      <scroll-view scroll-y class=\"region-list\">\n        <view class=\"item {{item.selected ? 'selected' : ''}}\" bindtap=\"selectRegion\" data-region-index=\"{{index}}\" wx:for=\"{{regionList}}\" wx:key=\"code\">{{item.name}}</view>\n      </scroll-view>\n    </view>\n  </view>\n</view>\n<view class=\"bg-mask\" bindtap=\"cancelSelectRegion\" wx:if=\"{{openSelectRegion}}\"></view>"
  },
  {
    "path": "renard-wx/pages/ucenter/addressAdd/addressAdd.wxss",
    "content": "page {\n  height: 100%;\n  background: #f4f4f4;\n}\n\n.add-address .add-form {\n  background: #fff;\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n}\n\n.add-address .form-item {\n  height: 116rpx;\n  padding-left: 31.25rpx;\n  border-bottom: 1px solid #d9d9d9;\n  display: flex;\n  align-items: center;\n  padding-right: 31.25rpx;\n}\n\n.add-address .input {\n  flex: 1;\n  height: 44rpx;\n  line-height: 44rpx;\n  overflow: hidden;\n}\n\n.add-address .form-default {\n  border-bottom: 1px solid #d9d9d9;\n  height: 96rpx;\n  background: #fafafa;\n  padding-top: 28rpx;\n  font-size: 28rpx;\n}\n\n.default-input {\n  margin: 0 auto;\n  display: block;\n  width: 240rpx;\n  height: 40rpx;\n  padding-left: 50rpx;\n  line-height: 40rpx;\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/sprites/checkbox-sed825af9d3-a6b8540d42.png) 1rpx -448rpx no-repeat;\n  background-size: 38rpx 486rpx;\n  font-size: 28rpx;\n}\n\n.default-input.selected {\n  background: url(http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/sprites/checkbox-sed825af9d3-a6b8540d42.png) 0 -192rpx no-repeat;\n  background-size: 38rpx 486rpx;\n}\n\n.add-address .btns {\n  position: fixed;\n  bottom: 0;\n  left: 0;\n  overflow: hidden;\n  display: flex;\n  height: 100rpx;\n  width: 100%;\n}\n\n.add-address .cannel, .add-address .save {\n  flex: 1;\n  height: 100rpx;\n  text-align: center;\n  line-height: 100rpx;\n  font-size: 28rpx;\n  color: #fff;\n  border: none;\n  border-radius: 0;\n}\n\n.add-address .cannel {\n  background: #3f3f3f;\n}\n\n.add-address .save {\n  background: #a78845;\n}\n\n.region-select {\n  width: 100%;\n  height: 600rpx;\n  background: #fff;\n  position: fixed;\n  z-index: 10;\n  left: 0;\n  bottom: 0;\n}\n\n.region-select .hd {\n  height: 108rpx;\n  width: 100%;\n  border-bottom: 1px solid #f4f4f4;\n  padding: 46rpx 30rpx 0 30rpx;\n}\n\n.region-select .region-selected {\n  float: left;\n  height: 60rpx;\n  display: flex;\n}\n\n.region-select .region-selected .item {\n  max-width: 140rpx;\n  margin-right: 30rpx;\n  text-align: left;\n  line-height: 60rpx;\n  height: 100%;\n  color: #333;\n  font-size: 28rpx;\n  overflow: hidden;\n  text-overflow: ellipsis;\n  white-space: nowrap;\n}\n\n.region-select .region-selected .item.disabled {\n  color: #999;\n}\n\n.region-select .region-selected .item.selected {\n  color: #a78845;\n}\n\n.region-select .done {\n  float: right;\n  height: 60rpx;\n  width: 60rpx;\n  border: none;\n  background: #fff;\n  line-height: 60rpx;\n  text-align: center;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.region-select .done.disabled {\n  color: #999;\n}\n\n.region-select .bd {\n  height: 492rpx;\n  width: 100%;\n  padding: 0 30rpx;\n}\n\n.region-select .region-list {\n  height: 492rpx;\n}\n\n.region-select .region-list .item {\n  width: 100%;\n  height: 104rpx;\n  line-height: 104rpx;\n  text-align: left;\n  color: #333;\n  font-size: 28rpx;\n}\n\n.region-select .region-list .item.selected {\n  color: #b4282d;\n}\n\n.bg-mask {\n  height: 100%;\n  width: 100%;\n  background: rgba(0, 0, 0, 0.4);\n  position: fixed;\n  top: 0;\n  left: 0;\n  z-index: 8;\n}\n"
  },
  {
    "path": "renard-wx/pages/ucenter/coupon/coupon.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nvar app = getApp();\n\nPage({\n  data: {\n\n  },\n  onLoad: function(options) {},\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "renard-wx/pages/ucenter/coupon/coupon.json",
    "content": "{\n  \"navigationBarTitleText\": \"优惠券\"\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/coupon/coupon.wxml",
    "content": "<view class=\"container\">\n  <view class=\"coupon-form\">\n    <view class=\"input-box\">\n      <input class=\"coupon-sn\" placeholder=\"请输入优惠码\" />\n      <image class=\"clear-icon\" src=\"http://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/clear-fb-dd9d604f86.png\"></image>\n    </view>\n    <button class=\"add-btn disabled\">兑换</button>\n  </view>\n  <view class=\"help\">使用说明</view>\n  <view class=\"coupon-list\">\n    <view class=\"item\">\n      <view class=\"tag\">新人专享</view>\n      <view class=\"content\">\n        <view class=\"left\">\n          <view class=\"name\">限时免单券</view>\n          <view class=\"time\">2017.06.08-2017.06.11</view>\n        </view>\n        <view class=\"right\">\n          <button class=\"go\">去使用</button>\n        </view>\n      </view>\n      <view class=\"condition\">\n        <text class=\"txt\">简约陶瓷马克杯专享；小米用户福利；限时购、三石福利价、礼品卡及详情页标注不可用券特殊商品除外</text>\n        <image src=\"https://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/couponArrow-71315b4145.png\" class=\"icon\"></image>\n      </view>\n    </view>\n\n    <view class=\"item\">\n      <view class=\"tag\">新人专享</view>\n      <view class=\"content\">\n        <view class=\"left\">\n          <view class=\"name\">限时免单券</view>\n          <view class=\"time\">2017.06.08-2017.06.11</view>\n        </view>\n        <view class=\"right\">\n          <button class=\"go\">去使用</button>\n        </view>\n      </view>\n      <view class=\"condition\">\n        <text class=\"txt\">简约陶瓷马克杯专享；小米用户福利；限时购、三石福利价、礼品卡及详情页标注不可用券特殊商品除外</text>\n        <image src=\"https://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/couponArrow-71315b4145.png\" class=\"icon\"></image>\n      </view>\n    </view>\n  </view>\n\n\n</view>"
  },
  {
    "path": "renard-wx/pages/ucenter/coupon/coupon.wxss",
    "content": "page {\n  background: #f4f4f4;\n  min-height: 100%;\n}\n\n.container {\n  background: #f4f4f4;\n  min-height: 100%;\n  padding-top: 30rpx;\n}\n\n.coupon-form {\n  height: 110rpx;\n  width: 100%;\n  background: #fff;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n  padding-top: 20rpx;\n  display: flex;\n}\n\n.input-box {\n  flex: 1;\n  height: 70rpx;\n  color: #333;\n  font-size: 24rpx;\n  background: #fff;\n  position: relative;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4rpx;\n  margin-right: 30rpx;\n}\n\n.input-box .coupon-sn {\n  position: absolute;\n  top: 10rpx;\n  left: 30rpx;\n  height: 50rpx;\n  width: 100%;\n  color: #000;\n  line-height: 50rpx;\n  font-size: 24rpx;\n}\n\n.clear-icon {\n  position: absolute;\n  top: 21rpx;\n  right: 30rpx;\n  width: 28rpx;\n  height: 28rpx;\n}\n\n.add-btn {\n  height: 70rpx;\n  border: none;\n  width: 168rpx;\n  background: #b4282d;\n  border-radius: 0;\n  line-height: 70rpx;\n  color: #fff;\n  font-size: 28rpx;\n}\n\n.add-btn.disabled {\n  background: #ccc;\n}\n\n.help {\n  height: 72rpx;\n  line-height: 72rpx;\n  text-align: right;\n  padding-right: 30rpx;\n  background: url(https://yanxuan.nosdn.127.net/hxm/yanxuan-wap/p/20161201/style/img/icon-normal/couponHelp-4768607555.png) 590rpx center no-repeat;\n  background-size: 28rpx;\n  color: #999;\n  font-size: 24rpx;\n}\n\n.coupon-list {\n  width: 100%;\n  height: auto;\n  overflow: hidden;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n}\n\n.item {\n  position: relative;\n  height: 290rpx;\n  width: 100%;\n  background: linear-gradient(to right, #cfa568, #e3bf79);\n  margin-bottom: 30rpx;\n  padding-top: 52rpx;\n}\n\n.tag {\n  height: 32rpx;\n  background: #a48143;\n  padding-left: 16rpx;\n  padding-right: 16rpx;\n  position: absolute;\n  left: 20rpx;\n  color: #fff;\n  top: 20rpx;\n  font-size: 20rpx;\n  text-align: center;\n  line-height: 32rpx;\n}\n\n.content {\n  margin-top: 24rpx;\n  margin-left: 40rpx;\n  display: flex;\n  margin-right: 40rpx;\n  flex-direction: row;\n  align-items: center;\n}\n\n.content .left {\n  flex: 1;\n}\n\n.name {\n  font-size: 44rpx;\n  color: #fff;\n  margin-bottom: 14rpx;\n}\n\n.time {\n  font-size: 24rpx;\n  color: rgba(255, 255, 255, 0.8);\n  line-height: 30rpx;\n}\n\n.content .right {\n  width: 162rpx;\n}\n\n.go {\n  height: 48rpx;\n  border: none;\n  width: 162rpx;\n  background: rgba(255, 255, 255, 0.8);\n  border-radius: 4rpx;\n  line-height: 48rpx;\n  color: #b69150;\n  font-size: 24rpx;\n}\n\n.condition {\n  position: absolute;\n  width: 100%;\n  bottom: 0;\n  left: 0;\n  height: 78rpx;\n  background: rgba(0, 0, 0, 0.08);\n  padding: 24rpx 40rpx;\n  display: flex;\n  flex-direction: row;\n}\n\n.condition .txt {\n  display: block;\n  height: 30rpx;\n  flex: 1;\n  overflow: hidden;\n  font-size: 24rpx;\n  line-height: 30rpx;\n  color: #fff;\n}\n\n.condition .icon {\n  margin-left: 30rpx;\n  width: 24rpx;\n  height: 24rpx;\n}\n"
  },
  {
    "path": "renard-wx/pages/ucenter/index/index.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\nvar user = require('../../../utils/user.js');\nvar app = getApp();\n\nPage({\n  data: {\n    aboutShow: true,\n    userInfo: {\n      nickName: '点击登录',\n      avatarUrl: 'http://yanxuan.nosdn.127.net/8945ae63d940cc42406c3f67019c5cb6.png'\n    }\n  },\n  onLoad: function(options) {\n\n  },\n  onReady: function() {\n\n  },\n  onShow: function() {\n\n    //获取用户的登录信息\n    if (app.globalData.hasLogin) {\n      let userInfo = wx.getStorageSync('userInfo');\n      this.setData({\n        aboutShow: true,\n        userInfo: userInfo,\n      });\n    }\n\n  },\n  onHide: function() {\n    // 页面隐藏\n\n  },\n  onUnload: function() {\n    // 页面关闭\n  },\n  goLogin() {\n    if (!app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    }\n  },\n  goOrder() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/order/order\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    }\n  },\n  goCoupon() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/coupon/coupon\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n\n  },\n  goGroupon() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/groupon/myGroupon/myGroupon\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goCollect() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/collect/collect\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goFootprint() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/footprint/footprint\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  goAddress() {\n    if (app.globalData.hasLogin) {\n      wx.navigateTo({\n        url: \"/pages/ucenter/address/address\"\n      });\n    } else {\n      wx.navigateTo({\n        url: \"/pages/auth/login/login\"\n      });\n    };\n  },\n  exitLogin: function() {\n    wx.showModal({\n      title: '',\n      confirmColor: '#b4282d',\n      content: '退出登录？',\n      success: function(res) {\n        if (res.confirm) {\n          wx.removeStorageSync('token');\n          wx.removeStorageSync('userInfo');\n          wx.switchTab({\n            url: '/pages/index/index'\n          });\n        }\n      }\n    })\n\n  }\n})"
  },
  {
    "path": "renard-wx/pages/ucenter/index/index.json",
    "content": "{\n  \"backgroundColor\": \"#f4f4f4\",\n  \"navigationBarTitleText\": \"个人中心\",\n  \"enablePullDownRefresh\": false\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/index/index.wxml",
    "content": "<view class=\"container\">\n  <view class=\"my-info\">\n    <view class=\"profile-info\" bindtap=\"goLogin\">\n      <image class=\"avatar\" src=\"{{userInfo.avatarUrl}}\" />\n      <view class=\"my-info-name\">{{userInfo.nickName}}\n        <text></text>\n      </view>\n    </view>\n    <view class=\"my-info-order\">\n      <view class=\"list-icon\" bindtap=\"goOrder\" data-index=\"0\">\n        <view class=\"{{tabClass[0]}}\"></view>\n        <image src=\"../../../images/my-icon-1.png\" />\n        <text>我的订单</text>\n      </view>\n      <view class=\"list-icon\" bindtap=\"goGroupon\" data-index=\"1\">\n        <view class=\"{{tabClass[1]}}\"></view>\n        <image src=\"../../../images/my-icon-2.png\" />\n        <text>我的团购</text>\n      </view>\n      <view class=\"list-icon\" bindtap=\"goCollect\" data-index=\"2\">\n        <view class=\"{{tabClass[2]}}\"></view>\n        <image src=\"../../../images/my-icon-3.png\" />\n        <text>我的收藏</text>\n      </view>\n      <view class=\"list-icon\" bindtap=\"goAddress\" data-index=\"3\">\n        <view class=\"{{tabClass[3]}}\"></view>\n        <image src=\"../../../images/my-icon-4.png\" />\n        <text>收货地址</text>\n      </view>\n    </view>\n  </view>\n  <view class=\"my-item-list\">\n    <view class=\"my-item\">\n      <navigator url=\"/pages/select-address/index\" hover-class=\"none\">快递费说明</navigator>\n      <image src=\"../../../images/right-icon.png\" />\n    </view>\n    <view class=\"my-item\">\n      <navigator url=\"/pages/select-address/index\" hover-class=\"none\">团购说明</navigator>\n      <image src=\"../../../images/right-icon.png\" />\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/ucenter/index/index.wxss",
    "content": ".my-info {\n  width: 100%;\n  text-align: center;\n  border-bottom: 20rpx solid #f5f5f5;\n  padding-bottom: 30rpx;\n}\n\n.my-info .avatar {\n  width: 176rpx;\n  height: 176rpx;\n  border-radius: 50%;\n}\n\n.my-info .my-info-name {\n  color: #293539;\n  font-size: 76rrpx;\n  margin-top: 10rpx;\n  position: relative;\n}\n\n.my-info .my-info-name text {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 4rpx solid #a78845;\n  border-radius: 50%;\n  margin-left: 10rpx;\n}\n\n.my-info-order {\n  width: 95%;\n  text-align: center;\n  margin: 0 auto;\n  margin-top: 60rpx;\n}\n\n.my-info-order .list-icon {\n  display: inline-block;\n  width: 25%;\n  position: relative;\n}\n\n.my-info-order .list-icon .red-dot {\n  width: 18rpx;\n  height: 18rpx;\n  border-radius: 50%;\n  position: absolute;\n  right: 30rpx;\n  background-color: #ff3f3e;\n}\n\n.my-info-order .list-icon text {\n  display: block;\n  font-size: 22rpx;\n  color: #293539;\n}\n\n.my-info-order .list-icon image {\n  width: 56rpx;\n  height: 56rpx;\n}\n\n.my-item-list .my-item {\n  width: 100%;\n  height: 120rpx;\n  border-bottom: 2rpx dashed #f5f5f5;\n  line-height: 120rpx;\n  font-size: 32rpx;\n  color: #293539;\n  position: relative;\n  font-weight: 300;\n}\n\n.my-item-list .my-item text {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 2rpx solid #a78845;\n  border-radius: 50%;\n  left: 30rpx;\n  bottom: 50rpx;\n}\n\n.my-item-list .my-item navigator {\n  display: inline-block;\n  margin-left: 70rpx;\n  width: 90%;\n}\n\n.my-item-list .my-item .about {\n  display: inline-block;\n  margin-left: 70rpx;\n  width: 90%;\n}\n\n.my-item-list .my-item image {\n  width: 40rpx;\n  height: 40rpx;\n  float: right;\n  margin-top: 40rpx;\n  margin-right: 30rpx;\n  position: absolute;\n  right: 0;\n}\n\n.show-pop {\n  width: 100%;\n  height: 100%;\n  position: fixed;\n  top: 0;\n  left: 0;\n  background-color: rgba(255, 255, 255, 0.8);\n}\n\n.show-pop .show-pop-box {\n  width: 55%;\n  margin: 0 auto;\n  margin-top: 30%;\n  background-color: #fff;\n  border-radius: 10rpx;\n  text-align: center;\n  position: relative;\n  padding-bottom: 40rpx;\n  padding-top: 60rpx;\n  padding-left: 30rpx;\n  padding-right: 30rpx;\n  box-shadow: 0rpx 4rpx 30rpx #eee;\n}\n\n.show-pop-box .close {\n  width: 70rpx;\n  height: 70rpx;\n  position: absolute;\n  right: 0;\n  top: 0;\n}\n\n.show-pop .show-pop-box .show-pop-title {\n  color: #a78845;\n  font-size: 36rpx;\n  font-weight: 300;\n  position: relative;\n}\n\n.show-pop .show-pop-box .show-pop-title .r {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 1px solid #a78845;\n  border-radius: 50%;\n  margin-left: 20rpx;\n  margin-top: 20rpx;\n}\n\n.show-pop .show-pop-box .show-pop-title .l {\n  width: 10rpx;\n  height: 10rpx;\n  position: absolute;\n  border: 2rpx solid #a78845;\n  border-radius: 50%;\n  margin-left: -30rpx;\n  margin-top: 20rpx;\n}\n\n.show-pop .show-pop-box .show-pop-text {\n  margin-top: 20rpx;\n  color: #293539;\n  font-size: 30rpx;\n  line-height: 56rpx;\n  font-weight: 300;\n}\n"
  },
  {
    "path": "renard-wx/pages/ucenter/order/order.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderList: [],\n    showType: 0,\n    page: 1,\n    limit: 10,\n    totalPages: 1\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n  },\n\n  getOrderList() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.OrderList, {\n      showType: that.data.showType,\n      page: that.data.page,\n      limit: that.data.limit\n    }).then(function(res) {\n      if (res.errno === 0) {\n        that.setData({\n          orderList: that.data.orderList.concat(res.data.list),\n          totalPages: res.data.pages\n        });\n        wx.hideLoading();\n      }\n    });\n  },\n  onReachBottom() {\n    if (this.data.totalPages > this.data.page) {\n      this.setData({\n        page: this.data.page + 1\n      });\n      this.getOrderList();\n    } else {\n      wx.showToast({\n        title: '没有更多订单了',\n        icon: 'none',\n        duration: 2000\n      });\n      return false;\n    }\n  },\n  switchTab: function(event) {\n    let showType = event.currentTarget.dataset.index;\n    this.setData({\n      orderList: [],\n      showType: showType,\n      page: 1,\n      limit: 10,\n      totalPages: 1\n    });\n    this.getOrderList();\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n    this.getOrderList();\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n})"
  },
  {
    "path": "renard-wx/pages/ucenter/order/order.json",
    "content": "{\n  \"navigationBarTitleText\": \"我的订单\",\n  \"usingComponents\": {\n    \"zan-capsule\": \"/components/capsule/index\"\n  }\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/order/order.wxml",
    "content": "<view class=\"container\">\n  <view class=\"orders-switch\">\n    <view class=\"item {{ showType == 0 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='0'>\n      <view class=\"txt\">全部</view>\n    </view>\n    <view class=\"item {{ showType == 1 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='1'>\n      <view class=\"txt\">待付款</view>\n    </view>\n    <view class=\"item {{ showType == 2 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='2'>\n      <view class=\"txt\">待发货</view>\n    </view>\n    <view class=\"item {{ showType == 3 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='3'>\n      <view class=\"txt\">待收货</view>\n    </view>\n    <view class=\"item {{ showType == 4 ? 'active' : ''}}\" bindtap=\"switchTab\" data-index='4'>\n      <view class=\"txt\">待评价</view>\n    </view>\n  </view>\n  <view class=\"no-order\" wx:if=\"{{orderList.length <= 0}}\">\n    <view class=\"c\">\n      <image src=\"http://nos.netease.com/mailpub/hxm/yanxuan-wap/p/20150730/style/img/icon-normal/noCart-a8fe3f12e5.png\" />\n      <text>还没有任何订单呢</text>\n    </view>\n  </view>\n\n  <view class=\"orders\">\n    <navigator url=\"../orderDetail/orderDetail?id={{item.id}}\" class=\"order\" open-type=\"navigate\" wx:for=\"{{orderList}}\" wx:key=\"id\">\n      <view class=\"h\">\n        <view class=\"l\">订单编号：{{item.orderSn}}</view>\n        <view class=\"r\">{{item.orderStatusText}}</view>\n      </view>\n      <view class=\"goods\" wx:for=\"{{item.goodsList}}\" wx:key=\"id\" wx:for-item=\"gitem\">\n        <view class=\"img\">\n          <image src=\"{{gitem.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <text class=\"name\">{{gitem.goodsName}}</text>\n          <text class=\"number\">共{{gitem.number}}件商品</text>\n        </view>\n        <view class=\"status\"></view>\n      </view>\n      <view class=\"b\">\n        <view class=\"l\">实付：￥{{item.actualPrice}}</view>\n        <view class=\"capsule-tag\">\n          <zan-capsule color=\"#a78845\" leftText=\"\" rightText=\"团购\" wx:if=\"{{item.isGroupin}}\" />\n        </view>\n      </view>\n    </navigator>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/ucenter/order/order.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.capsule-tag {\n  float: right;\n  /* padding-right: 10rpx; */\n}\n\n.zan-capsule + .zan-capsule {\n  margin-left: 5px;\n}\n\n.orders-switch {\n  width: 100%;\n  background: #fff;\n  height: 84rpx;\n  border-bottom: 1px solid #a78845;\n}\n\n.orders-switch .item {\n  display: inline-block;\n  height: 82rpx;\n  width: 18%;\n  padding: 0 15rpx;\n  text-align: center;\n}\n\n.orders-switch .item .txt {\n  display: inline-block;\n  height: 82rpx;\n  padding: 0 20rpx;\n  line-height: 82rpx;\n  color: #333;\n  font-size: 30rpx;\n  width: 170rpx;\n}\n\n.orders-switch .item.active .txt {\n  color: #a78845;\n  border-bottom: 4rpx solid #a78845;\n}\n\n.no-order {\n  width: 100%;\n  height: auto;\n  margin: 0 auto;\n}\n\n.no-order .c {\n  width: 100%;\n  height: auto;\n  margin-top: 200rpx;\n}\n\n.no-order .c image {\n  margin: 0 auto;\n  display: block;\n  text-align: center;\n  width: 258rpx;\n  height: 258rpx;\n}\n\n.no-order .c text {\n  margin: 0 auto;\n  display: block;\n  width: 258rpx;\n  height: 29rpx;\n  line-height: 29rpx;\n  text-align: center;\n  font-size: 29rpx;\n  color: #999;\n}\n\n.orders {\n  height: auto;\n  width: 100%;\n  overflow: hidden;\n}\n\n.order {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order .h {\n  height: 83.3rpx;\n  line-height: 83.3rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .h .l {\n  float: left;\n}\n\n.order .h .r {\n  float: right;\n  color: #a78845;\n  font-size: 24rpx;\n}\n\n.order .goods {\n  display: flex;\n  align-items: center;\n  height: 199rpx;\n  margin-left: 31.25rpx;\n}\n\n.order .goods .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order .goods .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order .goods .info {\n  height: 145.83rpx;\n  flex: 1;\n  padding-left: 20rpx;\n}\n\n.order .goods .name {\n  margin-top: 30rpx;\n  display: block;\n  height: 44rpx;\n  line-height: 44rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order .goods .number {\n  display: block;\n  height: 37rpx;\n  line-height: 37rpx;\n  color: #666;\n  font-size: 25rpx;\n}\n\n.order .goods .status {\n  width: 105rpx;\n  color: #a78845;\n  font-size: 25rpx;\n}\n\n.order .b {\n  height: 103rpx;\n  line-height: 103rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order .b .l {\n  float: left;\n}\n\n.order .b .r {\n  float: right;\n}\n\n.order .b .btn {\n  margin-top: 19rpx;\n  height: 64.5rpx;\n  line-height: 64.5rpx;\n  text-align: center;\n  padding: 0 20rpx;\n  border-radius: 5rpx;\n  font-size: 28rpx;\n  color: #fff;\n  background: #a78845;\n}\n"
  },
  {
    "path": "renard-wx/pages/ucenter/orderDetail/orderDetail.js",
    "content": "var util = require('../../../utils/util.js');\nvar api = require('../../../config/api.js');\n\nPage({\n  data: {\n    orderId: 0,\n    orderInfo: {},\n    orderGoods: [],\n    expressInfo: {},\n    flag: false,\n    handleOption: {}\n  },\n  onLoad: function(options) {\n    // 页面初始化 options为页面跳转所带来的参数\n    this.setData({\n      orderId: options.id\n    });\n    this.getOrderDetail();\n  },\n\n  onPullDownRefresh() {\n    // wx.showNavigationBarLoading() //在标题栏中显示加载\n    this.getOrderDetail();\n    // wx.hideNavigationBarLoading() //完成停止加载\n    wx.stopPullDownRefresh() //停止下拉刷新\n  },\n\n  expandDetail: function() {\n    let that = this;\n    this.setData({\n      flag: !that.data.flag\n    })\n  },\n\n  getOrderDetail: function() {\n    wx.showLoading({\n      title: '加载中',\n    });\n\n    setTimeout(function() {\n      wx.hideLoading()\n    }, 2000);\n\n    let that = this;\n    util.request(api.OrderDetail, {\n      orderId: that.data.orderId\n    }).then(function(res) {\n      if (res.errno === 0) {\n        console.log(res.data);\n        that.setData({\n          orderInfo: res.data.orderInfo,\n          orderGoods: res.data.orderGoods,\n          handleOption: res.data.orderInfo.handleOption,\n          expressInfo: res.data.expressInfo\n        });\n\n        wx.hideLoading();\n      }\n    });\n  },\n  // “去付款”按钮点击效果\n  payOrder: function() {\n    let that = this;\n    util.request(api.OrderPrepay, {\n      orderId: that.data.orderId\n    }, 'POST').then(function(res) {\n      if (res.errno === 0) {\n        const payParam = res.data;\n        console.log(\"支付过程开始\");\n        wx.requestPayment({\n          'timeStamp': payParam.timeStamp,\n          'nonceStr': payParam.nonceStr,\n          'package': payParam.packageValue,\n          'signType': payParam.signType,\n          'paySign': payParam.paySign,\n          'success': function(res) {\n            console.log(\"支付过程成功\");\n            util.redirect('/pages/ucenter/order/order');\n          },\n          'fail': function(res) {\n            console.log(\"支付过程失败\");\n            util.showErrorToast('支付失败');\n          },\n          'complete': function(res) {\n            console.log(\"支付过程结束\")\n          }\n        });\n      }\n    });\n\n  },\n  // “取消订单”点击效果\n  cancelOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要取消此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderCancel, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '取消订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “取消订单并退款”点击效果\n  refundOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要取消此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderRefund, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '取消订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “删除”点击效果\n  deleteOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确定要删除此订单？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderDelete, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '删除订单成功'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  // “确认收货”点击效果\n  confirmOrder: function() {\n    let that = this;\n    let orderInfo = that.data.orderInfo;\n\n    wx.showModal({\n      title: '',\n      content: '确认收货？',\n      success: function(res) {\n        if (res.confirm) {\n          util.request(api.OrderConfirm, {\n            orderId: orderInfo.id\n          }, 'POST').then(function(res) {\n            if (res.errno === 0) {\n              wx.showToast({\n                title: '确认收货成功！'\n              });\n              util.redirect('/pages/ucenter/order/order');\n            } else {\n              util.showErrorToast(res.errmsg);\n            }\n          });\n        }\n      }\n    });\n  },\n  onReady: function() {\n    // 页面渲染完成\n  },\n  onShow: function() {\n    // 页面显示\n  },\n  onHide: function() {\n    // 页面隐藏\n  },\n  onUnload: function() {\n    // 页面关闭\n  }\n});"
  },
  {
    "path": "renard-wx/pages/ucenter/orderDetail/orderDetail.json",
    "content": "{\n  \"navigationBarTitleText\": \"订单详情\"\n}"
  },
  {
    "path": "renard-wx/pages/ucenter/orderDetail/orderDetail.wxml",
    "content": "<view class=\"container\">\n  <view class=\"order-info\">\n    <view class=\"item\">下单时间：{{orderInfo.addTime}}</view>\n    <view class=\"item\">订单编号：{{orderInfo.orderSn}}</view>\n    <view class=\"item\">订单留言：{{orderInfo.message}}</view>\n    <view class=\"item-c\">\n      <view class=\"l\">实付：\n        <text class=\"cost\">￥{{orderInfo.actualPrice}}</text>\n      </view>\n      <view class=\"r\">\n        <view class=\"btn active\" bindtap=\"cancelOrder\" wx:if=\"{{handleOption.cancel}}\">取消订单</view>\n        <view class=\"btn active\" bindtap=\"payOrder\" wx:if=\"{{handleOption.pay}}\">去付款</view>\n        <view class=\"btn active\" bindtap=\"confirmOrder\" wx:if=\"{{handleOption.confirm}}\">确认收货</view>\n        <view class=\"btn active\" bindtap=\"deleteOrder\" wx:if=\"{{handleOption.delete}}\">删除订单</view>\n        <view class=\"btn active\" bindtap=\"refundOrder\" wx:if=\"{{handleOption.refund}}\">申请退款</view>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-goods\">\n    <view class=\"h\">\n      <view class=\"label\">商品信息</view>\n      <view class=\"status\">{{orderInfo.orderStatusText}}</view>\n    </view>\n    <view class=\"goods\">\n      <view class=\"item\" wx:for=\"{{orderGoods}}\" wx:key=\"id\">\n        <view class=\"img\">\n          <image src=\"{{item.picUrl}}\"></image>\n        </view>\n        <view class=\"info\">\n          <view class=\"t\">\n            <text class=\"name\">{{item.goodsName}}</text>\n            <text class=\"number\">x{{item.number}}</text>\n          </view>\n          <view class=\"attr\">{{item.specifications}}</view>\n          <view class=\"price\">￥{{item.price}}</view>\n          <view class=\"btn active\" wx:if=\"{{handleOption.comment && (item.comment == 0)}}\">\n            <navigator url=\"../../commentPost/commentPost?orderId={{item.orderId}}&&valueId={{item.goodsId}}&type=0\">去评价</navigator>\n          </view>\n          <view class=\"btn active\" wx:if=\"{{handleOption.rebuy}}\">\n            <navigator url=\"../../goods/goods?id={{item.goodsId}}\">再次购买</navigator>\n          </view>\n        </view>\n      </view>\n    </view>\n\n    <view class=\"order-bottom\">\n      <view class=\"address\">\n        <view class=\"t\">\n          <text class=\"name\">{{orderInfo.consignee}}</text>\n          <text class=\"mobile\">{{orderInfo.mobile}}</text>\n        </view>\n        <view class=\"b\">{{orderInfo.address}}</view>\n      </view>\n      <view class=\"total\">\n        <view class=\"t\">\n          <text class=\"label\">商品合计：</text>\n          <text class=\"txt\">￥{{orderInfo.goodsPrice}}</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">运费：</text>\n          <text class=\"txt\">￥{{orderInfo.freightPrice}}</text>\n        </view>\n        <view class=\"t\">\n          <text class=\"label\">优惠：</text>\n          <text class=\"txt\">￥-{{orderInfo.couponPrice}}</text>\n        </view>\n      </view>\n      <view class=\"pay-fee\">\n        <text class=\"label\">实付：</text>\n        <text class=\"txt\">￥{{orderInfo.actualPrice}}</text>\n      </view>\n    </view>\n  </view>\n\n  <view class=\"order-express\" bindtap=\"expandDetail\" wx:if=\"{{ orderInfo.expNo}}\">\n    <view class=\"expand\">\n      <view class=\"title\">\n        <view class=\"t\">快递公司：{{orderInfo.expName}}</view>\n        <view class=\"b\">物流单号：{{orderInfo.expNo}}</view>\n      </view>\n      <image class=\"ti\" src=\"/static/images/address_right.png\" background-size=\"cover\"></image>\n    </view>\n    <view class=\"traces\" wx:for=\"{{expressInfo.Traces}}\" wx:key=\"item\" wx:for-item=\"iitem\" wx:if=\"{{ flag }}\">\n      <view class=\"trace\">\n        <view class=\"acceptStation\">{{iitem.AcceptStation}}</view>\n        <view class=\"acceptTime\">{{iitem.AcceptTime}}</view>\n      </view>\n    </view>\n  </view>\n</view>"
  },
  {
    "path": "renard-wx/pages/ucenter/orderDetail/orderDetail.wxss",
    "content": "page {\n  height: 100%;\n  width: 100%;\n  background: #f4f4f4;\n}\n\n.order-info {\n  padding-top: 25rpx;\n  background: #fff;\n  height: auto;\n  overflow: hidden;\n}\n\n.item {\n  padding-left: 31.25rpx;\n  height: 42.5rpx;\n  padding-bottom: 12.5rpx;\n  line-height: 30rpx;\n  font-size: 30rpx;\n  color: #666;\n}\n\n.item-c {\n  margin-left: 31.25rpx;\n  border-top: 1px solid #f4f4f4;\n  height: 103rpx;\n  line-height: 103rpx;\n}\n\n.item-c .l {\n  float: left;\n}\n\n.item-c .r {\n  height: 103rpx;\n  float: right;\n  display: flex;\n  align-items: center;\n  padding-right: 16rpx;\n}\n\n.item-c .r .btn {\n  float: right;\n}\n\n.item-c .cost {\n  color: #b4282d;\n}\n\n.item-c .btn {\n  line-height: 66rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n  height: 66rpx;\n}\n\n.item-c .btn.active {\n  background: #a78845;\n  color: #fff;\n}\n\n.order-goods {\n  margin-top: 20rpx;\n  background: #fff;\n}\n\n.order-goods .h {\n  height: 93.75rpx;\n  line-height: 93.75rpx;\n  margin-left: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n  padding-right: 31.25rpx;\n}\n\n.order-goods .h .label {\n  float: left;\n  font-size: 30rpx;\n  color: #333;\n}\n\n.order-goods .h .status {\n  float: right;\n  font-size: 30rpx;\n  color: #b4282d;\n}\n\n.order-goods .item {\n  display: flex;\n  align-items: center;\n  height: 192rpx;\n  margin-left: 31.25rpx;\n  padding-right: 31.25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-goods .item:last-child {\n  border-bottom: none;\n}\n\n.order-goods .item .img {\n  height: 145.83rpx;\n  width: 145.83rpx;\n  background: #f4f4f4;\n}\n\n.order-goods .item .img image {\n  height: 145.83rpx;\n  width: 145.83rpx;\n}\n\n.order-goods .item .info {\n  flex: 1;\n  height: 145.83rpx;\n  margin-left: 20rpx;\n}\n\n.order-goods .item .t {\n  margin-top: 8rpx;\n  height: 33rpx;\n  line-height: 33rpx;\n  margin-bottom: 10.5rpx;\n}\n\n.order-goods .item .t .name {\n  display: block;\n  float: left;\n  height: 33rpx;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .t .number {\n  display: block;\n  float: right;\n  height: 33rpx;\n  text-align: right;\n  line-height: 33rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .attr {\n  height: 29rpx;\n  line-height: 29rpx;\n  color: #666;\n  margin-bottom: 25rpx;\n  font-size: 25rpx;\n}\n\n.order-goods .item .price {\n  display: block;\n  float: left;\n  height: 30rpx;\n  line-height: 30rpx;\n  color: #333;\n  font-size: 30rpx;\n}\n\n.order-goods .item .btn {\n  height: 50rpx;\n  line-height: 50rpx;\n  border-radius: 5rpx;\n  text-align: center;\n  display: block;\n  float: right;\n  margin: 0 15rpx;\n  padding: 0 20rpx;\n}\n\n.order-goods .item .btn.active {\n  background: #b4282d;\n  color: #fff;\n}\n\n.order-bottom {\n  margin-top: 20rpx;\n  padding-left: 31.25rpx;\n  height: auto;\n  overflow: hidden;\n  background: #fff;\n}\n\n.order-bottom .address {\n  height: 128rpx;\n  padding-top: 25rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .address .t {\n  height: 35rpx;\n  line-height: 35rpx;\n  margin-bottom: 7.5rpx;\n}\n\n.order-bottom .address .name {\n  display: inline-block;\n  height: 35rpx;\n  width: 140rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .mobile {\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .address .b {\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total {\n  height: 130rpx;\n  padding-top: 20rpx;\n  border-bottom: 1px solid #f4f4f4;\n}\n\n.order-bottom .total .t {\n  height: 30rpx;\n  line-height: 30rpx;\n  margin-bottom: 7.5rpx;\n  display: flex;\n}\n\n.order-bottom .total .label {\n  width: 150rpx;\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .total .txt {\n  flex: 1;\n  display: inline-block;\n  height: 35rpx;\n  line-height: 35rpx;\n  font-size: 30rpx;\n}\n\n.order-bottom .pay-fee {\n  height: 81rpx;\n  line-height: 81rpx;\n}\n\n.order-bottom .pay-fee .label {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-bottom .pay-fee .txt {\n  display: inline-block;\n  width: 140rpx;\n  color: #b4282d;\n}\n\n.order-express {\n  margin-top: 20rpx;\n  width: 100%;\n  height: 100rpx;\n  background: #fff;\n}\n\n.order-express .expand {\n  /* margin-top: 20rpx; */\n  width: 100%;\n  height: 100rpx;\n  background: #fff;\n  /* border: 10rpx #a78845; */\n}\n\n.order-express .title {\n  float: left;\n  margin-bottom: 20rpx;\n  padding: 10rpx;\n}\n\n.order-express .ti {\n  float: right;\n  width: 52rpx;\n  height: 52rpx;\n  margin-right: 16rpx;\n  margin-top: 28rpx;\n}\n\n.order-express .t {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .b {\n  font-size: 29rpx;\n  margin-left: 10.25rpx;\n  color: #a78845;\n}\n\n.order-express .traces {\n  padding: 17.5rpx;\n  background: #fff;\n  border-bottom: 1rpx solid #f1e6cdcc;\n}\n\n.order-express .trace {\n  padding-bottom: 17.5rpx;\n  padding-top: 17.5rpx;\n  background: #fff;\n}\n\n.order-express .acceptTime {\n  margin-top: 20rpx;\n  margin-right: 40rpx;\n  text-align: right;\n  font-size: 26rpx;\n}\n\n.order-express .acceptStation {\n  font-size: 26rpx;\n}\n"
  },
  {
    "path": "renard-wx/project.config.json",
    "content": "{\n  \"description\": \"项目配置文件。\",\n  \"setting\": {\n    \"urlCheck\": false,\n    \"es6\": true,\n    \"postcss\": true,\n    \"minified\": true,\n    \"newFeature\": true,\n    \"uglifyFileName\": true,\n    \"checkInvalidKey\": true,\n    \"checkSiteMap\": true,\n    \"uploadWithSourceMap\": true,\n    \"useMultiFrameRuntime\": true,\n    \"useApiHook\": true,\n    \"useApiHostProcess\": true,\n    \"babelSetting\": {\n      \"ignore\": [],\n      \"disablePlugins\": [],\n      \"outputPath\": \"\"\n    },\n    \"useIsolateContext\": true,\n    \"useCompilerModule\": true,\n    \"userConfirmedUseCompilerModuleSwitch\": false,\n    \"userConfirmedBundleSwitch\": false,\n    \"packNpmManually\": false,\n    \"packNpmRelationList\": [],\n    \"minifyWXSS\": true\n  },\n  \"compileType\": \"miniprogram\",\n  \"libVersion\": \"2.4.0\",\n  \"appid\": \"wxa5b486c6b918ecfb\",\n  \"projectname\": \"Renard\",\n  \"simulatorType\": \"wechat\",\n  \"simulatorPluginLibVersion\": {},\n  \"condition\": {\n    \"search\": {\n      \"list\": []\n    },\n    \"conversation\": {\n      \"list\": []\n    },\n    \"plugin\": {\n      \"list\": []\n    },\n    \"game\": {\n      \"list\": []\n    },\n    \"miniprogram\": {\n      \"list\": [\n        {\n          \"id\": -1,\n          \"name\": \"首页\",\n          \"pathName\": \"pages/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题\",\n          \"pathName\": \"pages/topic/topic\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"专题详情\",\n          \"pathName\": \"pages/topicDetail/topicDetail\",\n          \"query\": \"id=314\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌\",\n          \"pathName\": \"pages/brand/brand\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"品牌详情\",\n          \"pathName\": \"pages/brandDetail/brandDetail\",\n          \"query\": \"id=1001000\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"人气推荐\",\n          \"pathName\": \"pages/hotGoods/hotGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"新品首发\",\n          \"pathName\": \"pages/newGoods/newGoods\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类\",\n          \"pathName\": \"pages/catalog/catalog\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"分类详情\",\n          \"pathName\": \"pages/category/category\",\n          \"query\": \"id=1008002\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"查找\",\n          \"pathName\": \"pages/search/search\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"商品\",\n          \"pathName\": \"pages/goods/goods\",\n          \"query\": \"id=1181000\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"商品评论列表\",\n          \"pathName\": \"pages/comment/comment\",\n          \"query\": \"valueId=1181000&type=0\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购物车\",\n          \"pathName\": \"pages/cart/cart\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"下单\",\n          \"pathName\": \"pages/shopping/checkout/checkout\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"支付结果\",\n          \"pathName\": \"pages/payResult/payResult\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的\",\n          \"pathName\": \"pages/ucenter/index/index\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单列表\",\n          \"pathName\": \"pages/ucenter/order/order\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": 22,\n          \"name\": \"待评价的订单详情\",\n          \"pathName\": \"pages/ucenter/orderDetail/orderDetail\",\n          \"query\": \"id=1\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"购买商品评价\",\n          \"pathName\": \"pages/commentPost/commentPost\",\n          \"query\": \"orderId=2&type=0&valueId=1116011\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的优惠券\",\n          \"pathName\": \"pages/ucenter/coupon/coupon\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的收藏\",\n          \"pathName\": \"pages/ucenter/collect/collect\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址\",\n          \"pathName\": \"pages/ucenter/address/address\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"我的地址添加\",\n          \"pathName\": \"pages/ucenter/addressAdd/addressAdd\",\n          \"query\": \"\"\n        },\n        {\n          \"id\": -1,\n          \"name\": \"登录\",\n          \"pathName\": \"pages/auth/login/login\",\n          \"query\": \"\"\n        }\n      ]\n    }\n  }\n}"
  },
  {
    "path": "renard-wx/sitemap.json",
    "content": "{\n  \"desc\": \"关于本文件的更多信息，请参考文档 https://developers.weixin.qq.com/miniprogram/dev/framework/sitemap.html\",\n  \"rules\": [{\n  \"action\": \"allow\",\n  \"page\": \"*\"\n  }]\n}"
  },
  {
    "path": "renard-wx/utils/area.js",
    "content": "var areaList =\n{\n  \"province_list\": {\n    \"110000\": \"北京市\",\n    \"120000\": \"天津市\",\n    \"130000\": \"河北省\",\n    \"140000\": \"山西省\",\n    \"150000\": \"内蒙古自治区\",\n    \"210000\": \"辽宁省\",\n    \"220000\": \"吉林省\",\n    \"230000\": \"黑龙江省\",\n    \"310000\": \"上海市\",\n    \"320000\": \"江苏省\",\n    \"330000\": \"浙江省\",\n    \"340000\": \"安徽省\",\n    \"350000\": \"福建省\",\n    \"360000\": \"江西省\",\n    \"370000\": \"山东省\",\n    \"410000\": \"河南省\",\n    \"420000\": \"湖北省\",\n    \"430000\": \"湖南省\",\n    \"440000\": \"广东省\",\n    \"450000\": \"广西壮族自治区\",\n    \"460000\": \"海南省\",\n    \"500000\": \"重庆市\",\n    \"510000\": \"四川省\",\n    \"520000\": \"贵州省\",\n    \"530000\": \"云南省\",\n    \"540000\": \"西藏自治区\",\n    \"610000\": \"陕西省\",\n    \"620000\": \"甘肃省\",\n    \"630000\": \"青海省\",\n    \"640000\": \"宁夏回族自治区\",\n    \"650000\": \"新疆维吾尔自治区\"\n  },\n  \"city_list\": {\n    \"110100\": \"市辖区\",\n    \"120100\": \"市辖区\",\n    \"130100\": \"石家庄市\",\n    \"130200\": \"唐山市\",\n    \"130300\": \"秦皇岛市\",\n    \"130400\": \"邯郸市\",\n    \"130500\": \"邢台市\",\n    \"130600\": \"保定市\",\n    \"130700\": \"张家口市\",\n    \"130800\": \"承德市\",\n    \"130900\": \"沧州市\",\n    \"131000\": \"廊坊市\",\n    \"131100\": \"衡水市\",\n    \"139000\": \"省直辖县级行政区划\",\n    \"140100\": \"太原市\",\n    \"140200\": \"大同市\",\n    \"140300\": \"阳泉市\",\n    \"140400\": \"长治市\",\n    \"140500\": \"晋城市\",\n    \"140600\": \"朔州市\",\n    \"140700\": \"晋中市\",\n    \"140800\": \"运城市\",\n    \"140900\": \"忻州市\",\n    \"141000\": \"临汾市\",\n    \"141100\": \"吕梁市\",\n    \"150100\": \"呼和浩特市\",\n    \"150200\": \"包头市\",\n    \"150300\": \"乌海市\",\n    \"150400\": \"赤峰市\",\n    \"150500\": \"通辽市\",\n    \"150600\": \"鄂尔多斯市\",\n    \"150700\": \"呼伦贝尔市\",\n    \"150800\": \"巴彦淖尔市\",\n    \"150900\": \"乌兰察布市\",\n    \"152200\": \"兴安盟\",\n    \"152500\": \"锡林郭勒盟\",\n    \"152900\": \"阿拉善盟\",\n    \"210100\": \"沈阳市\",\n    \"210200\": \"大连市\",\n    \"210300\": \"鞍山市\",\n    \"210400\": \"抚顺市\",\n    \"210500\": \"本溪市\",\n    \"210600\": \"丹东市\",\n    \"210700\": \"锦州市\",\n    \"210800\": \"营口市\",\n    \"210900\": \"阜新市\",\n    \"211000\": \"辽阳市\",\n    \"211100\": \"盘锦市\",\n    \"211200\": \"铁岭市\",\n    \"211300\": \"朝阳市\",\n    \"211400\": \"葫芦岛市\",\n    \"220100\": \"长春市\",\n    \"220200\": \"吉林市\",\n    \"220300\": \"四平市\",\n    \"220400\": \"辽源市\",\n    \"220500\": \"通化市\",\n    \"220600\": \"白山市\",\n    \"220700\": \"松原市\",\n    \"220800\": \"白城市\",\n    \"222400\": \"延边朝鲜族自治州\",\n    \"230100\": \"哈尔滨市\",\n    \"230200\": \"齐齐哈尔市\",\n    \"230300\": \"鸡西市\",\n    \"230400\": \"鹤岗市\",\n    \"230500\": \"双鸭山市\",\n    \"230600\": \"大庆市\",\n    \"230700\": \"伊春市\",\n    \"230800\": \"佳木斯市\",\n    \"230900\": \"七台河市\",\n    \"231000\": \"牡丹江市\",\n    \"231100\": \"黑河市\",\n    \"231200\": \"绥化市\",\n    \"232700\": \"大兴安岭地区\",\n    \"310100\": \"市辖区\",\n    \"320100\": \"南京市\",\n    \"320200\": \"无锡市\",\n    \"320300\": \"徐州市\",\n    \"320400\": \"常州市\",\n    \"320500\": \"苏州市\",\n    \"320600\": \"南通市\",\n    \"320700\": \"连云港市\",\n    \"320800\": \"淮安市\",\n    \"320900\": \"盐城市\",\n    \"321000\": \"扬州市\",\n    \"321100\": \"镇江市\",\n    \"321200\": \"泰州市\",\n    \"321300\": \"宿迁市\",\n    \"330100\": \"杭州市\",\n    \"330200\": \"宁波市\",\n    \"330300\": \"温州市\",\n    \"330400\": \"嘉兴市\",\n    \"330500\": \"湖州市\",\n    \"330600\": \"绍兴市\",\n    \"330700\": \"金华市\",\n    \"330800\": \"衢州市\",\n    \"330900\": \"舟山市\",\n    \"331000\": \"台州市\",\n    \"331100\": \"丽水市\",\n    \"340100\": \"合肥市\",\n    \"340200\": \"芜湖市\",\n    \"340300\": \"蚌埠市\",\n    \"340400\": \"淮南市\",\n    \"340500\": \"马鞍山市\",\n    \"340600\": \"淮北市\",\n    \"340700\": \"铜陵市\",\n    \"340800\": \"安庆市\",\n    \"341000\": \"黄山市\",\n    \"341100\": \"滁州市\",\n    \"341200\": \"阜阳市\",\n    \"341300\": \"宿州市\",\n    \"341500\": \"六安市\",\n    \"341600\": \"亳州市\",\n    \"341700\": \"池州市\",\n    \"341800\": \"宣城市\",\n    \"350100\": \"福州市\",\n    \"350200\": \"厦门市\",\n    \"350300\": \"莆田市\",\n    \"350400\": \"三明市\",\n    \"350500\": \"泉州市\",\n    \"350600\": \"漳州市\",\n    \"350700\": \"南平市\",\n    \"350800\": \"龙岩市\",\n    \"350900\": \"宁德市\",\n    \"360100\": \"南昌市\",\n    \"360200\": \"景德镇市\",\n    \"360300\": \"萍乡市\",\n    \"360400\": \"九江市\",\n    \"360500\": \"新余市\",\n    \"360600\": \"鹰潭市\",\n    \"360700\": \"赣州市\",\n    \"360800\": \"吉安市\",\n    \"360900\": \"宜春市\",\n    \"361000\": \"抚州市\",\n    \"361100\": \"上饶市\",\n    \"370100\": \"济南市\",\n    \"370200\": \"青岛市\",\n    \"370300\": \"淄博市\",\n    \"370400\": \"枣庄市\",\n    \"370500\": \"东营市\",\n    \"370600\": \"烟台市\",\n    \"370700\": \"潍坊市\",\n    \"370800\": \"济宁市\",\n    \"370900\": \"泰安市\",\n    \"371000\": \"威海市\",\n    \"371100\": \"日照市\",\n    \"371200\": \"莱芜市\",\n    \"371300\": \"临沂市\",\n    \"371400\": \"德州市\",\n    \"371500\": \"聊城市\",\n    \"371600\": \"滨州市\",\n    \"371700\": \"菏泽市\",\n    \"410100\": \"郑州市\",\n    \"410200\": \"开封市\",\n    \"410300\": \"洛阳市\",\n    \"410400\": \"平顶山市\",\n    \"410500\": \"安阳市\",\n    \"410600\": \"鹤壁市\",\n    \"410700\": \"新乡市\",\n    \"410800\": \"焦作市\",\n    \"410900\": \"濮阳市\",\n    \"411000\": \"许昌市\",\n    \"411100\": \"漯河市\",\n    \"411200\": \"三门峡市\",\n    \"411300\": \"南阳市\",\n    \"411400\": \"商丘市\",\n    \"411500\": \"信阳市\",\n    \"411600\": \"周口市\",\n    \"411700\": \"驻马店市\",\n    \"419000\": \"省直辖县级行政区划\",\n    \"420100\": \"武汉市\",\n    \"420200\": \"黄石市\",\n    \"420300\": \"十堰市\",\n    \"420500\": \"宜昌市\",\n    \"420600\": \"襄阳市\",\n    \"420700\": \"鄂州市\",\n    \"420800\": \"荆门市\",\n    \"420900\": \"孝感市\",\n    \"421000\": \"荆州市\",\n    \"421100\": \"黄冈市\",\n    \"421200\": \"咸宁市\",\n    \"421300\": \"随州市\",\n    \"422800\": \"恩施土家族苗族自治州\",\n    \"429000\": \"省直辖县级行政区划\",\n    \"430100\": \"长沙市\",\n    \"430200\": \"株洲市\",\n    \"430300\": \"湘潭市\",\n    \"430400\": \"衡阳市\",\n    \"430500\": \"邵阳市\",\n    \"430600\": \"岳阳市\",\n    \"430700\": \"常德市\",\n    \"430800\": \"张家界市\",\n    \"430900\": \"益阳市\",\n    \"431000\": \"郴州市\",\n    \"431100\": \"永州市\",\n    \"431200\": \"怀化市\",\n    \"431300\": \"娄底市\",\n    \"433100\": \"湘西土家族苗族自治州\",\n    \"440100\": \"广州市\",\n    \"440200\": \"韶关市\",\n    \"440300\": \"深圳市\",\n    \"440400\": \"珠海市\",\n    \"440500\": \"汕头市\",\n    \"440600\": \"佛山市\",\n    \"440700\": \"江门市\",\n    \"440800\": \"湛江市\",\n    \"440900\": \"茂名市\",\n    \"441200\": \"肇庆市\",\n    \"441300\": \"惠州市\",\n    \"441400\": \"梅州市\",\n    \"441500\": \"汕尾市\",\n    \"441600\": \"河源市\",\n    \"441700\": \"阳江市\",\n    \"441800\": \"清远市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445100\": \"潮州市\",\n    \"445200\": \"揭阳市\",\n    \"445300\": \"云浮市\",\n    \"450100\": \"南宁市\",\n    \"450200\": \"柳州市\",\n    \"450300\": \"桂林市\",\n    \"450400\": \"梧州市\",\n    \"450500\": \"北海市\",\n    \"450600\": \"防城港市\",\n    \"450700\": \"钦州市\",\n    \"450800\": \"贵港市\",\n    \"450900\": \"玉林市\",\n    \"451000\": \"百色市\",\n    \"451100\": \"贺州市\",\n    \"451200\": \"河池市\",\n    \"451300\": \"来宾市\",\n    \"451400\": \"崇左市\",\n    \"460100\": \"海口市\",\n    \"460200\": \"三亚市\",\n    \"460300\": \"三沙市\",\n    \"460400\": \"儋州市\",\n    \"469000\": \"省直辖县级行政区划\",\n    \"500100\": \"市辖区\",\n    \"500200\": \"县\",\n    \"510100\": \"成都市\",\n    \"510300\": \"自贡市\",\n    \"510400\": \"攀枝花市\",\n    \"510500\": \"泸州市\",\n    \"510600\": \"德阳市\",\n    \"510700\": \"绵阳市\",\n    \"510800\": \"广元市\",\n    \"510900\": \"遂宁市\",\n    \"511000\": \"内江市\",\n    \"511100\": \"乐山市\",\n    \"511300\": \"南充市\",\n    \"511400\": \"眉山市\",\n    \"511500\": \"宜宾市\",\n    \"511600\": \"广安市\",\n    \"511700\": \"达州市\",\n    \"511800\": \"雅安市\",\n    \"511900\": \"巴中市\",\n    \"512000\": \"资阳市\",\n    \"513200\": \"阿坝藏族羌族自治州\",\n    \"513300\": \"甘孜藏族自治州\",\n    \"513400\": \"凉山彝族自治州\",\n    \"520100\": \"贵阳市\",\n    \"520200\": \"六盘水市\",\n    \"520300\": \"遵义市\",\n    \"520400\": \"安顺市\",\n    \"520500\": \"毕节市\",\n    \"520600\": \"铜仁市\",\n    \"522300\": \"黔西南布依族苗族自治州\",\n    \"522600\": \"黔东南苗族侗族自治州\",\n    \"522700\": \"黔南布依族苗族自治州\",\n    \"530100\": \"昆明市\",\n    \"530300\": \"曲靖市\",\n    \"530400\": \"玉溪市\",\n    \"530500\": \"保山市\",\n    \"530600\": \"昭通市\",\n    \"530700\": \"丽江市\",\n    \"530800\": \"普洱市\",\n    \"530900\": \"临沧市\",\n    \"532300\": \"楚雄彝族自治州\",\n    \"532500\": \"红河哈尼族彝族自治州\",\n    \"532600\": \"文山壮族苗族自治州\",\n    \"532800\": \"西双版纳傣族自治州\",\n    \"532900\": \"大理白族自治州\",\n    \"533100\": \"德宏傣族景颇族自治州\",\n    \"533300\": \"怒江傈僳族自治州\",\n    \"533400\": \"迪庆藏族自治州\",\n    \"540100\": \"拉萨市\",\n    \"540200\": \"日喀则市\",\n    \"540300\": \"昌都市\",\n    \"540400\": \"林芝市\",\n    \"540500\": \"山南市\",\n    \"542400\": \"那曲地区\",\n    \"542500\": \"阿里地区\",\n    \"610100\": \"西安市\",\n    \"610200\": \"铜川市\",\n    \"610300\": \"宝鸡市\",\n    \"610400\": \"咸阳市\",\n    \"610500\": \"渭南市\",\n    \"610600\": \"延安市\",\n    \"610700\": \"汉中市\",\n    \"610800\": \"榆林市\",\n    \"610900\": \"安康市\",\n    \"611000\": \"商洛市\",\n    \"620100\": \"兰州市\",\n    \"620200\": \"嘉峪关市\",\n    \"620300\": \"金昌市\",\n    \"620400\": \"白银市\",\n    \"620500\": \"天水市\",\n    \"620600\": \"武威市\",\n    \"620700\": \"张掖市\",\n    \"620800\": \"平凉市\",\n    \"620900\": \"酒泉市\",\n    \"621000\": \"庆阳市\",\n    \"621100\": \"定西市\",\n    \"621200\": \"陇南市\",\n    \"622900\": \"临夏回族自治州\",\n    \"623000\": \"甘南藏族自治州\",\n    \"630100\": \"西宁市\",\n    \"630200\": \"海东市\",\n    \"632200\": \"海北藏族自治州\",\n    \"632300\": \"黄南藏族自治州\",\n    \"632500\": \"海南藏族自治州\",\n    \"632600\": \"果洛藏族自治州\",\n    \"632700\": \"玉树藏族自治州\",\n    \"632800\": \"海西蒙古族藏族自治州\",\n    \"640100\": \"银川市\",\n    \"640200\": \"石嘴山市\",\n    \"640300\": \"吴忠市\",\n    \"640400\": \"固原市\",\n    \"640500\": \"中卫市\",\n    \"650100\": \"乌鲁木齐市\",\n    \"650200\": \"克拉玛依市\",\n    \"650400\": \"吐鲁番市\",\n    \"650500\": \"哈密市\",\n    \"652300\": \"昌吉回族自治州\",\n    \"652700\": \"博尔塔拉蒙古自治州\",\n    \"652800\": \"巴音郭楞蒙古自治州\",\n    \"652900\": \"阿克苏地区\",\n    \"653000\": \"克孜勒苏柯尔克孜自治州\",\n    \"653100\": \"喀什地区\",\n    \"653200\": \"和田地区\",\n    \"654000\": \"伊犁哈萨克自治州\",\n    \"654200\": \"塔城地区\",\n    \"654300\": \"阿勒泰地区\",\n    \"659000\": \"自治区直辖县级行政区划\"\n  },\n  \"county_list\": {\n    \"110101\": \"东城区\",\n    \"110102\": \"西城区\",\n    \"110105\": \"朝阳区\",\n    \"110106\": \"丰台区\",\n    \"110107\": \"石景山区\",\n    \"110108\": \"海淀区\",\n    \"110109\": \"门头沟区\",\n    \"110111\": \"房山区\",\n    \"110112\": \"通州区\",\n    \"110113\": \"顺义区\",\n    \"110114\": \"昌平区\",\n    \"110115\": \"大兴区\",\n    \"110116\": \"怀柔区\",\n    \"110117\": \"平谷区\",\n    \"110118\": \"密云区\",\n    \"110119\": \"延庆区\",\n    \"120101\": \"和平区\",\n    \"120102\": \"河东区\",\n    \"120103\": \"河西区\",\n    \"120104\": \"南开区\",\n    \"120105\": \"河北区\",\n    \"120106\": \"红桥区\",\n    \"120110\": \"东丽区\",\n    \"120111\": \"西青区\",\n    \"120112\": \"津南区\",\n    \"120113\": \"北辰区\",\n    \"120114\": \"武清区\",\n    \"120115\": \"宝坻区\",\n    \"120116\": \"滨海新区\",\n    \"120117\": \"宁河区\",\n    \"120118\": \"静海区\",\n    \"120119\": \"蓟州区\",\n    \"130102\": \"长安区\",\n    \"130104\": \"桥西区\",\n    \"130105\": \"新华区\",\n    \"130107\": \"井陉矿区\",\n    \"130108\": \"裕华区\",\n    \"130109\": \"藁城区\",\n    \"130110\": \"鹿泉区\",\n    \"130111\": \"栾城区\",\n    \"130121\": \"井陉县\",\n    \"130123\": \"正定县\",\n    \"130125\": \"行唐县\",\n    \"130126\": \"灵寿县\",\n    \"130127\": \"高邑县\",\n    \"130128\": \"深泽县\",\n    \"130129\": \"赞皇县\",\n    \"130130\": \"无极县\",\n    \"130131\": \"平山县\",\n    \"130132\": \"元氏县\",\n    \"130133\": \"赵县\",\n    \"130183\": \"晋州市\",\n    \"130184\": \"新乐市\",\n    \"130202\": \"路南区\",\n    \"130203\": \"路北区\",\n    \"130204\": \"古冶区\",\n    \"130205\": \"开平区\",\n    \"130207\": \"丰南区\",\n    \"130208\": \"丰润区\",\n    \"130209\": \"曹妃甸区\",\n    \"130223\": \"滦县\",\n    \"130224\": \"滦南县\",\n    \"130225\": \"乐亭县\",\n    \"130227\": \"迁西县\",\n    \"130229\": \"玉田县\",\n    \"130281\": \"遵化市\",\n    \"130283\": \"迁安市\",\n    \"130302\": \"海港区\",\n    \"130303\": \"山海关区\",\n    \"130304\": \"北戴河区\",\n    \"130306\": \"抚宁区\",\n    \"130321\": \"青龙满族自治县\",\n    \"130322\": \"昌黎县\",\n    \"130324\": \"卢龙县\",\n    \"130402\": \"邯山区\",\n    \"130403\": \"丛台区\",\n    \"130404\": \"复兴区\",\n    \"130406\": \"峰峰矿区\",\n    \"130421\": \"邯郸县\",\n    \"130423\": \"临漳县\",\n    \"130424\": \"成安县\",\n    \"130425\": \"大名县\",\n    \"130426\": \"涉县\",\n    \"130427\": \"磁县\",\n    \"130428\": \"肥乡县\",\n    \"130429\": \"永年县\",\n    \"130430\": \"邱县\",\n    \"130431\": \"鸡泽县\",\n    \"130432\": \"广平县\",\n    \"130433\": \"馆陶县\",\n    \"130434\": \"魏县\",\n    \"130435\": \"曲周县\",\n    \"130481\": \"武安市\",\n    \"130502\": \"桥东区\",\n    \"130503\": \"桥西区\",\n    \"130521\": \"邢台县\",\n    \"130522\": \"临城县\",\n    \"130523\": \"内丘县\",\n    \"130524\": \"柏乡县\",\n    \"130525\": \"隆尧县\",\n    \"130526\": \"任县\",\n    \"130527\": \"南和县\",\n    \"130528\": \"宁晋县\",\n    \"130529\": \"巨鹿县\",\n    \"130530\": \"新河县\",\n    \"130531\": \"广宗县\",\n    \"130532\": \"平乡县\",\n    \"130533\": \"威县\",\n    \"130534\": \"清河县\",\n    \"130535\": \"临西县\",\n    \"130581\": \"南宫市\",\n    \"130582\": \"沙河市\",\n    \"130602\": \"竞秀区\",\n    \"130606\": \"莲池区\",\n    \"130607\": \"满城区\",\n    \"130608\": \"清苑区\",\n    \"130609\": \"徐水区\",\n    \"130623\": \"涞水县\",\n    \"130624\": \"阜平县\",\n    \"130626\": \"定兴县\",\n    \"130627\": \"唐县\",\n    \"130628\": \"高阳县\",\n    \"130629\": \"容城县\",\n    \"130630\": \"涞源县\",\n    \"130631\": \"望都县\",\n    \"130632\": \"安新县\",\n    \"130633\": \"易县\",\n    \"130634\": \"曲阳县\",\n    \"130635\": \"蠡县\",\n    \"130636\": \"顺平县\",\n    \"130637\": \"博野县\",\n    \"130638\": \"雄县\",\n    \"130681\": \"涿州市\",\n    \"130683\": \"安国市\",\n    \"130684\": \"高碑店市\",\n    \"130702\": \"桥东区\",\n    \"130703\": \"桥西区\",\n    \"130705\": \"宣化区\",\n    \"130706\": \"下花园区\",\n    \"130708\": \"万全区\",\n    \"130709\": \"崇礼区\",\n    \"130722\": \"张北县\",\n    \"130723\": \"康保县\",\n    \"130724\": \"沽源县\",\n    \"130725\": \"尚义县\",\n    \"130726\": \"蔚县\",\n    \"130727\": \"阳原县\",\n    \"130728\": \"怀安县\",\n    \"130730\": \"怀来县\",\n    \"130731\": \"涿鹿县\",\n    \"130732\": \"赤城县\",\n    \"130802\": \"双桥区\",\n    \"130803\": \"双滦区\",\n    \"130804\": \"鹰手营子矿区\",\n    \"130821\": \"承德县\",\n    \"130822\": \"兴隆县\",\n    \"130823\": \"平泉县\",\n    \"130824\": \"滦平县\",\n    \"130825\": \"隆化县\",\n    \"130826\": \"丰宁满族自治县\",\n    \"130827\": \"宽城满族自治县\",\n    \"130828\": \"围场满族蒙古族自治县\",\n    \"130902\": \"新华区\",\n    \"130903\": \"运河区\",\n    \"130921\": \"沧县\",\n    \"130922\": \"青县\",\n    \"130923\": \"东光县\",\n    \"130924\": \"海兴县\",\n    \"130925\": \"盐山县\",\n    \"130926\": \"肃宁县\",\n    \"130927\": \"南皮县\",\n    \"130928\": \"吴桥县\",\n    \"130929\": \"献县\",\n    \"130930\": \"孟村回族自治县\",\n    \"130981\": \"泊头市\",\n    \"130982\": \"任丘市\",\n    \"130983\": \"黄骅市\",\n    \"130984\": \"河间市\",\n    \"131002\": \"安次区\",\n    \"131003\": \"广阳区\",\n    \"131022\": \"固安县\",\n    \"131023\": \"永清县\",\n    \"131024\": \"香河县\",\n    \"131025\": \"大城县\",\n    \"131026\": \"文安县\",\n    \"131028\": \"大厂回族自治县\",\n    \"131081\": \"霸州市\",\n    \"131082\": \"三河市\",\n    \"131102\": \"桃城区\",\n    \"131103\": \"冀州区\",\n    \"131121\": \"枣强县\",\n    \"131122\": \"武邑县\",\n    \"131123\": \"武强县\",\n    \"131124\": \"饶阳县\",\n    \"131125\": \"安平县\",\n    \"131126\": \"故城县\",\n    \"131127\": \"景县\",\n    \"131128\": \"阜城县\",\n    \"131182\": \"深州市\",\n    \"139001\": \"定州市\",\n    \"139002\": \"辛集市\",\n    \"140105\": \"小店区\",\n    \"140106\": \"迎泽区\",\n    \"140107\": \"杏花岭区\",\n    \"140108\": \"尖草坪区\",\n    \"140109\": \"万柏林区\",\n    \"140110\": \"晋源区\",\n    \"140121\": \"清徐县\",\n    \"140122\": \"阳曲县\",\n    \"140123\": \"娄烦县\",\n    \"140181\": \"古交市\",\n    \"140202\": \"城区\",\n    \"140203\": \"矿区\",\n    \"140211\": \"南郊区\",\n    \"140212\": \"新荣区\",\n    \"140221\": \"阳高县\",\n    \"140222\": \"天镇县\",\n    \"140223\": \"广灵县\",\n    \"140224\": \"灵丘县\",\n    \"140225\": \"浑源县\",\n    \"140226\": \"左云县\",\n    \"140227\": \"大同县\",\n    \"140302\": \"城区\",\n    \"140303\": \"矿区\",\n    \"140311\": \"郊区\",\n    \"140321\": \"平定县\",\n    \"140322\": \"盂县\",\n    \"140402\": \"城区\",\n    \"140411\": \"郊区\",\n    \"140421\": \"长治县\",\n    \"140423\": \"襄垣县\",\n    \"140424\": \"屯留县\",\n    \"140425\": \"平顺县\",\n    \"140426\": \"黎城县\",\n    \"140427\": \"壶关县\",\n    \"140428\": \"长子县\",\n    \"140429\": \"武乡县\",\n    \"140430\": \"沁县\",\n    \"140431\": \"沁源县\",\n    \"140481\": \"潞城市\",\n    \"140502\": \"城区\",\n    \"140521\": \"沁水县\",\n    \"140522\": \"阳城县\",\n    \"140524\": \"陵川县\",\n    \"140525\": \"泽州县\",\n    \"140581\": \"高平市\",\n    \"140602\": \"朔城区\",\n    \"140603\": \"平鲁区\",\n    \"140621\": \"山阴县\",\n    \"140622\": \"应县\",\n    \"140623\": \"右玉县\",\n    \"140624\": \"怀仁县\",\n    \"140702\": \"榆次区\",\n    \"140721\": \"榆社县\",\n    \"140722\": \"左权县\",\n    \"140723\": \"和顺县\",\n    \"140724\": \"昔阳县\",\n    \"140725\": \"寿阳县\",\n    \"140726\": \"太谷县\",\n    \"140727\": \"祁县\",\n    \"140728\": \"平遥县\",\n    \"140729\": \"灵石县\",\n    \"140781\": \"介休市\",\n    \"140802\": \"盐湖区\",\n    \"140821\": \"临猗县\",\n    \"140822\": \"万荣县\",\n    \"140823\": \"闻喜县\",\n    \"140824\": \"稷山县\",\n    \"140825\": \"新绛县\",\n    \"140826\": \"绛县\",\n    \"140827\": \"垣曲县\",\n    \"140828\": \"夏县\",\n    \"140829\": \"平陆县\",\n    \"140830\": \"芮城县\",\n    \"140881\": \"永济市\",\n    \"140882\": \"河津市\",\n    \"140902\": \"忻府区\",\n    \"140921\": \"定襄县\",\n    \"140922\": \"五台县\",\n    \"140923\": \"代县\",\n    \"140924\": \"繁峙县\",\n    \"140925\": \"宁武县\",\n    \"140926\": \"静乐县\",\n    \"140927\": \"神池县\",\n    \"140928\": \"五寨县\",\n    \"140929\": \"岢岚县\",\n    \"140930\": \"河曲县\",\n    \"140931\": \"保德县\",\n    \"140932\": \"偏关县\",\n    \"140981\": \"原平市\",\n    \"141002\": \"尧都区\",\n    \"141021\": \"曲沃县\",\n    \"141022\": \"翼城县\",\n    \"141023\": \"襄汾县\",\n    \"141024\": \"洪洞县\",\n    \"141025\": \"古县\",\n    \"141026\": \"安泽县\",\n    \"141027\": \"浮山县\",\n    \"141028\": \"吉县\",\n    \"141029\": \"乡宁县\",\n    \"141030\": \"大宁县\",\n    \"141031\": \"隰县\",\n    \"141032\": \"永和县\",\n    \"141033\": \"蒲县\",\n    \"141034\": \"汾西县\",\n    \"141081\": \"侯马市\",\n    \"141082\": \"霍州市\",\n    \"141102\": \"离石区\",\n    \"141121\": \"文水县\",\n    \"141122\": \"交城县\",\n    \"141123\": \"兴县\",\n    \"141124\": \"临县\",\n    \"141125\": \"柳林县\",\n    \"141126\": \"石楼县\",\n    \"141127\": \"岚县\",\n    \"141128\": \"方山县\",\n    \"141129\": \"中阳县\",\n    \"141130\": \"交口县\",\n    \"141181\": \"孝义市\",\n    \"141182\": \"汾阳市\",\n    \"150102\": \"新城区\",\n    \"150103\": \"回民区\",\n    \"150104\": \"玉泉区\",\n    \"150105\": \"赛罕区\",\n    \"150121\": \"土默特左旗\",\n    \"150122\": \"托克托县\",\n    \"150123\": \"和林格尔县\",\n    \"150124\": \"清水河县\",\n    \"150125\": \"武川县\",\n    \"150202\": \"东河区\",\n    \"150203\": \"昆都仑区\",\n    \"150204\": \"青山区\",\n    \"150205\": \"石拐区\",\n    \"150206\": \"白云鄂博矿区\",\n    \"150207\": \"九原区\",\n    \"150221\": \"土默特右旗\",\n    \"150222\": \"固阳县\",\n    \"150223\": \"达尔罕茂明安联合旗\",\n    \"150302\": \"海勃湾区\",\n    \"150303\": \"海南区\",\n    \"150304\": \"乌达区\",\n    \"150402\": \"红山区\",\n    \"150403\": \"元宝山区\",\n    \"150404\": \"松山区\",\n    \"150421\": \"阿鲁科尔沁旗\",\n    \"150422\": \"巴林左旗\",\n    \"150423\": \"巴林右旗\",\n    \"150424\": \"林西县\",\n    \"150425\": \"克什克腾旗\",\n    \"150426\": \"翁牛特旗\",\n    \"150428\": \"喀喇沁旗\",\n    \"150429\": \"宁城县\",\n    \"150430\": \"敖汉旗\",\n    \"150502\": \"科尔沁区\",\n    \"150521\": \"科尔沁左翼中旗\",\n    \"150522\": \"科尔沁左翼后旗\",\n    \"150523\": \"开鲁县\",\n    \"150524\": \"库伦旗\",\n    \"150525\": \"奈曼旗\",\n    \"150526\": \"扎鲁特旗\",\n    \"150581\": \"霍林郭勒市\",\n    \"150602\": \"东胜区\",\n    \"150603\": \"康巴什区\",\n    \"150621\": \"达拉特旗\",\n    \"150622\": \"准格尔旗\",\n    \"150623\": \"鄂托克前旗\",\n    \"150624\": \"鄂托克旗\",\n    \"150625\": \"杭锦旗\",\n    \"150626\": \"乌审旗\",\n    \"150627\": \"伊金霍洛旗\",\n    \"150702\": \"海拉尔区\",\n    \"150703\": \"扎赉诺尔区\",\n    \"150721\": \"阿荣旗\",\n    \"150722\": \"莫力达瓦达斡尔族自治旗\",\n    \"150723\": \"鄂伦春自治旗\",\n    \"150724\": \"鄂温克族自治旗\",\n    \"150725\": \"陈巴尔虎旗\",\n    \"150726\": \"新巴尔虎左旗\",\n    \"150727\": \"新巴尔虎右旗\",\n    \"150781\": \"满洲里市\",\n    \"150782\": \"牙克石市\",\n    \"150783\": \"扎兰屯市\",\n    \"150784\": \"额尔古纳市\",\n    \"150785\": \"根河市\",\n    \"150802\": \"临河区\",\n    \"150821\": \"五原县\",\n    \"150822\": \"磴口县\",\n    \"150823\": \"乌拉特前旗\",\n    \"150824\": \"乌拉特中旗\",\n    \"150825\": \"乌拉特后旗\",\n    \"150826\": \"杭锦后旗\",\n    \"150902\": \"集宁区\",\n    \"150921\": \"卓资县\",\n    \"150922\": \"化德县\",\n    \"150923\": \"商都县\",\n    \"150924\": \"兴和县\",\n    \"150925\": \"凉城县\",\n    \"150926\": \"察哈尔右翼前旗\",\n    \"150927\": \"察哈尔右翼中旗\",\n    \"150928\": \"察哈尔右翼后旗\",\n    \"150929\": \"四子王旗\",\n    \"150981\": \"丰镇市\",\n    \"152201\": \"乌兰浩特市\",\n    \"152202\": \"阿尔山市\",\n    \"152221\": \"科尔沁右翼前旗\",\n    \"152222\": \"科尔沁右翼中旗\",\n    \"152223\": \"扎赉特旗\",\n    \"152224\": \"突泉县\",\n    \"152501\": \"二连浩特市\",\n    \"152502\": \"锡林浩特市\",\n    \"152522\": \"阿巴嘎旗\",\n    \"152523\": \"苏尼特左旗\",\n    \"152524\": \"苏尼特右旗\",\n    \"152525\": \"东乌珠穆沁旗\",\n    \"152526\": \"西乌珠穆沁旗\",\n    \"152527\": \"太仆寺旗\",\n    \"152528\": \"镶黄旗\",\n    \"152529\": \"正镶白旗\",\n    \"152530\": \"正蓝旗\",\n    \"152531\": \"多伦县\",\n    \"152921\": \"阿拉善左旗\",\n    \"152922\": \"阿拉善右旗\",\n    \"152923\": \"额济纳旗\",\n    \"210102\": \"和平区\",\n    \"210103\": \"沈河区\",\n    \"210104\": \"大东区\",\n    \"210105\": \"皇姑区\",\n    \"210106\": \"铁西区\",\n    \"210111\": \"苏家屯区\",\n    \"210112\": \"浑南区\",\n    \"210113\": \"沈北新区\",\n    \"210114\": \"于洪区\",\n    \"210115\": \"辽中区\",\n    \"210123\": \"康平县\",\n    \"210124\": \"法库县\",\n    \"210181\": \"新民市\",\n    \"210202\": \"中山区\",\n    \"210203\": \"西岗区\",\n    \"210204\": \"沙河口区\",\n    \"210211\": \"甘井子区\",\n    \"210212\": \"旅顺口区\",\n    \"210213\": \"金州区\",\n    \"210214\": \"普兰店区\",\n    \"210224\": \"长海县\",\n    \"210281\": \"瓦房店市\",\n    \"210283\": \"庄河市\",\n    \"210302\": \"铁东区\",\n    \"210303\": \"铁西区\",\n    \"210304\": \"立山区\",\n    \"210311\": \"千山区\",\n    \"210321\": \"台安县\",\n    \"210323\": \"岫岩满族自治县\",\n    \"210381\": \"海城市\",\n    \"210402\": \"新抚区\",\n    \"210403\": \"东洲区\",\n    \"210404\": \"望花区\",\n    \"210411\": \"顺城区\",\n    \"210421\": \"抚顺县\",\n    \"210422\": \"新宾满族自治县\",\n    \"210423\": \"清原满族自治县\",\n    \"210502\": \"平山区\",\n    \"210503\": \"溪湖区\",\n    \"210504\": \"明山区\",\n    \"210505\": \"南芬区\",\n    \"210521\": \"本溪满族自治县\",\n    \"210522\": \"桓仁满族自治县\",\n    \"210602\": \"元宝区\",\n    \"210603\": \"振兴区\",\n    \"210604\": \"振安区\",\n    \"210624\": \"宽甸满族自治县\",\n    \"210681\": \"东港市\",\n    \"210682\": \"凤城市\",\n    \"210702\": \"古塔区\",\n    \"210703\": \"凌河区\",\n    \"210711\": \"太和区\",\n    \"210726\": \"黑山县\",\n    \"210727\": \"义县\",\n    \"210781\": \"凌海市\",\n    \"210782\": \"北镇市\",\n    \"210802\": \"站前区\",\n    \"210803\": \"西市区\",\n    \"210804\": \"鲅鱼圈区\",\n    \"210811\": \"老边区\",\n    \"210881\": \"盖州市\",\n    \"210882\": \"大石桥市\",\n    \"210902\": \"海州区\",\n    \"210903\": \"新邱区\",\n    \"210904\": \"太平区\",\n    \"210905\": \"清河门区\",\n    \"210911\": \"细河区\",\n    \"210921\": \"阜新蒙古族自治县\",\n    \"210922\": \"彰武县\",\n    \"211002\": \"白塔区\",\n    \"211003\": \"文圣区\",\n    \"211004\": \"宏伟区\",\n    \"211005\": \"弓长岭区\",\n    \"211011\": \"太子河区\",\n    \"211021\": \"辽阳县\",\n    \"211081\": \"灯塔市\",\n    \"211102\": \"双台子区\",\n    \"211103\": \"兴隆台区\",\n    \"211104\": \"大洼区\",\n    \"211122\": \"盘山县\",\n    \"211202\": \"银州区\",\n    \"211204\": \"清河区\",\n    \"211221\": \"铁岭县\",\n    \"211223\": \"西丰县\",\n    \"211224\": \"昌图县\",\n    \"211281\": \"调兵山市\",\n    \"211282\": \"开原市\",\n    \"211302\": \"双塔区\",\n    \"211303\": \"龙城区\",\n    \"211321\": \"朝阳县\",\n    \"211322\": \"建平县\",\n    \"211324\": \"喀喇沁左翼蒙古族自治县\",\n    \"211381\": \"北票市\",\n    \"211382\": \"凌源市\",\n    \"211402\": \"连山区\",\n    \"211403\": \"龙港区\",\n    \"211404\": \"南票区\",\n    \"211421\": \"绥中县\",\n    \"211422\": \"建昌县\",\n    \"211481\": \"兴城市\",\n    \"220102\": \"南关区\",\n    \"220103\": \"宽城区\",\n    \"220104\": \"朝阳区\",\n    \"220105\": \"二道区\",\n    \"220106\": \"绿园区\",\n    \"220112\": \"双阳区\",\n    \"220113\": \"九台区\",\n    \"220122\": \"农安县\",\n    \"220182\": \"榆树市\",\n    \"220183\": \"德惠市\",\n    \"220202\": \"昌邑区\",\n    \"220203\": \"龙潭区\",\n    \"220204\": \"船营区\",\n    \"220211\": \"丰满区\",\n    \"220221\": \"永吉县\",\n    \"220281\": \"蛟河市\",\n    \"220282\": \"桦甸市\",\n    \"220283\": \"舒兰市\",\n    \"220284\": \"磐石市\",\n    \"220302\": \"铁西区\",\n    \"220303\": \"铁东区\",\n    \"220322\": \"梨树县\",\n    \"220323\": \"伊通满族自治县\",\n    \"220381\": \"公主岭市\",\n    \"220382\": \"双辽市\",\n    \"220402\": \"龙山区\",\n    \"220403\": \"西安区\",\n    \"220421\": \"东丰县\",\n    \"220422\": \"东辽县\",\n    \"220502\": \"东昌区\",\n    \"220503\": \"二道江区\",\n    \"220521\": \"通化县\",\n    \"220523\": \"辉南县\",\n    \"220524\": \"柳河县\",\n    \"220581\": \"梅河口市\",\n    \"220582\": \"集安市\",\n    \"220602\": \"浑江区\",\n    \"220605\": \"江源区\",\n    \"220621\": \"抚松县\",\n    \"220622\": \"靖宇县\",\n    \"220623\": \"长白朝鲜族自治县\",\n    \"220681\": \"临江市\",\n    \"220702\": \"宁江区\",\n    \"220721\": \"前郭尔罗斯蒙古族自治县\",\n    \"220722\": \"长岭县\",\n    \"220723\": \"乾安县\",\n    \"220781\": \"扶余市\",\n    \"220802\": \"洮北区\",\n    \"220821\": \"镇赉县\",\n    \"220822\": \"通榆县\",\n    \"220881\": \"洮南市\",\n    \"220882\": \"大安市\",\n    \"222401\": \"延吉市\",\n    \"222402\": \"图们市\",\n    \"222403\": \"敦化市\",\n    \"222404\": \"珲春市\",\n    \"222405\": \"龙井市\",\n    \"222406\": \"和龙市\",\n    \"222424\": \"汪清县\",\n    \"222426\": \"安图县\",\n    \"230102\": \"道里区\",\n    \"230103\": \"南岗区\",\n    \"230104\": \"道外区\",\n    \"230108\": \"平房区\",\n    \"230109\": \"松北区\",\n    \"230110\": \"香坊区\",\n    \"230111\": \"呼兰区\",\n    \"230112\": \"阿城区\",\n    \"230113\": \"双城区\",\n    \"230123\": \"依兰县\",\n    \"230124\": \"方正县\",\n    \"230125\": \"宾县\",\n    \"230126\": \"巴彦县\",\n    \"230127\": \"木兰县\",\n    \"230128\": \"通河县\",\n    \"230129\": \"延寿县\",\n    \"230183\": \"尚志市\",\n    \"230184\": \"五常市\",\n    \"230202\": \"龙沙区\",\n    \"230203\": \"建华区\",\n    \"230204\": \"铁锋区\",\n    \"230205\": \"昂昂溪区\",\n    \"230206\": \"富拉尔基区\",\n    \"230207\": \"碾子山区\",\n    \"230208\": \"梅里斯达斡尔族区\",\n    \"230221\": \"龙江县\",\n    \"230223\": \"依安县\",\n    \"230224\": \"泰来县\",\n    \"230225\": \"甘南县\",\n    \"230227\": \"富裕县\",\n    \"230229\": \"克山县\",\n    \"230230\": \"克东县\",\n    \"230231\": \"拜泉县\",\n    \"230281\": \"讷河市\",\n    \"230302\": \"鸡冠区\",\n    \"230303\": \"恒山区\",\n    \"230304\": \"滴道区\",\n    \"230305\": \"梨树区\",\n    \"230306\": \"城子河区\",\n    \"230307\": \"麻山区\",\n    \"230321\": \"鸡东县\",\n    \"230381\": \"虎林市\",\n    \"230382\": \"密山市\",\n    \"230402\": \"向阳区\",\n    \"230403\": \"工农区\",\n    \"230404\": \"南山区\",\n    \"230405\": \"兴安区\",\n    \"230406\": \"东山区\",\n    \"230407\": \"兴山区\",\n    \"230421\": \"萝北县\",\n    \"230422\": \"绥滨县\",\n    \"230502\": \"尖山区\",\n    \"230503\": \"岭东区\",\n    \"230505\": \"四方台区\",\n    \"230506\": \"宝山区\",\n    \"230521\": \"集贤县\",\n    \"230522\": \"友谊县\",\n    \"230523\": \"宝清县\",\n    \"230524\": \"饶河县\",\n    \"230602\": \"萨尔图区\",\n    \"230603\": \"龙凤区\",\n    \"230604\": \"让胡路区\",\n    \"230605\": \"红岗区\",\n    \"230606\": \"大同区\",\n    \"230621\": \"肇州县\",\n    \"230622\": \"肇源县\",\n    \"230623\": \"林甸县\",\n    \"230624\": \"杜尔伯特蒙古族自治县\",\n    \"230702\": \"伊春区\",\n    \"230703\": \"南岔区\",\n    \"230704\": \"友好区\",\n    \"230705\": \"西林区\",\n    \"230706\": \"翠峦区\",\n    \"230707\": \"新青区\",\n    \"230708\": \"美溪区\",\n    \"230709\": \"金山屯区\",\n    \"230710\": \"五营区\",\n    \"230711\": \"乌马河区\",\n    \"230712\": \"汤旺河区\",\n    \"230713\": \"带岭区\",\n    \"230714\": \"乌伊岭区\",\n    \"230715\": \"红星区\",\n    \"230716\": \"上甘岭区\",\n    \"230722\": \"嘉荫县\",\n    \"230781\": \"铁力市\",\n    \"230803\": \"向阳区\",\n    \"230804\": \"前进区\",\n    \"230805\": \"东风区\",\n    \"230811\": \"郊区\",\n    \"230822\": \"桦南县\",\n    \"230826\": \"桦川县\",\n    \"230828\": \"汤原县\",\n    \"230881\": \"同江市\",\n    \"230882\": \"富锦市\",\n    \"230883\": \"抚远市\",\n    \"230902\": \"新兴区\",\n    \"230903\": \"桃山区\",\n    \"230904\": \"茄子河区\",\n    \"230921\": \"勃利县\",\n    \"231002\": \"东安区\",\n    \"231003\": \"阳明区\",\n    \"231004\": \"爱民区\",\n    \"231005\": \"西安区\",\n    \"231025\": \"林口县\",\n    \"231081\": \"绥芬河市\",\n    \"231083\": \"海林市\",\n    \"231084\": \"宁安市\",\n    \"231085\": \"穆棱市\",\n    \"231086\": \"东宁市\",\n    \"231102\": \"爱辉区\",\n    \"231121\": \"嫩江县\",\n    \"231123\": \"逊克县\",\n    \"231124\": \"孙吴县\",\n    \"231181\": \"北安市\",\n    \"231182\": \"五大连池市\",\n    \"231202\": \"北林区\",\n    \"231221\": \"望奎县\",\n    \"231222\": \"兰西县\",\n    \"231223\": \"青冈县\",\n    \"231224\": \"庆安县\",\n    \"231225\": \"明水县\",\n    \"231226\": \"绥棱县\",\n    \"231281\": \"安达市\",\n    \"231282\": \"肇东市\",\n    \"231283\": \"海伦市\",\n    \"232721\": \"呼玛县\",\n    \"232722\": \"塔河县\",\n    \"232723\": \"漠河县\",\n    \"310101\": \"黄浦区\",\n    \"310104\": \"徐汇区\",\n    \"310105\": \"长宁区\",\n    \"310106\": \"静安区\",\n    \"310107\": \"普陀区\",\n    \"310109\": \"虹口区\",\n    \"310110\": \"杨浦区\",\n    \"310112\": \"闵行区\",\n    \"310113\": \"宝山区\",\n    \"310114\": \"嘉定区\",\n    \"310115\": \"浦东新区\",\n    \"310116\": \"金山区\",\n    \"310117\": \"松江区\",\n    \"310118\": \"青浦区\",\n    \"310120\": \"奉贤区\",\n    \"310151\": \"崇明区\",\n    \"320102\": \"玄武区\",\n    \"320104\": \"秦淮区\",\n    \"320105\": \"建邺区\",\n    \"320106\": \"鼓楼区\",\n    \"320111\": \"浦口区\",\n    \"320113\": \"栖霞区\",\n    \"320114\": \"雨花台区\",\n    \"320115\": \"江宁区\",\n    \"320116\": \"六合区\",\n    \"320117\": \"溧水区\",\n    \"320118\": \"高淳区\",\n    \"320205\": \"锡山区\",\n    \"320206\": \"惠山区\",\n    \"320211\": \"滨湖区\",\n    \"320213\": \"梁溪区\",\n    \"320214\": \"新吴区\",\n    \"320281\": \"江阴市\",\n    \"320282\": \"宜兴市\",\n    \"320302\": \"鼓楼区\",\n    \"320303\": \"云龙区\",\n    \"320305\": \"贾汪区\",\n    \"320311\": \"泉山区\",\n    \"320312\": \"铜山区\",\n    \"320321\": \"丰县\",\n    \"320322\": \"沛县\",\n    \"320324\": \"睢宁县\",\n    \"320381\": \"新沂市\",\n    \"320382\": \"邳州市\",\n    \"320402\": \"天宁区\",\n    \"320404\": \"钟楼区\",\n    \"320411\": \"新北区\",\n    \"320412\": \"武进区\",\n    \"320413\": \"金坛区\",\n    \"320481\": \"溧阳市\",\n    \"320505\": \"虎丘区\",\n    \"320506\": \"吴中区\",\n    \"320507\": \"相城区\",\n    \"320508\": \"姑苏区\",\n    \"320509\": \"吴江区\",\n    \"320581\": \"常熟市\",\n    \"320582\": \"张家港市\",\n    \"320583\": \"昆山市\",\n    \"320585\": \"太仓市\",\n    \"320602\": \"崇川区\",\n    \"320611\": \"港闸区\",\n    \"320612\": \"通州区\",\n    \"320621\": \"海安县\",\n    \"320623\": \"如东县\",\n    \"320681\": \"启东市\",\n    \"320682\": \"如皋市\",\n    \"320684\": \"海门市\",\n    \"320703\": \"连云区\",\n    \"320706\": \"海州区\",\n    \"320707\": \"赣榆区\",\n    \"320722\": \"东海县\",\n    \"320723\": \"灌云县\",\n    \"320724\": \"灌南县\",\n    \"320803\": \"淮安区\",\n    \"320804\": \"淮阴区\",\n    \"320812\": \"清江浦区\",\n    \"320813\": \"洪泽区\",\n    \"320826\": \"涟水县\",\n    \"320830\": \"盱眙县\",\n    \"320831\": \"金湖县\",\n    \"320902\": \"亭湖区\",\n    \"320903\": \"盐都区\",\n    \"320904\": \"大丰区\",\n    \"320921\": \"响水县\",\n    \"320922\": \"滨海县\",\n    \"320923\": \"阜宁县\",\n    \"320924\": \"射阳县\",\n    \"320925\": \"建湖县\",\n    \"320981\": \"东台市\",\n    \"321002\": \"广陵区\",\n    \"321003\": \"邗江区\",\n    \"321012\": \"江都区\",\n    \"321023\": \"宝应县\",\n    \"321081\": \"仪征市\",\n    \"321084\": \"高邮市\",\n    \"321102\": \"京口区\",\n    \"321111\": \"润州区\",\n    \"321112\": \"丹徒区\",\n    \"321181\": \"丹阳市\",\n    \"321182\": \"扬中市\",\n    \"321183\": \"句容市\",\n    \"321202\": \"海陵区\",\n    \"321203\": \"高港区\",\n    \"321204\": \"姜堰区\",\n    \"321281\": \"兴化市\",\n    \"321282\": \"靖江市\",\n    \"321283\": \"泰兴市\",\n    \"321302\": \"宿城区\",\n    \"321311\": \"宿豫区\",\n    \"321322\": \"沭阳县\",\n    \"321323\": \"泗阳县\",\n    \"321324\": \"泗洪县\",\n    \"330102\": \"上城区\",\n    \"330103\": \"下城区\",\n    \"330104\": \"江干区\",\n    \"330105\": \"拱墅区\",\n    \"330106\": \"西湖区\",\n    \"330108\": \"滨江区\",\n    \"330109\": \"萧山区\",\n    \"330110\": \"余杭区\",\n    \"330111\": \"富阳区\",\n    \"330122\": \"桐庐县\",\n    \"330127\": \"淳安县\",\n    \"330182\": \"建德市\",\n    \"330185\": \"临安市\",\n    \"330203\": \"海曙区\",\n    \"330204\": \"江东区\",\n    \"330205\": \"江北区\",\n    \"330206\": \"北仑区\",\n    \"330211\": \"镇海区\",\n    \"330212\": \"鄞州区\",\n    \"330225\": \"象山县\",\n    \"330226\": \"宁海县\",\n    \"330281\": \"余姚市\",\n    \"330282\": \"慈溪市\",\n    \"330283\": \"奉化市\",\n    \"330302\": \"鹿城区\",\n    \"330303\": \"龙湾区\",\n    \"330304\": \"瓯海区\",\n    \"330305\": \"洞头区\",\n    \"330324\": \"永嘉县\",\n    \"330326\": \"平阳县\",\n    \"330327\": \"苍南县\",\n    \"330328\": \"文成县\",\n    \"330329\": \"泰顺县\",\n    \"330381\": \"瑞安市\",\n    \"330382\": \"乐清市\",\n    \"330402\": \"南湖区\",\n    \"330411\": \"秀洲区\",\n    \"330421\": \"嘉善县\",\n    \"330424\": \"海盐县\",\n    \"330481\": \"海宁市\",\n    \"330482\": \"平湖市\",\n    \"330483\": \"桐乡市\",\n    \"330502\": \"吴兴区\",\n    \"330503\": \"南浔区\",\n    \"330521\": \"德清县\",\n    \"330522\": \"长兴县\",\n    \"330523\": \"安吉县\",\n    \"330602\": \"越城区\",\n    \"330603\": \"柯桥区\",\n    \"330604\": \"上虞区\",\n    \"330624\": \"新昌县\",\n    \"330681\": \"诸暨市\",\n    \"330683\": \"嵊州市\",\n    \"330702\": \"婺城区\",\n    \"330703\": \"金东区\",\n    \"330723\": \"武义县\",\n    \"330726\": \"浦江县\",\n    \"330727\": \"磐安县\",\n    \"330781\": \"兰溪市\",\n    \"330782\": \"义乌市\",\n    \"330783\": \"东阳市\",\n    \"330784\": \"永康市\",\n    \"330802\": \"柯城区\",\n    \"330803\": \"衢江区\",\n    \"330822\": \"常山县\",\n    \"330824\": \"开化县\",\n    \"330825\": \"龙游县\",\n    \"330881\": \"江山市\",\n    \"330902\": \"定海区\",\n    \"330903\": \"普陀区\",\n    \"330921\": \"岱山县\",\n    \"330922\": \"嵊泗县\",\n    \"331002\": \"椒江区\",\n    \"331003\": \"黄岩区\",\n    \"331004\": \"路桥区\",\n    \"331021\": \"玉环县\",\n    \"331022\": \"三门县\",\n    \"331023\": \"天台县\",\n    \"331024\": \"仙居县\",\n    \"331081\": \"温岭市\",\n    \"331082\": \"临海市\",\n    \"331102\": \"莲都区\",\n    \"331121\": \"青田县\",\n    \"331122\": \"缙云县\",\n    \"331123\": \"遂昌县\",\n    \"331124\": \"松阳县\",\n    \"331125\": \"云和县\",\n    \"331126\": \"庆元县\",\n    \"331127\": \"景宁畲族自治县\",\n    \"331181\": \"龙泉市\",\n    \"340102\": \"瑶海区\",\n    \"340103\": \"庐阳区\",\n    \"340104\": \"蜀山区\",\n    \"340111\": \"包河区\",\n    \"340121\": \"长丰县\",\n    \"340122\": \"肥东县\",\n    \"340123\": \"肥西县\",\n    \"340124\": \"庐江县\",\n    \"340181\": \"巢湖市\",\n    \"340202\": \"镜湖区\",\n    \"340203\": \"弋江区\",\n    \"340207\": \"鸠江区\",\n    \"340208\": \"三山区\",\n    \"340221\": \"芜湖县\",\n    \"340222\": \"繁昌县\",\n    \"340223\": \"南陵县\",\n    \"340225\": \"无为县\",\n    \"340302\": \"龙子湖区\",\n    \"340303\": \"蚌山区\",\n    \"340304\": \"禹会区\",\n    \"340311\": \"淮上区\",\n    \"340321\": \"怀远县\",\n    \"340322\": \"五河县\",\n    \"340323\": \"固镇县\",\n    \"340402\": \"大通区\",\n    \"340403\": \"田家庵区\",\n    \"340404\": \"谢家集区\",\n    \"340405\": \"八公山区\",\n    \"340406\": \"潘集区\",\n    \"340421\": \"凤台县\",\n    \"340422\": \"寿县\",\n    \"340503\": \"花山区\",\n    \"340504\": \"雨山区\",\n    \"340506\": \"博望区\",\n    \"340521\": \"当涂县\",\n    \"340522\": \"含山县\",\n    \"340523\": \"和县\",\n    \"340602\": \"杜集区\",\n    \"340603\": \"相山区\",\n    \"340604\": \"烈山区\",\n    \"340621\": \"濉溪县\",\n    \"340705\": \"铜官区\",\n    \"340706\": \"义安区\",\n    \"340711\": \"郊区\",\n    \"340722\": \"枞阳县\",\n    \"340802\": \"迎江区\",\n    \"340803\": \"大观区\",\n    \"340811\": \"宜秀区\",\n    \"340822\": \"怀宁县\",\n    \"340824\": \"潜山县\",\n    \"340825\": \"太湖县\",\n    \"340826\": \"宿松县\",\n    \"340827\": \"望江县\",\n    \"340828\": \"岳西县\",\n    \"340881\": \"桐城市\",\n    \"341002\": \"屯溪区\",\n    \"341003\": \"黄山区\",\n    \"341004\": \"徽州区\",\n    \"341021\": \"歙县\",\n    \"341022\": \"休宁县\",\n    \"341023\": \"黟县\",\n    \"341024\": \"祁门县\",\n    \"341102\": \"琅琊区\",\n    \"341103\": \"南谯区\",\n    \"341122\": \"来安县\",\n    \"341124\": \"全椒县\",\n    \"341125\": \"定远县\",\n    \"341126\": \"凤阳县\",\n    \"341181\": \"天长市\",\n    \"341182\": \"明光市\",\n    \"341202\": \"颍州区\",\n    \"341203\": \"颍东区\",\n    \"341204\": \"颍泉区\",\n    \"341221\": \"临泉县\",\n    \"341222\": \"太和县\",\n    \"341225\": \"阜南县\",\n    \"341226\": \"颍上县\",\n    \"341282\": \"界首市\",\n    \"341302\": \"埇桥区\",\n    \"341321\": \"砀山县\",\n    \"341322\": \"萧县\",\n    \"341323\": \"灵璧县\",\n    \"341324\": \"泗县\",\n    \"341502\": \"金安区\",\n    \"341503\": \"裕安区\",\n    \"341504\": \"叶集区\",\n    \"341522\": \"霍邱县\",\n    \"341523\": \"舒城县\",\n    \"341524\": \"金寨县\",\n    \"341525\": \"霍山县\",\n    \"341602\": \"谯城区\",\n    \"341621\": \"涡阳县\",\n    \"341622\": \"蒙城县\",\n    \"341623\": \"利辛县\",\n    \"341702\": \"贵池区\",\n    \"341721\": \"东至县\",\n    \"341722\": \"石台县\",\n    \"341723\": \"青阳县\",\n    \"341802\": \"宣州区\",\n    \"341821\": \"郎溪县\",\n    \"341822\": \"广德县\",\n    \"341823\": \"泾县\",\n    \"341824\": \"绩溪县\",\n    \"341825\": \"旌德县\",\n    \"341881\": \"宁国市\",\n    \"350102\": \"鼓楼区\",\n    \"350103\": \"台江区\",\n    \"350104\": \"仓山区\",\n    \"350105\": \"马尾区\",\n    \"350111\": \"晋安区\",\n    \"350121\": \"闽侯县\",\n    \"350122\": \"连江县\",\n    \"350123\": \"罗源县\",\n    \"350124\": \"闽清县\",\n    \"350125\": \"永泰县\",\n    \"350128\": \"平潭县\",\n    \"350181\": \"福清市\",\n    \"350182\": \"长乐市\",\n    \"350203\": \"思明区\",\n    \"350205\": \"海沧区\",\n    \"350206\": \"湖里区\",\n    \"350211\": \"集美区\",\n    \"350212\": \"同安区\",\n    \"350213\": \"翔安区\",\n    \"350302\": \"城厢区\",\n    \"350303\": \"涵江区\",\n    \"350304\": \"荔城区\",\n    \"350305\": \"秀屿区\",\n    \"350322\": \"仙游县\",\n    \"350402\": \"梅列区\",\n    \"350403\": \"三元区\",\n    \"350421\": \"明溪县\",\n    \"350423\": \"清流县\",\n    \"350424\": \"宁化县\",\n    \"350425\": \"大田县\",\n    \"350426\": \"尤溪县\",\n    \"350427\": \"沙县\",\n    \"350428\": \"将乐县\",\n    \"350429\": \"泰宁县\",\n    \"350430\": \"建宁县\",\n    \"350481\": \"永安市\",\n    \"350502\": \"鲤城区\",\n    \"350503\": \"丰泽区\",\n    \"350504\": \"洛江区\",\n    \"350505\": \"泉港区\",\n    \"350521\": \"惠安县\",\n    \"350524\": \"安溪县\",\n    \"350525\": \"永春县\",\n    \"350526\": \"德化县\",\n    \"350527\": \"金门县\",\n    \"350581\": \"石狮市\",\n    \"350582\": \"晋江市\",\n    \"350583\": \"南安市\",\n    \"350602\": \"芗城区\",\n    \"350603\": \"龙文区\",\n    \"350622\": \"云霄县\",\n    \"350623\": \"漳浦县\",\n    \"350624\": \"诏安县\",\n    \"350625\": \"长泰县\",\n    \"350626\": \"东山县\",\n    \"350627\": \"南靖县\",\n    \"350628\": \"平和县\",\n    \"350629\": \"华安县\",\n    \"350681\": \"龙海市\",\n    \"350702\": \"延平区\",\n    \"350703\": \"建阳区\",\n    \"350721\": \"顺昌县\",\n    \"350722\": \"浦城县\",\n    \"350723\": \"光泽县\",\n    \"350724\": \"松溪县\",\n    \"350725\": \"政和县\",\n    \"350781\": \"邵武市\",\n    \"350782\": \"武夷山市\",\n    \"350783\": \"建瓯市\",\n    \"350802\": \"新罗区\",\n    \"350803\": \"永定区\",\n    \"350821\": \"长汀县\",\n    \"350823\": \"上杭县\",\n    \"350824\": \"武平县\",\n    \"350825\": \"连城县\",\n    \"350881\": \"漳平市\",\n    \"350902\": \"蕉城区\",\n    \"350921\": \"霞浦县\",\n    \"350922\": \"古田县\",\n    \"350923\": \"屏南县\",\n    \"350924\": \"寿宁县\",\n    \"350925\": \"周宁县\",\n    \"350926\": \"柘荣县\",\n    \"350981\": \"福安市\",\n    \"350982\": \"福鼎市\",\n    \"360102\": \"东湖区\",\n    \"360103\": \"西湖区\",\n    \"360104\": \"青云谱区\",\n    \"360105\": \"湾里区\",\n    \"360111\": \"青山湖区\",\n    \"360112\": \"新建区\",\n    \"360121\": \"南昌县\",\n    \"360123\": \"安义县\",\n    \"360124\": \"进贤县\",\n    \"360202\": \"昌江区\",\n    \"360203\": \"珠山区\",\n    \"360222\": \"浮梁县\",\n    \"360281\": \"乐平市\",\n    \"360302\": \"安源区\",\n    \"360313\": \"湘东区\",\n    \"360321\": \"莲花县\",\n    \"360322\": \"上栗县\",\n    \"360323\": \"芦溪县\",\n    \"360402\": \"濂溪区\",\n    \"360403\": \"浔阳区\",\n    \"360421\": \"九江县\",\n    \"360423\": \"武宁县\",\n    \"360424\": \"修水县\",\n    \"360425\": \"永修县\",\n    \"360426\": \"德安县\",\n    \"360428\": \"都昌县\",\n    \"360429\": \"湖口县\",\n    \"360430\": \"彭泽县\",\n    \"360481\": \"瑞昌市\",\n    \"360482\": \"共青城市\",\n    \"360483\": \"庐山市\",\n    \"360502\": \"渝水区\",\n    \"360521\": \"分宜县\",\n    \"360602\": \"月湖区\",\n    \"360622\": \"余江县\",\n    \"360681\": \"贵溪市\",\n    \"360702\": \"章贡区\",\n    \"360703\": \"南康区\",\n    \"360721\": \"赣县\",\n    \"360722\": \"信丰县\",\n    \"360723\": \"大余县\",\n    \"360724\": \"上犹县\",\n    \"360725\": \"崇义县\",\n    \"360726\": \"安远县\",\n    \"360727\": \"龙南县\",\n    \"360728\": \"定南县\",\n    \"360729\": \"全南县\",\n    \"360730\": \"宁都县\",\n    \"360731\": \"于都县\",\n    \"360732\": \"兴国县\",\n    \"360733\": \"会昌县\",\n    \"360734\": \"寻乌县\",\n    \"360735\": \"石城县\",\n    \"360781\": \"瑞金市\",\n    \"360802\": \"吉州区\",\n    \"360803\": \"青原区\",\n    \"360821\": \"吉安县\",\n    \"360822\": \"吉水县\",\n    \"360823\": \"峡江县\",\n    \"360824\": \"新干县\",\n    \"360825\": \"永丰县\",\n    \"360826\": \"泰和县\",\n    \"360827\": \"遂川县\",\n    \"360828\": \"万安县\",\n    \"360829\": \"安福县\",\n    \"360830\": \"永新县\",\n    \"360881\": \"井冈山市\",\n    \"360902\": \"袁州区\",\n    \"360921\": \"奉新县\",\n    \"360922\": \"万载县\",\n    \"360923\": \"上高县\",\n    \"360924\": \"宜丰县\",\n    \"360925\": \"靖安县\",\n    \"360926\": \"铜鼓县\",\n    \"360981\": \"丰城市\",\n    \"360982\": \"樟树市\",\n    \"360983\": \"高安市\",\n    \"361002\": \"临川区\",\n    \"361021\": \"南城县\",\n    \"361022\": \"黎川县\",\n    \"361023\": \"南丰县\",\n    \"361024\": \"崇仁县\",\n    \"361025\": \"乐安县\",\n    \"361026\": \"宜黄县\",\n    \"361027\": \"金溪县\",\n    \"361028\": \"资溪县\",\n    \"361029\": \"东乡县\",\n    \"361030\": \"广昌县\",\n    \"361102\": \"信州区\",\n    \"361103\": \"广丰区\",\n    \"361121\": \"上饶县\",\n    \"361123\": \"玉山县\",\n    \"361124\": \"铅山县\",\n    \"361125\": \"横峰县\",\n    \"361126\": \"弋阳县\",\n    \"361127\": \"余干县\",\n    \"361128\": \"鄱阳县\",\n    \"361129\": \"万年县\",\n    \"361130\": \"婺源县\",\n    \"361181\": \"德兴市\",\n    \"370102\": \"历下区\",\n    \"370103\": \"市中区\",\n    \"370104\": \"槐荫区\",\n    \"370105\": \"天桥区\",\n    \"370112\": \"历城区\",\n    \"370113\": \"长清区\",\n    \"370124\": \"平阴县\",\n    \"370125\": \"济阳县\",\n    \"370126\": \"商河县\",\n    \"370181\": \"章丘市\",\n    \"370202\": \"市南区\",\n    \"370203\": \"市北区\",\n    \"370211\": \"黄岛区\",\n    \"370212\": \"崂山区\",\n    \"370213\": \"李沧区\",\n    \"370214\": \"城阳区\",\n    \"370281\": \"胶州市\",\n    \"370282\": \"即墨市\",\n    \"370283\": \"平度市\",\n    \"370285\": \"莱西市\",\n    \"370302\": \"淄川区\",\n    \"370303\": \"张店区\",\n    \"370304\": \"博山区\",\n    \"370305\": \"临淄区\",\n    \"370306\": \"周村区\",\n    \"370321\": \"桓台县\",\n    \"370322\": \"高青县\",\n    \"370323\": \"沂源县\",\n    \"370402\": \"市中区\",\n    \"370403\": \"薛城区\",\n    \"370404\": \"峄城区\",\n    \"370405\": \"台儿庄区\",\n    \"370406\": \"山亭区\",\n    \"370481\": \"滕州市\",\n    \"370502\": \"东营区\",\n    \"370503\": \"河口区\",\n    \"370505\": \"垦利区\",\n    \"370522\": \"利津县\",\n    \"370523\": \"广饶县\",\n    \"370602\": \"芝罘区\",\n    \"370611\": \"福山区\",\n    \"370612\": \"牟平区\",\n    \"370613\": \"莱山区\",\n    \"370634\": \"长岛县\",\n    \"370681\": \"龙口市\",\n    \"370682\": \"莱阳市\",\n    \"370683\": \"莱州市\",\n    \"370684\": \"蓬莱市\",\n    \"370685\": \"招远市\",\n    \"370686\": \"栖霞市\",\n    \"370687\": \"海阳市\",\n    \"370702\": \"潍城区\",\n    \"370703\": \"寒亭区\",\n    \"370704\": \"坊子区\",\n    \"370705\": \"奎文区\",\n    \"370724\": \"临朐县\",\n    \"370725\": \"昌乐县\",\n    \"370781\": \"青州市\",\n    \"370782\": \"诸城市\",\n    \"370783\": \"寿光市\",\n    \"370784\": \"安丘市\",\n    \"370785\": \"高密市\",\n    \"370786\": \"昌邑市\",\n    \"370811\": \"任城区\",\n    \"370812\": \"兖州区\",\n    \"370826\": \"微山县\",\n    \"370827\": \"鱼台县\",\n    \"370828\": \"金乡县\",\n    \"370829\": \"嘉祥县\",\n    \"370830\": \"汶上县\",\n    \"370831\": \"泗水县\",\n    \"370832\": \"梁山县\",\n    \"370881\": \"曲阜市\",\n    \"370883\": \"邹城市\",\n    \"370902\": \"泰山区\",\n    \"370911\": \"岱岳区\",\n    \"370921\": \"宁阳县\",\n    \"370923\": \"东平县\",\n    \"370982\": \"新泰市\",\n    \"370983\": \"肥城市\",\n    \"371002\": \"环翠区\",\n    \"371003\": \"文登区\",\n    \"371082\": \"荣成市\",\n    \"371083\": \"乳山市\",\n    \"371102\": \"东港区\",\n    \"371103\": \"岚山区\",\n    \"371121\": \"五莲县\",\n    \"371122\": \"莒县\",\n    \"371202\": \"莱城区\",\n    \"371203\": \"钢城区\",\n    \"371302\": \"兰山区\",\n    \"371311\": \"罗庄区\",\n    \"371312\": \"河东区\",\n    \"371321\": \"沂南县\",\n    \"371322\": \"郯城县\",\n    \"371323\": \"沂水县\",\n    \"371324\": \"兰陵县\",\n    \"371325\": \"费县\",\n    \"371326\": \"平邑县\",\n    \"371327\": \"莒南县\",\n    \"371328\": \"蒙阴县\",\n    \"371329\": \"临沭县\",\n    \"371402\": \"德城区\",\n    \"371403\": \"陵城区\",\n    \"371422\": \"宁津县\",\n    \"371423\": \"庆云县\",\n    \"371424\": \"临邑县\",\n    \"371425\": \"齐河县\",\n    \"371426\": \"平原县\",\n    \"371427\": \"夏津县\",\n    \"371428\": \"武城县\",\n    \"371481\": \"乐陵市\",\n    \"371482\": \"禹城市\",\n    \"371502\": \"东昌府区\",\n    \"371521\": \"阳谷县\",\n    \"371522\": \"莘县\",\n    \"371523\": \"茌平县\",\n    \"371524\": \"东阿县\",\n    \"371525\": \"冠县\",\n    \"371526\": \"高唐县\",\n    \"371581\": \"临清市\",\n    \"371602\": \"滨城区\",\n    \"371603\": \"沾化区\",\n    \"371621\": \"惠民县\",\n    \"371622\": \"阳信县\",\n    \"371623\": \"无棣县\",\n    \"371625\": \"博兴县\",\n    \"371626\": \"邹平县\",\n    \"371702\": \"牡丹区\",\n    \"371703\": \"定陶区\",\n    \"371721\": \"曹县\",\n    \"371722\": \"单县\",\n    \"371723\": \"成武县\",\n    \"371724\": \"巨野县\",\n    \"371725\": \"郓城县\",\n    \"371726\": \"鄄城县\",\n    \"371728\": \"东明县\",\n    \"410102\": \"中原区\",\n    \"410103\": \"二七区\",\n    \"410104\": \"管城回族区\",\n    \"410105\": \"金水区\",\n    \"410106\": \"上街区\",\n    \"410108\": \"惠济区\",\n    \"410122\": \"中牟县\",\n    \"410181\": \"巩义市\",\n    \"410182\": \"荥阳市\",\n    \"410183\": \"新密市\",\n    \"410184\": \"新郑市\",\n    \"410185\": \"登封市\",\n    \"410202\": \"龙亭区\",\n    \"410203\": \"顺河回族区\",\n    \"410204\": \"鼓楼区\",\n    \"410205\": \"禹王台区\",\n    \"410211\": \"金明区\",\n    \"410212\": \"祥符区\",\n    \"410221\": \"杞县\",\n    \"410222\": \"通许县\",\n    \"410223\": \"尉氏县\",\n    \"410225\": \"兰考县\",\n    \"410302\": \"老城区\",\n    \"410303\": \"西工区\",\n    \"410304\": \"瀍河回族区\",\n    \"410305\": \"涧西区\",\n    \"410306\": \"吉利区\",\n    \"410311\": \"洛龙区\",\n    \"410322\": \"孟津县\",\n    \"410323\": \"新安县\",\n    \"410324\": \"栾川县\",\n    \"410325\": \"嵩县\",\n    \"410326\": \"汝阳县\",\n    \"410327\": \"宜阳县\",\n    \"410328\": \"洛宁县\",\n    \"410329\": \"伊川县\",\n    \"410381\": \"偃师市\",\n    \"410402\": \"新华区\",\n    \"410403\": \"卫东区\",\n    \"410404\": \"石龙区\",\n    \"410411\": \"湛河区\",\n    \"410421\": \"宝丰县\",\n    \"410422\": \"叶县\",\n    \"410423\": \"鲁山县\",\n    \"410425\": \"郏县\",\n    \"410481\": \"舞钢市\",\n    \"410482\": \"汝州市\",\n    \"410502\": \"文峰区\",\n    \"410503\": \"北关区\",\n    \"410505\": \"殷都区\",\n    \"410506\": \"龙安区\",\n    \"410522\": \"安阳县\",\n    \"410523\": \"汤阴县\",\n    \"410526\": \"滑县\",\n    \"410527\": \"内黄县\",\n    \"410581\": \"林州市\",\n    \"410602\": \"鹤山区\",\n    \"410603\": \"山城区\",\n    \"410611\": \"淇滨区\",\n    \"410621\": \"浚县\",\n    \"410622\": \"淇县\",\n    \"410702\": \"红旗区\",\n    \"410703\": \"卫滨区\",\n    \"410704\": \"凤泉区\",\n    \"410711\": \"牧野区\",\n    \"410721\": \"新乡县\",\n    \"410724\": \"获嘉县\",\n    \"410725\": \"原阳县\",\n    \"410726\": \"延津县\",\n    \"410727\": \"封丘县\",\n    \"410728\": \"长垣县\",\n    \"410781\": \"卫辉市\",\n    \"410782\": \"辉县市\",\n    \"410802\": \"解放区\",\n    \"410803\": \"中站区\",\n    \"410804\": \"马村区\",\n    \"410811\": \"山阳区\",\n    \"410821\": \"修武县\",\n    \"410822\": \"博爱县\",\n    \"410823\": \"武陟县\",\n    \"410825\": \"温县\",\n    \"410882\": \"沁阳市\",\n    \"410883\": \"孟州市\",\n    \"410902\": \"华龙区\",\n    \"410922\": \"清丰县\",\n    \"410923\": \"南乐县\",\n    \"410926\": \"范县\",\n    \"410927\": \"台前县\",\n    \"410928\": \"濮阳县\",\n    \"411002\": \"魏都区\",\n    \"411023\": \"许昌县\",\n    \"411024\": \"鄢陵县\",\n    \"411025\": \"襄城县\",\n    \"411081\": \"禹州市\",\n    \"411082\": \"长葛市\",\n    \"411102\": \"源汇区\",\n    \"411103\": \"郾城区\",\n    \"411104\": \"召陵区\",\n    \"411121\": \"舞阳县\",\n    \"411122\": \"临颍县\",\n    \"411202\": \"湖滨区\",\n    \"411203\": \"陕州区\",\n    \"411221\": \"渑池县\",\n    \"411224\": \"卢氏县\",\n    \"411281\": \"义马市\",\n    \"411282\": \"灵宝市\",\n    \"411302\": \"宛城区\",\n    \"411303\": \"卧龙区\",\n    \"411321\": \"南召县\",\n    \"411322\": \"方城县\",\n    \"411323\": \"西峡县\",\n    \"411324\": \"镇平县\",\n    \"411325\": \"内乡县\",\n    \"411326\": \"淅川县\",\n    \"411327\": \"社旗县\",\n    \"411328\": \"唐河县\",\n    \"411329\": \"新野县\",\n    \"411330\": \"桐柏县\",\n    \"411381\": \"邓州市\",\n    \"411402\": \"梁园区\",\n    \"411403\": \"睢阳区\",\n    \"411421\": \"民权县\",\n    \"411422\": \"睢县\",\n    \"411423\": \"宁陵县\",\n    \"411424\": \"柘城县\",\n    \"411425\": \"虞城县\",\n    \"411426\": \"夏邑县\",\n    \"411481\": \"永城市\",\n    \"411502\": \"浉河区\",\n    \"411503\": \"平桥区\",\n    \"411521\": \"罗山县\",\n    \"411522\": \"光山县\",\n    \"411523\": \"新县\",\n    \"411524\": \"商城县\",\n    \"411525\": \"固始县\",\n    \"411526\": \"潢川县\",\n    \"411527\": \"淮滨县\",\n    \"411528\": \"息县\",\n    \"411602\": \"川汇区\",\n    \"411621\": \"扶沟县\",\n    \"411622\": \"西华县\",\n    \"411623\": \"商水县\",\n    \"411624\": \"沈丘县\",\n    \"411625\": \"郸城县\",\n    \"411626\": \"淮阳县\",\n    \"411627\": \"太康县\",\n    \"411628\": \"鹿邑县\",\n    \"411681\": \"项城市\",\n    \"411702\": \"驿城区\",\n    \"411721\": \"西平县\",\n    \"411722\": \"上蔡县\",\n    \"411723\": \"平舆县\",\n    \"411724\": \"正阳县\",\n    \"411725\": \"确山县\",\n    \"411726\": \"泌阳县\",\n    \"411727\": \"汝南县\",\n    \"411728\": \"遂平县\",\n    \"411729\": \"新蔡县\",\n    \"419001\": \"济源市\",\n    \"420102\": \"江岸区\",\n    \"420103\": \"江汉区\",\n    \"420104\": \"硚口区\",\n    \"420105\": \"汉阳区\",\n    \"420106\": \"武昌区\",\n    \"420107\": \"青山区\",\n    \"420111\": \"洪山区\",\n    \"420112\": \"东西湖区\",\n    \"420113\": \"汉南区\",\n    \"420114\": \"蔡甸区\",\n    \"420115\": \"江夏区\",\n    \"420116\": \"黄陂区\",\n    \"420117\": \"新洲区\",\n    \"420202\": \"黄石港区\",\n    \"420203\": \"西塞山区\",\n    \"420204\": \"下陆区\",\n    \"420205\": \"铁山区\",\n    \"420222\": \"阳新县\",\n    \"420281\": \"大冶市\",\n    \"420302\": \"茅箭区\",\n    \"420303\": \"张湾区\",\n    \"420304\": \"郧阳区\",\n    \"420322\": \"郧西县\",\n    \"420323\": \"竹山县\",\n    \"420324\": \"竹溪县\",\n    \"420325\": \"房县\",\n    \"420381\": \"丹江口市\",\n    \"420502\": \"西陵区\",\n    \"420503\": \"伍家岗区\",\n    \"420504\": \"点军区\",\n    \"420505\": \"猇亭区\",\n    \"420506\": \"夷陵区\",\n    \"420525\": \"远安县\",\n    \"420526\": \"兴山县\",\n    \"420527\": \"秭归县\",\n    \"420528\": \"长阳土家族自治县\",\n    \"420529\": \"五峰土家族自治县\",\n    \"420581\": \"宜都市\",\n    \"420582\": \"当阳市\",\n    \"420583\": \"枝江市\",\n    \"420602\": \"襄城区\",\n    \"420606\": \"樊城区\",\n    \"420607\": \"襄州区\",\n    \"420624\": \"南漳县\",\n    \"420625\": \"谷城县\",\n    \"420626\": \"保康县\",\n    \"420682\": \"老河口市\",\n    \"420683\": \"枣阳市\",\n    \"420684\": \"宜城市\",\n    \"420702\": \"梁子湖区\",\n    \"420703\": \"华容区\",\n    \"420704\": \"鄂城区\",\n    \"420802\": \"东宝区\",\n    \"420804\": \"掇刀区\",\n    \"420821\": \"京山县\",\n    \"420822\": \"沙洋县\",\n    \"420881\": \"钟祥市\",\n    \"420902\": \"孝南区\",\n    \"420921\": \"孝昌县\",\n    \"420922\": \"大悟县\",\n    \"420923\": \"云梦县\",\n    \"420981\": \"应城市\",\n    \"420982\": \"安陆市\",\n    \"420984\": \"汉川市\",\n    \"421002\": \"沙市区\",\n    \"421003\": \"荆州区\",\n    \"421022\": \"公安县\",\n    \"421023\": \"监利县\",\n    \"421024\": \"江陵县\",\n    \"421081\": \"石首市\",\n    \"421083\": \"洪湖市\",\n    \"421087\": \"松滋市\",\n    \"421102\": \"黄州区\",\n    \"421121\": \"团风县\",\n    \"421122\": \"红安县\",\n    \"421123\": \"罗田县\",\n    \"421124\": \"英山县\",\n    \"421125\": \"浠水县\",\n    \"421126\": \"蕲春县\",\n    \"421127\": \"黄梅县\",\n    \"421181\": \"麻城市\",\n    \"421182\": \"武穴市\",\n    \"421202\": \"咸安区\",\n    \"421221\": \"嘉鱼县\",\n    \"421222\": \"通城县\",\n    \"421223\": \"崇阳县\",\n    \"421224\": \"通山县\",\n    \"421281\": \"赤壁市\",\n    \"421303\": \"曾都区\",\n    \"421321\": \"随县\",\n    \"421381\": \"广水市\",\n    \"422801\": \"恩施市\",\n    \"422802\": \"利川市\",\n    \"422822\": \"建始县\",\n    \"422823\": \"巴东县\",\n    \"422825\": \"宣恩县\",\n    \"422826\": \"咸丰县\",\n    \"422827\": \"来凤县\",\n    \"422828\": \"鹤峰县\",\n    \"429004\": \"仙桃市\",\n    \"429005\": \"潜江市\",\n    \"429006\": \"天门市\",\n    \"429021\": \"神农架林区\",\n    \"430102\": \"芙蓉区\",\n    \"430103\": \"天心区\",\n    \"430104\": \"岳麓区\",\n    \"430105\": \"开福区\",\n    \"430111\": \"雨花区\",\n    \"430112\": \"望城区\",\n    \"430121\": \"长沙县\",\n    \"430124\": \"宁乡县\",\n    \"430181\": \"浏阳市\",\n    \"430202\": \"荷塘区\",\n    \"430203\": \"芦淞区\",\n    \"430204\": \"石峰区\",\n    \"430211\": \"天元区\",\n    \"430221\": \"株洲县\",\n    \"430223\": \"攸县\",\n    \"430224\": \"茶陵县\",\n    \"430225\": \"炎陵县\",\n    \"430281\": \"醴陵市\",\n    \"430302\": \"雨湖区\",\n    \"430304\": \"岳塘区\",\n    \"430321\": \"湘潭县\",\n    \"430381\": \"湘乡市\",\n    \"430382\": \"韶山市\",\n    \"430405\": \"珠晖区\",\n    \"430406\": \"雁峰区\",\n    \"430407\": \"石鼓区\",\n    \"430408\": \"蒸湘区\",\n    \"430412\": \"南岳区\",\n    \"430421\": \"衡阳县\",\n    \"430422\": \"衡南县\",\n    \"430423\": \"衡山县\",\n    \"430424\": \"衡东县\",\n    \"430426\": \"祁东县\",\n    \"430481\": \"耒阳市\",\n    \"430482\": \"常宁市\",\n    \"430502\": \"双清区\",\n    \"430503\": \"大祥区\",\n    \"430511\": \"北塔区\",\n    \"430521\": \"邵东县\",\n    \"430522\": \"新邵县\",\n    \"430523\": \"邵阳县\",\n    \"430524\": \"隆回县\",\n    \"430525\": \"洞口县\",\n    \"430527\": \"绥宁县\",\n    \"430528\": \"新宁县\",\n    \"430529\": \"城步苗族自治县\",\n    \"430581\": \"武冈市\",\n    \"430602\": \"岳阳楼区\",\n    \"430603\": \"云溪区\",\n    \"430611\": \"君山区\",\n    \"430621\": \"岳阳县\",\n    \"430623\": \"华容县\",\n    \"430624\": \"湘阴县\",\n    \"430626\": \"平江县\",\n    \"430681\": \"汨罗市\",\n    \"430682\": \"临湘市\",\n    \"430702\": \"武陵区\",\n    \"430703\": \"鼎城区\",\n    \"430721\": \"安乡县\",\n    \"430722\": \"汉寿县\",\n    \"430723\": \"澧县\",\n    \"430724\": \"临澧县\",\n    \"430725\": \"桃源县\",\n    \"430726\": \"石门县\",\n    \"430781\": \"津市市\",\n    \"430802\": \"永定区\",\n    \"430811\": \"武陵源区\",\n    \"430821\": \"慈利县\",\n    \"430822\": \"桑植县\",\n    \"430902\": \"资阳区\",\n    \"430903\": \"赫山区\",\n    \"430921\": \"南县\",\n    \"430922\": \"桃江县\",\n    \"430923\": \"安化县\",\n    \"430981\": \"沅江市\",\n    \"431002\": \"北湖区\",\n    \"431003\": \"苏仙区\",\n    \"431021\": \"桂阳县\",\n    \"431022\": \"宜章县\",\n    \"431023\": \"永兴县\",\n    \"431024\": \"嘉禾县\",\n    \"431025\": \"临武县\",\n    \"431026\": \"汝城县\",\n    \"431027\": \"桂东县\",\n    \"431028\": \"安仁县\",\n    \"431081\": \"资兴市\",\n    \"431102\": \"零陵区\",\n    \"431103\": \"冷水滩区\",\n    \"431121\": \"祁阳县\",\n    \"431122\": \"东安县\",\n    \"431123\": \"双牌县\",\n    \"431124\": \"道县\",\n    \"431125\": \"江永县\",\n    \"431126\": \"宁远县\",\n    \"431127\": \"蓝山县\",\n    \"431128\": \"新田县\",\n    \"431129\": \"江华瑶族自治县\",\n    \"431202\": \"鹤城区\",\n    \"431221\": \"中方县\",\n    \"431222\": \"沅陵县\",\n    \"431223\": \"辰溪县\",\n    \"431224\": \"溆浦县\",\n    \"431225\": \"会同县\",\n    \"431226\": \"麻阳苗族自治县\",\n    \"431227\": \"新晃侗族自治县\",\n    \"431228\": \"芷江侗族自治县\",\n    \"431229\": \"靖州苗族侗族自治县\",\n    \"431230\": \"通道侗族自治县\",\n    \"431281\": \"洪江市\",\n    \"431302\": \"娄星区\",\n    \"431321\": \"双峰县\",\n    \"431322\": \"新化县\",\n    \"431381\": \"冷水江市\",\n    \"431382\": \"涟源市\",\n    \"433101\": \"吉首市\",\n    \"433122\": \"泸溪县\",\n    \"433123\": \"凤凰县\",\n    \"433124\": \"花垣县\",\n    \"433125\": \"保靖县\",\n    \"433126\": \"古丈县\",\n    \"433127\": \"永顺县\",\n    \"433130\": \"龙山县\",\n    \"440103\": \"荔湾区\",\n    \"440104\": \"越秀区\",\n    \"440105\": \"海珠区\",\n    \"440106\": \"天河区\",\n    \"440111\": \"白云区\",\n    \"440112\": \"黄埔区\",\n    \"440113\": \"番禺区\",\n    \"440114\": \"花都区\",\n    \"440115\": \"南沙区\",\n    \"440117\": \"从化区\",\n    \"440118\": \"增城区\",\n    \"440203\": \"武江区\",\n    \"440204\": \"浈江区\",\n    \"440205\": \"曲江区\",\n    \"440222\": \"始兴县\",\n    \"440224\": \"仁化县\",\n    \"440229\": \"翁源县\",\n    \"440232\": \"乳源瑶族自治县\",\n    \"440233\": \"新丰县\",\n    \"440281\": \"乐昌市\",\n    \"440282\": \"南雄市\",\n    \"440303\": \"罗湖区\",\n    \"440304\": \"福田区\",\n    \"440305\": \"南山区\",\n    \"440306\": \"宝安区\",\n    \"440307\": \"龙岗区\",\n    \"440308\": \"盐田区\",\n    \"440402\": \"香洲区\",\n    \"440403\": \"斗门区\",\n    \"440404\": \"金湾区\",\n    \"440507\": \"龙湖区\",\n    \"440511\": \"金平区\",\n    \"440512\": \"濠江区\",\n    \"440513\": \"潮阳区\",\n    \"440514\": \"潮南区\",\n    \"440515\": \"澄海区\",\n    \"440523\": \"南澳县\",\n    \"440604\": \"禅城区\",\n    \"440605\": \"南海区\",\n    \"440606\": \"顺德区\",\n    \"440607\": \"三水区\",\n    \"440608\": \"高明区\",\n    \"440703\": \"蓬江区\",\n    \"440704\": \"江海区\",\n    \"440705\": \"新会区\",\n    \"440781\": \"台山市\",\n    \"440783\": \"开平市\",\n    \"440784\": \"鹤山市\",\n    \"440785\": \"恩平市\",\n    \"440802\": \"赤坎区\",\n    \"440803\": \"霞山区\",\n    \"440804\": \"坡头区\",\n    \"440811\": \"麻章区\",\n    \"440823\": \"遂溪县\",\n    \"440825\": \"徐闻县\",\n    \"440881\": \"廉江市\",\n    \"440882\": \"雷州市\",\n    \"440883\": \"吴川市\",\n    \"440902\": \"茂南区\",\n    \"440904\": \"电白区\",\n    \"440981\": \"高州市\",\n    \"440982\": \"化州市\",\n    \"440983\": \"信宜市\",\n    \"441202\": \"端州区\",\n    \"441203\": \"鼎湖区\",\n    \"441204\": \"高要区\",\n    \"441223\": \"广宁县\",\n    \"441224\": \"怀集县\",\n    \"441225\": \"封开县\",\n    \"441226\": \"德庆县\",\n    \"441284\": \"四会市\",\n    \"441302\": \"惠城区\",\n    \"441303\": \"惠阳区\",\n    \"441322\": \"博罗县\",\n    \"441323\": \"惠东县\",\n    \"441324\": \"龙门县\",\n    \"441402\": \"梅江区\",\n    \"441403\": \"梅县区\",\n    \"441422\": \"大埔县\",\n    \"441423\": \"丰顺县\",\n    \"441424\": \"五华县\",\n    \"441426\": \"平远县\",\n    \"441427\": \"蕉岭县\",\n    \"441481\": \"兴宁市\",\n    \"441502\": \"城区\",\n    \"441521\": \"海丰县\",\n    \"441523\": \"陆河县\",\n    \"441581\": \"陆丰市\",\n    \"441602\": \"源城区\",\n    \"441621\": \"紫金县\",\n    \"441622\": \"龙川县\",\n    \"441623\": \"连平县\",\n    \"441624\": \"和平县\",\n    \"441625\": \"东源县\",\n    \"441702\": \"江城区\",\n    \"441704\": \"阳东区\",\n    \"441721\": \"阳西县\",\n    \"441781\": \"阳春市\",\n    \"441802\": \"清城区\",\n    \"441803\": \"清新区\",\n    \"441821\": \"佛冈县\",\n    \"441823\": \"阳山县\",\n    \"441825\": \"连山壮族瑶族自治县\",\n    \"441826\": \"连南瑶族自治县\",\n    \"441881\": \"英德市\",\n    \"441882\": \"连州市\",\n    \"441900\": \"东莞市\",\n    \"442000\": \"中山市\",\n    \"445102\": \"湘桥区\",\n    \"445103\": \"潮安区\",\n    \"445122\": \"饶平县\",\n    \"445202\": \"榕城区\",\n    \"445203\": \"揭东区\",\n    \"445222\": \"揭西县\",\n    \"445224\": \"惠来县\",\n    \"445281\": \"普宁市\",\n    \"445302\": \"云城区\",\n    \"445303\": \"云安区\",\n    \"445321\": \"新兴县\",\n    \"445322\": \"郁南县\",\n    \"445381\": \"罗定市\",\n    \"450102\": \"兴宁区\",\n    \"450103\": \"青秀区\",\n    \"450105\": \"江南区\",\n    \"450107\": \"西乡塘区\",\n    \"450108\": \"良庆区\",\n    \"450109\": \"邕宁区\",\n    \"450110\": \"武鸣区\",\n    \"450123\": \"隆安县\",\n    \"450124\": \"马山县\",\n    \"450125\": \"上林县\",\n    \"450126\": \"宾阳县\",\n    \"450127\": \"横县\",\n    \"450202\": \"城中区\",\n    \"450203\": \"鱼峰区\",\n    \"450204\": \"柳南区\",\n    \"450205\": \"柳北区\",\n    \"450206\": \"柳江区\",\n    \"450222\": \"柳城县\",\n    \"450223\": \"鹿寨县\",\n    \"450224\": \"融安县\",\n    \"450225\": \"融水苗族自治县\",\n    \"450226\": \"三江侗族自治县\",\n    \"450302\": \"秀峰区\",\n    \"450303\": \"叠彩区\",\n    \"450304\": \"象山区\",\n    \"450305\": \"七星区\",\n    \"450311\": \"雁山区\",\n    \"450312\": \"临桂区\",\n    \"450321\": \"阳朔县\",\n    \"450323\": \"灵川县\",\n    \"450324\": \"全州县\",\n    \"450325\": \"兴安县\",\n    \"450326\": \"永福县\",\n    \"450327\": \"灌阳县\",\n    \"450328\": \"龙胜各族自治县\",\n    \"450329\": \"资源县\",\n    \"450330\": \"平乐县\",\n    \"450331\": \"荔浦县\",\n    \"450332\": \"恭城瑶族自治县\",\n    \"450403\": \"万秀区\",\n    \"450405\": \"长洲区\",\n    \"450406\": \"龙圩区\",\n    \"450421\": \"苍梧县\",\n    \"450422\": \"藤县\",\n    \"450423\": \"蒙山县\",\n    \"450481\": \"岑溪市\",\n    \"450502\": \"海城区\",\n    \"450503\": \"银海区\",\n    \"450512\": \"铁山港区\",\n    \"450521\": \"合浦县\",\n    \"450602\": \"港口区\",\n    \"450603\": \"防城区\",\n    \"450621\": \"上思县\",\n    \"450681\": \"东兴市\",\n    \"450702\": \"钦南区\",\n    \"450703\": \"钦北区\",\n    \"450721\": \"灵山县\",\n    \"450722\": \"浦北县\",\n    \"450802\": \"港北区\",\n    \"450803\": \"港南区\",\n    \"450804\": \"覃塘区\",\n    \"450821\": \"平南县\",\n    \"450881\": \"桂平市\",\n    \"450902\": \"玉州区\",\n    \"450903\": \"福绵区\",\n    \"450921\": \"容县\",\n    \"450922\": \"陆川县\",\n    \"450923\": \"博白县\",\n    \"450924\": \"兴业县\",\n    \"450981\": \"北流市\",\n    \"451002\": \"右江区\",\n    \"451021\": \"田阳县\",\n    \"451022\": \"田东县\",\n    \"451023\": \"平果县\",\n    \"451024\": \"德保县\",\n    \"451026\": \"那坡县\",\n    \"451027\": \"凌云县\",\n    \"451028\": \"乐业县\",\n    \"451029\": \"田林县\",\n    \"451030\": \"西林县\",\n    \"451031\": \"隆林各族自治县\",\n    \"451081\": \"靖西市\",\n    \"451102\": \"八步区\",\n    \"451103\": \"平桂区\",\n    \"451121\": \"昭平县\",\n    \"451122\": \"钟山县\",\n    \"451123\": \"富川瑶族自治县\",\n    \"451202\": \"金城江区\",\n    \"451221\": \"南丹县\",\n    \"451222\": \"天峨县\",\n    \"451223\": \"凤山县\",\n    \"451224\": \"东兰县\",\n    \"451225\": \"罗城仫佬族自治县\",\n    \"451226\": \"环江毛南族自治县\",\n    \"451227\": \"巴马瑶族自治县\",\n    \"451228\": \"都安瑶族自治县\",\n    \"451229\": \"大化瑶族自治县\",\n    \"451281\": \"宜州市\",\n    \"451302\": \"兴宾区\",\n    \"451321\": \"忻城县\",\n    \"451322\": \"象州县\",\n    \"451323\": \"武宣县\",\n    \"451324\": \"金秀瑶族自治县\",\n    \"451381\": \"合山市\",\n    \"451402\": \"江州区\",\n    \"451421\": \"扶绥县\",\n    \"451422\": \"宁明县\",\n    \"451423\": \"龙州县\",\n    \"451424\": \"大新县\",\n    \"451425\": \"天等县\",\n    \"451481\": \"凭祥市\",\n    \"460105\": \"秀英区\",\n    \"460106\": \"龙华区\",\n    \"460107\": \"琼山区\",\n    \"460108\": \"美兰区\",\n    \"460201\": \"市辖区\",\n    \"460202\": \"海棠区\",\n    \"460203\": \"吉阳区\",\n    \"460204\": \"天涯区\",\n    \"460205\": \"崖州区\",\n    \"460321\": \"西沙群岛\",\n    \"460322\": \"南沙群岛\",\n    \"460323\": \"中沙群岛的岛礁及其海域\",\n    \"460400\": \"儋州市\",\n    \"469001\": \"五指山市\",\n    \"469002\": \"琼海市\",\n    \"469005\": \"文昌市\",\n    \"469006\": \"万宁市\",\n    \"469007\": \"东方市\",\n    \"469021\": \"定安县\",\n    \"469022\": \"屯昌县\",\n    \"469023\": \"澄迈县\",\n    \"469024\": \"临高县\",\n    \"469025\": \"白沙黎族自治县\",\n    \"469026\": \"昌江黎族自治县\",\n    \"469027\": \"乐东黎族自治县\",\n    \"469028\": \"陵水黎族自治县\",\n    \"469029\": \"保亭黎族苗族自治县\",\n    \"469030\": \"琼中黎族苗族自治县\",\n    \"500101\": \"万州区\",\n    \"500102\": \"涪陵区\",\n    \"500103\": \"渝中区\",\n    \"500104\": \"大渡口区\",\n    \"500105\": \"江北区\",\n    \"500106\": \"沙坪坝区\",\n    \"500107\": \"九龙坡区\",\n    \"500108\": \"南岸区\",\n    \"500109\": \"北碚区\",\n    \"500110\": \"綦江区\",\n    \"500111\": \"大足区\",\n    \"500112\": \"渝北区\",\n    \"500113\": \"巴南区\",\n    \"500114\": \"黔江区\",\n    \"500115\": \"长寿区\",\n    \"500116\": \"江津区\",\n    \"500117\": \"合川区\",\n    \"500118\": \"永川区\",\n    \"500119\": \"南川区\",\n    \"500120\": \"璧山区\",\n    \"500151\": \"铜梁区\",\n    \"500152\": \"潼南区\",\n    \"500153\": \"荣昌区\",\n    \"500154\": \"开州区\",\n    \"500228\": \"梁平县\",\n    \"500229\": \"城口县\",\n    \"500230\": \"丰都县\",\n    \"500231\": \"垫江县\",\n    \"500232\": \"武隆县\",\n    \"500233\": \"忠县\",\n    \"500235\": \"云阳县\",\n    \"500236\": \"奉节县\",\n    \"500237\": \"巫山县\",\n    \"500238\": \"巫溪县\",\n    \"500240\": \"石柱土家族自治县\",\n    \"500241\": \"秀山土家族苗族自治县\",\n    \"500242\": \"酉阳土家族苗族自治县\",\n    \"500243\": \"彭水苗族土家族自治县\",\n    \"510104\": \"锦江区\",\n    \"510105\": \"青羊区\",\n    \"510106\": \"金牛区\",\n    \"510107\": \"武侯区\",\n    \"510108\": \"成华区\",\n    \"510112\": \"龙泉驿区\",\n    \"510113\": \"青白江区\",\n    \"510114\": \"新都区\",\n    \"510115\": \"温江区\",\n    \"510116\": \"双流区\",\n    \"510121\": \"金堂县\",\n    \"510124\": \"郫县\",\n    \"510129\": \"大邑县\",\n    \"510131\": \"蒲江县\",\n    \"510132\": \"新津县\",\n    \"510181\": \"都江堰市\",\n    \"510182\": \"彭州市\",\n    \"510183\": \"邛崃市\",\n    \"510184\": \"崇州市\",\n    \"510185\": \"简阳市\",\n    \"510302\": \"自流井区\",\n    \"510303\": \"贡井区\",\n    \"510304\": \"大安区\",\n    \"510311\": \"沿滩区\",\n    \"510321\": \"荣县\",\n    \"510322\": \"富顺县\",\n    \"510402\": \"东区\",\n    \"510403\": \"西区\",\n    \"510411\": \"仁和区\",\n    \"510421\": \"米易县\",\n    \"510422\": \"盐边县\",\n    \"510502\": \"江阳区\",\n    \"510503\": \"纳溪区\",\n    \"510504\": \"龙马潭区\",\n    \"510521\": \"泸县\",\n    \"510522\": \"合江县\",\n    \"510524\": \"叙永县\",\n    \"510525\": \"古蔺县\",\n    \"510603\": \"旌阳区\",\n    \"510623\": \"中江县\",\n    \"510626\": \"罗江县\",\n    \"510681\": \"广汉市\",\n    \"510682\": \"什邡市\",\n    \"510683\": \"绵竹市\",\n    \"510703\": \"涪城区\",\n    \"510704\": \"游仙区\",\n    \"510705\": \"安州区\",\n    \"510722\": \"三台县\",\n    \"510723\": \"盐亭县\",\n    \"510725\": \"梓潼县\",\n    \"510726\": \"北川羌族自治县\",\n    \"510727\": \"平武县\",\n    \"510781\": \"江油市\",\n    \"510802\": \"利州区\",\n    \"510811\": \"昭化区\",\n    \"510812\": \"朝天区\",\n    \"510821\": \"旺苍县\",\n    \"510822\": \"青川县\",\n    \"510823\": \"剑阁县\",\n    \"510824\": \"苍溪县\",\n    \"510903\": \"船山区\",\n    \"510904\": \"安居区\",\n    \"510921\": \"蓬溪县\",\n    \"510922\": \"射洪县\",\n    \"510923\": \"大英县\",\n    \"511002\": \"市中区\",\n    \"511011\": \"东兴区\",\n    \"511024\": \"威远县\",\n    \"511025\": \"资中县\",\n    \"511028\": \"隆昌县\",\n    \"511102\": \"市中区\",\n    \"511111\": \"沙湾区\",\n    \"511112\": \"五通桥区\",\n    \"511113\": \"金口河区\",\n    \"511123\": \"犍为县\",\n    \"511124\": \"井研县\",\n    \"511126\": \"夹江县\",\n    \"511129\": \"沐川县\",\n    \"511132\": \"峨边彝族自治县\",\n    \"511133\": \"马边彝族自治县\",\n    \"511181\": \"峨眉山市\",\n    \"511302\": \"顺庆区\",\n    \"511303\": \"高坪区\",\n    \"511304\": \"嘉陵区\",\n    \"511321\": \"南部县\",\n    \"511322\": \"营山县\",\n    \"511323\": \"蓬安县\",\n    \"511324\": \"仪陇县\",\n    \"511325\": \"西充县\",\n    \"511381\": \"阆中市\",\n    \"511402\": \"东坡区\",\n    \"511403\": \"彭山区\",\n    \"511421\": \"仁寿县\",\n    \"511423\": \"洪雅县\",\n    \"511424\": \"丹棱县\",\n    \"511425\": \"青神县\",\n    \"511502\": \"翠屏区\",\n    \"511503\": \"南溪区\",\n    \"511521\": \"宜宾县\",\n    \"511523\": \"江安县\",\n    \"511524\": \"长宁县\",\n    \"511525\": \"高县\",\n    \"511526\": \"珙县\",\n    \"511527\": \"筠连县\",\n    \"511528\": \"兴文县\",\n    \"511529\": \"屏山县\",\n    \"511602\": \"广安区\",\n    \"511603\": \"前锋区\",\n    \"511621\": \"岳池县\",\n    \"511622\": \"武胜县\",\n    \"511623\": \"邻水县\",\n    \"511681\": \"华蓥市\",\n    \"511702\": \"通川区\",\n    \"511703\": \"达川区\",\n    \"511722\": \"宣汉县\",\n    \"511723\": \"开江县\",\n    \"511724\": \"大竹县\",\n    \"511725\": \"渠县\",\n    \"511781\": \"万源市\",\n    \"511802\": \"雨城区\",\n    \"511803\": \"名山区\",\n    \"511822\": \"荥经县\",\n    \"511823\": \"汉源县\",\n    \"511824\": \"石棉县\",\n    \"511825\": \"天全县\",\n    \"511826\": \"芦山县\",\n    \"511827\": \"宝兴县\",\n    \"511902\": \"巴州区\",\n    \"511903\": \"恩阳区\",\n    \"511921\": \"通江县\",\n    \"511922\": \"南江县\",\n    \"511923\": \"平昌县\",\n    \"512002\": \"雁江区\",\n    \"512021\": \"安岳县\",\n    \"512022\": \"乐至县\",\n    \"513201\": \"马尔康市\",\n    \"513221\": \"汶川县\",\n    \"513222\": \"理县\",\n    \"513223\": \"茂县\",\n    \"513224\": \"松潘县\",\n    \"513225\": \"九寨沟县\",\n    \"513226\": \"金川县\",\n    \"513227\": \"小金县\",\n    \"513228\": \"黑水县\",\n    \"513230\": \"壤塘县\",\n    \"513231\": \"阿坝县\",\n    \"513232\": \"若尔盖县\",\n    \"513233\": \"红原县\",\n    \"513301\": \"康定市\",\n    \"513322\": \"泸定县\",\n    \"513323\": \"丹巴县\",\n    \"513324\": \"九龙县\",\n    \"513325\": \"雅江县\",\n    \"513326\": \"道孚县\",\n    \"513327\": \"炉霍县\",\n    \"513328\": \"甘孜县\",\n    \"513329\": \"新龙县\",\n    \"513330\": \"德格县\",\n    \"513331\": \"白玉县\",\n    \"513332\": \"石渠县\",\n    \"513333\": \"色达县\",\n    \"513334\": \"理塘县\",\n    \"513335\": \"巴塘县\",\n    \"513336\": \"乡城县\",\n    \"513337\": \"稻城县\",\n    \"513338\": \"得荣县\",\n    \"513401\": \"西昌市\",\n    \"513422\": \"木里藏族自治县\",\n    \"513423\": \"盐源县\",\n    \"513424\": \"德昌县\",\n    \"513425\": \"会理县\",\n    \"513426\": \"会东县\",\n    \"513427\": \"宁南县\",\n    \"513428\": \"普格县\",\n    \"513429\": \"布拖县\",\n    \"513430\": \"金阳县\",\n    \"513431\": \"昭觉县\",\n    \"513432\": \"喜德县\",\n    \"513433\": \"冕宁县\",\n    \"513434\": \"越西县\",\n    \"513435\": \"甘洛县\",\n    \"513436\": \"美姑县\",\n    \"513437\": \"雷波县\",\n    \"520102\": \"南明区\",\n    \"520103\": \"云岩区\",\n    \"520111\": \"花溪区\",\n    \"520112\": \"乌当区\",\n    \"520113\": \"白云区\",\n    \"520115\": \"观山湖区\",\n    \"520121\": \"开阳县\",\n    \"520122\": \"息烽县\",\n    \"520123\": \"修文县\",\n    \"520181\": \"清镇市\",\n    \"520201\": \"钟山区\",\n    \"520203\": \"六枝特区\",\n    \"520221\": \"水城县\",\n    \"520222\": \"盘县\",\n    \"520302\": \"红花岗区\",\n    \"520303\": \"汇川区\",\n    \"520304\": \"播州区\",\n    \"520322\": \"桐梓县\",\n    \"520323\": \"绥阳县\",\n    \"520324\": \"正安县\",\n    \"520325\": \"道真仡佬族苗族自治县\",\n    \"520326\": \"务川仡佬族苗族自治县\",\n    \"520327\": \"凤冈县\",\n    \"520328\": \"湄潭县\",\n    \"520329\": \"余庆县\",\n    \"520330\": \"习水县\",\n    \"520381\": \"赤水市\",\n    \"520382\": \"仁怀市\",\n    \"520402\": \"西秀区\",\n    \"520403\": \"平坝区\",\n    \"520422\": \"普定县\",\n    \"520423\": \"镇宁布依族苗族自治县\",\n    \"520424\": \"关岭布依族苗族自治县\",\n    \"520425\": \"紫云苗族布依族自治县\",\n    \"520502\": \"七星关区\",\n    \"520521\": \"大方县\",\n    \"520522\": \"黔西县\",\n    \"520523\": \"金沙县\",\n    \"520524\": \"织金县\",\n    \"520525\": \"纳雍县\",\n    \"520526\": \"威宁彝族回族苗族自治县\",\n    \"520527\": \"赫章县\",\n    \"520602\": \"碧江区\",\n    \"520603\": \"万山区\",\n    \"520621\": \"江口县\",\n    \"520622\": \"玉屏侗族自治县\",\n    \"520623\": \"石阡县\",\n    \"520624\": \"思南县\",\n    \"520625\": \"印江土家族苗族自治县\",\n    \"520626\": \"德江县\",\n    \"520627\": \"沿河土家族自治县\",\n    \"520628\": \"松桃苗族自治县\",\n    \"522301\": \"兴义市\",\n    \"522322\": \"兴仁县\",\n    \"522323\": \"普安县\",\n    \"522324\": \"晴隆县\",\n    \"522325\": \"贞丰县\",\n    \"522326\": \"望谟县\",\n    \"522327\": \"册亨县\",\n    \"522328\": \"安龙县\",\n    \"522601\": \"凯里市\",\n    \"522622\": \"黄平县\",\n    \"522623\": \"施秉县\",\n    \"522624\": \"三穗县\",\n    \"522625\": \"镇远县\",\n    \"522626\": \"岑巩县\",\n    \"522627\": \"天柱县\",\n    \"522628\": \"锦屏县\",\n    \"522629\": \"剑河县\",\n    \"522630\": \"台江县\",\n    \"522631\": \"黎平县\",\n    \"522632\": \"榕江县\",\n    \"522633\": \"从江县\",\n    \"522634\": \"雷山县\",\n    \"522635\": \"麻江县\",\n    \"522636\": \"丹寨县\",\n    \"522701\": \"都匀市\",\n    \"522702\": \"福泉市\",\n    \"522722\": \"荔波县\",\n    \"522723\": \"贵定县\",\n    \"522725\": \"瓮安县\",\n    \"522726\": \"独山县\",\n    \"522727\": \"平塘县\",\n    \"522728\": \"罗甸县\",\n    \"522729\": \"长顺县\",\n    \"522730\": \"龙里县\",\n    \"522731\": \"惠水县\",\n    \"522732\": \"三都水族自治县\",\n    \"530102\": \"五华区\",\n    \"530103\": \"盘龙区\",\n    \"530111\": \"官渡区\",\n    \"530112\": \"西山区\",\n    \"530113\": \"东川区\",\n    \"530114\": \"呈贡区\",\n    \"530122\": \"晋宁县\",\n    \"530124\": \"富民县\",\n    \"530125\": \"宜良县\",\n    \"530126\": \"石林彝族自治县\",\n    \"530127\": \"嵩明县\",\n    \"530128\": \"禄劝彝族苗族自治县\",\n    \"530129\": \"寻甸回族彝族自治县\",\n    \"530181\": \"安宁市\",\n    \"530302\": \"麒麟区\",\n    \"530303\": \"沾益区\",\n    \"530321\": \"马龙县\",\n    \"530322\": \"陆良县\",\n    \"530323\": \"师宗县\",\n    \"530324\": \"罗平县\",\n    \"530325\": \"富源县\",\n    \"530326\": \"会泽县\",\n    \"530381\": \"宣威市\",\n    \"530402\": \"红塔区\",\n    \"530403\": \"江川区\",\n    \"530422\": \"澄江县\",\n    \"530423\": \"通海县\",\n    \"530424\": \"华宁县\",\n    \"530425\": \"易门县\",\n    \"530426\": \"峨山彝族自治县\",\n    \"530427\": \"新平彝族傣族自治县\",\n    \"530428\": \"元江哈尼族彝族傣族自治县\",\n    \"530502\": \"隆阳区\",\n    \"530521\": \"施甸县\",\n    \"530523\": \"龙陵县\",\n    \"530524\": \"昌宁县\",\n    \"530581\": \"腾冲市\",\n    \"530602\": \"昭阳区\",\n    \"530621\": \"鲁甸县\",\n    \"530622\": \"巧家县\",\n    \"530623\": \"盐津县\",\n    \"530624\": \"大关县\",\n    \"530625\": \"永善县\",\n    \"530626\": \"绥江县\",\n    \"530627\": \"镇雄县\",\n    \"530628\": \"彝良县\",\n    \"530629\": \"威信县\",\n    \"530630\": \"水富县\",\n    \"530702\": \"古城区\",\n    \"530721\": \"玉龙纳西族自治县\",\n    \"530722\": \"永胜县\",\n    \"530723\": \"华坪县\",\n    \"530724\": \"宁蒗彝族自治县\",\n    \"530802\": \"思茅区\",\n    \"530821\": \"宁洱哈尼族彝族自治县\",\n    \"530822\": \"墨江哈尼族自治县\",\n    \"530823\": \"景东彝族自治县\",\n    \"530824\": \"景谷傣族彝族自治县\",\n    \"530825\": \"镇沅彝族哈尼族拉祜族自治县\",\n    \"530826\": \"江城哈尼族彝族自治县\",\n    \"530827\": \"孟连傣族拉祜族佤族自治县\",\n    \"530828\": \"澜沧拉祜族自治县\",\n    \"530829\": \"西盟佤族自治县\",\n    \"530902\": \"临翔区\",\n    \"530921\": \"凤庆县\",\n    \"530922\": \"云县\",\n    \"530923\": \"永德县\",\n    \"530924\": \"镇康县\",\n    \"530925\": \"双江拉祜族佤族布朗族傣族自治县\",\n    \"530926\": \"耿马傣族佤族自治县\",\n    \"530927\": \"沧源佤族自治县\",\n    \"532301\": \"楚雄市\",\n    \"532322\": \"双柏县\",\n    \"532323\": \"牟定县\",\n    \"532324\": \"南华县\",\n    \"532325\": \"姚安县\",\n    \"532326\": \"大姚县\",\n    \"532327\": \"永仁县\",\n    \"532328\": \"元谋县\",\n    \"532329\": \"武定县\",\n    \"532331\": \"禄丰县\",\n    \"532501\": \"个旧市\",\n    \"532502\": \"开远市\",\n    \"532503\": \"蒙自市\",\n    \"532504\": \"弥勒市\",\n    \"532523\": \"屏边苗族自治县\",\n    \"532524\": \"建水县\",\n    \"532525\": \"石屏县\",\n    \"532527\": \"泸西县\",\n    \"532528\": \"元阳县\",\n    \"532529\": \"红河县\",\n    \"532530\": \"金平苗族瑶族傣族自治县\",\n    \"532531\": \"绿春县\",\n    \"532532\": \"河口瑶族自治县\",\n    \"532601\": \"文山市\",\n    \"532622\": \"砚山县\",\n    \"532623\": \"西畴县\",\n    \"532624\": \"麻栗坡县\",\n    \"532625\": \"马关县\",\n    \"532626\": \"丘北县\",\n    \"532627\": \"广南县\",\n    \"532628\": \"富宁县\",\n    \"532801\": \"景洪市\",\n    \"532822\": \"勐海县\",\n    \"532823\": \"勐腊县\",\n    \"532901\": \"大理市\",\n    \"532922\": \"漾濞彝族自治县\",\n    \"532923\": \"祥云县\",\n    \"532924\": \"宾川县\",\n    \"532925\": \"弥渡县\",\n    \"532926\": \"南涧彝族自治县\",\n    \"532927\": \"巍山彝族回族自治县\",\n    \"532928\": \"永平县\",\n    \"532929\": \"云龙县\",\n    \"532930\": \"洱源县\",\n    \"532931\": \"剑川县\",\n    \"532932\": \"鹤庆县\",\n    \"533102\": \"瑞丽市\",\n    \"533103\": \"芒市\",\n    \"533122\": \"梁河县\",\n    \"533123\": \"盈江县\",\n    \"533124\": \"陇川县\",\n    \"533301\": \"泸水市\",\n    \"533323\": \"福贡县\",\n    \"533324\": \"贡山独龙族怒族自治县\",\n    \"533325\": \"兰坪白族普米族自治县\",\n    \"533401\": \"香格里拉市\",\n    \"533422\": \"德钦县\",\n    \"533423\": \"维西傈僳族自治县\",\n    \"540102\": \"城关区\",\n    \"540103\": \"堆龙德庆区\",\n    \"540121\": \"林周县\",\n    \"540122\": \"当雄县\",\n    \"540123\": \"尼木县\",\n    \"540124\": \"曲水县\",\n    \"540126\": \"达孜县\",\n    \"540127\": \"墨竹工卡县\",\n    \"540202\": \"桑珠孜区\",\n    \"540221\": \"南木林县\",\n    \"540222\": \"江孜县\",\n    \"540223\": \"定日县\",\n    \"540224\": \"萨迦县\",\n    \"540225\": \"拉孜县\",\n    \"540226\": \"昂仁县\",\n    \"540227\": \"谢通门县\",\n    \"540228\": \"白朗县\",\n    \"540229\": \"仁布县\",\n    \"540230\": \"康马县\",\n    \"540231\": \"定结县\",\n    \"540232\": \"仲巴县\",\n    \"540233\": \"亚东县\",\n    \"540234\": \"吉隆县\",\n    \"540235\": \"聂拉木县\",\n    \"540236\": \"萨嘎县\",\n    \"540237\": \"岗巴县\",\n    \"540302\": \"卡若区\",\n    \"540321\": \"江达县\",\n    \"540322\": \"贡觉县\",\n    \"540323\": \"类乌齐县\",\n    \"540324\": \"丁青县\",\n    \"540325\": \"察雅县\",\n    \"540326\": \"八宿县\",\n    \"540327\": \"左贡县\",\n    \"540328\": \"芒康县\",\n    \"540329\": \"洛隆县\",\n    \"540330\": \"边坝县\",\n    \"540402\": \"巴宜区\",\n    \"540421\": \"工布江达县\",\n    \"540422\": \"米林县\",\n    \"540423\": \"墨脱县\",\n    \"540424\": \"波密县\",\n    \"540425\": \"察隅县\",\n    \"540426\": \"朗县\",\n    \"540502\": \"乃东区\",\n    \"540521\": \"扎囊县\",\n    \"540522\": \"贡嘎县\",\n    \"540523\": \"桑日县\",\n    \"540524\": \"琼结县\",\n    \"540525\": \"曲松县\",\n    \"540526\": \"措美县\",\n    \"540527\": \"洛扎县\",\n    \"540528\": \"加查县\",\n    \"540529\": \"隆子县\",\n    \"540530\": \"错那县\",\n    \"540531\": \"浪卡子县\",\n    \"542421\": \"那曲县\",\n    \"542422\": \"嘉黎县\",\n    \"542423\": \"比如县\",\n    \"542424\": \"聂荣县\",\n    \"542425\": \"安多县\",\n    \"542426\": \"申扎县\",\n    \"542427\": \"索县\",\n    \"542428\": \"班戈县\",\n    \"542429\": \"巴青县\",\n    \"542430\": \"尼玛县\",\n    \"542431\": \"双湖县\",\n    \"542521\": \"普兰县\",\n    \"542522\": \"札达县\",\n    \"542523\": \"噶尔县\",\n    \"542524\": \"日土县\",\n    \"542525\": \"革吉县\",\n    \"542526\": \"改则县\",\n    \"542527\": \"措勤县\",\n    \"610102\": \"新城区\",\n    \"610103\": \"碑林区\",\n    \"610104\": \"莲湖区\",\n    \"610111\": \"灞桥区\",\n    \"610112\": \"未央区\",\n    \"610113\": \"雁塔区\",\n    \"610114\": \"阎良区\",\n    \"610115\": \"临潼区\",\n    \"610116\": \"长安区\",\n    \"610117\": \"高陵区\",\n    \"610122\": \"蓝田县\",\n    \"610124\": \"周至县\",\n    \"610125\": \"户县\",\n    \"610202\": \"王益区\",\n    \"610203\": \"印台区\",\n    \"610204\": \"耀州区\",\n    \"610222\": \"宜君县\",\n    \"610302\": \"渭滨区\",\n    \"610303\": \"金台区\",\n    \"610304\": \"陈仓区\",\n    \"610322\": \"凤翔县\",\n    \"610323\": \"岐山县\",\n    \"610324\": \"扶风县\",\n    \"610326\": \"眉县\",\n    \"610327\": \"陇县\",\n    \"610328\": \"千阳县\",\n    \"610329\": \"麟游县\",\n    \"610330\": \"凤县\",\n    \"610331\": \"太白县\",\n    \"610402\": \"秦都区\",\n    \"610403\": \"杨陵区\",\n    \"610404\": \"渭城区\",\n    \"610422\": \"三原县\",\n    \"610423\": \"泾阳县\",\n    \"610424\": \"乾县\",\n    \"610425\": \"礼泉县\",\n    \"610426\": \"永寿县\",\n    \"610427\": \"彬县\",\n    \"610428\": \"长武县\",\n    \"610429\": \"旬邑县\",\n    \"610430\": \"淳化县\",\n    \"610431\": \"武功县\",\n    \"610481\": \"兴平市\",\n    \"610502\": \"临渭区\",\n    \"610503\": \"华州区\",\n    \"610522\": \"潼关县\",\n    \"610523\": \"大荔县\",\n    \"610524\": \"合阳县\",\n    \"610525\": \"澄城县\",\n    \"610526\": \"蒲城县\",\n    \"610527\": \"白水县\",\n    \"610528\": \"富平县\",\n    \"610581\": \"韩城市\",\n    \"610582\": \"华阴市\",\n    \"610602\": \"宝塔区\",\n    \"610603\": \"安塞区\",\n    \"610621\": \"延长县\",\n    \"610622\": \"延川县\",\n    \"610623\": \"子长县\",\n    \"610625\": \"志丹县\",\n    \"610626\": \"吴起县\",\n    \"610627\": \"甘泉县\",\n    \"610628\": \"富县\",\n    \"610629\": \"洛川县\",\n    \"610630\": \"宜川县\",\n    \"610631\": \"黄龙县\",\n    \"610632\": \"黄陵县\",\n    \"610702\": \"汉台区\",\n    \"610721\": \"南郑县\",\n    \"610722\": \"城固县\",\n    \"610723\": \"洋县\",\n    \"610724\": \"西乡县\",\n    \"610725\": \"勉县\",\n    \"610726\": \"宁强县\",\n    \"610727\": \"略阳县\",\n    \"610728\": \"镇巴县\",\n    \"610729\": \"留坝县\",\n    \"610730\": \"佛坪县\",\n    \"610802\": \"榆阳区\",\n    \"610803\": \"横山区\",\n    \"610821\": \"神木县\",\n    \"610822\": \"府谷县\",\n    \"610824\": \"靖边县\",\n    \"610825\": \"定边县\",\n    \"610826\": \"绥德县\",\n    \"610827\": \"米脂县\",\n    \"610828\": \"佳县\",\n    \"610829\": \"吴堡县\",\n    \"610830\": \"清涧县\",\n    \"610831\": \"子洲县\",\n    \"610902\": \"汉滨区\",\n    \"610921\": \"汉阴县\",\n    \"610922\": \"石泉县\",\n    \"610923\": \"宁陕县\",\n    \"610924\": \"紫阳县\",\n    \"610925\": \"岚皋县\",\n    \"610926\": \"平利县\",\n    \"610927\": \"镇坪县\",\n    \"610928\": \"旬阳县\",\n    \"610929\": \"白河县\",\n    \"611002\": \"商州区\",\n    \"611021\": \"洛南县\",\n    \"611022\": \"丹凤县\",\n    \"611023\": \"商南县\",\n    \"611024\": \"山阳县\",\n    \"611025\": \"镇安县\",\n    \"611026\": \"柞水县\",\n    \"620102\": \"城关区\",\n    \"620103\": \"七里河区\",\n    \"620104\": \"西固区\",\n    \"620105\": \"安宁区\",\n    \"620111\": \"红古区\",\n    \"620121\": \"永登县\",\n    \"620122\": \"皋兰县\",\n    \"620123\": \"榆中县\",\n    \"620201\": \"嘉峪关市\",\n    \"620302\": \"金川区\",\n    \"620321\": \"永昌县\",\n    \"620402\": \"白银区\",\n    \"620403\": \"平川区\",\n    \"620421\": \"靖远县\",\n    \"620422\": \"会宁县\",\n    \"620423\": \"景泰县\",\n    \"620502\": \"秦州区\",\n    \"620503\": \"麦积区\",\n    \"620521\": \"清水县\",\n    \"620522\": \"秦安县\",\n    \"620523\": \"甘谷县\",\n    \"620524\": \"武山县\",\n    \"620525\": \"张家川回族自治县\",\n    \"620602\": \"凉州区\",\n    \"620621\": \"民勤县\",\n    \"620622\": \"古浪县\",\n    \"620623\": \"天祝藏族自治县\",\n    \"620702\": \"甘州区\",\n    \"620721\": \"肃南裕固族自治县\",\n    \"620722\": \"民乐县\",\n    \"620723\": \"临泽县\",\n    \"620724\": \"高台县\",\n    \"620725\": \"山丹县\",\n    \"620802\": \"崆峒区\",\n    \"620821\": \"泾川县\",\n    \"620822\": \"灵台县\",\n    \"620823\": \"崇信县\",\n    \"620824\": \"华亭县\",\n    \"620825\": \"庄浪县\",\n    \"620826\": \"静宁县\",\n    \"620902\": \"肃州区\",\n    \"620921\": \"金塔县\",\n    \"620922\": \"瓜州县\",\n    \"620923\": \"肃北蒙古族自治县\",\n    \"620924\": \"阿克塞哈萨克族自治县\",\n    \"620981\": \"玉门市\",\n    \"620982\": \"敦煌市\",\n    \"621002\": \"西峰区\",\n    \"621021\": \"庆城县\",\n    \"621022\": \"环县\",\n    \"621023\": \"华池县\",\n    \"621024\": \"合水县\",\n    \"621025\": \"正宁县\",\n    \"621026\": \"宁县\",\n    \"621027\": \"镇原县\",\n    \"621102\": \"安定区\",\n    \"621121\": \"通渭县\",\n    \"621122\": \"陇西县\",\n    \"621123\": \"渭源县\",\n    \"621124\": \"临洮县\",\n    \"621125\": \"漳县\",\n    \"621126\": \"岷县\",\n    \"621202\": \"武都区\",\n    \"621221\": \"成县\",\n    \"621222\": \"文县\",\n    \"621223\": \"宕昌县\",\n    \"621224\": \"康县\",\n    \"621225\": \"西和县\",\n    \"621226\": \"礼县\",\n    \"621227\": \"徽县\",\n    \"621228\": \"两当县\",\n    \"622901\": \"临夏市\",\n    \"622921\": \"临夏县\",\n    \"622922\": \"康乐县\",\n    \"622923\": \"永靖县\",\n    \"622924\": \"广河县\",\n    \"622925\": \"和政县\",\n    \"622926\": \"东乡族自治县\",\n    \"622927\": \"积石山保安族东乡族撒拉族自治县\",\n    \"623001\": \"合作市\",\n    \"623021\": \"临潭县\",\n    \"623022\": \"卓尼县\",\n    \"623023\": \"舟曲县\",\n    \"623024\": \"迭部县\",\n    \"623025\": \"玛曲县\",\n    \"623026\": \"碌曲县\",\n    \"623027\": \"夏河县\",\n    \"630102\": \"城东区\",\n    \"630103\": \"城中区\",\n    \"630104\": \"城西区\",\n    \"630105\": \"城北区\",\n    \"630121\": \"大通回族土族自治县\",\n    \"630122\": \"湟中县\",\n    \"630123\": \"湟源县\",\n    \"630202\": \"乐都区\",\n    \"630203\": \"平安区\",\n    \"630222\": \"民和回族土族自治县\",\n    \"630223\": \"互助土族自治县\",\n    \"630224\": \"化隆回族自治县\",\n    \"630225\": \"循化撒拉族自治县\",\n    \"632221\": \"门源回族自治县\",\n    \"632222\": \"祁连县\",\n    \"632223\": \"海晏县\",\n    \"632224\": \"刚察县\",\n    \"632321\": \"同仁县\",\n    \"632322\": \"尖扎县\",\n    \"632323\": \"泽库县\",\n    \"632324\": \"河南蒙古族自治县\",\n    \"632521\": \"共和县\",\n    \"632522\": \"同德县\",\n    \"632523\": \"贵德县\",\n    \"632524\": \"兴海县\",\n    \"632525\": \"贵南县\",\n    \"632621\": \"玛沁县\",\n    \"632622\": \"班玛县\",\n    \"632623\": \"甘德县\",\n    \"632624\": \"达日县\",\n    \"632625\": \"久治县\",\n    \"632626\": \"玛多县\",\n    \"632701\": \"玉树市\",\n    \"632722\": \"杂多县\",\n    \"632723\": \"称多县\",\n    \"632724\": \"治多县\",\n    \"632725\": \"囊谦县\",\n    \"632726\": \"曲麻莱县\",\n    \"632801\": \"格尔木市\",\n    \"632802\": \"德令哈市\",\n    \"632821\": \"乌兰县\",\n    \"632822\": \"都兰县\",\n    \"632823\": \"天峻县\",\n    \"640104\": \"兴庆区\",\n    \"640105\": \"西夏区\",\n    \"640106\": \"金凤区\",\n    \"640121\": \"永宁县\",\n    \"640122\": \"贺兰县\",\n    \"640181\": \"灵武市\",\n    \"640202\": \"大武口区\",\n    \"640205\": \"惠农区\",\n    \"640221\": \"平罗县\",\n    \"640302\": \"利通区\",\n    \"640303\": \"红寺堡区\",\n    \"640323\": \"盐池县\",\n    \"640324\": \"同心县\",\n    \"640381\": \"青铜峡市\",\n    \"640402\": \"原州区\",\n    \"640422\": \"西吉县\",\n    \"640423\": \"隆德县\",\n    \"640424\": \"泾源县\",\n    \"640425\": \"彭阳县\",\n    \"640502\": \"沙坡头区\",\n    \"640521\": \"中宁县\",\n    \"640522\": \"海原县\",\n    \"650102\": \"天山区\",\n    \"650103\": \"沙依巴克区\",\n    \"650104\": \"新市区\",\n    \"650105\": \"水磨沟区\",\n    \"650106\": \"头屯河区\",\n    \"650107\": \"达坂城区\",\n    \"650109\": \"米东区\",\n    \"650121\": \"乌鲁木齐县\",\n    \"650202\": \"独山子区\",\n    \"650203\": \"克拉玛依区\",\n    \"650204\": \"白碱滩区\",\n    \"650205\": \"乌尔禾区\",\n    \"650402\": \"高昌区\",\n    \"650421\": \"鄯善县\",\n    \"650422\": \"托克逊县\",\n    \"650502\": \"伊州区\",\n    \"650521\": \"巴里坤哈萨克自治县\",\n    \"650522\": \"伊吾县\",\n    \"652301\": \"昌吉市\",\n    \"652302\": \"阜康市\",\n    \"652323\": \"呼图壁县\",\n    \"652324\": \"玛纳斯县\",\n    \"652325\": \"奇台县\",\n    \"652327\": \"吉木萨尔县\",\n    \"652328\": \"木垒哈萨克自治县\",\n    \"652701\": \"博乐市\",\n    \"652702\": \"阿拉山口市\",\n    \"652722\": \"精河县\",\n    \"652723\": \"温泉县\",\n    \"652801\": \"库尔勒市\",\n    \"652822\": \"轮台县\",\n    \"652823\": \"尉犁县\",\n    \"652824\": \"若羌县\",\n    \"652825\": \"且末县\",\n    \"652826\": \"焉耆回族自治县\",\n    \"652827\": \"和静县\",\n    \"652828\": \"和硕县\",\n    \"652829\": \"博湖县\",\n    \"652901\": \"阿克苏市\",\n    \"652922\": \"温宿县\",\n    \"652923\": \"库车县\",\n    \"652924\": \"沙雅县\",\n    \"652925\": \"新和县\",\n    \"652926\": \"拜城县\",\n    \"652927\": \"乌什县\",\n    \"652928\": \"阿瓦提县\",\n    \"652929\": \"柯坪县\",\n    \"653001\": \"阿图什市\",\n    \"653022\": \"阿克陶县\",\n    \"653023\": \"阿合奇县\",\n    \"653024\": \"乌恰县\",\n    \"653101\": \"喀什市\",\n    \"653121\": \"疏附县\",\n    \"653122\": \"疏勒县\",\n    \"653123\": \"英吉沙县\",\n    \"653124\": \"泽普县\",\n    \"653125\": \"莎车县\",\n    \"653126\": \"叶城县\",\n    \"653127\": \"麦盖提县\",\n    \"653128\": \"岳普湖县\",\n    \"653129\": \"伽师县\",\n    \"653130\": \"巴楚县\",\n    \"653131\": \"塔什库尔干塔吉克自治县\",\n    \"653201\": \"和田市\",\n    \"653221\": \"和田县\",\n    \"653222\": \"墨玉县\",\n    \"653223\": \"皮山县\",\n    \"653224\": \"洛浦县\",\n    \"653225\": \"策勒县\",\n    \"653226\": \"于田县\",\n    \"653227\": \"民丰县\",\n    \"654002\": \"伊宁市\",\n    \"654003\": \"奎屯市\",\n    \"654004\": \"霍尔果斯市\",\n    \"654021\": \"伊宁县\",\n    \"654022\": \"察布查尔锡伯自治县\",\n    \"654023\": \"霍城县\",\n    \"654024\": \"巩留县\",\n    \"654025\": \"新源县\",\n    \"654026\": \"昭苏县\",\n    \"654027\": \"特克斯县\",\n    \"654028\": \"尼勒克县\",\n    \"654201\": \"塔城市\",\n    \"654202\": \"乌苏市\",\n    \"654221\": \"额敏县\",\n    \"654223\": \"沙湾县\",\n    \"654224\": \"托里县\",\n    \"654225\": \"裕民县\",\n    \"654226\": \"和布克赛尔蒙古自治县\",\n    \"654301\": \"阿勒泰市\",\n    \"654321\": \"布尔津县\",\n    \"654322\": \"富蕴县\",\n    \"654323\": \"福海县\",\n    \"654324\": \"哈巴河县\",\n    \"654325\": \"青河县\",\n    \"654326\": \"吉木乃县\",\n    \"659001\": \"石河子市\",\n    \"659002\": \"阿拉尔市\",\n    \"659003\": \"图木舒克市\",\n    \"659004\": \"五家渠市\",\n    \"659006\": \"铁门关市\"\n  }\n}\n\nfunction getConfig(type) {\n  return (areaList && areaList[`${type}_list`]) || {};\n}\n\nfunction getList(type, code) {\n  let result = [];\n  if (type !== 'province' && !code) {\n    return result;\n  }\n\n  const list = getConfig(type);\n  result = Object.keys(list).map(code => ({\n    code,\n    name: list[code]\n  }));\n\n  if (code) {\n    // oversea code\n    if (code[0] === '9' && type === 'city') {\n      code = '9';\n    }\n\n    result = result.filter(item => item.code.indexOf(code) === 0);\n  }\n\n  return result;\n}\n\n// get index by code\nfunction getIndex(type, code) {\n  let compareNum = type === 'province' ? 2 : type === 'city' ? 4 : 6;\n  const list = getList(type, code.slice(0, compareNum - 2));\n\n  // oversea code\n  if (code[0] === '9' && type === 'province') {\n    compareNum = 1;\n  }\n\n  code = code.slice(0, compareNum);\n  for (let i = 0; i < list.length; i++) {\n    if (list[i].code.slice(0, compareNum) === code) {\n      return i;\n    }\n  }\n\n  return 0;\n}\n\n// 定义数据出口\nmodule.exports = {\n  areaList: areaList,\n  getList: getList,\n  getIndex: getIndex\n}"
  },
  {
    "path": "renard-wx/utils/check.js",
    "content": "function isValidPhone(str) {\n  var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;\n  if (!myreg.test(str)) {\n    return false;\n  } else {\n    return true;\n  }\n}\n\nmodule.exports = {\n  isValidPhone\n}"
  },
  {
    "path": "renard-wx/utils/user.js",
    "content": "/**\n * 用户相关服务\n */\nconst util = require('../utils/util.js');\nconst api = require('../config/api.js');\n\n\n/**\n * Promise封装wx.checkSession\n */\nfunction checkSession() {\n  return new Promise(function(resolve, reject) {\n    wx.checkSession({\n      success: function() {\n        resolve(true);\n      },\n      fail: function() {\n        reject(false);\n      }\n    })\n  });\n}\n\n/**\n * Promise封装wx.login\n */\nfunction login() {\n  return new Promise(function(resolve, reject) {\n    wx.login({\n      success: function(res) {\n        if (res.code) {\n          resolve(res);\n        } else {\n          reject(res);\n        }\n      },\n      fail: function(err) {\n        reject(err);\n      }\n    });\n  });\n}\n\n/**\n * 调用微信登录\n */\nfunction loginByWeixin(userInfo) {\n\n  return new Promise(function(resolve, reject) {\n    return login().then((res) => {\n      //登录远程服务器\n      util.request(api.AuthLoginByWeixin, {\n        code: res.code,\n        userInfo: userInfo\n      }, 'POST').then(res => {\n        if (res.errno === 0) {\n          //存储用户信息\n          wx.setStorageSync('userInfo', res.data.userInfo);\n          wx.setStorageSync('token', res.data.token);\n\n          resolve(res);\n        } else {\n          reject(res);\n        }\n      }).catch((err) => {\n        reject(err);\n      });\n    }).catch((err) => {\n      reject(err);\n    })\n  });\n}\n\n/**\n * 判断用户是否登录\n */\nfunction checkLogin() {\n  return new Promise(function(resolve, reject) {\n    if (wx.getStorageSync('userInfo') && wx.getStorageSync('token')) {\n      checkSession().then(() => {\n        resolve(true);\n      }).catch(() => {\n        reject(false);\n      });\n    } else {\n      reject(false);\n    }\n  });\n}\n\nmodule.exports = {\n  loginByWeixin,\n  checkLogin,\n};"
  },
  {
    "path": "renard-wx/utils/util.js",
    "content": "var api = require('../config/api.js');\nvar app = getApp();\n\nfunction formatTime(date) {\n  var year = date.getFullYear();\n  var month = date.getMonth() + 1;\n  var day = date.getDate();\n\n  var hour = date.getHours();\n  var minute = date.getMinutes();\n  var second = date.getSeconds();\n\n\n  return [year, month, day].map(formatNumber).join('-') + ' ' + [hour, minute, second].map(formatNumber).join(':')\n}\n\nfunction formatNumber(n) {\n  n = n.toString();\n  return n[1] ? n : '0' + n\n}\n\n/**\n * 封装微信的的request\n */\nfunction request(url, data = {}, method = \"GET\") {\n  return new Promise(function(resolve, reject) {\n    wx.request({\n      url: url,\n      data: data,\n      method: method,\n      header: {\n        'Content-Type': 'application/json',\n        'X-Litemall-Token': wx.getStorageSync('token')\n      },\n      success: function(res) {\n\n        if (res.statusCode == 200) {\n\n          if (res.data.errno == 501) {\n            // 清除登录相关内容\n            try {\n              wx.removeStorageSync('userInfo');\n              wx.removeStorageSync('token');\n            } catch (e) {\n              // Do something when catch error\n            }\n            // 切换到登录页面\n            wx.navigateTo({\n              url: '/pages/auth/login/login'\n            });\n          } else {\n            resolve(res.data);\n          }\n        } else {\n          reject(res.errMsg);\n        }\n\n      },\n      fail: function(err) {\n        reject(err)\n      }\n    })\n  });\n}\n\nfunction redirect(url) {\n\n  //判断页面是否需要登录\n  if (false) {\n    wx.redirectTo({\n      url: '/pages/auth/login/login'\n    });\n    return false;\n  } else {\n    wx.redirectTo({\n      url: url\n    });\n  }\n}\n\nfunction showErrorToast(msg) {\n  wx.showToast({\n    title: msg,\n    image: '/static/images/icon_error.png'\n  })\n}\n\nmodule.exports = {\n  formatTime,\n  request,\n  redirect,\n  showErrorToast\n};"
  }
]